Public REST API

Build hiring automations with ENBOQ Hire

Use scoped API keys to publish jobs, sync candidate pipelines, and keep your ATS in lockstep with ENBOQ Hire.

Get an API key

  1. 1
    Sign in to ENBOQ Hire

    Head to the dashboard and sign in with your company admin account.

  2. 2
    Open Company Settings

    Navigate to Settings → API Access and choose “Generate API Key”.

  3. 3
    Name & Scope the Key

    Give the key a descriptive label, choose the scopes required, and save the secret somewhere safe.

  4. 4
    Start Building

    Use the key with our integration endpoints. You can regenerate or revoke keys at any time.

Authentication basics
  • Include your key in the x-api-key header. Format: prefix.secret.
  • Keys are company scoped—requests only operate on data owned by the issuing organization.
  • Rotate or revoke at any time from Settings → API Access in the dashboard.
Permissions

Scopes & access control

ScopeDescription
jobs.readList or fetch job records.
jobs.createCreate new job postings via the integration API.
jobs.updateModify job fields such as title, salary, or description.
jobs.deleteRemove a job and its associated candidates.
jobs.statusPublish, pause, or close a job.
candidates.readList or fetch candidate records.
candidates.createAdd new candidates to a job.
candidates.updateUpdate candidate attributes such as stage, rating, or tags.
candidates.deleteDelete a candidate record.
Reference

Requests & responses per endpoint

GET/v1/public/jobs
jobs.read
Jobs · List
Retrieve a paginated set of jobs for the company associated with the API key.
https://api.enboqhire.com/v1/public/jobs

Notes

  • Supports filters: status, department, search, updatedAfter, updatedBefore.
  • Pagination parameters: page (starting at 1) and perPage (max 100).

Request examples

cURL example
Fetch the first 10 jobs.
curl \
  -H "x-api-key: YOUR_PREFIX.YOUR_SECRET" \
  "https://api.enboqhire.com/v1/public/jobs?page=1&perPage=10"

Example response

200 OK
{
  "jobs": [
    {
      "id": "69e8e4c4-7bb7-4fb9-82f4-314ed60968cb",
      "title": "Senior Robotics Engineer",
      "department": "Hardware",
      "employment_type": "full_time",
      "location": "Austin, TX",
      "status": "published",
      "created_at": "2024-11-04T13:43:21.918Z"
    }
  ],
  "pagination": {
    "page": 1,
    "perPage": 10,
    "total": 14
  }
}
POST/v1/public/jobs
jobs.create
Jobs · Create
Create a new job posting. Provide at least title, employmentType, locationType, and description.
https://api.enboqhire.com/v1/public/jobs

Notes

  • Optional fields include salaryMin/salaryMax, benefits, qualifications, and customQuestions.

Request examples

cURL example
Create a full-time onsite job in Austin.
curl -X POST \
  -H "x-api-key: YOUR_PREFIX.YOUR_SECRET" \
  -H "Content-Type: application/json" \
  -d '{
    "title": "Senior Robotics Engineer",
    "employmentType": "full_time",
    "locationType": "onsite",
    "location": "Austin, TX",
    "description": "Lead our robotics engineering initiatives.",
    "salaryMin": 120000,
    "salaryMax": 150000,
    "salaryVisible": true
  }' \
  "https://api.enboqhire.com/v1/public/jobs"

Example response

201 Created
{
  "job": {
    "id": "69e8e4c4-7bb7-4fb9-82f4-314ed60968cb",
    "company_id": "f50a7f3b-94de-4641-9e93-04a5166a442f",
    "title": "Senior Robotics Engineer",
    "employment_type": "full_time",
    "location_type": "onsite",
    "location": "Austin, TX",
    "status": "draft",
    "created_at": "2024-11-07T09:21:15.000Z"
  }
}
GET/v1/public/jobs/:jobId
jobs.read
Jobs · Retrieve
Fetch a single job by ID. Returns 404 if the job does not belong to the authenticated company.
https://api.enboqhire.com/v1/public/jobs/:jobId

Request examples

