Skip to content
Looking for our India delivery & GCC team?See the India site →

Introduction and quickstart

The Helix API is a JSON REST API over a pool of consented candidates, plus resume and job-description parsing, market pay data and open roles. This page gets you to a first successful call.

The basics

  • Base URL: https://api.helixhumancapital.in/v1. HTTPS only.
  • Requests and responses are JSON, except resume upload (multipart/form-data) and chat (server-sent events).
  • Authentication is a bearer key in the Authorization header. See Authentication and scopes.
  • Every response carries x-request-id and x-credits-charged. Quote the request id when you contact support.
  • Machine-readable spec: OpenAPI 3.1. Import it into Postman, Insomnia or a code generator.

1. Get a key

Keys are issued by us. Email support@helixhumancapital.in with your company, what you are building and the plan you want. Ask for a test key (hlx_test_…) first: it returns synthetic candidates, is never billed and has the same shapes as production. A live key (hlx_live_…) is shown once when it is created and cannot be recovered, only replaced.

2. Check the key

GET /v1/me is free and tells you the plan, scopes and credits left.

curl
curl https://api.helixhumancapital.in/v1/me \
  -H "Authorization: Bearer $HELIX_KEY"
Python (requests)
import os, requests

r = requests.get("https://api.helixhumancapital.in/v1/me",
                 headers={"Authorization": f"Bearer {os.environ['HELIX_KEY']}"})
print(r.json())
Node.js (fetch)
const r = await fetch("https://api.helixhumancapital.in/v1/me", {
  headers: { Authorization: `Bearer ${process.env.HELIX_KEY}` },
})
console.log(await r.json())
Response
{
  "company": "Acme Recruiting",
  "environment": "test",
  "plan": { "code": "pro", "name": "Pro", "unlimited": false, "ratePerMinute": 60 },
  "scopes": ["search", "match", "parse", "market", "jobs", "pii:contact", "pii:comp", "pii:docs"],
  "credits": { "allowance": 3000, "used": 0, "remaining": 3000, "periodEnds": "2026-12-09T17:15:28.318Z" }
}

3. Search

Describe who you want in plain language. Results are ranked. Without expand you get an anonymised summary for 1 credit; with expand: true each result is the full record, limited to the field scopes your key holds, for 5 more credits per record.

curl
curl https://api.helixhumancapital.in/v1/search \
  -H "Authorization: Bearer $HELIX_KEY" \
  -H "Content-Type: application/json" \
  -d '{"query": "senior backend engineer, python, postgres, bengaluru",
       "limit": 5,
       "filters": {"maxNoticeDays": 30, "minYears": 5}}'
Python (requests)
r = requests.post("https://api.helixhumancapital.in/v1/search",
    headers={"Authorization": f"Bearer {KEY}"},
    json={"query": "senior backend engineer, python, postgres, bengaluru",
          "limit": 5,
          "filters": {"maxNoticeDays": 30, "minYears": 5}})
for c in r.json()["results"]:
    print(c["id"], c["role"], c["yearsExperience"], c["skills"][:5])
Node.js (fetch)
const r = await fetch("https://api.helixhumancapital.in/v1/search", {
  method: "POST",
  headers: { Authorization: `Bearer ${KEY}`, "Content-Type": "application/json" },
  body: JSON.stringify({
    query: "senior backend engineer, python, postgres, bengaluru",
    limit: 5,
    filters: { maxNoticeDays: 30, minYears: 5 },
  }),
})
const { results } = await r.json()
Response (shortened)
{
  "query": "senior backend engineer, python, postgres, bengaluru",
  "expanded": false,
  "count": 5,
  "appliedFilters": { "maxNoticeDays": 30, "minYears": 5 },
  "filtersRelaxed": false,
  "results": [
    { "id": 5428, "role": "Backend Engineer", "seniority": "mid", "yearsExperience": 4,
      "skills": ["Python", "SQL", "Django", "FastAPI"], "summary": "…", "addedAt": "2026-…" }
  ]
}

If your filters match too few people we relax them and say so with filtersRelaxed: true, rather than returning nothing. Page through results by passing the ids you have already seen in exclude.

4. Where next

Introduction and quickstart | Helix API documentation — Helix Human Capital