Introduction
Welcome to X0PA Room's API! You can use this API to access ROOM endpoints.
BaseURL: https://api.x0pa.ai/room/v1
Your request should look like this:
const headers = {
'Accept':'application/json',
'x-api-key':'eyJhbGciOiJIUzI1NiIsInR5cCI6Ikp....',
'Authorization': 'xyzn504hh377dhdh73....'
};
fetch('https://api.x0pa.ai/room/v1/resource',
{
method: 'GET',
headers: headers
})
.then(function(res) {
return res.json();
}).then(function(body) {
console.log(body);
});
import requests
headers = {
'Accept': 'application/json',
'x-api-key': 'eyJhbGciOiJIUzI1NiIsInR5cCI6Ikp....',
'Authorization': 'xyzn504hh377dhdh73....'
}
r = requests.get('https://api.x0pa.ai/room/v1/resource', headers = headers)
print(r.json())
# You can also use wget
curl -X GET https://api.x0pa.ai/room/v1/resource \
-H 'Accept: application/json' \
-H 'x-api-key: eyJhbGciOiJIUzI1NiIsInR5cCI6Ikp....' \
-H 'Authorization: xyzn504hh377dhdh73....'
x-api-key need to be passed in the headers of all requests to make an authenticated request. Unauthenticated requests will return an HTTP 401 response.
Authorization header with a value generated using the /token also needs to be passed for all protected resources.
Authorization
Your
x-api-key
,Authorization
headers should look like this:
x-api-key: eyJhbGciOiJIUzI1NiIsInR5cCI6Ikp....
Authorization: xyzn504hh377dhdh73....
x-api-key: eyJhbGciOiJIUzI1NiIsInR5cCI6Ikp....
Authorization: xyzn504hh377dhdh73....
Errors
Error Code | Meaning |
---|---|
401 | Unauthorized -- Invalid key/token. Check to make sure you're passing key via the x-api-key , Authorization |
403 | Forbidden -- You do not have access to that record. |
404 | Not Found -- Resource not found |
500 | Server Error -- We had a problem with our server. Try again later or contact us: support@x0pa.com |
Change Log
The timestamps below are UTC.
Date | Description |
---|---|
Nov 12, 2020 12:00:00PM | Initial API release with required endpoints |
Aug 08, 2021 12:00:00PM | Base API changed(routes) |
Token
Get Token
Code samples
const inputBody = '{
"email": "a@x.ai",
"password": "xyz"
}';
const headers = {
'Content-Type':'application/json',
'Accept':'application/json',
'x-api-key':'API_KEY'
};
fetch('https://api.x0pa.ai/room/v1/token',
{
method: 'POST',
body: inputBody,
headers: headers
})
.then(function(res) {
return res.json();
}).then(function(body) {
console.log(body);
});
import requests
headers = {
'Content-Type': 'application/json',
'Accept': 'application/json',
'x-api-key': 'API_KEY'
}
r = requests.post('https://api.x0pa.ai/room/v1/token', headers = headers)
print(r.json())
# You can also use wget
curl -X POST https://api.x0pa.ai/room/v1/token \
-H 'Content-Type: application/json' \
-H 'Accept: application/json' \
-H 'x-api-key: API_KEY'
POST /token
Body parameter
{
"email": "string",
"password": "string"
}
Parameters
Name | In | Type | Required | Description |
---|---|---|---|---|
body | body | TokenPayload | false |
Detailed descriptions
body: { "email": "a@x.ai", "password": "xyz" }
Example responses
200 Response
{
"id": "udDuD1E2IrKrATVUmDZioesZ9clJuiehmvvEfZdDnhwmbG5",
"ttl": 1209600,
"created": "2021-08-08T04:30:00.007Z",
"userId": 100
}
Responses
Status | Meaning | Description | Schema |
---|---|---|---|
200 | OK | none | TokenResponse |
Assessments
Create Assessment
Code samples
const inputBody = '{
"groupName": "string",
"groupConfig": {
"interviewType": "string"
},
"responseVisibility": true,
"expirationDate": "string",
"expiresAt": "string",
"startsAt": "string",
"landingPageInfo": "string",
"enableBanner": true,
"removeBanner": true,
"enableReminder": true,
"reminderInterval": null,
"maxReminders": null,
"enableInclusiveHiring": true,
"companyBanner": "string"
}';
const headers = {
'Content-Type':'application/json',
'x-api-key':'API_KEY'
};
fetch('https://api.x0pa.ai/room/v1/assessments',
{
method: 'POST',
body: inputBody,
headers: headers
})
.then(function(res) {
return res.json();
}).then(function(body) {
console.log(body);
});
import requests
headers = {
'Content-Type': 'application/json',
'x-api-key': 'API_KEY',
'Authorization': 'xyzn504hh377dhdh73....'
}
r = requests.post('https://api.x0pa.ai/room/v1/assessments', headers = headers)
print(r.json())
# You can also use wget
curl -X POST https://api.x0pa.ai/room/v1/assessments \
-H 'Content-Type: application/json' \
-H 'x-api-key: API_KEY' \
-H 'Authorization: xyzn504hh377dhdh73....'
POST /assessments
Body parameter
{
"groupName": "string",
"groupConfig": {
"interviewType": "string"
},
"responseVisibility": true,
"expirationDate": "string",
"expiresAt": "string",
"startsAt": "string",
"landingPageInfo": "string",
"enableBanner": true,
"removeBanner": true,
"enableReminder": true,
"reminderInterval": null,
"maxReminders": null,
"enableInclusiveHiring": true,
"companyBanner": "string"
}
Parameters
Name | In | Type | Required | Description |
---|---|---|---|---|
body | body | CreateAssessment | false |
Detailed descriptions
body:
{
"groupName":"dName",
"groupConfig":{
"interviewType":"fixed"
},
"responseVisibility":false,
"expirationDate":"2021-08-19T03:17:32+05:30",
"expiresAt":"1629323252040",
"startsAt":"1628718452040",
"landingPageInfo":"Info",
"enableBanner":true,
"removeBanner":false,
"enableReminder":false,
"reminderInterval":null,
"maxReminders":null,
"enableInclusiveHiring":false,
"companyBanner":"public/x.png"
}
Responses
Status | Meaning | Description | Schema |
---|---|---|---|
200 | OK | none | None |
List Assessments
Code samples
const headers = {
'x-api-key':'API_KEY',
'Authorization': 'xyzn504hh377dhdh73....'
};
fetch('https://api.x0pa.ai/room/v1/assessments',
{
method: 'GET',
headers: headers
})
.then(function(res) {
return res.json();
}).then(function(body) {
console.log(body);
});
import requests
headers = {
'x-api-key': 'API_KEY',
'Authorization': 'xyzn504hh377dhdh73....'
}
r = requests.get('https://api.x0pa.ai/room/v1/assessments', headers = headers)
print(r.json())
# You can also use wget
curl -X GET https://api.x0pa.ai/room/v1/assessments \
-H 'x-api-key: API_KEY'
GET /assessments
Responses
Status | Meaning | Description | Schema |
---|---|---|---|
200 | OK | none | None |
Get Assessment
Code samples
const headers = {
'x-api-key':'API_KEY'
};
fetch('https://api.x0pa.ai/room/v1/assessments/{id}',
{
method: 'GET',
headers: headers
})
.then(function(res) {
return res.json();
}).then(function(body) {
console.log(body);
});
import requests
headers = {
'x-api-key': 'API_KEY',
}
r = requests.get('https://api.x0pa.ai/room/v1/assessments/{id}', headers = headers)
print(r.json())
# You can also use wget
curl -X GET https://api.x0pa.ai/room/v1/assessments/{id} \
-H 'x-api-key: API_KEY' \
-H 'Authorization: xyzn504hh377dhdh73....'
GET /assessments/{id}
Parameters
Name | In | Type | Required | Description |
---|---|---|---|---|
id | path | any | true | none |
Responses
Status | Meaning | Description | Schema |
---|---|---|---|
200 | OK | none | None |
Edit Assessment
Code samples
const inputBody = '{}';
const headers = {
'Content-Type':'application/json',
'x-api-key':'API_KEY',
};
fetch('https://api.x0pa.ai/room/v1/assessments/{id}',
{
method: 'PATCH',
body: inputBody,
headers: headers
})
.then(function(res) {
return res.json();
}).then(function(body) {
console.log(body);
});
import requests
headers = {
'Content-Type': 'application/json',
'x-api-key': 'API_KEY',
'Authorization': 'xyzn504hh377dhdh73....'
}
r = requests.patch('https://api.x0pa.ai/room/v1/assessments/{id}', headers = headers)
print(r.json())
# You can also use wget
curl -X PATCH https://api.x0pa.ai/room/v1/assessments/{id} \
-H 'Content-Type: application/json' \
-H 'x-api-key: API_KEY' \
-H 'Authorization: xyzn504hh377dhdh73....'
PATCH /assessments/{id}
Body parameter
{}
Parameters
Name | In | Type | Required | Description |
---|---|---|---|---|
id | path | any | true | none |
Responses
Status | Meaning | Description | Schema |
---|---|---|---|
200 | OK | none | None |
Questions
Add Question
Code samples
const inputBody = '{}';
const headers = {
'Content-Type':'application/json',
'x-api-key':'API_KEY'
};
fetch('https://api.x0pa.ai/room/v1/assessments/{id}/question',
{
method: 'POST',
body: inputBody,
headers: headers
})
.then(function(res) {
return res.json();
}).then(function(body) {
console.log(body);
});
import requests
headers = {
'Content-Type': 'application/json',
'x-api-key': 'API_KEY'
}
r = requests.post('https://api.x0pa.ai/room/v1/assessments/{id}/question', headers = headers)
print(r.json())
# You can also use wget
curl -X POST https://api.x0pa.ai/room/v1/assessments/{id}/question \
-H 'Content-Type: application/json' \
-H 'x-api-key: API_KEY'
POST /assessments/{id}/question
Body parameter
{}
Parameters
Name | In | Type | Required | Description |
---|---|---|---|---|
id | path | any | true | none |
Responses
Status | Meaning | Description | Schema |
---|---|---|---|
200 | OK | none | None |
Candidates
Add Candidate
Code samples
const inputBody = {
"firstName":"Jane",
"lastName":"Doe",
"emailAddress":"janedoe@example.com",
"videointerviewGroupId": "1"
};
const headers = {
'Content-Type':'application/json',
'x-api-key':'API_KEY',
'Authorization': 'xyzn504hh377dhdh73....'
};
fetch('https://api.x0pa.ai/room/v1/assessments/{id}/candidate',
{
method: 'POST',
body: inputBody,
headers: headers
})
.then(function(res) {
return res.json();
}).then(function(body) {
console.log(body);
});
import requests
headers = {
'Content-Type': 'application/json',
'x-api-key': 'API_KEY',
'Authorization': 'xyzn504hh377dhdh73....'
}
r = requests.post('https://api.x0pa.ai/room/v1/assessments/{id}/candidate', headers = headers)
print(r.json())
# You can also use wget
curl -X POST https://api.x0pa.ai/room/v1/assessments/{id}/candidate \
-H 'Content-Type: application/json' \
-H 'x-api-key: API_KEY' \
-H 'Authorization: xyzn504hh377dhdh73....'
POST /assessments/{id}/candidate
Body parameter
{
"firstName":"Jane",
"lastName":"Doe",
"emailAddress":"janedoe@example.com",
"videointerviewGroupId": "1"
}
Parameters
Name | In | Type | Required | Description |
---|---|---|---|---|
id | path | any | true | none |
Example responses
200 Response
[
{
"interviewId":"611b0532-d8a2-4dc5-913a-e11656b68075",
"recruiterId":5631,
"atsJobId":"0",
"interviewName":"dName",
"status":"Draft",
"atsCandidateId":0,
"createdAt":"2021-08-15T06:31:40+00:00",
"publicUuid":"bvig-8b261022-e30e-43fe-a307-c817654903ae",
"candidateEmail":"badi@gmail.com",
"companyId":5143,
"questionConfig":"{\"interviewType\":\"fixed\"}",
"profileId":184583,
"type":"x0pa",
"videointerviewGroupId":824,
"expirationDate":"2021-08-18T21:47:32+00:00",
"maximumReminders":0
}
]
Responses
Status | Meaning | Description | Schema |
---|---|---|---|
200 | OK | none | None |
Send Invite
Code samples
const inputBody = '{}';
const headers = {
'Content-Type':'application/json',
'x-api-key':'API_KEY'
};
fetch('https://api.x0pa.ai/room/v1/assessments/{id}/invite',
{
method: 'POST',
body: inputBody,
headers: headers
})
.then(function(res) {
return res.json();
}).then(function(body) {
console.log(body);
});
import requests
headers = {
'Content-Type': 'application/json',
'x-api-key': 'API_KEY',
'Authorization': 'xyzn504hh377dhdh73....'
}
r = requests.post('https://api.x0pa.ai/room/v1/assessments/{id}/invite', headers = headers)
print(r.json())
# You can also use wget
curl -X POST https://api.x0pa.ai/room/v1/assessments/{id}/invite \
-H 'Content-Type: application/json' \
-H 'x-api-key: API_KEY' \
-H 'Authorization: xyzn504hh377dhdh73....'
POST /assessments/{id}/invite
Body parameter
{
"videointerviewGroupId": "1",
"interviewIds":["611b0532-d8a2-4dc5-913a-e11656b68075"]
}
Parameters
Name | In | Type | Required | Description |
---|---|---|---|---|
id | path | any | true | none |
Example responses
200 Response
{
"msg":"The invitation has been sent successfully"
}
Responses
Status | Meaning | Description | Schema |
---|---|---|---|
200 | OK | none | None |
List Candidates
Code samples
const headers = {
'x-api-key':'API_KEY',
'Authorization': 'xyzn504hh377dhdh73....' \
};
fetch('https://api.x0pa.ai/room/v1/assessments/{id}/candidates',
{
method: 'GET',
headers: headers
})
.then(function(res) {
return res.json();
}).then(function(body) {
console.log(body);
});
import requests
headers = {
'x-api-key': 'API_KEY',
'Authorization': 'xyzn504hh377dhdh73....'
}
r = requests.get('https://api.x0pa.ai/room/v1/assessments/{id}/candidates', headers = headers)
print(r.json())
# You can also use wget
curl -X GET https://api.x0pa.ai/room/v1/assessments/{id}/candidates \
-H 'x-api-key: API_KEY' \
-H 'Authorization: xyzn504hh377dhdh73....'
GET /assessments/{id}/candidates
Parameters
Name | In | Type | Required | Description |
---|---|---|---|---|
id | path | any | true | none |
Example responses
200 Response
{
"count":1,
"overallFeedback":false,
"Videointerviews":[
{
"id":"1",
"interviewId":"88709c9a-3298-4c59-93df-1ad76bd620a8",
"recruiterId":"1",
"atsJobId":"0",
"interviewName":"dName",
"status":"Draft",
"inviteSent":false,
"rrCandidateId":null,
"atsCandidateId":"0",
"createdAt":"2021-08-10T06:49:03.000Z",
"updatedAt":"2021-08-10T06:49:03.929Z",
"jobId":null,
"isPublic":null,
"publicUuid":"bvig-55628c51-4567-444d-a767-f32ae440daf9",
"avatarUrl":null,
"candidateEmail":"janedoe@example.com",
"profileVideo":null,
"responseAt":null,
"inviterEmail":null,
"companyId":"5143",
"questionConfig":{
"interviewType":"fixed"
},
"profileId":123,
"type":"x0pa",
"videointerviewGroupId":1,
"startsAt":null,
"expiresAt":null,
"expirationDate":"2021-08-18T21:47:32.000Z",
"interviewScore":null,
"reviewerCount":null,
"totalScore":null,
"result":null,
"outcome":null,
"sharingUrl":null,
"inviteDate":null,
"maximumReminders":"0",
"retakeReason":null,
"retakeSent":null,
"retakeApproval":null,
"questionFeedback":false,
"interviewFeedback":true,
"videointerviewgroup":{
"videointerviewGroupId":1,
"groupName":"dName"
},
"profile":{
"profileId":123,
"firstName":"Jane",
"lastName":"Doe",
"email":"janedoe@example.com",
"iv":"46ed56e4f455d75afeb473a78d801c20"
}
}
]
}
Responses
Status | Meaning | Description | Schema |
---|---|---|---|
200 | OK | none | None |
Get Public URL
Code samples
const headers = {
'x-api-key':'API_KEY',
'Authorization': 'xyzn504hh377dhdh73....'
};
fetch('https://api.x0pa.ai/room/v1/candidates/{id}/share',
{
method: 'POST',
headers: headers
})
.then(function(res) {
return res.json();
}).then(function(body) {
console.log(body);
});
import requests
headers = {
'x-api-key': 'API_KEY'
}
r = requests.post('https://api.x0pa.ai/room/v1/candidates/{id}/share', headers = headers)
print(r.json())
# You can also use wget
curl -X POST https://api.x0pa.ai/room/v1/candidates/{id}/share \
-H 'x-api-key: API_KEY' \
-H 'Authorization: xyzn504hh377dhdh73....'
POST /candidates/{id}/share
Parameters
Name | In | Type | Required | Description |
---|---|---|---|---|
id | path | any | true | none |
Example responses
200 Response
{
"videointerviewUrl":"https://live.x0pa.ai/....",
"videointerviewId":"611b0532-d8a2-4dc5-913a-e11656b68075"
}
Responses
Status | Meaning | Description | Schema |
---|---|---|---|
200 | OK | none | None |
Delete Candidate
Code samples
const inputBody = [{
"profileId": 123,
"videointerviewGroupId":"1"
}];
const headers = {
'Content-Type':'application/json',
'x-api-key':'API_KEY',
'Authorization': 'xyzn504hh377dhdh73....'
};
fetch('https://api.x0pa.ai/room/v1/assessment/{id}/candidates/{vid}',
{
method: 'DELETE',
body: inputBody,
headers: headers
})
.then(function(res) {
return res.json();
}).then(function(body) {
console.log(body);
});
import requests
headers = {
'Content-Type': 'application/json',
'x-api-key': 'API_KEY',
'Authorization': 'xyzn504hh377dhdh73....'
}
r = requests.delete('https://api.x0pa.ai/room/v1/assessment/{id}/candidates/{vid}', headers = headers)
print(r.json())
# You can also use wget
curl -X DELETE https://api.x0pa.ai/room/v1/assessment/{id}/candidates/{vid} \
-H 'Content-Type: application/json' \
-H 'x-api-key: API_KEY' \
-H 'Authorization: xyzn504hh377dhdh73....'
DELETE /assessment/{id}/candidates/{vid}
Body parameter
[{
"profileId": 123,
"videointerviewGroupId":"1"
}]
Parameters
Name | In | Type | Required | Description |
---|---|---|---|---|
id | path | any | true | none |
vid | path | any | true | none |
Example responses
200 Response
[{
"videointerviews": {
"affectedRows":1,
"count":1,
"rows":[]
}
}]
Responses
Status | Meaning | Description | Schema |
---|---|---|---|
200 | OK | none | None |
Edit Candidate
Code samples
const inputBody = '{}';
const headers = {
'Content-Type':'application/json',
'x-api-key':'API_KEY',
'Authorization': 'xyzn504hh377dhdh73....'
};
fetch('https://api.x0pa.ai/room/v1/assessments/{id}/candidate/{pid}',
{
method: 'PATCH',
body: inputBody,
headers: headers
})
.then(function(res) {
return res.json();
}).then(function(body) {
console.log(body);
});
import requests
headers = {
'Content-Type': 'application/json',
'x-api-key': 'API_KEY',
'Authorization': 'xyzn504hh377dhdh73....'
}
r = requests.patch('https://api.x0pa.ai/room/v1/assessments/{id}/candidate/{pid}', headers = headers)
print(r.json())
# You can also use wget
curl -X PATCH https://api.x0pa.ai/room/v1/assessments/{id}/candidate/{pid} \
-H 'Content-Type: application/json' \
-H 'x-api-key: API_KEY' \
-H 'Authorization: xyzn504hh377dhdh73....'
PATCH /assessments/{id}/candidate/{pid}
Body parameter
{}
Parameters
Name | In | Type | Required | Description |
---|---|---|---|---|
id | path | any | true | none |
pid | path | any | true | none |
Responses
Status | Meaning | Description | Schema |
---|---|---|---|
200 | OK | none | None |
Ratings
List Rating Criteria
Code samples
const headers = {
'x-api-key':'API_KEY'
};
fetch('https://api.x0pa.ai/room/v1/rating-criteria',
{
method: 'GET',
headers: headers
})
.then(function(res) {
return res.json();
}).then(function(body) {
console.log(body);
});
import requests
headers = {
'x-api-key': 'API_KEY'
}
r = requests.get('https://api.x0pa.ai/room/v1/rating-criteria', headers = headers)
print(r.json())
# You can also use wget
curl -X GET https://api.x0pa.ai/room/v1/rating-criteria \
-H 'x-api-key: API_KEY'
GET /rating-criteria
Responses
Status | Meaning | Description | Schema |
---|---|---|---|
200 | OK | none | None |
Create Rating Critieria
Code samples
const inputBody = '{}';
const headers = {
'Content-Type':'application/json',
'x-api-key':'API_KEY'
};
fetch('https://api.x0pa.ai/room/v1/rating-criteria',
{
method: 'POST',
body: inputBody,
headers: headers
})
.then(function(res) {
return res.json();
}).then(function(body) {
console.log(body);
});
import requests
headers = {
'Content-Type': 'application/json',
'x-api-key': 'API_KEY'
}
r = requests.post('https://api.x0pa.ai/room/v1/rating-criteria', headers = headers)
print(r.json())
# You can also use wget
curl -X POST https://api.x0pa.ai/room/v1/rating-criteria \
-H 'Content-Type: application/json' \
-H 'x-api-key: API_KEY'
POST /rating-criteria
Body parameter
{}
Responses
Status | Meaning | Description | Schema |
---|---|---|---|
200 | OK | none | None |
Edit Rating Criteria
Code samples
const inputBody = '{}';
const headers = {
'Content-Type':'application/json',
'x-api-key':'API_KEY'
};
fetch('https://api.x0pa.ai/room/v1/rating-criteria/{id}',
{
method: 'PATCH',
body: inputBody,
headers: headers
})
.then(function(res) {
return res.json();
}).then(function(body) {
console.log(body);
});
import requests
headers = {
'Content-Type': 'application/json',
'x-api-key': 'API_KEY'
}
r = requests.patch('https://api.x0pa.ai/room/v1/rating-criteria/{id}', headers = headers)
print(r.json())
# You can also use wget
curl -X PATCH https://api.x0pa.ai/room/v1/rating-criteria/{id} \
-H 'Content-Type: application/json' \
-H 'x-api-key: API_KEY'
PATCH /rating-criteria/{id}
Body parameter
{}
Parameters
Name | In | Type | Required | Description |
---|---|---|---|---|
id | path | any | true | none |
Responses
Status | Meaning | Description | Schema |
---|---|---|---|
200 | OK | none | None |
Schemas
TokenPayload
{
"email": "a@x.ai",
"password": "xyz"
}
Properties
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
string | false | none | none | |
password | string | false | none | none |
TokenResponse
{
"id": "udDuD1E2IrKrATVUmDZioesZ9clJuiehmvvEfZdDnhwmbG5",
"ttl": 1209600,
"created": "2021-08-08T04:30:00.007Z",
"userId": 100
}
Properties
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
id | string | false | none | none |
ttl | integer | false | none | none |
created | string | false | none | none |
userId | integer | false | none | none |
CreateAssessment
{
"groupName": "Sales Manager",
"groupConfig": {
"interviewType": "fixed"
},
"responseVisibility": false,
"expirationDate": "string",
"expiresAt": "string",
"startsAt": "string",
"landingPageInfo": "Test description",
"enableBanner": false,
"removeBanner": false,
"enableReminder": false,
"enableInclusiveHiring": false,
"companyBanner": "string"
}
Properties
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
groupName | string | false | none | none |
groupConfig | object | false | none | none |
ยป interviewType | string | false | none | none |
responseVisibility | boolean | false | none | none |
expirationDate | string | false | none | none |
expiresAt | string | false | none | none |
startsAt | string | false | none | none |
landingPageInfo | string | false | none | none |
enableBanner | boolean | false | none | none |
removeBanner | boolean | false | none | none |
enableReminder | boolean | false | none | none |
reminderInterval | any | false | none | none |
maxReminders | any | false | none | none |
enableInclusiveHiring | boolean | false | none | none |
companyBanner | string | false | none | none |