cURL example
Retrieve a job payload by ID.
curl \
  -H "x-api-key: YOUR_PREFIX.YOUR_SECRET" \
  "https://api.enboqhire.com/v1/public/jobs/69e8e4c4-7bb7-4fb9-82f4-314ed60968cb"

Example response

200 OK
{
  "job": {
    "id": "69e8e4c4-7bb7-4fb9-82f4-314ed60968cb",
    "title": "Senior Robotics Engineer",
    "employment_type": "full_time",
    "location_type": "onsite",
    "location": "Austin, TX",
    "status": "published",
    "description": "Lead our robotics engineering initiatives.",
    "created_at": "2024-11-04T13:43:21.918Z"
  }
}
PUT/v1/public/jobs/:jobId
jobs.update
Jobs · Update
Update one or more fields on an existing job. Provide only the fields that changed.
https://api.enboqhire.com/v1/public/jobs/:jobId

Notes

  • Validation ensures salaryMin ≤ salaryMax when both are provided.

Request examples

cURL example
Update salary and description for a job.
curl -X PUT \
  -H "x-api-key: YOUR_PREFIX.YOUR_SECRET" \
  -H "Content-Type: application/json" \
  -d '{
    "salaryMin": 130000,
    "salaryMax": 160000,
    "description": "Lead and mentor the robotics engineering team."
  }' \
  "https://api.enboqhire.com/v1/public/jobs/69e8e4c4-7bb7-4fb9-82f4-314ed60968cb"

Example response

200 OK
{
  "job": {
    "id": "69e8e4c4-7bb7-4fb9-82f4-314ed60968cb",
    "title": "Senior Robotics Engineer",
    "salary_min": 130000,
    "salary_max": 160000,
    "benefits": [
      "401k match",
      "Comprehensive health plan",
      "Stock options"
    ],
    "updated_at": "2024-11-08T10:22:44.000Z"
  }
}
PATCH/v1/public/jobs/:jobId/status
jobs.status
Jobs · Update status
Change a job's workflow status. Accepted values: draft, published, closed.
https://api.enboqhire.com/v1/public/jobs/:jobId/status

Request examples

cURL example
Publish a job.
curl -X PATCH \
  -H "x-api-key: YOUR_PREFIX.YOUR_SECRET" \
  -H "Content-Type: application/json" \
  -d '{
    "status": "published"
  }' \
  "https://api.enboqhire.com/v1/public/jobs/69e8e4c4-7bb7-4fb9-82f4-314ed60968cb/status"

Example response

200 OK
{
  "job": {
    "id": "69e8e4c4-7bb7-4fb9-82f4-314ed60968cb",
    "status": "published",
    "published_at": "2024-11-08T12:00:00.000Z"
  }
}
DELETE/v1/public/jobs/:jobId
jobs.delete
Jobs · Delete
Delete a job and cascade to related candidates. Use with caution—deletions are permanent.
https://api.enboqhire.com/v1/public/jobs/:jobId

Request examples

cURL example
Delete a job by ID.
curl -X DELETE \
  -H "x-api-key: YOUR_PREFIX.YOUR_SECRET" \
  "https://api.enboqhire.com/v1/public/jobs/69e8e4c4-7bb7-4fb9-82f4-314ed60968cb"

Example response

204 No Content
No response body is returned.

The job and its dependent records have been deleted.

GET/v1/public/candidates
candidates.read
Candidates · List
Retrieve candidates across the company with optional filters for job, stage, email, and date ranges.
https://api.enboqhire.com/v1/public/candidates

Notes

  • Use jobId to scope results to a single job pipeline.
  • Pagination parameters: page (starting at 1) and perPage (max 100).

Request examples

cURL example
List candidates for a job pipeline.
curl \
  -H "x-api-key: YOUR_PREFIX.YOUR_SECRET" \
  "https://api.enboqhire.com/v1/public/candidates?jobId=69e8e4c4-7bb7-4fb9-82f4-314ed60968cb&perPage=5"

Example response

