Help center
https://api.certo.bio/v1openapi.json
Export candidates
POST
/v1/exportsscope candidates:exportLoggedThe chosen candidates, or a position's, as a PDF pack (a contents page, then each candidate's checklist and passport) or an Excel workbook, fit first. Each candidate is read as a passport read and logged again as a copy saved: the candidate sees both. An export reads the Hiring list and each passport, so the credential needs hiring:read and candidates:read too. At most 25 candidates in a PDF and 200 in a workbook. A PDF holds only the candidates who let approved employers have their passport as a PDF (their choice, since 2026-11-01): the rest are left out and counted in the X-Certo-Left-Out header, and none left is export.pdf_not_shared.
Every call is a read of the candidate's passport: it is logged, and the candidate sees that your organisation read it.
Request body
| Name | Type | Required | Description |
|---|---|---|---|
| format | one of pdf, xlsx | Yes | pdf or xlsx. |
| candidate_ids | array of uuid | The candidates (grant ids from /candidates). | |
| position_id | uuid | Or every readable candidate under this position. |
Response fields
- (the whole answer)
- string. The file: application/pdf or the Excel workbook, with Content-Disposition naming it.
Errors
- 400 export.nothing_chosen
- 409 export.nothing_readable
- 403 export.pdf_not_shared
- 413 export.too_many
- 409 export.not_readable
- 502 export.render_failed
- 404 position.not_found
- 400 api.credential_in_url
- 401 api.key_invalid
- 401 api.key_expired
- 401 api.key_revoked
- 401 api.key_suspended
- 403 api.scope_missing
- 429 api.rate_limited