Every parse-affecting change ships here first. Breaking schema changes are tagged Changed and announced 60 days before they roll out.
We've renamed our hierarchy to match the way you think about it: the top-level account is now an Organisation, and the sub-grouping that owns API keys and webhooks is a Workspace. Webhook endpoints are now scoped to a Workspace — every API key in the workspace shares the same delivery targets, so 'which key should this hook fire for?' is no longer a question. Existing data is migrated transparently. The webhook payload still carries `projectId` (we won't break your receivers); read it as the workspace id.
Today we're opening up the GraphQL endpoint at /v2/graphql. One round-trip, zero over-fetching: the selection set acts as per-request field filtering on top of your workspace schema floor, so you pull back precisely the candidate shape your UI renders — nothing more. Field arguments like experience(limit: 3) let you trim deep collections inline, and every query is the same strongly-typed Candidate contract you already know from REST. Introspection, persisted queries, and a hosted playground ship on day one.
query ParseCandidate($id: ID!) {
parse(id: $id) {
candidate {
fullName
email
experience(limit: 3) { title company startDate }
skills
}
confidence
}
}The REST API is out of release-candidate and officially GA. Versioned, additive-only, and backed by a 99.97% uptime SLA: POST a file to /v1/parse, get clean structured JSON with 47 normalised fields per candidate. Idempotency keys, cursor pagination, and typed error envelopes are all stable surface now — build on it with confidence.
curl -X POST https://api.cvparser.io/v1/parse \
-H "Authorization: Bearer $CVPARSER_KEY" \
-F "file=@./candidate.pdf"Fastify API with PDF, DOCX, DOC, and HTML extractors. Multi-format CV parsing pipeline behind a single endpoint, with Swagger UI at /docs.