200 OK
{
  "candidates": [
    {
      "id": "8071d0b8-5f8e-4dc5-8b2f-22094de3ee8f",
      "job_id": "69e8e4c4-7bb7-4fb9-82f4-314ed60968cb",
      "full_name": "Alex Smith",
      "email": "[email protected]",
      "stage": "interview",
      "applied_at": "2024-11-06T09:13:00.000Z"
    }
  ],
  "pagination": {
    "page": 1,
    "perPage": 5,
    "total": 12
  }
}
POST/v1/public/candidates
candidates.create
Candidates · Create
Add a new candidate to a job pipeline. Provide at minimum jobId, fullName, and email.
https://api.enboqhire.com/v1/public/candidates

Notes

  • jobId must refer to a job owned by the API key's company.

Request examples

cURL example
Submit a new candidate.
curl -X POST \
  -H "x-api-key: YOUR_PREFIX.YOUR_SECRET" \
  -H "Content-Type: application/json" \
  -d '{
    "jobId": "69e8e4c4-7bb7-4fb9-82f4-314ed60968cb",
    "fullName": "Taylor Morgan",
    "email": "[email protected]",
    "stage": "new"
  }' \
  "https://api.enboqhire.com/v1/public/candidates"

Example response

201 Created
{
  "candidate": {
    "id": "8071d0b8-5f8e-4dc5-8b2f-22094de3ee8f",
    "job_id": "69e8e4c4-7bb7-4fb9-82f4-314ed60968cb",
    "full_name": "Taylor Morgan",
    "email": "[email protected]",
    "stage": "new",
    "applied_at": "2024-11-08T09:45:00.000Z"
  }
}
GET/v1/public/candidates/:candidateId
candidates.read
Candidates · Retrieve
Fetch a candidate by ID. The candidate must belong to the company linked to the API key.
https://api.enboqhire.com/v1/public/candidates/:candidateId

Request examples

cURL example
Retrieve a candidate profile.
curl \
  -H "x-api-key: YOUR_PREFIX.YOUR_SECRET" \
  "https://api.enboqhire.com/v1/public/candidates/8071d0b8-5f8e-4dc5-8b2f-22094de3ee8f"

Example response

200 OK
{
  "candidate": {
    "id": "8071d0b8-5f8e-4dc5-8b2f-22094de3ee8f",
    "job_id": "69e8e4c4-7bb7-4fb9-82f4-314ed60968cb",
    "full_name": "Taylor Morgan",
    "email": "[email protected]",
    "stage": "new",
    "application_responses": {
      "cover_letter": "Excited about robotics leadership opportunities."
    }
  }
}
PUT/v1/public/candidates/:candidateId
candidates.update
Candidates · Update
Update candidate metadata such as stage, rating, application responses, or tags.
https://api.enboqhire.com/v1/public/candidates/:candidateId

Notes

  • Sending an empty body returns a 400 response.

Request examples

cURL example
Move a candidate to the interview stage and add a rating.
curl -X PUT \
  -H "x-api-key: YOUR_PREFIX.YOUR_SECRET" \
  -H "Content-Type: application/json" \
  -d '{
    "stage": "interview",
    "rating": 4,
    "tags": ["priority"]
  }' \
  "https://api.enboqhire.com/v1/public/candidates/8071d0b8-5f8e-4dc5-8b2f-22094de3ee8f"

Example response

200 OK
{
  "candidate": {
    "id": "8071d0b8-5f8e-4dc5-8b2f-22094de3ee8f",
    "stage": "interview",
    "rating": 4,
    "tags": ["priority"],
    "stage_changed_at": "2024-11-08T14:05:12.000Z"
  }
}
DELETE/v1/public/candidates/:candidateId
candidates.delete
Candidates · Delete
Remove a candidate from the pipeline. Use sparingly—deletions cannot be undone.
https://api.enboqhire.com/v1/public/candidates/:candidateId

Request examples

cURL example
Delete a candidate by ID.
curl -X DELETE \
  -H "x-api-key: YOUR_PREFIX.YOUR_SECRET" \
  "https://api.enboqhire.com/v1/public/candidates/8071d0b8-5f8e-4dc5-8b2f-22094de3ee8f"

Example response

204 No Content
No response body is returned.

Candidate record removed successfully.