Updated April 22, 2026
RecruitSome API
The RecruitSome API provides programmatic access to published vacancy data, enabling seamless integration with your recruitment platforms, job boards, and HR systems.
Base URL
All API requests should be made to:
https://app\.recruitsome\.com/api/v1
Authentication
The RecruitSome API uses Bearer token authentication. You'll need to include your API key in the Authorization header of every request.
Authorization: Bearer YOUR_API_KEY
Getting Started
1. Generate an API Key
To use the RecruitSome API, you first need to generate an API key from your tenant dashboard:
- Log in to your RecruitSome account
- Navigate to Settings → Integrations → API Keys
- Click Create API Key
- Give your API key a descriptive name (e.g., "Production Integration" or "Development Testing")
- Click Generate Key
- Important: Copy and securely store your API key immediately. For security reasons, you won't be able to see it again.
Warning
Keep API keys secure and never expose them in client-side code or public repositories.
API Key Permissions
Each API key can be scoped to specific permissions, following the principle of least privilege. When creating a key, select only the permissions your integration needs:
| Scope | Access |
|---|---|
vacancies:read | View published vacancies and facets |
applications:write | Submit job applications |
candidates:read | View candidate list and profiles |
candidates:write | Create candidates via resume upload |
team:read | View team members |
locations:read | View office locations |
articles:read | Read published articles |
- Career Website: vacancies, applications, locations, team, articles
- Chrome Plugin: candidates (read + write), team
If a request is made to an endpoint the API key doesn't have access to, a 403 Forbidden response with the INSUFFICIENT_SCOPE error code is returned.
2. Make Your First Request
Let's test your API key with a simple health check:
curl -X GET https://app\.recruitsome\.com/api/v1/health \
-H "Authorization: Bearer YOUR_API_KEY"
A successful response will look like:
{
"status": "authenticated",
"tenant": "your-tenant-id"
}
Pagination
All list endpoints return paginated results to ensure optimal performance. The API uses cursor-based pagination with the following parameters:
| Parameter | Type | Default | Description |
|---|---|---|---|
page | integer | 1 | The page number to retrieve |
per_page | integer | 20 | Number of items per page (max: 100) |
Pagination Response Structure
{
"data": [...],
"links": {
"first": "https://app\.recruitsome\.com/api/v1/vacancies?page=1",
"last": "https://app\.recruitsome\.com/api/v1/vacancies?page=5",
"prev": null,
"next": "https://app\.recruitsome\.com/api/v1/vacancies?page=2"
},
"meta": {
"current_page": 1,
"from": 1,
"last_page": 5,
"path": "https://app\.recruitsome\.com/api/v1/vacancies",
"per_page": 20,
"to": 20,
"total": 95
}
}
Example: Iterating Through Pages
let page = 1;
let hasMore = true;
while (hasMore) {
const response = await fetch(
https://app\.recruitsome\.com/api/v1/vacancies?page=${page}&per_page=50,
{
headers: {
'Authorization': 'Bearer YOUR_API_KEY'
}
}
);
const data = await response.json();
// Process the vacancies
processVacancies(data.data);
// Check if there are more pages
hasMore = data.meta.current_page < data.meta.last_page;
page++;
}
Rate Limiting
To ensure fair usage and maintain service quality:
- API requests are limited to 60 requests per minute
- Rate limit information is included in response headers:
X-RateLimit-Limit: Maximum requests per minute
- X-RateLimit-Remaining: Requests remaining in current window
- X-RateLimit-Reset: Unix timestamp when the limit resets
Response Formats
All API responses are returned in JSON format with UTF-8 encoding.
Successful Response
{
"data": {
// Response data
}
}
Error Response
{
"message": "Error description",
"errors": {
"field": ["Validation error message"]
}
}
HTTP Status Codes
| Code | Description |
|---|---|
| 200 | Success |
| 401 | Unauthorized - Invalid or missing API key |
| 403 | Forbidden - API access not enabled for tenant |
| 404 | Not Found - Resource doesn't exist |
| 422 | Unprocessable Entity - Validation errors |
| 429 | Too Many Requests - Rate limit exceeded |
| 500 | Internal Server Error |
Next Steps
- List Published Vacancies - Learn how to retrieve and filter vacancy listings
- Get Vacancy Details - Access complete vacancy information
- API Reference - Complete API endpoint documentation