The ROUND0 API allows you to integrate candidate screening into your existing workflows and systems.
To use the ROUND0 API, you need:
All API endpoints are accessed via:
https://rz-app-omega.vercel.app/api/v1
The ROUND0 API uses API keys for authentication.
API keys have the format:
rz_live_1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcd
Include your API key in the Authorization header of every request:
Authorization: Bearer rz_live_1234567890abcdef...
Example request:
curl https://rz-app-omega.vercel.app/api/v1/jobs \
-H "Authorization: Bearer rz_live_1234567890abcdef..."
View keys:
Revoke keys:
API requests are rate-limited to prevent abuse and ensure system stability.
Every API response includes rate limit headers:
X-RateLimit-Limit: 100
X-RateLimit-Remaining: 75
X-RateLimit-Reset: 1640000000
Headers explained:
X-RateLimit-Limit: Maximum requests allowed per windowX-RateLimit-Remaining: Requests remaining in current windowX-RateLimit-Reset: Unix timestamp when the limit resetsIf you exceed the rate limit, you'll receive a 429 Too Many Requests response:
{
"error": {
"type": "rate_limit_exceeded",
"message": "Rate limit exceeded. Please retry after 30 seconds."
}
}
Best practices:
Need higher rate limits? Contact our sales team at info@round0.io to discuss enterprise plans.
All POST, PATCH, and PUT requests must include:
Content-Type: application/json
Request bodies must be valid JSON:
{
"job_id": "550e8400-e29b-41d4-a716-446655440000",
"candidate": {
"name": "John Doe",
"email": "john@example.com"
}
}
Successful requests return appropriate HTTP status codes and JSON responses:
200 OK - Request succeeded:
{
"id": "550e8400-e29b-41d4-a716-446655440000",
"status": "invited",
"interview_url": "https://interview.round0.io/interview/abc123..."
}
201 Created - Resource created successfully:
{
"id": "550e8400-e29b-41d4-a716-446655440000",
"created_at": "2024-01-15T10:30:00Z"
}
Errors return appropriate HTTP status codes and error objects:
{
"error": {
"type": "validation_error",
"message": "Invalid job_id provided",
"details": {
"field": "job_id",
"reason": "Job not found"
}
}
}
| Code | Meaning | Description |
|---|---|---|
| 200 | OK | Request succeeded |
| 201 | Created | Resource created successfully |
| 400 | Bad Request | Invalid request format or parameters |
| 401 | Unauthorized | Missing or invalid API key |
| 403 | Forbidden | No Connectivity Package subscription |
| 404 | Not Found | Resource doesn't exist |
| 429 | Too Many Requests | Rate limit exceeded |
| 500 | Internal Server Error | Server error (retry with backoff) |
| 503 | Service Unavailable | Temporary outage (retry with backoff) |
Common error types you may encounter:
authentication_error
permission_error
validation_error
resource_not_found
rate_limit_exceeded
insufficient_credits
trial_restriction
List endpoints support pagination using cursor-based pagination:
GET /api/v1/jobs?limit=20&cursor=eyJpZCI6IjEyMyJ9
Parameters:
limit: Number of results per page (default: 20, max: 100)cursor: Cursor token from previous response (for next page){
"data": [
{ "id": "1", "title": "Software Engineer" },
{ "id": "2", "title": "Product Manager" }
],
"pagination": {
"next_cursor": "eyJpZCI6IjIifQ==",
"has_more": true
}
}
Fields:
data: Array of resultspagination.next_cursor: Cursor for next page (null if no more pages)pagination.has_more: Boolean indicating if more results existlet allJobs = [];
let cursor = null;
do {
const url = cursor
? `/api/v1/jobs?cursor=${cursor}`
: '/api/v1/jobs';
const response = await fetch(url, {
headers: { 'Authorization': `Bearer ${apiKey}` }
});
const result = await response.json();
allJobs = [...allJobs, ...result.data];
cursor = result.pagination.next_cursor;
} while (cursor !== null);
Some endpoints support idempotency to safely retry requests without duplicating operations.
Include an idempotency key in the header for POST requests:
Idempotency-Key: unique-string-12345
Key requirements:
Example:
curl -X POST https://rz-app-omega.vercel.app/api/v1/invitations \
-H "Authorization: Bearer rz_live_..." \
-H "Idempotency-Key: 550e8400-e29b-41d4-a716-446655440000" \
-H "Content-Type: application/json" \
-d '{"job_id": "...", "candidate": {...}}'
Behavior:
Use cases:
The API works seamlessly with webhooks to create event-driven workflows.
Integration pattern:
interview_started webhook when candidate beginsinterview_ended webhook when candidate completesSee Webhooks Guide for setup instructions.
The ROUND0 API provides these endpoint groups:
Create and manage job descriptions:
POST /api/v1/jobs - Create a jobGET /api/v1/jobs - List jobsGET /api/v1/jobs/:id - Get job detailsSee Jobs API Reference for details.
Create and manage candidates with CV data:
POST /api/v1/candidates - Create a candidateGET /api/v1/candidates - List candidatesGET /api/v1/candidates/:id - Get candidate detailsPATCH /api/v1/candidates/:id - Update a candidateDELETE /api/v1/candidates/:id - Delete a candidateSee Candidates API Reference for details.
Create screening interviews:
POST /api/v1/invitations - Create interview invitationSee Invitations API Reference for details.
Retrieve interview results:
GET /api/v1/interviews/:id - Get interview resultsGET /api/v1/interviews/:id/questions - Get interview questionsSee Interviews API Reference for details.
We provide a Postman collection to help you explore and test the API quickly.
Download Postman Collection
Import this collection into Postman to get started with pre-configured requests for all API endpoints.
Using the collection:
api_key variable to your API key in the collection variablesThe collection includes all endpoints with example requests and environment variables for easy configuration.
Currently, ROUND0 provides a REST API without official SDKs.
Community libraries:
Building your own: