Submit CV + job description for asynchronous matching
POST/api/v1/cvdeepmatch/submit
Submits a CV (PDF) plus a job description and a requirements
configuration. Returns 202 Accepted with an id. Poll
GET /api/v1/cvdeepmatch/{id} for the current status,
or wait for the webhook callback to fire.
File requirements
- Format: PDF only at launch (
application/pdfMIME +.pdfextension). DOCX returnsINVALID_INPUT. - Magic-byte check: the uploaded bytes must start with a
valid PDF header (
%PDF-). Files that pass the extension/MIME gate but fail the magic-byte check returnINVALID_FILE_CONTENT. - Max size: 5 MB.
Webhook URL requirements
- Must use
https://(plain HTTP returnsINSECURE_WEBHOOK_URL). - Must NOT resolve to a private, loopback, or link-local address
(returns
PRIVATE_WEBHOOK_URL). The DNS resolution is re-checked immediately before each delivery attempt to defend against DNS-rebinding.
Idempotency
Pass an idempotency_key to make the submit safe to retry. If
the same key arrives within 24 h the existing id is
returned with HTTP 200 and idempotent_replay: true instead
of a fresh 202.
Required permission
Client's permissions[] must contain cvdeepmatch. Without
it the request returns 403 MISSING_PERMISSION.
Credits
Each successful match deducts credits when the run completes.
At submission time the available balance is checked — submits
from clients with insufficient credits are rejected with 402 INSUFFICIENT_CREDITS.
Request
Responses
- 200
- 202
- 400
- 401
- 402
- 403
- 429
- 500
- 502
Idempotency replay — the supplied idempotency_key was seen
within the last 24 h. The returned id is the
original one; no new match is started.
Request accepted. The match runs asynchronously; poll the status endpoint or wait for the webhook callback.
Validation failure. error.code is one of:
INVALID_INPUT— a field failed validation; per-field detail inerror.details.fields.INVALID_FILE_CONTENT— the uploadedcv_filebytes do not begin with a valid PDF magic header.INSECURE_WEBHOOK_URL—webhook_urlishttp://.PRIVATE_WEBHOOK_URL—webhook_urlresolves to a private / loopback / link-local address.
Missing or invalid API key.
Insufficient credits. The client's balance is below the per-match minimum.
Authenticated but missing the cvdeepmatch permission.
Rate-limited. Respect the Retry-After header.
Response Headers
Seconds until the next request will be accepted.
Internal error.
STEP_FUNCTIONS_FAILED — the downstream matching pipeline
failed to start. Retry-safe; resubmit with the same
idempotency_key.