# AI APIs for ATS builders

> Use Curriculo as the AI layer behind your ATS, job board or HR tool: CV parsing, scoring, translation, interview summaries and hosted screening interviews.

**Source:** /docs/ai-api-for-ats-builders/ (Curriculo Docs)  
**Updated:** 15 October 2026  
**Contact:** hello@curriculo.me

This page is for product and engineering teams building recruiting software. The Curriculo API turns CVs, job requirements and interviews into structured, decision-ready data. You send a document or a recording; you get back clean fields, a fit score, a translation, a transcript or a hiring summary.

The API is not another dashboard your users must log into. Your product keeps candidate records, the job workflow and the recruiter UI. The Curriculo API does the AI, language and media work behind it, through one key from the [Developer Console](/docs/console/).

## Which Curriculo API should my ATS use?

Use parse to turn incoming CVs into structured candidate records, evaluate to score them against a job, translate and detect language for multilingual pipelines, and summary or transcribe for interview recordings. Your ATS keeps the candidates, jobs and recruiter screens; the Curriculo API does the document, language and media work behind them, with one key.

## What the API does

| Capability | What you send | What you get back |
|---|---|---|
| [Parse CV](/docs/api/parse/) | One or more CVs (PDF or DOCX) in a single request. | The full résumé as clean, structured data: name, contact details, work history, education, skills. Values stay in the CV's own language and script. |
| [Evaluate candidate](/docs/api/evaluate/) | One or more CVs (PDF or DOCX) and the job, as text, a document or a registered `job_id`. | A suitability score with written reasoning, matched skills, gaps and summary points, for each CV. |
| [Translate](/docs/api/translate/) | Up to 200 strings, or PDF and DOCX documents. | Translations in the order you sent them, into any of 202 languages. One failed item never collapses the batch. |
| [Detect language](/docs/api/detect-language/) | One text, or up to 200. | The language of each, so you can route a CV or message before acting on it. |
| [Interview summary](/docs/api/summary/) | A transcript, a transcript document (PDF or DOCX), or a recording (video or audio). | Highlights, red flags, skills mentioned, and a recommendation with reasoning. Recordings come back with their transcript. |
| [Transcribe](/docs/api/transcribe/) | A recording. | The transcript only. |
| [Résumé assistant](/docs/api/prompt/) | A CV once, then plain-language instructions. | A working résumé you can question, edit or render in another language without re-uploading. |
| [Screening interview](/docs/api/screening-interview/) | Candidate emails, questions and your callback URL. | Curriculo emails each candidate, hosts the recorded interview, transcribes each answer and POSTs it, signed, to your server. |

Large backlogs and long recordings run as [background tasks](/docs/background-processing/): send links or uploads, get a `task_id` at once, and collect the result by polling or by signed callback.

> [!NOTE]
> The API is not a second ATS. `POST /jobs/` stores a job only as a description to evaluate CVs against. There is no listing, no pagination, no organisation and no pipeline.

## Example ATS integration

| Step | Your system | Curriculo |
|---|---|---|
| 1. Job context | Stores the job, and registers it once with `POST /jobs/` (free) or sends `job_details` inline. | Uses it to score candidates. |
| 2. Intake | Sends CVs to `/parse/` and `/evaluate/`, or links to `/parse/async` and `/evaluate/async` for a backlog. | Returns structured CVs and evaluations, in order. |
| 3. Screening | Calls `POST /screening-interview` with candidate emails, questions and a `callback_url`. | Sends invites, hosts the recording, transcribes answers. |
| 4. Results | Verifies `X-Curriculo-Signature`, then stores transcripts, evaluations and recording links. | POSTs signed results as candidates finish. |
| 5. Interviews | Sends recordings or transcripts to `/summary/`. | Returns highlights, red flags and a recommendation. |

## Multilingual by default

- **Send CVs in any language.** Parsing and evaluation read the document as written, with no pre-processing on your side.
- **Nothing is silently rewritten.** Parsed values come back in the CV's own language and script.
- **Choose the output language.** Evaluation, interview summaries and the résumé assistant each accept a `language` setting.
- **Detect before you route.** Branch a workflow before any human reads the document.

See [Languages](/docs/languages/).

## Getting started

1. **Create your account** at [console.curriculo.me](https://console.curriculo.me). Sign-up is self-serve, and a $5.00 free credit covers your first calls.
2. **Generate an API key** on the **API keys** page. It works immediately for every operation. The key is shown once, so store it somewhere safe.
3. **Try each capability** from the [API reference](/docs/api/) with a real CV or transcript.
4. **Hand the key to your engineering team.** Each capability is a single request, so integration is small and self-contained.

The full walkthrough is in the [Quickstart](/docs/quickstart/).

## Volume, speed and limits

| What | Value | Why it matters |
|---|---|---|
| Document size | Up to 10 MB | Covers essentially every real CV, including scanned and design-heavy ones. |
| CV processing time | About 10 to 90 seconds | Real AI analysis, not keyword matching. Treat it as a background job, not a page load. |
| Throughput | Roughly 2 to 4 CVs per minute | An estimate. Heavy work runs three operations at a time on capacity shared across the service, so throughput varies with load. |
| Translation in one call | 200 strings, 50,000 characters | A full careers page or CV in a single request. |
| Interview transcripts | 200,000 characters | Comfortably fits a long panel interview, verbatim. |
| Recordings | Up to 100 MB on a synchronous `/summary/` upload; up to 1 GB or 2 hours by link | Long interviews go through the [async lane](/docs/background-processing/). |
| Request rate | 600 requests per minute, per key | Exceeding it returns `429`. |

See [Rate limits](/docs/rate-limits/) and [Batching](/docs/batching/).

## What to expect operationally

- **Each request stands alone.** One document failing never affects another, and re-sending a failed document is always safe.
- **Errors are explicit.** A rejected request tells you why. See [Errors](/docs/errors/).
- **Failed requests are not billed.** Neither are failed background tasks or failed screening invites.
- **Usage is visible per key.** Issue separate keys to separate environments or teams.
- **Know what is stored.** Synchronous parse, evaluate, translate, detect-language, summary and transcribe calls keep nothing beyond short excerpts logged when an AI call fails. Registered jobs, the résumé assistant, background tasks and screening interviews keep data. See [Data handling](/docs/data-handling/).

## Billing

Prepaid and per request, with no subscription: $0.01 for most operations (per CV or document for lists), $0.001 for language detection, about $0.002 per minute of audio for recordings, and $0.02 per screening invite sent. Full table in [Pricing and billing](/docs/pricing/).

## Curriculo inside your AI assistant

Separately from the API, teams on Curriculo ATS can work their hiring pipeline from Claude, ChatGPT, Cursor and other clients. It is a different product with its own sign-in, and an API key does not reach its tools. See the [MCP documentation](/docs/mcp/).

## FAQ

### Does my ATS user need a Curriculo login?

No. Your product calls the Curriculo API with one key from the Developer Console. Your users never sign in to Curriculo.

### Is candidate data stored?

Not by the synchronous operations, apart from short excerpts logged when an AI call fails. Background tasks, registered jobs, saved résumés and screening interviews keep data; see Data handling.

### Can I send CVs in any language?

Yes. Parsed values stay in the CV's own language and script, and translate covers 202 languages.
