Summarise an interview
https://api.curriculo.me/public/summary/On this page
Stateless. Turns an interview into highlights, red_flags, skills_mentioned, decision_recommendation, decision_reasoning and optional speaking-time analytics. Send a transcript as text, a transcript document, or a recording to be transcribed and summarised in one request.
Price: $0.01 per request for a transcript. For a recording, $0.002 per minute of audio plus $0.01. See Pricing and billing.
Transcript mode
application/json. Send a JSON object for one interview, or a JSON array for up to 10. Each interview gets its own id.
| Field | Type | Notes |
|---|---|---|
interview_id | string | Your own identifier. Echoed back, never looked up. |
transcript_text (required) | string | Raw transcript, up to 200,000 characters. |
transcript_entries | object[] | Optional structured turns (participant, text, startTime, endTime). Enables speaking-time analytics. |
language | string | ISO 639-1 code to render the summary prose in. Defaults to English. |
curl -X POST https://api.curriculo.me/public/summary/ \
-H 'Authorization: Bearer key_abc123_yoursecret' \
-H 'Content-Type: application/json' \
-d '{"interview_id": "int_0042", "transcript_text": "Interviewer: Tell me about a system you shipped. Candidate: …", "language": "en"}'File mode
multipart/form-data on the same path. Upload recordings or transcript documents.
| Field | Type | Notes |
|---|---|---|
media | file[] | Repeat for up to 10 files. Each file's own content decides how it is read: PDF, DOCX and DOC are read as transcripts (up to 50 MB); anything else is treated as audio or video (for example mp4, mov, mkv, mp3, m4a, wav) and transcribed first (up to 100 MB). |
interview_id | string | Your identifier, shared by every file in the request. Defaults to the uploaded filename. |
language | string | ISO 639-1 code for the summary prose. |
curl -X POST https://api.curriculo.me/public/summary/ \
-H 'Authorization: Bearer key_abc123_yoursecret' \
-F '[email protected]' \
-F 'interview_id=int_0042' \
-F 'language=en'A recording comes back with its transcription alongside the analysis, so no separate transcription vendor is needed. Because a mislabelled upload is read by its content, a transcript saved with the wrong extension still lands correctly.
A synchronous call must finish inside 300 seconds. For long interviews, send a link to
POST /summary/asyncinstead: recordings up to 1 GB and 2 hours.
Where media transcription is not enabled, a recording returns
503. Send a transcript instead.
Response
The summary fields above, with your interview_id echoed back. A JSON array of interviews returns a results array in input order. See Batching.
Timing
15 to 20 seconds for a transcript. Recordings take longer, depending on length.
Errors
| Status | Typical cause |
|---|---|
400 | Blank transcript, unreadable file, or a duplicate JSON key. |
413 | A transcript over 200,000 characters, more than 10 interviews or files, or a file over its size limit. |
422 | transcript_text is missing, or a field is misnamed. |
503 | Media transcription is not enabled. Send a transcript instead. |
504 | Processing exceeded 300 seconds. Use /summary/async. |
Updated