Endpoints
All API endpoints are available under the base URL below. Every request must include a valid API key in the Authorization header.
Base URL
https://recruit.comsalo.com/api/v1Jobs
GET
/jobsList all active job listings for your company. Public — no API key required.
GET
/jobs/:idRetrieve a single job listing by ID. Public — no API key required.
POST
/jobsCreate a new job listing. Requires API key (Pro/Max).
PUT
/jobs/:idUpdate an existing job listing. Requires API key (Pro/Max).
DELETE
/jobs/:idDelete a job listing. Requires API key (Pro/Max).
POST /jobs — Request body
Request body
{
"title": "Senior Frontend Engineer",
"department": "Engineering",
"location": "Istanbul, Turkey",
"work_type": "hybrid", // "remote" | "hybrid" | "on-site"
"status": "active", // "active" | "draft" | "closed"
"description": "We are looking for..."
}Response
Response — 201 Created
{
"id": "b3f2a1c4-...",
"company_id": "a1b2c3d4-...",
"title": "Senior Frontend Engineer",
"department": "Engineering",
"location": "Istanbul, Turkey",
"work_type": "hybrid",
"status": "active",
"created_at": "2026-03-14T10:00:00.000Z",
"updated_at": "2026-03-14T10:00:00.000Z"
}Candidates
GET
/candidatesList all candidates for your company. Requires API key (Pro/Max).
GET
/candidates/:idRetrieve a single candidate by ID. Requires API key (Pro/Max).
POST
/candidatesSubmit a candidate application. Public or with API key.
PUT
/candidates/:idUpdate candidate status or details. Requires API key (Pro/Max).
DELETE
/candidates/:idRemove a candidate. Requires API key (Pro/Max).
POST /candidates — Request body
Request body (multipart/form-data)
{
"first_name": "Jane",
"last_name": "Doe",
"email": "[email protected]",
"phone": "+44 7700 900000",
"job_id": "b3f2a1c4-...",
"company_id": "a1b2c3d4-...",
"cv": <file> // optional PDF or DOCX, max 5MB
}Query parameters
| Parameter | Endpoint | Description |
|---|---|---|
| company_id | GET /jobs | Filter jobs by company ID. |
| company_id | GET /candidates | Filter candidates by company ID. |