Partner API v1
A small REST API for connecting an existing ATS to Scouting: pull your matched candidates, and push job postings in. Everything is scoped to the company that owns the API key.
Authentication
Create a key on the API keys page in your company dashboard. The full key is shown once — store it in your own secret manager. Send it as a bearer token on every request.
Authorization: Bearer sc_ab12cd34_xxxxxxxxxxxxxxxxxxxxxxxxBase URL: https://scouting.ae/api/public/v1. Revoking a key takes effect immediately.
GET /candidates
Matched candidates for your jobs, highest score first. Identities stay redacted until that match is unlocked — the same rule the dashboard follows.
Query parameters: job_id (optional), min_score (optional, 0–100), limit (optional, max 200).
curl https://scouting.ae/api/public/v1/candidates?min_score=70 \
-H "Authorization: Bearer $SCOUTING_API_KEY"
{
"object": "list",
"data": [
{
"match_id": "8f1c...",
"job": { "id": "3ab2...", "title": "Store Manager" },
"score": 84,
"explanation": "Eight years of UAE retail management ...",
"pipeline_stage": "new",
"unlocked": false,
"candidate": {
"id": "b71e...",
"headline": "Senior level",
"skills": ["stock control", "team leadership"],
"years_experience": 8,
"location": "Dubai"
}
}
]
}GET /jobs
Every job on your account with its status and stats.
curl https://scouting.ae/api/public/v1/jobs \
-H "Authorization: Bearer $SCOUTING_API_KEY"POST /jobs
Push a posting from your ATS. Include external_id and repeat calls update the existing posting with the same title instead of creating duplicates. Publishing with status: "active" puts the role into matching.
curl -X POST https://scouting.ae/api/public/v1/jobs \
-H "Authorization: Bearer $SCOUTING_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"external_id": "ATS-4821",
"title": "Store Manager",
"description": "Run a 12-person team across two Dubai Mall locations ...",
"requirements": "5+ years UAE retail management; stock and rota ownership",
"salary": "AED 16,000 - 20,000 / month",
"location": "Dubai",
"remote_ok": false,
"seniority": "Senior",
"status": "active",
"engagement_type": "full_time"
}'For project work send engagement_type: "freelance" with project_budget and project_duration.
Errors
Errors return a JSON body with a code and a message. 401 means a missing, unknown or revoked key; 400 means the body failed validation; 404 means the job id is not on your account.
{ "error": { "code": "unauthorized", "message": "Unknown API key." } }