Curriculo ATS Documentation
Curriculo ATS reads raw hiring material and returns structured, decision-ready data. Send a CV, a job requirement or an interview recording, and you get back clean fields, a fit score, a translation or a hiring summary. Six capabilities, one API key.
Create an account, generate a key, and run every capability from the browser before writing code.
Request referenceThe exact required and optional inputs for each of the six capabilities.
Limits & performanceFile sizes, processing time, throughput and rate limits, measured on production.
Curriculo ATS MCP ↗A separate product: run your ATS from Claude, ChatGPT or Cursor over OAuth.
Overview #
What the API is, and what it is not.
The Curriculo ATS API exposes the same engines the Curriculo ATS product already runs. You call them directly with a Bearer key from the Developer Console. There is no ATS login, no session cookie and no organisation header involved.
Every capability can be run from the interactive documentation before you integrate: pick an operation, paste your key, attach a real CV, and read the response. You judge output quality on your own data first, with no integration work.
Lists by default. Every input that can be a list, is a list. Send one item or a hundred: the response comes back as a list in the order you sent it, one result per item. A single item failing never collapses the rest of the batch.
The API is not a second ATS
POST /jobs/ on this API stores a job only as a string of requirements, so you can evaluate a list of CVs against it. It is not the Curriculo ATS Jobs API: there are no boards, no pagination and no organisation job list. Console ATS APIs keep their own pagination; the public API takes lists in one request instead.
Quickstart #
From sign-up to a working call, without a sales conversation.
Create your account
Sign up at console.curriculo.me. Sign-up is self-serve, so no sales call is needed to begin.
Generate an API key
On the API Keys page. The key is shown once, so store it somewhere safe. If it is ever lost or exposed, revoke it and issue a new one. Existing keys keep working until you revoke them.
Try each capability before writing code
Open the interactive documentation at api.curriculo.me/public/docs, click Authorize, paste your header, and use Try it out on any operation, file upload included. The console also shows a ready-to-copy request for each capability.
Authorization: Bearer key_...
Hand the key to your engineering team
They need the key, the console templates they already saw working, and the Postman collection from the console docs page. Each capability is a single request, so integration stays small and self-contained.
Evaluation costs nothing. Sign-up, key creation and your first calls are covered by the $5.00 free credit. No payment method is needed to start, so you can judge output quality on your own CVs before any commercial discussion.
Authentication #
One key, the whole suite.
Every request carries your Developer Console key as a Bearer token. A console key activates all six capabilities immediately. There is no onboarding call and no per-capability request. Parse, evaluate, translate, detect language, interview summary and the résumé assistant all sit on the same account and the same balance.
Authorization: Bearer key_...
Key hygiene. The key is displayed once at creation. Issue separate keys per environment or team so they stay independently revocable, never commit a key to source control or paste it into an untrusted client, and revoke immediately on exposure. Keys are scoped to your organisation and see nothing else.
Capabilities #
Six operations. What you send, and what comes back.
Parse CV
One-shotOne CV or a list of CVs, PDF or Word, in a single call. One file is one charge.
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. Nothing is translated or rewritten.
Evaluate candidate
One-shotRegister the job once as careers-page text, a JSON string, or a job PDF/DOCX. Then send one CV or a list of CV PDFs against that job.
Per CV: suitability score, written reasons, matched skills and gaps. The same evaluation the Curriculo ATS app shows recruiters. One CV in the request is one charge.
Translate
One-shotA list of texts (up to 200) or a PDF/DOCX upload. Always a list, so one item is a list of one.
All of them translated in one go, in the order you sent them. If one item fails, the rest still come back. The batch never collapses.
Detect language
One-shotOne text, or a list of texts, in a single call.
The language it is written in, which lets you route a CV or a message before you act on it.
Interview summary
One-shotVideo (mp4, mov, mkv) or audio (mp3, m4a, wav), or a transcript you already have. One interview, or a list.
If you sent media: the transcription, then AI analysis covering highlights, red flags, skills and a recommendation. The same interview scorer as the Curriculo ATS frontend. Transcript-only requests skip transcription.
Résumé assistant
SessionA CV once, then plain-language instructions.
A working session over that CV: ask questions about it, edit sections, or produce a translated version, all without re-uploading the file each time.
The first five capabilities are one-shot: nothing you send is stored, and no information carries from one request to the next. The résumé assistant is the only one that keeps a working copy, so it can act on the same CV across a session.
Request reference #
Every capability is one request with a short, fixed set of inputs.
Required inputs are the minimum for a valid request; optional ones only refine the result. For CV work, register the job once with its requirements, language and settings. Then send lists of documents against that job reference instead of repeating the requirements with every CV.
Parse CV
| Input | Required | Notes |
|---|---|---|
files | Required | One or more CVs in PDF or DOCX, up to 10 MB each. Attach a single file or a list; results come back in the same order. |
Evaluate candidate
| Input | Required | Notes |
|---|---|---|
job_id | One of these | From POST /jobs/, an evaluate helper rather than the Curriculo ATS Jobs API (no boards, pagination or organisation jobs). Register requirements once, then send CV lists against this id. |
resume_pdfresume_pdfs | Required | One CV via resume_pdf, or several via resume_pdfs. PDF, up to 10 MB each. One file in a request is one charge. |
job_details | One of these | A string: paste the careers-page prose, or a JSON string if you already hold structured requirements. Not an ATS job object. Use this, or job_id, or a job_file (PDF/DOCX). |
language | Optional | Language for the written analysis. Left out, the analysis comes back in English. |
Translate
| Input | Required | Notes |
|---|---|---|
texts | Required | The items to translate, up to 200 items and 50,000 characters per request. Order is preserved. |
target_language | Required | The language to translate into. |
source_language | Optional | The language of the input. Left out, English is assumed. |
Detect language
| Input | Required | Notes |
|---|---|---|
text | Required | The text to inspect, up to 50,000 characters. |
default_language | Optional | What to return when the text is too short or too mixed to call. Defaults to English. |
Interview summary
| Input | Required | Notes |
|---|---|---|
interview_id | Required | Your own reference for the interview; it is echoed back so you can match the result to your record. |
media | One of these | Video or audio (mp4, mov, mkv, mp3, m4a, wav). We transcribe, then run the same AI analysis. Use this or transcript_text. |
transcript_text | One of these | Use instead of media if you already hold a transcript, up to 200,000 characters. One of the two is required. |
transcript_entries | Optional | The same transcript split into speaker turns. Supply it and you also get speaking-time analytics. |
language | Optional | Language for the summary. Defaults to English. |
Résumé assistant
| Input | Required | Notes |
|---|---|---|
prompt_text | Required | Your instruction or question in plain language, in any language. |
file | First call only | Attach the CV once to open the session. Later calls need no file. |
language | Optional | Set it to render the résumé in that language. This, rather than asking for a translation in the instruction, is how translation is requested. |
The interactive documentation lists exactly these inputs per capability, so the required set is visible, and testable, before anyone writes code.
Languages #
Hiring is rarely monolingual, so language handling is built into every capability rather than sold as an add-on.
- Send CVs in any language. Parsing and evaluation read the document as written, whether that is Arabic, Korean, Japanese, Hindi, French, Portuguese or Russian, with no pre-processing on your side.
- Nothing is silently rewritten. Parsed values come back in the CV's own language and script, so a name or an employer is never transliterated into something the candidate would not recognise.
- Translation covers 85 languages on our own dedicated engine, across European, Middle Eastern, South Asian, East and Southeast Asian, and African languages. Where a language falls outside that set, our AI models serve the request instead of refusing it.
- You choose the output language. Evaluation, interview summaries and the résumé assistant each accept a language setting, so an Arabic CV can be assessed in English, or an English CV rendered in Korean.
- Language detection lets you branch a workflow before any human reads the document, so you can assign the right recruiter or pick the right template first.
Limits & performance #
Measured on production, not projected. Plan against these and there are no surprises at go-live.
| 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 | 40-90 seconds | Real AI analysis, not keyword matching. Treat it as a background job, not a page load. |
| Sustained throughput | 2-4 CVs / minute | Roughly 150-250 CVs per hour, unattended. This capacity is shared across the service, so plan against it rather than assuming it is reserved for you. |
| Documents in flight | 3 at a time | Send more than three and the extras wait their turn rather than failing, up to the request-rate limit below. Nothing is lost during a normal spike. |
| Request rate per key | 600 / minute | Well above what a document workload needs; exceeding it returns a rate-limit response rather than degrading everyone. |
| Translation in one call | 200 items / 50,000 chars | A full careers page or CV can be translated in a single request. |
| Interview transcript | 200,000 characters | Comfortably fits a long panel interview, verbatim. |
| Interview recording | Video or audio | Transcribed on our side, so no separate transcription vendor sits between the interview and the analysis. |
| Text for language detection | 50,000 characters | Plenty for a CV, a cover letter or an email. |
Large backlogs. Register the job once and submit your documents against it in lists. You collect the results as they complete rather than holding a connection open per CV. If you expect thousands of documents in a batch, tell us the shape of the workload and we will confirm the plan before you build.
Errors & reliability #
What to expect operationally.
- Each request stands alone. One document failing never affects another, and re-sending a single failed document is always safe, because it cannot create duplicates or half-finished records.
- A rejected request tells you why: file too large, wrong format, missing key, or processing took too long. Nothing fails silently.
- Batches degrade gracefully. In any list request, a single item failing returns that item's error while the remaining results come back normally, in the order you sent them.
- Rate limits behave the same way. Exceeding 600 requests per minute on a key returns a rate-limit response rather than degrading service for everyone.
Billing & usage #
Self-serve is live in the console today; partner terms are contracted.
Self-serve: free credit, then pay as you go
| Item | Amount | How it works |
|---|---|---|
| One-time free credit | $5.00 | Granted on sign-up and drawn down before anything is charged. The console shows what is left and what you have used. |
| Usage rate | Metered per call | Each call is metered on what it actually consumes, to a millionth of a dollar. A short instruction costs a fraction of a cent; a long document costs proportionally more. |
| Topping up | Automatic | You hold a credit balance. When it falls below your chosen threshold, your card is charged to top it back up, so calls never stop mid-workload. |
| Payment method | Card, via Stripe | Card details are entered on Stripe's own pages, never on a Curriculo ATS screen. |
| No subscription | Pay as you go | No monthly plan and no billing cycle to commit to. You pay for the calls you make, and nothing when you make none. |
You pay for what a call consumes rather than a flat per-call fee, so cheap operations stay cheap: translation and language detection run on our own models and are the least expensive work we do. All six capabilities meter through the same usage-based billing, so a single key and a single balance cover everything you call.
Usage visibility
The console shows calls, billable usage, errors and the estimated charge for the period, so you can reconcile before anything is charged. Issue separate keys per environment or team to keep usage attributable and keys independently revocable.
Partner and reseller pricing
For resale or committed volume we price per call under contract. Partner rates are contracted rather than self-serve and are confirmed per engagement. Tell us your expected monthly call volume and we will confirm the rate and the terms that go with it.
- The résumé assistant stays metered on usage rather than billed flat per call. Instructions are open-ended in length, so it is priced on what it consumes, with a cap you set.
- All figures are USD and exclude local taxes. Region-specific requirements such as data residency or local-currency invoicing are priced per engagement.
Data handling #
What we keep, what we do not, and what your key can reach.
| Capability | Retention | What that means |
|---|---|---|
| Parse CV | One-shot | Nothing you send is stored, and no information carries from one request to the next. |
| Evaluate candidate | One-shot | |
| Translate | One-shot | |
| Detect language | One-shot | |
| Interview summary | One-shot | |
| Résumé assistant | Session | Keeps a working copy of the CV so it can act on the same document across a session. This is the only capability that retains what you send. |
- Your data stays yours. Outside the résumé assistant session, we do not retain the documents you send.
- A key is bound to your organisation and sees nothing else.
- Parsed output preserves the CV's own language and script, so no name or employer is transliterated without you asking for it.
- Revocation is immediate and self-serve. Revoke a compromised key in the console and issue a replacement; other keys are unaffected.
You remain the data controller. CVs and interview recordings are personal data. Confirm you have a lawful basis for processing candidate material and for sending it to a processor before you integrate. Data residency and local-currency invoicing are handled per engagement. Raise them with us before you build if they apply to you.
Terms of use #
The operating conditions that apply to every API key.
- Access. A Developer Console key activates all six capabilities on one account and one balance. Keys are issued self-serve and may be revoked by you at any time.
- Charging. Usage is metered per call on what the call consumes. The $5.00 sign-up credit is drawn down first. Beyond it, your stored card is charged to maintain your chosen balance threshold. There is no subscription and no minimum commitment.
- Fair use. Published throughput is shared service capacity, not reserved capacity. The 600-requests-per-minute limit per key is enforced; exceeding it returns a rate-limit response.
- Charging unit. One file in a request is one charge. A list of ten CVs is ten charges.
- Taxes. All figures are USD and exclude local taxes.
- Partner terms. Resale and committed-volume pricing is contracted per engagement and is not the self-serve rate.
This page documents how the product operates. It is not a substitute for the Curriculo ATS Terms of Service, Privacy Policy or Data Processing Agreement. Request those from hello@curriculo.me before signing.
Curriculo ATS in Claude and ChatGPT (MCP) #
A separate product from the public API.
Different product, different authentication. MCP talks to the Curriculo ATS over OAuth, so the user signs in. A public API key_ does not reach these tools, and the public API does not reach your ATS. The two are bought and used separately.
For teams already on Curriculo ATS, the assistant can work the hiring pipeline in plain language. Adding the connector takes about a minute: paste one address, sign in, approve. It uses the Model Context Protocol, the open standard both assistants support, so there is nothing bespoke for your team to maintain.
https://mcp.curriculo.me/mcp
You sign in with your Curriculo ATS account and approve access, and every action stays scoped to your organisation.
| Ask it to… | And it will |
|---|---|
| Review the pipeline | List open jobs, show how many candidates sit at each stage, and report period-over-period movement. |
| Find people | Search your candidate pool in plain language and return ranked matches with the reasoning for each. |
| Advance candidates | Move applicants between stages, add notes and pass/fail decisions, and surface the AI evaluation for anyone. |
| Handle scheduling | Book interviews and, where a calendar is connected, send the invites and video links automatically. |
| Work the inbox | Read candidate email threads and send replies or bulk updates from your connected mailbox. |
Everything the assistant sees is limited to your own organisation, and it can read far more than it can change. No tool deletes your data. Actions with outside effects, such as sending email, booking an interview or closing a job, are confirmed with you before they run.
MCP tool catalogue #
Twenty-five tools. Access type tells you the risk.
READ only looks. WRITE changes ATS data. WRITE+ changes data and reaches outside, so an email leaves, an invite is sent, or an AI job starts. Seventeen of the twenty-five are read-only; the six WRITE+ tools are confirmed with you before use.
| Tool | Access | What it does |
|---|---|---|
| Account | ||
whoami | Read | Confirms which user and organisation the assistant is acting as. Worth running first in any session. |
| Jobs | ||
list_jobs | Read | Lists jobs, filtered by status, most recently updated first. |
get_job | Read | Full detail for one job, including its funnel stages and applicant count. |
create_job | Write | Creates a job with the default stages (New → First Interview → Second Interview → Offer). Only a title is required; it opens immediately. |
update_job_status | Write+ | Changes a job's status. Closing or pausing emails all candidates who have not been offered. |
list_job_automations | Read | Lists the automations configured on a job: email, interview scheduling, tagging and notifications. |
get_automation_executions | Read | Run history for an automation. |
| Overview | ||
get_dashboard | Read | Inbox plus a per-job funnel breakdown of everyone currently active. |
get_analytics | Read | Totals, period-over-period change, stage breakdown, top jobs and source mix. Last 30 days by default. |
| Candidates | ||
list_applicants | Read | Lists applicants, optionally for one job, with starred / rejected / archived filters. |
get_applicant | Read | One applicant in full: current stage, notes, and activity history. |
search_candidates | Read | Plain-language search across the whole candidate pool. Returns ranked matches with the CV passages and reasoning behind each. |
get_applicant_evaluation | Read | The AI assessment: suitability score, tags, summary and gaps. |
get_applicant_resume_text | Read | The parsed CV content as text and fields, with no file attached. |
add_applicant_note | Write | Adds a note, optionally tagged with a PASS or FAIL decision and the round it belongs to. Private by default. |
move_applicant_stage | Write+ | Moves someone to another stage. Triggers that stage's automations; reaching Offer may auto-close the job once headcount is met. |
reprocess_resume | Write+ | Re-runs the full AI pipeline on a CV: parse, evaluate and index. Runs in the background. |
| Interviews | ||
list_interviews | Read | Lists interviews by job, applicant, status, type or date range. |
schedule_interview | Write+ | Books the interview, adds interviewers, and creates feedback links. With a calendar connected it also creates the event, invites the candidate and generates the video link. The interview is saved either way. |
list_inbox_emails | Read | Lists inbound mail, filtered by job, status or text search. |
get_inbox_stats | Read | Unread counts and totals. |
get_applicant_email_thread | Read | The complete conversation with one candidate, both directions. |
reply_to_applicant_email | Write+ | Replies on the existing thread from your organisation's address. Needs a connected mailbox. |
send_bulk_email | Write+ | Sends one message to one or many candidates, for outreach or status updates. Needs a connected mailbox. |
| Imports | ||
get_import_batch | Read | Progress of a candidate import: per-file status and any errors. |
Mail tools require a connected mailbox. Interview scheduling does not. Without a connected calendar it still saves the interview and reports that invites were not sent.
Setup for Claude, ChatGPT and Cursor, authentication and scopes, example prompts and troubleshooting.
What is Curriculo ATS MCP? ↗The product overview: run hiring by typing, in the assistant you already use.
FAQ #
Do I need to talk to sales to get an API key?
No. Sign-up is self-serve at console.curriculo.me. Create an account, generate a key on the API Keys page, and a one-time $5.00 free credit covers your evaluation. No payment method is required to start.
Does one API key cover every capability?
Yes. A console key activates all six capabilities immediately, on the same account and the same balance. There is no per-capability request and no onboarding call.
Does Curriculo ATS store the documents I send to the API?
Five of the six capabilities are one-shot: nothing you send is stored, and no information carries from one request to the next. The résumé assistant is the only capability that keeps a working copy, so it can act on the same CV across a session.
Is the MCP server the same product as the public API?
No. They are separate products. The public API is authenticated with a Bearer key from the Developer Console. The Curriculo ATS MCP server is authenticated with OAuth, requires an existing Curriculo ATS account, and a public API key does not reach its tools. See the full MCP documentation.
Is there a subscription or a monthly minimum?
No. Self-serve billing is pay-as-you-go with no monthly plan and no billing cycle. Each call is metered on what it actually consumes, and you pay nothing in a period where you make no calls.
How long does a CV take to process?
40-90 seconds. That is real AI analysis rather than keyword matching, so treat it as a background job rather than something that blocks a page load. Sustained throughput is 2-4 CVs per minute, roughly 150-250 per hour unattended.
What happens if one document in a batch fails?
The rest still come back. Each request stands alone, so one document failing never affects another, and re-sending a single failed document is always safe, because it cannot create duplicates or half-finished records.
Can I evaluate output quality before integrating?
Yes, and we recommend it. Open the interactive documentation, click Authorize, paste your key and use "Try it out" on any operation with a real CV. No code required.
Support #
Where to go next.
- The interactive API reference at api.curriculo.me/public/docs lists every operation and lets you test it in the browser. A Postman collection sits on the console docs page.
- The Developer Console at console.curriculo.me holds your keys, usage, balance and request templates.
- MCP setup, authentication and the full tool reference live at curriculo.me/docs/mcp/.
- For high-volume workloads, data residency, partner terms or legal documents, write to hello@curriculo.me. Tell us the shape of the workload and we will confirm the plan before you build.