{ "item": [ { "name": "Document", "description": "", "item": [ { "name": "extraction", "description": "", "item": [ { "name": "Extract structured fields from a document", "request": { "name": "Extract structured fields from a document", "description": { "content": "Extracts structured fields from a single document using the templates\nconfigured for your tenant. The platform selects the best template for the\nuploaded document.\n", "type": "text/plain" }, "url": { "path": [ "Document", "extraction" ], "host": [ "{{baseUrl}}" ], "query": [], "variable": [] }, "header": [ { "key": "Content-Type", "value": "multipart/form-data" }, { "key": "Accept", "value": "application/json" } ], "method": "POST", "body": { "mode": "formdata", "formdata": [ { "description": { "content": "(Required) The document to extract from.", "type": "text/plain" }, "key": "file", "type": "file" }, { "description": { "content": "Free-text instruction appended to the model prompt. Use it to ask\nfor extra fields, enforce formatting, or narrow the scope.\n", "type": "text/plain" }, "key": "ComplementaryPrompt", "value": "", "type": "text", "disabled": true } ] }, "auth": null }, "response": [ { "name": "The service envelope. `data.metadata` is shaped by the template or operation\nthat ran, so its fields vary by document type. What does not vary is the shape of\neach field inside it — see `ExtractedField` for the value, confidence and source\ncoordinates every extracted field carries.", "originalRequest": { "url": { "path": [ "Document", "extraction" ], "host": [ "{{baseUrl}}" ], "query": [], "variable": [] }, "header": [ { "key": "Content-Type", "value": "multipart/form-data" }, { "key": "Accept", "value": "application/json" }, { "description": { "content": "Added as a part of security scheme: bearer", "type": "text/plain" }, "key": "Authorization", "value": "Bearer " } ], "method": "POST", "body": { "mode": "formdata", "formdata": [ { "description": { "content": "(Required) The document to extract from.", "type": "text/plain" }, "key": "file", "type": "file" }, { "description": { "content": "Free-text instruction appended to the model prompt. Use it to ask\nfor extra fields, enforce formatting, or narrow the scope.\n", "type": "text/plain" }, "key": "ComplementaryPrompt", "value": "", "type": "text" } ] } }, "status": "OK", "code": 200, "header": [ { "key": "Content-Type", "value": "application/json" } ], "body": "{\n \"data\": {\n \"id\": \"\",\n \"templateId\": \"\",\n \"metadata\": {\n \"key_0\": 9202.600389253348,\n \"key_1\": \"string\",\n \"key_2\": 2346.2733905762434,\n \"key_3\": 3504\n },\n \"createdDate\": \"\",\n \"results\": [\n {\n \"fileName\": \"\",\n \"documentType\": \"\",\n \"confidence\": \"\",\n \"pages\": \"\",\n \"templateId\": \"\",\n \"templateMetadata\": \"\"\n },\n {\n \"fileName\": \"\",\n \"documentType\": \"\",\n \"confidence\": \"\",\n \"pages\": \"\",\n \"templateId\": \"\",\n \"templateMetadata\": \"\"\n }\n ],\n \"documentType\": \"\",\n \"confidence\": \"\",\n \"fraudBlocked\": \"\",\n \"fraudRequestId\": \"\",\n \"quality\": {\n \"overall\": 2,\n \"findings\": [\n {\n \"probe\": \"\",\n \"level\": 1,\n \"measured\": \"\",\n \"threshold\": \"\",\n \"message\": \"\"\n },\n {\n \"probe\": \"\",\n \"level\": 2,\n \"measured\": \"\",\n \"threshold\": \"\",\n \"message\": \"\"\n }\n ]\n },\n \"imageUrls\": null,\n \"documents\": [\n {\n \"box2D\": [\n \"\",\n \"\"\n ],\n \"mask\": [\n [\n \"\",\n \"\"\n ],\n [\n \"\",\n \"\"\n ]\n ],\n \"side\": \"\",\n \"type\": \"\",\n \"confidence\": \"\",\n \"imageUrl\": \"\"\n },\n {\n \"box2D\": [\n \"\",\n \"\"\n ],\n \"mask\": [\n [\n \"\",\n \"\"\n ],\n [\n \"\",\n \"\"\n ]\n ],\n \"side\": \"\",\n \"type\": \"\",\n \"confidence\": \"\",\n \"imageUrl\": \"\"\n }\n ],\n \"compositeImageUrl\": \"\",\n \"requestId\": \"\",\n \"extractions\": [\n {\n \"sourceDocumentId\": \"\",\n \"hasFace\": \"\",\n \"documentType\": \"\",\n \"cropSignedUrl\": \"\"\n },\n {\n \"sourceDocumentId\": \"\",\n \"hasFace\": \"\",\n \"documentType\": \"\",\n \"cropSignedUrl\": \"\"\n }\n ],\n \"matches\": [\n {\n \"sourceDocumentId\": \"\",\n \"selfieDocumentId\": \"\",\n \"score\": \"\",\n \"matched\": \"\",\n \"tooManyFaces\": \"\"\n },\n {\n \"sourceDocumentId\": \"\",\n \"selfieDocumentId\": \"\",\n \"score\": \"\",\n \"matched\": \"\",\n \"tooManyFaces\": \"\"\n }\n ]\n },\n \"meta\": {\n \"httpStatusCode\": \"\",\n \"messages\": [\n \"\",\n \"\"\n ],\n \"errors\": [\n {\n \"code\": \"\",\n \"message\": \"\",\n \"retryable\": \"\",\n \"field\": \"\",\n \"details\": null\n },\n {\n \"code\": \"\",\n \"message\": \"\",\n \"retryable\": \"\",\n \"field\": \"\",\n \"details\": {\n \"key_0\": \"\",\n \"key_1\": \"\"\n }\n }\n ],\n \"creditsConsumed\": \"\"\n },\n \"hasErrors\": \"\"\n}", "cookie": [], "_postman_previewlanguage": "json" }, { "name": "The request is invalid. Refused before processing — malformed or unsafe — it\nis a problem document; refused by processing itself, such as a missing file,\nit is the service envelope with the reason in `meta.errors`.", "originalRequest": { "url": { "path": [ "Document", "extraction" ], "host": [ "{{baseUrl}}" ], "query": [], "variable": [] }, "header": [ { "key": "Content-Type", "value": "multipart/form-data" }, { "key": "Accept", "value": "application/problem+json" }, { "description": { "content": "Added as a part of security scheme: bearer", "type": "text/plain" }, "key": "Authorization", "value": "Bearer " } ], "method": "POST", "body": { "mode": "formdata", "formdata": [ { "description": { "content": "(Required) The document to extract from.", "type": "text/plain" }, "key": "file", "type": "file" }, { "description": { "content": "Free-text instruction appended to the model prompt. Use it to ask\nfor extra fields, enforce formatting, or narrow the scope.\n", "type": "text/plain" }, "key": "ComplementaryPrompt", "value": "", "type": "text" } ] } }, "status": "Bad Request", "code": 400, "header": [ { "key": "Content-Type", "value": "application/json" } ], "body": "{\n \"data\": {\n \"key_0\": \"string\",\n \"key_1\": 8935,\n \"key_2\": 7067.274549044669,\n \"key_3\": 6605.237934272736\n },\n \"meta\": {\n \"httpStatusCode\": \"\",\n \"messages\": [\n \"\",\n \"\"\n ],\n \"errors\": [\n {\n \"code\": \"\",\n \"message\": \"\",\n \"retryable\": \"\",\n \"field\": \"\",\n \"details\": {\n \"key_0\": \"\",\n \"key_1\": \"\",\n \"key_2\": \"\",\n \"key_3\": \"\"\n }\n },\n {\n \"code\": \"\",\n \"message\": \"\",\n \"retryable\": \"\",\n \"field\": \"\",\n \"details\": {\n \"key_0\": \"\"\n }\n }\n ],\n \"creditsConsumed\": \"\"\n },\n \"hasErrors\": \"\"\n}", "cookie": [], "_postman_previewlanguage": "json" }, { "name": "Missing or invalid API key. Both `xtkt_live_` (production) and `xtkt_test_`\n(sandbox) prefixes are accepted, but the key must also be valid and active.", "originalRequest": { "url": { "path": [ "Document", "extraction" ], "host": [ "{{baseUrl}}" ], "query": [], "variable": [] }, "header": [ { "key": "Content-Type", "value": "multipart/form-data" }, { "key": "Accept", "value": "application/problem+json" }, { "description": { "content": "Added as a part of security scheme: bearer", "type": "text/plain" }, "key": "Authorization", "value": "Bearer " } ], "method": "POST", "body": { "mode": "formdata", "formdata": [ { "description": { "content": "(Required) The document to extract from.", "type": "text/plain" }, "key": "file", "type": "file" }, { "description": { "content": "Free-text instruction appended to the model prompt. Use it to ask\nfor extra fields, enforce formatting, or narrow the scope.\n", "type": "text/plain" }, "key": "ComplementaryPrompt", "value": "", "type": "text" } ] } }, "status": "Unauthorized", "code": 401, "header": [ { "key": "Content-Type", "value": "application/problem+json" } ], "body": "{\n \"type\": \"\",\n \"title\": \"\",\n \"status\": \"\",\n \"detail\": \"\",\n \"instance\": \"\",\n \"code\": \"\",\n \"correlationId\": \"\",\n \"retryable\": \"\",\n \"field\": \"\",\n \"errors\": [\n {\n \"code\": \"\",\n \"message\": \"\",\n \"field\": \"\",\n \"retryable\": \"\",\n \"details\": null\n },\n {\n \"code\": \"\",\n \"message\": \"\",\n \"field\": \"\",\n \"retryable\": \"\",\n \"details\": null\n }\n ]\n}", "cookie": [], "_postman_previewlanguage": "json" }, { "name": "The key is valid but not allowed to make this request. A sandbox key\n(`xtkt_test_`) is refused with `code` `environment.sandbox_route_unavailable`\non every route outside the sandbox set, and on `POST /api/v1/document-jobs`\nfor an unsupported operation or any `templateId`. See **Sandbox** in the\nAPI description.", "originalRequest": { "url": { "path": [ "Document", "extraction" ], "host": [ "{{baseUrl}}" ], "query": [], "variable": [] }, "header": [ { "key": "Content-Type", "value": "multipart/form-data" }, { "key": "Accept", "value": "application/problem+json" }, { "description": { "content": "Added as a part of security scheme: bearer", "type": "text/plain" }, "key": "Authorization", "value": "Bearer " } ], "method": "POST", "body": { "mode": "formdata", "formdata": [ { "description": { "content": "(Required) The document to extract from.", "type": "text/plain" }, "key": "file", "type": "file" }, { "description": { "content": "Free-text instruction appended to the model prompt. Use it to ask\nfor extra fields, enforce formatting, or narrow the scope.\n", "type": "text/plain" }, "key": "ComplementaryPrompt", "value": "", "type": "text" } ] } }, "status": "Forbidden", "code": 403, "header": [ { "key": "Content-Type", "value": "application/problem+json" } ], "body": "{\n \"type\": \"\",\n \"title\": \"\",\n \"status\": \"\",\n \"detail\": \"\",\n \"instance\": \"\",\n \"code\": \"\",\n \"correlationId\": \"\",\n \"retryable\": \"\",\n \"field\": \"\",\n \"errors\": [\n {\n \"code\": \"\",\n \"message\": \"\",\n \"field\": \"\",\n \"retryable\": \"\",\n \"details\": null\n },\n {\n \"code\": \"\",\n \"message\": \"\",\n \"field\": \"\",\n \"retryable\": \"\",\n \"details\": null\n }\n ]\n}", "cookie": [], "_postman_previewlanguage": "json" }, { "name": "Nothing answers at this address for this tenant.", "originalRequest": { "url": { "path": [ "Document", "extraction" ], "host": [ "{{baseUrl}}" ], "query": [], "variable": [] }, "header": [ { "key": "Content-Type", "value": "multipart/form-data" }, { "key": "Accept", "value": "application/problem+json" }, { "description": { "content": "Added as a part of security scheme: bearer", "type": "text/plain" }, "key": "Authorization", "value": "Bearer " } ], "method": "POST", "body": { "mode": "formdata", "formdata": [ { "description": { "content": "(Required) The document to extract from.", "type": "text/plain" }, "key": "file", "type": "file" }, { "description": { "content": "Free-text instruction appended to the model prompt. Use it to ask\nfor extra fields, enforce formatting, or narrow the scope.\n", "type": "text/plain" }, "key": "ComplementaryPrompt", "value": "", "type": "text" } ] } }, "status": "Not Found", "code": 404, "header": [ { "key": "Content-Type", "value": "application/problem+json" } ], "body": "{\n \"type\": \"\",\n \"title\": \"\",\n \"status\": \"\",\n \"detail\": \"\",\n \"instance\": \"\",\n \"code\": \"\",\n \"correlationId\": \"\",\n \"retryable\": \"\",\n \"field\": \"\",\n \"errors\": [\n {\n \"code\": \"\",\n \"message\": \"\",\n \"field\": \"\",\n \"retryable\": \"\",\n \"details\": null\n },\n {\n \"code\": \"\",\n \"message\": \"\",\n \"field\": \"\",\n \"retryable\": \"\",\n \"details\": null\n }\n ]\n}", "cookie": [], "_postman_previewlanguage": "json" }, { "name": "The request conflicts with the current state of what it acts on.", "originalRequest": { "url": { "path": [ "Document", "extraction" ], "host": [ "{{baseUrl}}" ], "query": [], "variable": [] }, "header": [ { "key": "Content-Type", "value": "multipart/form-data" }, { "key": "Accept", "value": "application/problem+json" }, { "description": { "content": "Added as a part of security scheme: bearer", "type": "text/plain" }, "key": "Authorization", "value": "Bearer " } ], "method": "POST", "body": { "mode": "formdata", "formdata": [ { "description": { "content": "(Required) The document to extract from.", "type": "text/plain" }, "key": "file", "type": "file" }, { "description": { "content": "Free-text instruction appended to the model prompt. Use it to ask\nfor extra fields, enforce formatting, or narrow the scope.\n", "type": "text/plain" }, "key": "ComplementaryPrompt", "value": "", "type": "text" } ] } }, "status": "Conflict", "code": 409, "header": [ { "key": "Content-Type", "value": "application/problem+json" } ], "body": "{\n \"type\": \"\",\n \"title\": \"\",\n \"status\": \"\",\n \"detail\": \"\",\n \"instance\": \"\",\n \"code\": \"\",\n \"correlationId\": \"\",\n \"retryable\": \"\",\n \"field\": \"\",\n \"errors\": [\n {\n \"code\": \"\",\n \"message\": \"\",\n \"field\": \"\",\n \"retryable\": \"\",\n \"details\": null\n },\n {\n \"code\": \"\",\n \"message\": \"\",\n \"field\": \"\",\n \"retryable\": \"\",\n \"details\": null\n }\n ]\n}", "cookie": [], "_postman_previewlanguage": "json" }, { "name": "Over the size limit — 10 MB, or 32 MB on `/Document/split`.", "originalRequest": { "url": { "path": [ "Document", "extraction" ], "host": [ "{{baseUrl}}" ], "query": [], "variable": [] }, "header": [ { "key": "Content-Type", "value": "multipart/form-data" }, { "description": { "content": "Added as a part of security scheme: bearer", "type": "text/plain" }, "key": "Authorization", "value": "Bearer " } ], "method": "POST", "body": { "mode": "formdata", "formdata": [ { "description": { "content": "(Required) The document to extract from.", "type": "text/plain" }, "key": "file", "type": "file" }, { "description": { "content": "Free-text instruction appended to the model prompt. Use it to ask\nfor extra fields, enforce formatting, or narrow the scope.\n", "type": "text/plain" }, "key": "ComplementaryPrompt", "value": "", "type": "text" } ] } }, "status": "Request Entity Too Large", "code": 413, "header": [], "cookie": [], "_postman_previewlanguage": "text" }, { "name": "The file's type is not accepted. The body is the service envelope\n(`ServiceErrorEnvelope`); read `meta.errors[].code`. None of these is retryable\nas is — fix the upload first.\n\n- `ADMISSION_UNSUPPORTED_MEDIA_TYPE` — the file part carried no usable\n `Content-Type` (none at all, or a generic `application/octet-stream`) and the\n type could not be determined from the file's content or its name either.\n Send the part with its MIME type, for example `application/pdf`, `image/png`\n or `image/jpeg`. Some multipart clients leave it out unless you set it —\n Python `requests` with a bare `open()`, for one.\n- `document.unsupported_media_type` — the file's extension or content is outside\n the accepted types listed under **Uploads**.\n- `ADMISSION_TYPE_REJECTED` — the file's content was refused as a document type.", "originalRequest": { "url": { "path": [ "Document", "extraction" ], "host": [ "{{baseUrl}}" ], "query": [], "variable": [] }, "header": [ { "key": "Content-Type", "value": "multipart/form-data" }, { "description": { "content": "Added as a part of security scheme: bearer", "type": "text/plain" }, "key": "Authorization", "value": "Bearer " } ], "method": "POST", "body": { "mode": "formdata", "formdata": [ { "description": { "content": "(Required) The document to extract from.", "type": "text/plain" }, "key": "file", "type": "file" }, { "description": { "content": "Free-text instruction appended to the model prompt. Use it to ask\nfor extra fields, enforce formatting, or narrow the scope.\n", "type": "text/plain" }, "key": "ComplementaryPrompt", "value": "", "type": "text" } ] } }, "status": "Unsupported Media Type", "code": 415, "header": [], "cookie": [], "_postman_previewlanguage": "text" }, { "name": "Over 50 requests in the current 1-minute window for this key, answered as a\nproblem document; or the document admission quota is exhausted, answered as\nthe service envelope with `ADMISSION_QUOTA_EXCEEDED`. Both are retryable.", "originalRequest": { "url": { "path": [ "Document", "extraction" ], "host": [ "{{baseUrl}}" ], "query": [], "variable": [] }, "header": [ { "key": "Content-Type", "value": "multipart/form-data" }, { "key": "Accept", "value": "application/problem+json" }, { "description": { "content": "Added as a part of security scheme: bearer", "type": "text/plain" }, "key": "Authorization", "value": "Bearer " } ], "method": "POST", "body": { "mode": "formdata", "formdata": [ { "description": { "content": "(Required) The document to extract from.", "type": "text/plain" }, "key": "file", "type": "file" }, { "description": { "content": "Free-text instruction appended to the model prompt. Use it to ask\nfor extra fields, enforce formatting, or narrow the scope.\n", "type": "text/plain" }, "key": "ComplementaryPrompt", "value": "", "type": "text" } ] } }, "status": "Too Many Requests", "code": 429, "header": [ { "key": "Content-Type", "value": "application/json" }, { "disabled": false, "description": { "content": "Seconds until the rate-limit window resets. Sent with the problem document.", "type": "text/plain" }, "key": "Retry-After", "value": "" } ], "body": "{\n \"data\": {\n \"key_0\": \"string\",\n \"key_1\": 8935,\n \"key_2\": 7067.274549044669,\n \"key_3\": 6605.237934272736\n },\n \"meta\": {\n \"httpStatusCode\": \"\",\n \"messages\": [\n \"\",\n \"\"\n ],\n \"errors\": [\n {\n \"code\": \"\",\n \"message\": \"\",\n \"retryable\": \"\",\n \"field\": \"\",\n \"details\": {\n \"key_0\": \"\",\n \"key_1\": \"\",\n \"key_2\": \"\",\n \"key_3\": \"\"\n }\n },\n {\n \"code\": \"\",\n \"message\": \"\",\n \"retryable\": \"\",\n \"field\": \"\",\n \"details\": {\n \"key_0\": \"\"\n }\n }\n ],\n \"creditsConsumed\": \"\"\n },\n \"hasErrors\": \"\"\n}", "cookie": [], "_postman_previewlanguage": "json" }, { "name": "Unexpected failure. `correlationId` identifies the request — quote it when\nyou contact support.", "originalRequest": { "url": { "path": [ "Document", "extraction" ], "host": [ "{{baseUrl}}" ], "query": [], "variable": [] }, "header": [ { "key": "Content-Type", "value": "multipart/form-data" }, { "key": "Accept", "value": "application/problem+json" }, { "description": { "content": "Added as a part of security scheme: bearer", "type": "text/plain" }, "key": "Authorization", "value": "Bearer " } ], "method": "POST", "body": { "mode": "formdata", "formdata": [ { "description": { "content": "(Required) The document to extract from.", "type": "text/plain" }, "key": "file", "type": "file" }, { "description": { "content": "Free-text instruction appended to the model prompt. Use it to ask\nfor extra fields, enforce formatting, or narrow the scope.\n", "type": "text/plain" }, "key": "ComplementaryPrompt", "value": "", "type": "text" } ] } }, "status": "Internal Server Error", "code": 500, "header": [ { "key": "Content-Type", "value": "application/problem+json" } ], "body": "{\n \"type\": \"\",\n \"title\": \"\",\n \"status\": \"\",\n \"detail\": \"\",\n \"instance\": \"\",\n \"code\": \"\",\n \"correlationId\": \"\",\n \"retryable\": \"\",\n \"field\": \"\",\n \"errors\": [\n {\n \"code\": \"\",\n \"message\": \"\",\n \"field\": \"\",\n \"retryable\": \"\",\n \"details\": null\n },\n {\n \"code\": \"\",\n \"message\": \"\",\n \"field\": \"\",\n \"retryable\": \"\",\n \"details\": null\n }\n ]\n}", "cookie": [], "_postman_previewlanguage": "json" }, { "name": "Document processing could not complete because an upstream service or its\nadmission proof failed. The body is the service envelope. Read\n`meta.errors[].retryable` for the specific error; the HTTP status alone does\nnot mean the operation is safe to repeat.", "originalRequest": { "url": { "path": [ "Document", "extraction" ], "host": [ "{{baseUrl}}" ], "query": [], "variable": [] }, "header": [ { "key": "Content-Type", "value": "multipart/form-data" }, { "key": "Accept", "value": "application/json" }, { "description": { "content": "Added as a part of security scheme: bearer", "type": "text/plain" }, "key": "Authorization", "value": "Bearer " } ], "method": "POST", "body": { "mode": "formdata", "formdata": [ { "description": { "content": "(Required) The document to extract from.", "type": "text/plain" }, "key": "file", "type": "file" }, { "description": { "content": "Free-text instruction appended to the model prompt. Use it to ask\nfor extra fields, enforce formatting, or narrow the scope.\n", "type": "text/plain" }, "key": "ComplementaryPrompt", "value": "", "type": "text" } ] } }, "status": "Bad Gateway", "code": 502, "header": [ { "key": "Content-Type", "value": "application/json" } ], "body": "{\n \"data\": {\n \"key_0\": \"string\",\n \"key_1\": 8935,\n \"key_2\": 7067.274549044669,\n \"key_3\": 6605.237934272736\n },\n \"meta\": {\n \"httpStatusCode\": \"\",\n \"messages\": [\n \"\",\n \"\"\n ],\n \"errors\": [\n {\n \"code\": \"\",\n \"message\": \"\",\n \"retryable\": \"\",\n \"field\": \"\",\n \"details\": {\n \"key_0\": \"\",\n \"key_1\": \"\",\n \"key_2\": \"\",\n \"key_3\": \"\"\n }\n },\n {\n \"code\": \"\",\n \"message\": \"\",\n \"retryable\": \"\",\n \"field\": \"\",\n \"details\": {\n \"key_0\": \"\"\n }\n }\n ],\n \"creditsConsumed\": \"\"\n },\n \"hasErrors\": \"\"\n}", "cookie": [], "_postman_previewlanguage": "json" }, { "name": "Document processing could not complete because an upstream service or its\nadmission proof failed. The body is the service envelope. Read\n`meta.errors[].retryable` for the specific error; the HTTP status alone does\nnot mean the operation is safe to repeat.", "originalRequest": { "url": { "path": [ "Document", "extraction" ], "host": [ "{{baseUrl}}" ], "query": [], "variable": [] }, "header": [ { "key": "Content-Type", "value": "multipart/form-data" }, { "key": "Accept", "value": "application/json" }, { "description": { "content": "Added as a part of security scheme: bearer", "type": "text/plain" }, "key": "Authorization", "value": "Bearer " } ], "method": "POST", "body": { "mode": "formdata", "formdata": [ { "description": { "content": "(Required) The document to extract from.", "type": "text/plain" }, "key": "file", "type": "file" }, { "description": { "content": "Free-text instruction appended to the model prompt. Use it to ask\nfor extra fields, enforce formatting, or narrow the scope.\n", "type": "text/plain" }, "key": "ComplementaryPrompt", "value": "", "type": "text" } ] } }, "status": "Service Unavailable", "code": 503, "header": [ { "key": "Content-Type", "value": "application/json" } ], "body": "{\n \"data\": {\n \"key_0\": \"string\",\n \"key_1\": 8935,\n \"key_2\": 7067.274549044669,\n \"key_3\": 6605.237934272736\n },\n \"meta\": {\n \"httpStatusCode\": \"\",\n \"messages\": [\n \"\",\n \"\"\n ],\n \"errors\": [\n {\n \"code\": \"\",\n \"message\": \"\",\n \"retryable\": \"\",\n \"field\": \"\",\n \"details\": {\n \"key_0\": \"\",\n \"key_1\": \"\",\n \"key_2\": \"\",\n \"key_3\": \"\"\n }\n },\n {\n \"code\": \"\",\n \"message\": \"\",\n \"retryable\": \"\",\n \"field\": \"\",\n \"details\": {\n \"key_0\": \"\"\n }\n }\n ],\n \"creditsConsumed\": \"\"\n },\n \"hasErrors\": \"\"\n}", "cookie": [], "_postman_previewlanguage": "json" }, { "name": "Document processing could not complete because an upstream service or its\nadmission proof failed. The body is the service envelope. Read\n`meta.errors[].retryable` for the specific error; the HTTP status alone does\nnot mean the operation is safe to repeat.", "originalRequest": { "url": { "path": [ "Document", "extraction" ], "host": [ "{{baseUrl}}" ], "query": [], "variable": [] }, "header": [ { "key": "Content-Type", "value": "multipart/form-data" }, { "key": "Accept", "value": "application/json" }, { "description": { "content": "Added as a part of security scheme: bearer", "type": "text/plain" }, "key": "Authorization", "value": "Bearer " } ], "method": "POST", "body": { "mode": "formdata", "formdata": [ { "description": { "content": "(Required) The document to extract from.", "type": "text/plain" }, "key": "file", "type": "file" }, { "description": { "content": "Free-text instruction appended to the model prompt. Use it to ask\nfor extra fields, enforce formatting, or narrow the scope.\n", "type": "text/plain" }, "key": "ComplementaryPrompt", "value": "", "type": "text" } ] } }, "status": "Gateway Timeout", "code": 504, "header": [ { "key": "Content-Type", "value": "application/json" } ], "body": "{\n \"data\": {\n \"key_0\": \"string\",\n \"key_1\": 8935,\n \"key_2\": 7067.274549044669,\n \"key_3\": 6605.237934272736\n },\n \"meta\": {\n \"httpStatusCode\": \"\",\n \"messages\": [\n \"\",\n \"\"\n ],\n \"errors\": [\n {\n \"code\": \"\",\n \"message\": \"\",\n \"retryable\": \"\",\n \"field\": \"\",\n \"details\": {\n \"key_0\": \"\",\n \"key_1\": \"\",\n \"key_2\": \"\",\n \"key_3\": \"\"\n }\n },\n {\n \"code\": \"\",\n \"message\": \"\",\n \"retryable\": \"\",\n \"field\": \"\",\n \"details\": {\n \"key_0\": \"\"\n }\n }\n ],\n \"creditsConsumed\": \"\"\n },\n \"hasErrors\": \"\"\n}", "cookie": [], "_postman_previewlanguage": "json" } ], "event": [], "protocolProfileBehavior": { "disableBodyPruning": true } } ] }, { "name": "classifier", "description": "", "item": [ { "name": "Classify one or more documents", "request": { "name": "Classify one or more documents", "description": { "content": "Detects the document type against the classes configured for your tenant.\nRepeat the `files` field to classify several documents in one call.\n", "type": "text/plain" }, "url": { "path": [ "Document", "classifier" ], "host": [ "{{baseUrl}}" ], "query": [], "variable": [] }, "header": [ { "key": "Content-Type", "value": "multipart/form-data" }, { "key": "Accept", "value": "application/json" } ], "method": "POST", "body": { "mode": "formdata", "formdata": [ { "description": { "content": "(Required) One or more files to classify.", "type": "text/plain" }, "key": "files", "type": "file", "src": [] } ] }, "auth": null }, "response": [ { "name": "The service envelope. `data.metadata` is shaped by the template or operation\nthat ran, so its fields vary by document type. What does not vary is the shape of\neach field inside it — see `ExtractedField` for the value, confidence and source\ncoordinates every extracted field carries.", "originalRequest": { "url": { "path": [ "Document", "classifier" ], "host": [ "{{baseUrl}}" ], "query": [], "variable": [] }, "header": [ { "key": "Content-Type", "value": "multipart/form-data" }, { "key": "Accept", "value": "application/json" }, { "description": { "content": "Added as a part of security scheme: bearer", "type": "text/plain" }, "key": "Authorization", "value": "Bearer " } ], "method": "POST", "body": { "mode": "formdata", "formdata": [ { "description": { "content": "(Required) One or more files to classify.", "type": "text/plain" }, "key": "files", "value": ",", "type": "text" } ] } }, "status": "OK", "code": 200, "header": [ { "key": "Content-Type", "value": "application/json" } ], "body": "{\n \"data\": {\n \"id\": \"\",\n \"templateId\": \"\",\n \"metadata\": {\n \"key_0\": 9202.600389253348,\n \"key_1\": \"string\",\n \"key_2\": 2346.2733905762434,\n \"key_3\": 3504\n },\n \"createdDate\": \"\",\n \"results\": [\n {\n \"fileName\": \"\",\n \"documentType\": \"\",\n \"confidence\": \"\",\n \"pages\": \"\",\n \"templateId\": \"\",\n \"templateMetadata\": \"\"\n },\n {\n \"fileName\": \"\",\n \"documentType\": \"\",\n \"confidence\": \"\",\n \"pages\": \"\",\n \"templateId\": \"\",\n \"templateMetadata\": \"\"\n }\n ],\n \"documentType\": \"\",\n \"confidence\": \"\",\n \"fraudBlocked\": \"\",\n \"fraudRequestId\": \"\",\n \"quality\": {\n \"overall\": 2,\n \"findings\": [\n {\n \"probe\": \"\",\n \"level\": 1,\n \"measured\": \"\",\n \"threshold\": \"\",\n \"message\": \"\"\n },\n {\n \"probe\": \"\",\n \"level\": 2,\n \"measured\": \"\",\n \"threshold\": \"\",\n \"message\": \"\"\n }\n ]\n },\n \"imageUrls\": null,\n \"documents\": [\n {\n \"box2D\": [\n \"\",\n \"\"\n ],\n \"mask\": [\n [\n \"\",\n \"\"\n ],\n [\n \"\",\n \"\"\n ]\n ],\n \"side\": \"\",\n \"type\": \"\",\n \"confidence\": \"\",\n \"imageUrl\": \"\"\n },\n {\n \"box2D\": [\n \"\",\n \"\"\n ],\n \"mask\": [\n [\n \"\",\n \"\"\n ],\n [\n \"\",\n \"\"\n ]\n ],\n \"side\": \"\",\n \"type\": \"\",\n \"confidence\": \"\",\n \"imageUrl\": \"\"\n }\n ],\n \"compositeImageUrl\": \"\",\n \"requestId\": \"\",\n \"extractions\": [\n {\n \"sourceDocumentId\": \"\",\n \"hasFace\": \"\",\n \"documentType\": \"\",\n \"cropSignedUrl\": \"\"\n },\n {\n \"sourceDocumentId\": \"\",\n \"hasFace\": \"\",\n \"documentType\": \"\",\n \"cropSignedUrl\": \"\"\n }\n ],\n \"matches\": [\n {\n \"sourceDocumentId\": \"\",\n \"selfieDocumentId\": \"\",\n \"score\": \"\",\n \"matched\": \"\",\n \"tooManyFaces\": \"\"\n },\n {\n \"sourceDocumentId\": \"\",\n \"selfieDocumentId\": \"\",\n \"score\": \"\",\n \"matched\": \"\",\n \"tooManyFaces\": \"\"\n }\n ]\n },\n \"meta\": {\n \"httpStatusCode\": \"\",\n \"messages\": [\n \"\",\n \"\"\n ],\n \"errors\": [\n {\n \"code\": \"\",\n \"message\": \"\",\n \"retryable\": \"\",\n \"field\": \"\",\n \"details\": null\n },\n {\n \"code\": \"\",\n \"message\": \"\",\n \"retryable\": \"\",\n \"field\": \"\",\n \"details\": {\n \"key_0\": \"\",\n \"key_1\": \"\"\n }\n }\n ],\n \"creditsConsumed\": \"\"\n },\n \"hasErrors\": \"\"\n}", "cookie": [], "_postman_previewlanguage": "json" }, { "name": "The request is invalid. Refused before processing — malformed or unsafe — it\nis a problem document; refused by processing itself, such as a missing file,\nit is the service envelope with the reason in `meta.errors`.", "originalRequest": { "url": { "path": [ "Document", "classifier" ], "host": [ "{{baseUrl}}" ], "query": [], "variable": [] }, "header": [ { "key": "Content-Type", "value": "multipart/form-data" }, { "key": "Accept", "value": "application/problem+json" }, { "description": { "content": "Added as a part of security scheme: bearer", "type": "text/plain" }, "key": "Authorization", "value": "Bearer " } ], "method": "POST", "body": { "mode": "formdata", "formdata": [ { "description": { "content": "(Required) One or more files to classify.", "type": "text/plain" }, "key": "files", "value": ",", "type": "text" } ] } }, "status": "Bad Request", "code": 400, "header": [ { "key": "Content-Type", "value": "application/json" } ], "body": "{\n \"data\": {\n \"key_0\": \"string\",\n \"key_1\": 8935,\n \"key_2\": 7067.274549044669,\n \"key_3\": 6605.237934272736\n },\n \"meta\": {\n \"httpStatusCode\": \"\",\n \"messages\": [\n \"\",\n \"\"\n ],\n \"errors\": [\n {\n \"code\": \"\",\n \"message\": \"\",\n \"retryable\": \"\",\n \"field\": \"\",\n \"details\": {\n \"key_0\": \"\",\n \"key_1\": \"\",\n \"key_2\": \"\",\n \"key_3\": \"\"\n }\n },\n {\n \"code\": \"\",\n \"message\": \"\",\n \"retryable\": \"\",\n \"field\": \"\",\n \"details\": {\n \"key_0\": \"\"\n }\n }\n ],\n \"creditsConsumed\": \"\"\n },\n \"hasErrors\": \"\"\n}", "cookie": [], "_postman_previewlanguage": "json" }, { "name": "Missing or invalid API key. Both `xtkt_live_` (production) and `xtkt_test_`\n(sandbox) prefixes are accepted, but the key must also be valid and active.", "originalRequest": { "url": { "path": [ "Document", "classifier" ], "host": [ "{{baseUrl}}" ], "query": [], "variable": [] }, "header": [ { "key": "Content-Type", "value": "multipart/form-data" }, { "key": "Accept", "value": "application/problem+json" }, { "description": { "content": "Added as a part of security scheme: bearer", "type": "text/plain" }, "key": "Authorization", "value": "Bearer " } ], "method": "POST", "body": { "mode": "formdata", "formdata": [ { "description": { "content": "(Required) One or more files to classify.", "type": "text/plain" }, "key": "files", "value": ",", "type": "text" } ] } }, "status": "Unauthorized", "code": 401, "header": [ { "key": "Content-Type", "value": "application/problem+json" } ], "body": "{\n \"type\": \"\",\n \"title\": \"\",\n \"status\": \"\",\n \"detail\": \"\",\n \"instance\": \"\",\n \"code\": \"\",\n \"correlationId\": \"\",\n \"retryable\": \"\",\n \"field\": \"\",\n \"errors\": [\n {\n \"code\": \"\",\n \"message\": \"\",\n \"field\": \"\",\n \"retryable\": \"\",\n \"details\": null\n },\n {\n \"code\": \"\",\n \"message\": \"\",\n \"field\": \"\",\n \"retryable\": \"\",\n \"details\": null\n }\n ]\n}", "cookie": [], "_postman_previewlanguage": "json" }, { "name": "The key is valid but not allowed to make this request. A sandbox key\n(`xtkt_test_`) is refused with `code` `environment.sandbox_route_unavailable`\non every route outside the sandbox set, and on `POST /api/v1/document-jobs`\nfor an unsupported operation or any `templateId`. See **Sandbox** in the\nAPI description.", "originalRequest": { "url": { "path": [ "Document", "classifier" ], "host": [ "{{baseUrl}}" ], "query": [], "variable": [] }, "header": [ { "key": "Content-Type", "value": "multipart/form-data" }, { "key": "Accept", "value": "application/problem+json" }, { "description": { "content": "Added as a part of security scheme: bearer", "type": "text/plain" }, "key": "Authorization", "value": "Bearer " } ], "method": "POST", "body": { "mode": "formdata", "formdata": [ { "description": { "content": "(Required) One or more files to classify.", "type": "text/plain" }, "key": "files", "value": ",", "type": "text" } ] } }, "status": "Forbidden", "code": 403, "header": [ { "key": "Content-Type", "value": "application/problem+json" } ], "body": "{\n \"type\": \"\",\n \"title\": \"\",\n \"status\": \"\",\n \"detail\": \"\",\n \"instance\": \"\",\n \"code\": \"\",\n \"correlationId\": \"\",\n \"retryable\": \"\",\n \"field\": \"\",\n \"errors\": [\n {\n \"code\": \"\",\n \"message\": \"\",\n \"field\": \"\",\n \"retryable\": \"\",\n \"details\": null\n },\n {\n \"code\": \"\",\n \"message\": \"\",\n \"field\": \"\",\n \"retryable\": \"\",\n \"details\": null\n }\n ]\n}", "cookie": [], "_postman_previewlanguage": "json" }, { "name": "Nothing answers at this address for this tenant.", "originalRequest": { "url": { "path": [ "Document", "classifier" ], "host": [ "{{baseUrl}}" ], "query": [], "variable": [] }, "header": [ { "key": "Content-Type", "value": "multipart/form-data" }, { "key": "Accept", "value": "application/problem+json" }, { "description": { "content": "Added as a part of security scheme: bearer", "type": "text/plain" }, "key": "Authorization", "value": "Bearer " } ], "method": "POST", "body": { "mode": "formdata", "formdata": [ { "description": { "content": "(Required) One or more files to classify.", "type": "text/plain" }, "key": "files", "value": ",", "type": "text" } ] } }, "status": "Not Found", "code": 404, "header": [ { "key": "Content-Type", "value": "application/problem+json" } ], "body": "{\n \"type\": \"\",\n \"title\": \"\",\n \"status\": \"\",\n \"detail\": \"\",\n \"instance\": \"\",\n \"code\": \"\",\n \"correlationId\": \"\",\n \"retryable\": \"\",\n \"field\": \"\",\n \"errors\": [\n {\n \"code\": \"\",\n \"message\": \"\",\n \"field\": \"\",\n \"retryable\": \"\",\n \"details\": null\n },\n {\n \"code\": \"\",\n \"message\": \"\",\n \"field\": \"\",\n \"retryable\": \"\",\n \"details\": null\n }\n ]\n}", "cookie": [], "_postman_previewlanguage": "json" }, { "name": "The request conflicts with the current state of what it acts on.", "originalRequest": { "url": { "path": [ "Document", "classifier" ], "host": [ "{{baseUrl}}" ], "query": [], "variable": [] }, "header": [ { "key": "Content-Type", "value": "multipart/form-data" }, { "key": "Accept", "value": "application/problem+json" }, { "description": { "content": "Added as a part of security scheme: bearer", "type": "text/plain" }, "key": "Authorization", "value": "Bearer " } ], "method": "POST", "body": { "mode": "formdata", "formdata": [ { "description": { "content": "(Required) One or more files to classify.", "type": "text/plain" }, "key": "files", "value": ",", "type": "text" } ] } }, "status": "Conflict", "code": 409, "header": [ { "key": "Content-Type", "value": "application/problem+json" } ], "body": "{\n \"type\": \"\",\n \"title\": \"\",\n \"status\": \"\",\n \"detail\": \"\",\n \"instance\": \"\",\n \"code\": \"\",\n \"correlationId\": \"\",\n \"retryable\": \"\",\n \"field\": \"\",\n \"errors\": [\n {\n \"code\": \"\",\n \"message\": \"\",\n \"field\": \"\",\n \"retryable\": \"\",\n \"details\": null\n },\n {\n \"code\": \"\",\n \"message\": \"\",\n \"field\": \"\",\n \"retryable\": \"\",\n \"details\": null\n }\n ]\n}", "cookie": [], "_postman_previewlanguage": "json" }, { "name": "Over the size limit — 10 MB, or 32 MB on `/Document/split`.", "originalRequest": { "url": { "path": [ "Document", "classifier" ], "host": [ "{{baseUrl}}" ], "query": [], "variable": [] }, "header": [ { "key": "Content-Type", "value": "multipart/form-data" }, { "description": { "content": "Added as a part of security scheme: bearer", "type": "text/plain" }, "key": "Authorization", "value": "Bearer " } ], "method": "POST", "body": { "mode": "formdata", "formdata": [ { "description": { "content": "(Required) One or more files to classify.", "type": "text/plain" }, "key": "files", "value": ",", "type": "text" } ] } }, "status": "Request Entity Too Large", "code": 413, "header": [], "cookie": [], "_postman_previewlanguage": "text" }, { "name": "The file's type is not accepted. The body is the service envelope\n(`ServiceErrorEnvelope`); read `meta.errors[].code`. None of these is retryable\nas is — fix the upload first.\n\n- `ADMISSION_UNSUPPORTED_MEDIA_TYPE` — the file part carried no usable\n `Content-Type` (none at all, or a generic `application/octet-stream`) and the\n type could not be determined from the file's content or its name either.\n Send the part with its MIME type, for example `application/pdf`, `image/png`\n or `image/jpeg`. Some multipart clients leave it out unless you set it —\n Python `requests` with a bare `open()`, for one.\n- `document.unsupported_media_type` — the file's extension or content is outside\n the accepted types listed under **Uploads**.\n- `ADMISSION_TYPE_REJECTED` — the file's content was refused as a document type.", "originalRequest": { "url": { "path": [ "Document", "classifier" ], "host": [ "{{baseUrl}}" ], "query": [], "variable": [] }, "header": [ { "key": "Content-Type", "value": "multipart/form-data" }, { "description": { "content": "Added as a part of security scheme: bearer", "type": "text/plain" }, "key": "Authorization", "value": "Bearer " } ], "method": "POST", "body": { "mode": "formdata", "formdata": [ { "description": { "content": "(Required) One or more files to classify.", "type": "text/plain" }, "key": "files", "value": ",", "type": "text" } ] } }, "status": "Unsupported Media Type", "code": 415, "header": [], "cookie": [], "_postman_previewlanguage": "text" }, { "name": "Over 50 requests in the current 1-minute window for this key, answered as a\nproblem document; or the document admission quota is exhausted, answered as\nthe service envelope with `ADMISSION_QUOTA_EXCEEDED`. Both are retryable.", "originalRequest": { "url": { "path": [ "Document", "classifier" ], "host": [ "{{baseUrl}}" ], "query": [], "variable": [] }, "header": [ { "key": "Content-Type", "value": "multipart/form-data" }, { "key": "Accept", "value": "application/problem+json" }, { "description": { "content": "Added as a part of security scheme: bearer", "type": "text/plain" }, "key": "Authorization", "value": "Bearer " } ], "method": "POST", "body": { "mode": "formdata", "formdata": [ { "description": { "content": "(Required) One or more files to classify.", "type": "text/plain" }, "key": "files", "value": ",", "type": "text" } ] } }, "status": "Too Many Requests", "code": 429, "header": [ { "key": "Content-Type", "value": "application/json" }, { "disabled": false, "description": { "content": "Seconds until the rate-limit window resets. Sent with the problem document.", "type": "text/plain" }, "key": "Retry-After", "value": "" } ], "body": "{\n \"data\": {\n \"key_0\": \"string\",\n \"key_1\": 8935,\n \"key_2\": 7067.274549044669,\n \"key_3\": 6605.237934272736\n },\n \"meta\": {\n \"httpStatusCode\": \"\",\n \"messages\": [\n \"\",\n \"\"\n ],\n \"errors\": [\n {\n \"code\": \"\",\n \"message\": \"\",\n \"retryable\": \"\",\n \"field\": \"\",\n \"details\": {\n \"key_0\": \"\",\n \"key_1\": \"\",\n \"key_2\": \"\",\n \"key_3\": \"\"\n }\n },\n {\n \"code\": \"\",\n \"message\": \"\",\n \"retryable\": \"\",\n \"field\": \"\",\n \"details\": {\n \"key_0\": \"\"\n }\n }\n ],\n \"creditsConsumed\": \"\"\n },\n \"hasErrors\": \"\"\n}", "cookie": [], "_postman_previewlanguage": "json" }, { "name": "Unexpected failure. `correlationId` identifies the request — quote it when\nyou contact support.", "originalRequest": { "url": { "path": [ "Document", "classifier" ], "host": [ "{{baseUrl}}" ], "query": [], "variable": [] }, "header": [ { "key": "Content-Type", "value": "multipart/form-data" }, { "key": "Accept", "value": "application/problem+json" }, { "description": { "content": "Added as a part of security scheme: bearer", "type": "text/plain" }, "key": "Authorization", "value": "Bearer " } ], "method": "POST", "body": { "mode": "formdata", "formdata": [ { "description": { "content": "(Required) One or more files to classify.", "type": "text/plain" }, "key": "files", "value": ",", "type": "text" } ] } }, "status": "Internal Server Error", "code": 500, "header": [ { "key": "Content-Type", "value": "application/problem+json" } ], "body": "{\n \"type\": \"\",\n \"title\": \"\",\n \"status\": \"\",\n \"detail\": \"\",\n \"instance\": \"\",\n \"code\": \"\",\n \"correlationId\": \"\",\n \"retryable\": \"\",\n \"field\": \"\",\n \"errors\": [\n {\n \"code\": \"\",\n \"message\": \"\",\n \"field\": \"\",\n \"retryable\": \"\",\n \"details\": null\n },\n {\n \"code\": \"\",\n \"message\": \"\",\n \"field\": \"\",\n \"retryable\": \"\",\n \"details\": null\n }\n ]\n}", "cookie": [], "_postman_previewlanguage": "json" }, { "name": "Document processing could not complete because an upstream service or its\nadmission proof failed. The body is the service envelope. Read\n`meta.errors[].retryable` for the specific error; the HTTP status alone does\nnot mean the operation is safe to repeat.", "originalRequest": { "url": { "path": [ "Document", "classifier" ], "host": [ "{{baseUrl}}" ], "query": [], "variable": [] }, "header": [ { "key": "Content-Type", "value": "multipart/form-data" }, { "key": "Accept", "value": "application/json" }, { "description": { "content": "Added as a part of security scheme: bearer", "type": "text/plain" }, "key": "Authorization", "value": "Bearer " } ], "method": "POST", "body": { "mode": "formdata", "formdata": [ { "description": { "content": "(Required) One or more files to classify.", "type": "text/plain" }, "key": "files", "value": ",", "type": "text" } ] } }, "status": "Bad Gateway", "code": 502, "header": [ { "key": "Content-Type", "value": "application/json" } ], "body": "{\n \"data\": {\n \"key_0\": \"string\",\n \"key_1\": 8935,\n \"key_2\": 7067.274549044669,\n \"key_3\": 6605.237934272736\n },\n \"meta\": {\n \"httpStatusCode\": \"\",\n \"messages\": [\n \"\",\n \"\"\n ],\n \"errors\": [\n {\n \"code\": \"\",\n \"message\": \"\",\n \"retryable\": \"\",\n \"field\": \"\",\n \"details\": {\n \"key_0\": \"\",\n \"key_1\": \"\",\n \"key_2\": \"\",\n \"key_3\": \"\"\n }\n },\n {\n \"code\": \"\",\n \"message\": \"\",\n \"retryable\": \"\",\n \"field\": \"\",\n \"details\": {\n \"key_0\": \"\"\n }\n }\n ],\n \"creditsConsumed\": \"\"\n },\n \"hasErrors\": \"\"\n}", "cookie": [], "_postman_previewlanguage": "json" }, { "name": "Document processing could not complete because an upstream service or its\nadmission proof failed. The body is the service envelope. Read\n`meta.errors[].retryable` for the specific error; the HTTP status alone does\nnot mean the operation is safe to repeat.", "originalRequest": { "url": { "path": [ "Document", "classifier" ], "host": [ "{{baseUrl}}" ], "query": [], "variable": [] }, "header": [ { "key": "Content-Type", "value": "multipart/form-data" }, { "key": "Accept", "value": "application/json" }, { "description": { "content": "Added as a part of security scheme: bearer", "type": "text/plain" }, "key": "Authorization", "value": "Bearer " } ], "method": "POST", "body": { "mode": "formdata", "formdata": [ { "description": { "content": "(Required) One or more files to classify.", "type": "text/plain" }, "key": "files", "value": ",", "type": "text" } ] } }, "status": "Service Unavailable", "code": 503, "header": [ { "key": "Content-Type", "value": "application/json" } ], "body": "{\n \"data\": {\n \"key_0\": \"string\",\n \"key_1\": 8935,\n \"key_2\": 7067.274549044669,\n \"key_3\": 6605.237934272736\n },\n \"meta\": {\n \"httpStatusCode\": \"\",\n \"messages\": [\n \"\",\n \"\"\n ],\n \"errors\": [\n {\n \"code\": \"\",\n \"message\": \"\",\n \"retryable\": \"\",\n \"field\": \"\",\n \"details\": {\n \"key_0\": \"\",\n \"key_1\": \"\",\n \"key_2\": \"\",\n \"key_3\": \"\"\n }\n },\n {\n \"code\": \"\",\n \"message\": \"\",\n \"retryable\": \"\",\n \"field\": \"\",\n \"details\": {\n \"key_0\": \"\"\n }\n }\n ],\n \"creditsConsumed\": \"\"\n },\n \"hasErrors\": \"\"\n}", "cookie": [], "_postman_previewlanguage": "json" }, { "name": "Document processing could not complete because an upstream service or its\nadmission proof failed. The body is the service envelope. Read\n`meta.errors[].retryable` for the specific error; the HTTP status alone does\nnot mean the operation is safe to repeat.", "originalRequest": { "url": { "path": [ "Document", "classifier" ], "host": [ "{{baseUrl}}" ], "query": [], "variable": [] }, "header": [ { "key": "Content-Type", "value": "multipart/form-data" }, { "key": "Accept", "value": "application/json" }, { "description": { "content": "Added as a part of security scheme: bearer", "type": "text/plain" }, "key": "Authorization", "value": "Bearer " } ], "method": "POST", "body": { "mode": "formdata", "formdata": [ { "description": { "content": "(Required) One or more files to classify.", "type": "text/plain" }, "key": "files", "value": ",", "type": "text" } ] } }, "status": "Gateway Timeout", "code": 504, "header": [ { "key": "Content-Type", "value": "application/json" } ], "body": "{\n \"data\": {\n \"key_0\": \"string\",\n \"key_1\": 8935,\n \"key_2\": 7067.274549044669,\n \"key_3\": 6605.237934272736\n },\n \"meta\": {\n \"httpStatusCode\": \"\",\n \"messages\": [\n \"\",\n \"\"\n ],\n \"errors\": [\n {\n \"code\": \"\",\n \"message\": \"\",\n \"retryable\": \"\",\n \"field\": \"\",\n \"details\": {\n \"key_0\": \"\",\n \"key_1\": \"\",\n \"key_2\": \"\",\n \"key_3\": \"\"\n }\n },\n {\n \"code\": \"\",\n \"message\": \"\",\n \"retryable\": \"\",\n \"field\": \"\",\n \"details\": {\n \"key_0\": \"\"\n }\n }\n ],\n \"creditsConsumed\": \"\"\n },\n \"hasErrors\": \"\"\n}", "cookie": [], "_postman_previewlanguage": "json" } ], "event": [], "protocolProfileBehavior": { "disableBodyPruning": true } } ] }, { "name": "zero-shot", "description": "", "item": [ { "name": "Discover fields without a template", "request": { "name": "Discover fields without a template", "description": { "content": "Reports the fields the model can find in a document you have no template\nfor, each with a confidence score from `0` to `100`.\n", "type": "text/plain" }, "url": { "path": [ "Document", "zero-shot" ], "host": [ "{{baseUrl}}" ], "query": [], "variable": [] }, "header": [ { "key": "Content-Type", "value": "multipart/form-data" }, { "key": "Accept", "value": "application/json" } ], "method": "POST", "body": { "mode": "formdata", "formdata": [ { "description": { "content": "(Required) ", "type": "text/plain" }, "key": "file", "type": "file" } ] }, "auth": null }, "response": [ { "name": "The service envelope. `data.metadata` is shaped by the template or operation\nthat ran, so its fields vary by document type. What does not vary is the shape of\neach field inside it — see `ExtractedField` for the value, confidence and source\ncoordinates every extracted field carries.", "originalRequest": { "url": { "path": [ "Document", "zero-shot" ], "host": [ "{{baseUrl}}" ], "query": [], "variable": [] }, "header": [ { "key": "Content-Type", "value": "multipart/form-data" }, { "key": "Accept", "value": "application/json" }, { "description": { "content": "Added as a part of security scheme: bearer", "type": "text/plain" }, "key": "Authorization", "value": "Bearer " } ], "method": "POST", "body": { "mode": "formdata", "formdata": [ { "description": { "content": "(Required) ", "type": "text/plain" }, "key": "file", "type": "file" } ] } }, "status": "OK", "code": 200, "header": [ { "key": "Content-Type", "value": "application/json" } ], "body": "{\n \"data\": {\n \"id\": \"\",\n \"templateId\": \"\",\n \"metadata\": {\n \"key_0\": 9202.600389253348,\n \"key_1\": \"string\",\n \"key_2\": 2346.2733905762434,\n \"key_3\": 3504\n },\n \"createdDate\": \"\",\n \"results\": [\n {\n \"fileName\": \"\",\n \"documentType\": \"\",\n \"confidence\": \"\",\n \"pages\": \"\",\n \"templateId\": \"\",\n \"templateMetadata\": \"\"\n },\n {\n \"fileName\": \"\",\n \"documentType\": \"\",\n \"confidence\": \"\",\n \"pages\": \"\",\n \"templateId\": \"\",\n \"templateMetadata\": \"\"\n }\n ],\n \"documentType\": \"\",\n \"confidence\": \"\",\n \"fraudBlocked\": \"\",\n \"fraudRequestId\": \"\",\n \"quality\": {\n \"overall\": 2,\n \"findings\": [\n {\n \"probe\": \"\",\n \"level\": 1,\n \"measured\": \"\",\n \"threshold\": \"\",\n \"message\": \"\"\n },\n {\n \"probe\": \"\",\n \"level\": 2,\n \"measured\": \"\",\n \"threshold\": \"\",\n \"message\": \"\"\n }\n ]\n },\n \"imageUrls\": null,\n \"documents\": [\n {\n \"box2D\": [\n \"\",\n \"\"\n ],\n \"mask\": [\n [\n \"\",\n \"\"\n ],\n [\n \"\",\n \"\"\n ]\n ],\n \"side\": \"\",\n \"type\": \"\",\n \"confidence\": \"\",\n \"imageUrl\": \"\"\n },\n {\n \"box2D\": [\n \"\",\n \"\"\n ],\n \"mask\": [\n [\n \"\",\n \"\"\n ],\n [\n \"\",\n \"\"\n ]\n ],\n \"side\": \"\",\n \"type\": \"\",\n \"confidence\": \"\",\n \"imageUrl\": \"\"\n }\n ],\n \"compositeImageUrl\": \"\",\n \"requestId\": \"\",\n \"extractions\": [\n {\n \"sourceDocumentId\": \"\",\n \"hasFace\": \"\",\n \"documentType\": \"\",\n \"cropSignedUrl\": \"\"\n },\n {\n \"sourceDocumentId\": \"\",\n \"hasFace\": \"\",\n \"documentType\": \"\",\n \"cropSignedUrl\": \"\"\n }\n ],\n \"matches\": [\n {\n \"sourceDocumentId\": \"\",\n \"selfieDocumentId\": \"\",\n \"score\": \"\",\n \"matched\": \"\",\n \"tooManyFaces\": \"\"\n },\n {\n \"sourceDocumentId\": \"\",\n \"selfieDocumentId\": \"\",\n \"score\": \"\",\n \"matched\": \"\",\n \"tooManyFaces\": \"\"\n }\n ]\n },\n \"meta\": {\n \"httpStatusCode\": \"\",\n \"messages\": [\n \"\",\n \"\"\n ],\n \"errors\": [\n {\n \"code\": \"\",\n \"message\": \"\",\n \"retryable\": \"\",\n \"field\": \"\",\n \"details\": null\n },\n {\n \"code\": \"\",\n \"message\": \"\",\n \"retryable\": \"\",\n \"field\": \"\",\n \"details\": {\n \"key_0\": \"\",\n \"key_1\": \"\"\n }\n }\n ],\n \"creditsConsumed\": \"\"\n },\n \"hasErrors\": \"\"\n}", "cookie": [], "_postman_previewlanguage": "json" }, { "name": "The request is invalid. Refused before processing — malformed or unsafe — it\nis a problem document; refused by processing itself, such as a missing file,\nit is the service envelope with the reason in `meta.errors`.", "originalRequest": { "url": { "path": [ "Document", "zero-shot" ], "host": [ "{{baseUrl}}" ], "query": [], "variable": [] }, "header": [ { "key": "Content-Type", "value": "multipart/form-data" }, { "key": "Accept", "value": "application/problem+json" }, { "description": { "content": "Added as a part of security scheme: bearer", "type": "text/plain" }, "key": "Authorization", "value": "Bearer " } ], "method": "POST", "body": { "mode": "formdata", "formdata": [ { "description": { "content": "(Required) ", "type": "text/plain" }, "key": "file", "type": "file" } ] } }, "status": "Bad Request", "code": 400, "header": [ { "key": "Content-Type", "value": "application/json" } ], "body": "{\n \"data\": {\n \"key_0\": \"string\",\n \"key_1\": 8935,\n \"key_2\": 7067.274549044669,\n \"key_3\": 6605.237934272736\n },\n \"meta\": {\n \"httpStatusCode\": \"\",\n \"messages\": [\n \"\",\n \"\"\n ],\n \"errors\": [\n {\n \"code\": \"\",\n \"message\": \"\",\n \"retryable\": \"\",\n \"field\": \"\",\n \"details\": {\n \"key_0\": \"\",\n \"key_1\": \"\",\n \"key_2\": \"\",\n \"key_3\": \"\"\n }\n },\n {\n \"code\": \"\",\n \"message\": \"\",\n \"retryable\": \"\",\n \"field\": \"\",\n \"details\": {\n \"key_0\": \"\"\n }\n }\n ],\n \"creditsConsumed\": \"\"\n },\n \"hasErrors\": \"\"\n}", "cookie": [], "_postman_previewlanguage": "json" }, { "name": "Missing or invalid API key. Both `xtkt_live_` (production) and `xtkt_test_`\n(sandbox) prefixes are accepted, but the key must also be valid and active.", "originalRequest": { "url": { "path": [ "Document", "zero-shot" ], "host": [ "{{baseUrl}}" ], "query": [], "variable": [] }, "header": [ { "key": "Content-Type", "value": "multipart/form-data" }, { "key": "Accept", "value": "application/problem+json" }, { "description": { "content": "Added as a part of security scheme: bearer", "type": "text/plain" }, "key": "Authorization", "value": "Bearer " } ], "method": "POST", "body": { "mode": "formdata", "formdata": [ { "description": { "content": "(Required) ", "type": "text/plain" }, "key": "file", "type": "file" } ] } }, "status": "Unauthorized", "code": 401, "header": [ { "key": "Content-Type", "value": "application/problem+json" } ], "body": "{\n \"type\": \"\",\n \"title\": \"\",\n \"status\": \"\",\n \"detail\": \"\",\n \"instance\": \"\",\n \"code\": \"\",\n \"correlationId\": \"\",\n \"retryable\": \"\",\n \"field\": \"\",\n \"errors\": [\n {\n \"code\": \"\",\n \"message\": \"\",\n \"field\": \"\",\n \"retryable\": \"\",\n \"details\": null\n },\n {\n \"code\": \"\",\n \"message\": \"\",\n \"field\": \"\",\n \"retryable\": \"\",\n \"details\": null\n }\n ]\n}", "cookie": [], "_postman_previewlanguage": "json" }, { "name": "The key is valid but not allowed to make this request. A sandbox key\n(`xtkt_test_`) is refused with `code` `environment.sandbox_route_unavailable`\non every route outside the sandbox set, and on `POST /api/v1/document-jobs`\nfor an unsupported operation or any `templateId`. See **Sandbox** in the\nAPI description.", "originalRequest": { "url": { "path": [ "Document", "zero-shot" ], "host": [ "{{baseUrl}}" ], "query": [], "variable": [] }, "header": [ { "key": "Content-Type", "value": "multipart/form-data" }, { "key": "Accept", "value": "application/problem+json" }, { "description": { "content": "Added as a part of security scheme: bearer", "type": "text/plain" }, "key": "Authorization", "value": "Bearer " } ], "method": "POST", "body": { "mode": "formdata", "formdata": [ { "description": { "content": "(Required) ", "type": "text/plain" }, "key": "file", "type": "file" } ] } }, "status": "Forbidden", "code": 403, "header": [ { "key": "Content-Type", "value": "application/problem+json" } ], "body": "{\n \"type\": \"\",\n \"title\": \"\",\n \"status\": \"\",\n \"detail\": \"\",\n \"instance\": \"\",\n \"code\": \"\",\n \"correlationId\": \"\",\n \"retryable\": \"\",\n \"field\": \"\",\n \"errors\": [\n {\n \"code\": \"\",\n \"message\": \"\",\n \"field\": \"\",\n \"retryable\": \"\",\n \"details\": null\n },\n {\n \"code\": \"\",\n \"message\": \"\",\n \"field\": \"\",\n \"retryable\": \"\",\n \"details\": null\n }\n ]\n}", "cookie": [], "_postman_previewlanguage": "json" }, { "name": "Nothing answers at this address for this tenant.", "originalRequest": { "url": { "path": [ "Document", "zero-shot" ], "host": [ "{{baseUrl}}" ], "query": [], "variable": [] }, "header": [ { "key": "Content-Type", "value": "multipart/form-data" }, { "key": "Accept", "value": "application/problem+json" }, { "description": { "content": "Added as a part of security scheme: bearer", "type": "text/plain" }, "key": "Authorization", "value": "Bearer " } ], "method": "POST", "body": { "mode": "formdata", "formdata": [ { "description": { "content": "(Required) ", "type": "text/plain" }, "key": "file", "type": "file" } ] } }, "status": "Not Found", "code": 404, "header": [ { "key": "Content-Type", "value": "application/problem+json" } ], "body": "{\n \"type\": \"\",\n \"title\": \"\",\n \"status\": \"\",\n \"detail\": \"\",\n \"instance\": \"\",\n \"code\": \"\",\n \"correlationId\": \"\",\n \"retryable\": \"\",\n \"field\": \"\",\n \"errors\": [\n {\n \"code\": \"\",\n \"message\": \"\",\n \"field\": \"\",\n \"retryable\": \"\",\n \"details\": null\n },\n {\n \"code\": \"\",\n \"message\": \"\",\n \"field\": \"\",\n \"retryable\": \"\",\n \"details\": null\n }\n ]\n}", "cookie": [], "_postman_previewlanguage": "json" }, { "name": "The request conflicts with the current state of what it acts on.", "originalRequest": { "url": { "path": [ "Document", "zero-shot" ], "host": [ "{{baseUrl}}" ], "query": [], "variable": [] }, "header": [ { "key": "Content-Type", "value": "multipart/form-data" }, { "key": "Accept", "value": "application/problem+json" }, { "description": { "content": "Added as a part of security scheme: bearer", "type": "text/plain" }, "key": "Authorization", "value": "Bearer " } ], "method": "POST", "body": { "mode": "formdata", "formdata": [ { "description": { "content": "(Required) ", "type": "text/plain" }, "key": "file", "type": "file" } ] } }, "status": "Conflict", "code": 409, "header": [ { "key": "Content-Type", "value": "application/problem+json" } ], "body": "{\n \"type\": \"\",\n \"title\": \"\",\n \"status\": \"\",\n \"detail\": \"\",\n \"instance\": \"\",\n \"code\": \"\",\n \"correlationId\": \"\",\n \"retryable\": \"\",\n \"field\": \"\",\n \"errors\": [\n {\n \"code\": \"\",\n \"message\": \"\",\n \"field\": \"\",\n \"retryable\": \"\",\n \"details\": null\n },\n {\n \"code\": \"\",\n \"message\": \"\",\n \"field\": \"\",\n \"retryable\": \"\",\n \"details\": null\n }\n ]\n}", "cookie": [], "_postman_previewlanguage": "json" }, { "name": "Over the size limit — 10 MB, or 32 MB on `/Document/split`.", "originalRequest": { "url": { "path": [ "Document", "zero-shot" ], "host": [ "{{baseUrl}}" ], "query": [], "variable": [] }, "header": [ { "key": "Content-Type", "value": "multipart/form-data" }, { "description": { "content": "Added as a part of security scheme: bearer", "type": "text/plain" }, "key": "Authorization", "value": "Bearer " } ], "method": "POST", "body": { "mode": "formdata", "formdata": [ { "description": { "content": "(Required) ", "type": "text/plain" }, "key": "file", "type": "file" } ] } }, "status": "Request Entity Too Large", "code": 413, "header": [], "cookie": [], "_postman_previewlanguage": "text" }, { "name": "The file's type is not accepted. The body is the service envelope\n(`ServiceErrorEnvelope`); read `meta.errors[].code`. None of these is retryable\nas is — fix the upload first.\n\n- `ADMISSION_UNSUPPORTED_MEDIA_TYPE` — the file part carried no usable\n `Content-Type` (none at all, or a generic `application/octet-stream`) and the\n type could not be determined from the file's content or its name either.\n Send the part with its MIME type, for example `application/pdf`, `image/png`\n or `image/jpeg`. Some multipart clients leave it out unless you set it —\n Python `requests` with a bare `open()`, for one.\n- `document.unsupported_media_type` — the file's extension or content is outside\n the accepted types listed under **Uploads**.\n- `ADMISSION_TYPE_REJECTED` — the file's content was refused as a document type.", "originalRequest": { "url": { "path": [ "Document", "zero-shot" ], "host": [ "{{baseUrl}}" ], "query": [], "variable": [] }, "header": [ { "key": "Content-Type", "value": "multipart/form-data" }, { "description": { "content": "Added as a part of security scheme: bearer", "type": "text/plain" }, "key": "Authorization", "value": "Bearer " } ], "method": "POST", "body": { "mode": "formdata", "formdata": [ { "description": { "content": "(Required) ", "type": "text/plain" }, "key": "file", "type": "file" } ] } }, "status": "Unsupported Media Type", "code": 415, "header": [], "cookie": [], "_postman_previewlanguage": "text" }, { "name": "Over 50 requests in the current 1-minute window for this key, answered as a\nproblem document; or the document admission quota is exhausted, answered as\nthe service envelope with `ADMISSION_QUOTA_EXCEEDED`. Both are retryable.", "originalRequest": { "url": { "path": [ "Document", "zero-shot" ], "host": [ "{{baseUrl}}" ], "query": [], "variable": [] }, "header": [ { "key": "Content-Type", "value": "multipart/form-data" }, { "key": "Accept", "value": "application/problem+json" }, { "description": { "content": "Added as a part of security scheme: bearer", "type": "text/plain" }, "key": "Authorization", "value": "Bearer " } ], "method": "POST", "body": { "mode": "formdata", "formdata": [ { "description": { "content": "(Required) ", "type": "text/plain" }, "key": "file", "type": "file" } ] } }, "status": "Too Many Requests", "code": 429, "header": [ { "key": "Content-Type", "value": "application/json" }, { "disabled": false, "description": { "content": "Seconds until the rate-limit window resets. Sent with the problem document.", "type": "text/plain" }, "key": "Retry-After", "value": "" } ], "body": "{\n \"data\": {\n \"key_0\": \"string\",\n \"key_1\": 8935,\n \"key_2\": 7067.274549044669,\n \"key_3\": 6605.237934272736\n },\n \"meta\": {\n \"httpStatusCode\": \"\",\n \"messages\": [\n \"\",\n \"\"\n ],\n \"errors\": [\n {\n \"code\": \"\",\n \"message\": \"\",\n \"retryable\": \"\",\n \"field\": \"\",\n \"details\": {\n \"key_0\": \"\",\n \"key_1\": \"\",\n \"key_2\": \"\",\n \"key_3\": \"\"\n }\n },\n {\n \"code\": \"\",\n \"message\": \"\",\n \"retryable\": \"\",\n \"field\": \"\",\n \"details\": {\n \"key_0\": \"\"\n }\n }\n ],\n \"creditsConsumed\": \"\"\n },\n \"hasErrors\": \"\"\n}", "cookie": [], "_postman_previewlanguage": "json" }, { "name": "Unexpected failure. `correlationId` identifies the request — quote it when\nyou contact support.", "originalRequest": { "url": { "path": [ "Document", "zero-shot" ], "host": [ "{{baseUrl}}" ], "query": [], "variable": [] }, "header": [ { "key": "Content-Type", "value": "multipart/form-data" }, { "key": "Accept", "value": "application/problem+json" }, { "description": { "content": "Added as a part of security scheme: bearer", "type": "text/plain" }, "key": "Authorization", "value": "Bearer " } ], "method": "POST", "body": { "mode": "formdata", "formdata": [ { "description": { "content": "(Required) ", "type": "text/plain" }, "key": "file", "type": "file" } ] } }, "status": "Internal Server Error", "code": 500, "header": [ { "key": "Content-Type", "value": "application/problem+json" } ], "body": "{\n \"type\": \"\",\n \"title\": \"\",\n \"status\": \"\",\n \"detail\": \"\",\n \"instance\": \"\",\n \"code\": \"\",\n \"correlationId\": \"\",\n \"retryable\": \"\",\n \"field\": \"\",\n \"errors\": [\n {\n \"code\": \"\",\n \"message\": \"\",\n \"field\": \"\",\n \"retryable\": \"\",\n \"details\": null\n },\n {\n \"code\": \"\",\n \"message\": \"\",\n \"field\": \"\",\n \"retryable\": \"\",\n \"details\": null\n }\n ]\n}", "cookie": [], "_postman_previewlanguage": "json" }, { "name": "Document processing could not complete because an upstream service or its\nadmission proof failed. The body is the service envelope. Read\n`meta.errors[].retryable` for the specific error; the HTTP status alone does\nnot mean the operation is safe to repeat.", "originalRequest": { "url": { "path": [ "Document", "zero-shot" ], "host": [ "{{baseUrl}}" ], "query": [], "variable": [] }, "header": [ { "key": "Content-Type", "value": "multipart/form-data" }, { "key": "Accept", "value": "application/json" }, { "description": { "content": "Added as a part of security scheme: bearer", "type": "text/plain" }, "key": "Authorization", "value": "Bearer " } ], "method": "POST", "body": { "mode": "formdata", "formdata": [ { "description": { "content": "(Required) ", "type": "text/plain" }, "key": "file", "type": "file" } ] } }, "status": "Bad Gateway", "code": 502, "header": [ { "key": "Content-Type", "value": "application/json" } ], "body": "{\n \"data\": {\n \"key_0\": \"string\",\n \"key_1\": 8935,\n \"key_2\": 7067.274549044669,\n \"key_3\": 6605.237934272736\n },\n \"meta\": {\n \"httpStatusCode\": \"\",\n \"messages\": [\n \"\",\n \"\"\n ],\n \"errors\": [\n {\n \"code\": \"\",\n \"message\": \"\",\n \"retryable\": \"\",\n \"field\": \"\",\n \"details\": {\n \"key_0\": \"\",\n \"key_1\": \"\",\n \"key_2\": \"\",\n \"key_3\": \"\"\n }\n },\n {\n \"code\": \"\",\n \"message\": \"\",\n \"retryable\": \"\",\n \"field\": \"\",\n \"details\": {\n \"key_0\": \"\"\n }\n }\n ],\n \"creditsConsumed\": \"\"\n },\n \"hasErrors\": \"\"\n}", "cookie": [], "_postman_previewlanguage": "json" }, { "name": "Document processing could not complete because an upstream service or its\nadmission proof failed. The body is the service envelope. Read\n`meta.errors[].retryable` for the specific error; the HTTP status alone does\nnot mean the operation is safe to repeat.", "originalRequest": { "url": { "path": [ "Document", "zero-shot" ], "host": [ "{{baseUrl}}" ], "query": [], "variable": [] }, "header": [ { "key": "Content-Type", "value": "multipart/form-data" }, { "key": "Accept", "value": "application/json" }, { "description": { "content": "Added as a part of security scheme: bearer", "type": "text/plain" }, "key": "Authorization", "value": "Bearer " } ], "method": "POST", "body": { "mode": "formdata", "formdata": [ { "description": { "content": "(Required) ", "type": "text/plain" }, "key": "file", "type": "file" } ] } }, "status": "Service Unavailable", "code": 503, "header": [ { "key": "Content-Type", "value": "application/json" } ], "body": "{\n \"data\": {\n \"key_0\": \"string\",\n \"key_1\": 8935,\n \"key_2\": 7067.274549044669,\n \"key_3\": 6605.237934272736\n },\n \"meta\": {\n \"httpStatusCode\": \"\",\n \"messages\": [\n \"\",\n \"\"\n ],\n \"errors\": [\n {\n \"code\": \"\",\n \"message\": \"\",\n \"retryable\": \"\",\n \"field\": \"\",\n \"details\": {\n \"key_0\": \"\",\n \"key_1\": \"\",\n \"key_2\": \"\",\n \"key_3\": \"\"\n }\n },\n {\n \"code\": \"\",\n \"message\": \"\",\n \"retryable\": \"\",\n \"field\": \"\",\n \"details\": {\n \"key_0\": \"\"\n }\n }\n ],\n \"creditsConsumed\": \"\"\n },\n \"hasErrors\": \"\"\n}", "cookie": [], "_postman_previewlanguage": "json" }, { "name": "Document processing could not complete because an upstream service or its\nadmission proof failed. The body is the service envelope. Read\n`meta.errors[].retryable` for the specific error; the HTTP status alone does\nnot mean the operation is safe to repeat.", "originalRequest": { "url": { "path": [ "Document", "zero-shot" ], "host": [ "{{baseUrl}}" ], "query": [], "variable": [] }, "header": [ { "key": "Content-Type", "value": "multipart/form-data" }, { "key": "Accept", "value": "application/json" }, { "description": { "content": "Added as a part of security scheme: bearer", "type": "text/plain" }, "key": "Authorization", "value": "Bearer " } ], "method": "POST", "body": { "mode": "formdata", "formdata": [ { "description": { "content": "(Required) ", "type": "text/plain" }, "key": "file", "type": "file" } ] } }, "status": "Gateway Timeout", "code": 504, "header": [ { "key": "Content-Type", "value": "application/json" } ], "body": "{\n \"data\": {\n \"key_0\": \"string\",\n \"key_1\": 8935,\n \"key_2\": 7067.274549044669,\n \"key_3\": 6605.237934272736\n },\n \"meta\": {\n \"httpStatusCode\": \"\",\n \"messages\": [\n \"\",\n \"\"\n ],\n \"errors\": [\n {\n \"code\": \"\",\n \"message\": \"\",\n \"retryable\": \"\",\n \"field\": \"\",\n \"details\": {\n \"key_0\": \"\",\n \"key_1\": \"\",\n \"key_2\": \"\",\n \"key_3\": \"\"\n }\n },\n {\n \"code\": \"\",\n \"message\": \"\",\n \"retryable\": \"\",\n \"field\": \"\",\n \"details\": {\n \"key_0\": \"\"\n }\n }\n ],\n \"creditsConsumed\": \"\"\n },\n \"hasErrors\": \"\"\n}", "cookie": [], "_postman_previewlanguage": "json" } ], "event": [], "protocolProfileBehavior": { "disableBodyPruning": true } } ] }, { "name": "crop", "description": "", "item": [ { "name": "Crop pages to the document", "request": { "name": "Crop pages to the document", "description": { "content": "Trims pages down to the document itself — useful when the source is a photo\nor a scan with a border, a desk or a second page in frame.\n", "type": "text/plain" }, "url": { "path": [ "Document", "crop" ], "host": [ "{{baseUrl}}" ], "query": [], "variable": [] }, "header": [ { "key": "Content-Type", "value": "multipart/form-data" }, { "key": "Accept", "value": "application/json" } ], "method": "POST", "body": { "mode": "formdata", "formdata": [ { "description": { "content": "(Required) ", "type": "text/plain" }, "key": "file", "type": "file" } ] }, "auth": null }, "response": [ { "name": "The service envelope. `data.metadata` is shaped by the template or operation\nthat ran, so its fields vary by document type. What does not vary is the shape of\neach field inside it — see `ExtractedField` for the value, confidence and source\ncoordinates every extracted field carries.", "originalRequest": { "url": { "path": [ "Document", "crop" ], "host": [ "{{baseUrl}}" ], "query": [], "variable": [] }, "header": [ { "key": "Content-Type", "value": "multipart/form-data" }, { "key": "Accept", "value": "application/json" }, { "description": { "content": "Added as a part of security scheme: bearer", "type": "text/plain" }, "key": "Authorization", "value": "Bearer " } ], "method": "POST", "body": { "mode": "formdata", "formdata": [ { "description": { "content": "(Required) ", "type": "text/plain" }, "key": "file", "type": "file" } ] } }, "status": "OK", "code": 200, "header": [ { "key": "Content-Type", "value": "application/json" } ], "body": "{\n \"data\": {\n \"id\": \"\",\n \"templateId\": \"\",\n \"metadata\": {\n \"key_0\": 9202.600389253348,\n \"key_1\": \"string\",\n \"key_2\": 2346.2733905762434,\n \"key_3\": 3504\n },\n \"createdDate\": \"\",\n \"results\": [\n {\n \"fileName\": \"\",\n \"documentType\": \"\",\n \"confidence\": \"\",\n \"pages\": \"\",\n \"templateId\": \"\",\n \"templateMetadata\": \"\"\n },\n {\n \"fileName\": \"\",\n \"documentType\": \"\",\n \"confidence\": \"\",\n \"pages\": \"\",\n \"templateId\": \"\",\n \"templateMetadata\": \"\"\n }\n ],\n \"documentType\": \"\",\n \"confidence\": \"\",\n \"fraudBlocked\": \"\",\n \"fraudRequestId\": \"\",\n \"quality\": {\n \"overall\": 2,\n \"findings\": [\n {\n \"probe\": \"\",\n \"level\": 1,\n \"measured\": \"\",\n \"threshold\": \"\",\n \"message\": \"\"\n },\n {\n \"probe\": \"\",\n \"level\": 2,\n \"measured\": \"\",\n \"threshold\": \"\",\n \"message\": \"\"\n }\n ]\n },\n \"imageUrls\": null,\n \"documents\": [\n {\n \"box2D\": [\n \"\",\n \"\"\n ],\n \"mask\": [\n [\n \"\",\n \"\"\n ],\n [\n \"\",\n \"\"\n ]\n ],\n \"side\": \"\",\n \"type\": \"\",\n \"confidence\": \"\",\n \"imageUrl\": \"\"\n },\n {\n \"box2D\": [\n \"\",\n \"\"\n ],\n \"mask\": [\n [\n \"\",\n \"\"\n ],\n [\n \"\",\n \"\"\n ]\n ],\n \"side\": \"\",\n \"type\": \"\",\n \"confidence\": \"\",\n \"imageUrl\": \"\"\n }\n ],\n \"compositeImageUrl\": \"\",\n \"requestId\": \"\",\n \"extractions\": [\n {\n \"sourceDocumentId\": \"\",\n \"hasFace\": \"\",\n \"documentType\": \"\",\n \"cropSignedUrl\": \"\"\n },\n {\n \"sourceDocumentId\": \"\",\n \"hasFace\": \"\",\n \"documentType\": \"\",\n \"cropSignedUrl\": \"\"\n }\n ],\n \"matches\": [\n {\n \"sourceDocumentId\": \"\",\n \"selfieDocumentId\": \"\",\n \"score\": \"\",\n \"matched\": \"\",\n \"tooManyFaces\": \"\"\n },\n {\n \"sourceDocumentId\": \"\",\n \"selfieDocumentId\": \"\",\n \"score\": \"\",\n \"matched\": \"\",\n \"tooManyFaces\": \"\"\n }\n ]\n },\n \"meta\": {\n \"httpStatusCode\": \"\",\n \"messages\": [\n \"\",\n \"\"\n ],\n \"errors\": [\n {\n \"code\": \"\",\n \"message\": \"\",\n \"retryable\": \"\",\n \"field\": \"\",\n \"details\": null\n },\n {\n \"code\": \"\",\n \"message\": \"\",\n \"retryable\": \"\",\n \"field\": \"\",\n \"details\": {\n \"key_0\": \"\",\n \"key_1\": \"\"\n }\n }\n ],\n \"creditsConsumed\": \"\"\n },\n \"hasErrors\": \"\"\n}", "cookie": [], "_postman_previewlanguage": "json" }, { "name": "The request is invalid. Refused before processing — malformed or unsafe — it\nis a problem document; refused by processing itself, such as a missing file,\nit is the service envelope with the reason in `meta.errors`.", "originalRequest": { "url": { "path": [ "Document", "crop" ], "host": [ "{{baseUrl}}" ], "query": [], "variable": [] }, "header": [ { "key": "Content-Type", "value": "multipart/form-data" }, { "key": "Accept", "value": "application/problem+json" }, { "description": { "content": "Added as a part of security scheme: bearer", "type": "text/plain" }, "key": "Authorization", "value": "Bearer " } ], "method": "POST", "body": { "mode": "formdata", "formdata": [ { "description": { "content": "(Required) ", "type": "text/plain" }, "key": "file", "type": "file" } ] } }, "status": "Bad Request", "code": 400, "header": [ { "key": "Content-Type", "value": "application/json" } ], "body": "{\n \"data\": {\n \"key_0\": \"string\",\n \"key_1\": 8935,\n \"key_2\": 7067.274549044669,\n \"key_3\": 6605.237934272736\n },\n \"meta\": {\n \"httpStatusCode\": \"\",\n \"messages\": [\n \"\",\n \"\"\n ],\n \"errors\": [\n {\n \"code\": \"\",\n \"message\": \"\",\n \"retryable\": \"\",\n \"field\": \"\",\n \"details\": {\n \"key_0\": \"\",\n \"key_1\": \"\",\n \"key_2\": \"\",\n \"key_3\": \"\"\n }\n },\n {\n \"code\": \"\",\n \"message\": \"\",\n \"retryable\": \"\",\n \"field\": \"\",\n \"details\": {\n \"key_0\": \"\"\n }\n }\n ],\n \"creditsConsumed\": \"\"\n },\n \"hasErrors\": \"\"\n}", "cookie": [], "_postman_previewlanguage": "json" }, { "name": "Missing or invalid API key. Both `xtkt_live_` (production) and `xtkt_test_`\n(sandbox) prefixes are accepted, but the key must also be valid and active.", "originalRequest": { "url": { "path": [ "Document", "crop" ], "host": [ "{{baseUrl}}" ], "query": [], "variable": [] }, "header": [ { "key": "Content-Type", "value": "multipart/form-data" }, { "key": "Accept", "value": "application/problem+json" }, { "description": { "content": "Added as a part of security scheme: bearer", "type": "text/plain" }, "key": "Authorization", "value": "Bearer " } ], "method": "POST", "body": { "mode": "formdata", "formdata": [ { "description": { "content": "(Required) ", "type": "text/plain" }, "key": "file", "type": "file" } ] } }, "status": "Unauthorized", "code": 401, "header": [ { "key": "Content-Type", "value": "application/problem+json" } ], "body": "{\n \"type\": \"\",\n \"title\": \"\",\n \"status\": \"\",\n \"detail\": \"\",\n \"instance\": \"\",\n \"code\": \"\",\n \"correlationId\": \"\",\n \"retryable\": \"\",\n \"field\": \"\",\n \"errors\": [\n {\n \"code\": \"\",\n \"message\": \"\",\n \"field\": \"\",\n \"retryable\": \"\",\n \"details\": null\n },\n {\n \"code\": \"\",\n \"message\": \"\",\n \"field\": \"\",\n \"retryable\": \"\",\n \"details\": null\n }\n ]\n}", "cookie": [], "_postman_previewlanguage": "json" }, { "name": "The key is valid but not allowed to make this request. A sandbox key\n(`xtkt_test_`) is refused with `code` `environment.sandbox_route_unavailable`\non every route outside the sandbox set, and on `POST /api/v1/document-jobs`\nfor an unsupported operation or any `templateId`. See **Sandbox** in the\nAPI description.", "originalRequest": { "url": { "path": [ "Document", "crop" ], "host": [ "{{baseUrl}}" ], "query": [], "variable": [] }, "header": [ { "key": "Content-Type", "value": "multipart/form-data" }, { "key": "Accept", "value": "application/problem+json" }, { "description": { "content": "Added as a part of security scheme: bearer", "type": "text/plain" }, "key": "Authorization", "value": "Bearer " } ], "method": "POST", "body": { "mode": "formdata", "formdata": [ { "description": { "content": "(Required) ", "type": "text/plain" }, "key": "file", "type": "file" } ] } }, "status": "Forbidden", "code": 403, "header": [ { "key": "Content-Type", "value": "application/problem+json" } ], "body": "{\n \"type\": \"\",\n \"title\": \"\",\n \"status\": \"\",\n \"detail\": \"\",\n \"instance\": \"\",\n \"code\": \"\",\n \"correlationId\": \"\",\n \"retryable\": \"\",\n \"field\": \"\",\n \"errors\": [\n {\n \"code\": \"\",\n \"message\": \"\",\n \"field\": \"\",\n \"retryable\": \"\",\n \"details\": null\n },\n {\n \"code\": \"\",\n \"message\": \"\",\n \"field\": \"\",\n \"retryable\": \"\",\n \"details\": null\n }\n ]\n}", "cookie": [], "_postman_previewlanguage": "json" }, { "name": "Nothing answers at this address for this tenant.", "originalRequest": { "url": { "path": [ "Document", "crop" ], "host": [ "{{baseUrl}}" ], "query": [], "variable": [] }, "header": [ { "key": "Content-Type", "value": "multipart/form-data" }, { "key": "Accept", "value": "application/problem+json" }, { "description": { "content": "Added as a part of security scheme: bearer", "type": "text/plain" }, "key": "Authorization", "value": "Bearer " } ], "method": "POST", "body": { "mode": "formdata", "formdata": [ { "description": { "content": "(Required) ", "type": "text/plain" }, "key": "file", "type": "file" } ] } }, "status": "Not Found", "code": 404, "header": [ { "key": "Content-Type", "value": "application/problem+json" } ], "body": "{\n \"type\": \"\",\n \"title\": \"\",\n \"status\": \"\",\n \"detail\": \"\",\n \"instance\": \"\",\n \"code\": \"\",\n \"correlationId\": \"\",\n \"retryable\": \"\",\n \"field\": \"\",\n \"errors\": [\n {\n \"code\": \"\",\n \"message\": \"\",\n \"field\": \"\",\n \"retryable\": \"\",\n \"details\": null\n },\n {\n \"code\": \"\",\n \"message\": \"\",\n \"field\": \"\",\n \"retryable\": \"\",\n \"details\": null\n }\n ]\n}", "cookie": [], "_postman_previewlanguage": "json" }, { "name": "The request conflicts with the current state of what it acts on.", "originalRequest": { "url": { "path": [ "Document", "crop" ], "host": [ "{{baseUrl}}" ], "query": [], "variable": [] }, "header": [ { "key": "Content-Type", "value": "multipart/form-data" }, { "key": "Accept", "value": "application/problem+json" }, { "description": { "content": "Added as a part of security scheme: bearer", "type": "text/plain" }, "key": "Authorization", "value": "Bearer " } ], "method": "POST", "body": { "mode": "formdata", "formdata": [ { "description": { "content": "(Required) ", "type": "text/plain" }, "key": "file", "type": "file" } ] } }, "status": "Conflict", "code": 409, "header": [ { "key": "Content-Type", "value": "application/problem+json" } ], "body": "{\n \"type\": \"\",\n \"title\": \"\",\n \"status\": \"\",\n \"detail\": \"\",\n \"instance\": \"\",\n \"code\": \"\",\n \"correlationId\": \"\",\n \"retryable\": \"\",\n \"field\": \"\",\n \"errors\": [\n {\n \"code\": \"\",\n \"message\": \"\",\n \"field\": \"\",\n \"retryable\": \"\",\n \"details\": null\n },\n {\n \"code\": \"\",\n \"message\": \"\",\n \"field\": \"\",\n \"retryable\": \"\",\n \"details\": null\n }\n ]\n}", "cookie": [], "_postman_previewlanguage": "json" }, { "name": "Over the size limit — 10 MB, or 32 MB on `/Document/split`.", "originalRequest": { "url": { "path": [ "Document", "crop" ], "host": [ "{{baseUrl}}" ], "query": [], "variable": [] }, "header": [ { "key": "Content-Type", "value": "multipart/form-data" }, { "description": { "content": "Added as a part of security scheme: bearer", "type": "text/plain" }, "key": "Authorization", "value": "Bearer " } ], "method": "POST", "body": { "mode": "formdata", "formdata": [ { "description": { "content": "(Required) ", "type": "text/plain" }, "key": "file", "type": "file" } ] } }, "status": "Request Entity Too Large", "code": 413, "header": [], "cookie": [], "_postman_previewlanguage": "text" }, { "name": "The file's type is not accepted. The body is the service envelope\n(`ServiceErrorEnvelope`); read `meta.errors[].code`. None of these is retryable\nas is — fix the upload first.\n\n- `ADMISSION_UNSUPPORTED_MEDIA_TYPE` — the file part carried no usable\n `Content-Type` (none at all, or a generic `application/octet-stream`) and the\n type could not be determined from the file's content or its name either.\n Send the part with its MIME type, for example `application/pdf`, `image/png`\n or `image/jpeg`. Some multipart clients leave it out unless you set it —\n Python `requests` with a bare `open()`, for one.\n- `document.unsupported_media_type` — the file's extension or content is outside\n the accepted types listed under **Uploads**.\n- `ADMISSION_TYPE_REJECTED` — the file's content was refused as a document type.", "originalRequest": { "url": { "path": [ "Document", "crop" ], "host": [ "{{baseUrl}}" ], "query": [], "variable": [] }, "header": [ { "key": "Content-Type", "value": "multipart/form-data" }, { "description": { "content": "Added as a part of security scheme: bearer", "type": "text/plain" }, "key": "Authorization", "value": "Bearer " } ], "method": "POST", "body": { "mode": "formdata", "formdata": [ { "description": { "content": "(Required) ", "type": "text/plain" }, "key": "file", "type": "file" } ] } }, "status": "Unsupported Media Type", "code": 415, "header": [], "cookie": [], "_postman_previewlanguage": "text" }, { "name": "Over 50 requests in the current 1-minute window for this key, answered as a\nproblem document; or the document admission quota is exhausted, answered as\nthe service envelope with `ADMISSION_QUOTA_EXCEEDED`. Both are retryable.", "originalRequest": { "url": { "path": [ "Document", "crop" ], "host": [ "{{baseUrl}}" ], "query": [], "variable": [] }, "header": [ { "key": "Content-Type", "value": "multipart/form-data" }, { "key": "Accept", "value": "application/problem+json" }, { "description": { "content": "Added as a part of security scheme: bearer", "type": "text/plain" }, "key": "Authorization", "value": "Bearer " } ], "method": "POST", "body": { "mode": "formdata", "formdata": [ { "description": { "content": "(Required) ", "type": "text/plain" }, "key": "file", "type": "file" } ] } }, "status": "Too Many Requests", "code": 429, "header": [ { "key": "Content-Type", "value": "application/json" }, { "disabled": false, "description": { "content": "Seconds until the rate-limit window resets. Sent with the problem document.", "type": "text/plain" }, "key": "Retry-After", "value": "" } ], "body": "{\n \"data\": {\n \"key_0\": \"string\",\n \"key_1\": 8935,\n \"key_2\": 7067.274549044669,\n \"key_3\": 6605.237934272736\n },\n \"meta\": {\n \"httpStatusCode\": \"\",\n \"messages\": [\n \"\",\n \"\"\n ],\n \"errors\": [\n {\n \"code\": \"\",\n \"message\": \"\",\n \"retryable\": \"\",\n \"field\": \"\",\n \"details\": {\n \"key_0\": \"\",\n \"key_1\": \"\",\n \"key_2\": \"\",\n \"key_3\": \"\"\n }\n },\n {\n \"code\": \"\",\n \"message\": \"\",\n \"retryable\": \"\",\n \"field\": \"\",\n \"details\": {\n \"key_0\": \"\"\n }\n }\n ],\n \"creditsConsumed\": \"\"\n },\n \"hasErrors\": \"\"\n}", "cookie": [], "_postman_previewlanguage": "json" }, { "name": "Unexpected failure. `correlationId` identifies the request — quote it when\nyou contact support.", "originalRequest": { "url": { "path": [ "Document", "crop" ], "host": [ "{{baseUrl}}" ], "query": [], "variable": [] }, "header": [ { "key": "Content-Type", "value": "multipart/form-data" }, { "key": "Accept", "value": "application/problem+json" }, { "description": { "content": "Added as a part of security scheme: bearer", "type": "text/plain" }, "key": "Authorization", "value": "Bearer " } ], "method": "POST", "body": { "mode": "formdata", "formdata": [ { "description": { "content": "(Required) ", "type": "text/plain" }, "key": "file", "type": "file" } ] } }, "status": "Internal Server Error", "code": 500, "header": [ { "key": "Content-Type", "value": "application/problem+json" } ], "body": "{\n \"type\": \"\",\n \"title\": \"\",\n \"status\": \"\",\n \"detail\": \"\",\n \"instance\": \"\",\n \"code\": \"\",\n \"correlationId\": \"\",\n \"retryable\": \"\",\n \"field\": \"\",\n \"errors\": [\n {\n \"code\": \"\",\n \"message\": \"\",\n \"field\": \"\",\n \"retryable\": \"\",\n \"details\": null\n },\n {\n \"code\": \"\",\n \"message\": \"\",\n \"field\": \"\",\n \"retryable\": \"\",\n \"details\": null\n }\n ]\n}", "cookie": [], "_postman_previewlanguage": "json" }, { "name": "Document processing could not complete because an upstream service or its\nadmission proof failed. The body is the service envelope. Read\n`meta.errors[].retryable` for the specific error; the HTTP status alone does\nnot mean the operation is safe to repeat.", "originalRequest": { "url": { "path": [ "Document", "crop" ], "host": [ "{{baseUrl}}" ], "query": [], "variable": [] }, "header": [ { "key": "Content-Type", "value": "multipart/form-data" }, { "key": "Accept", "value": "application/json" }, { "description": { "content": "Added as a part of security scheme: bearer", "type": "text/plain" }, "key": "Authorization", "value": "Bearer " } ], "method": "POST", "body": { "mode": "formdata", "formdata": [ { "description": { "content": "(Required) ", "type": "text/plain" }, "key": "file", "type": "file" } ] } }, "status": "Bad Gateway", "code": 502, "header": [ { "key": "Content-Type", "value": "application/json" } ], "body": "{\n \"data\": {\n \"key_0\": \"string\",\n \"key_1\": 8935,\n \"key_2\": 7067.274549044669,\n \"key_3\": 6605.237934272736\n },\n \"meta\": {\n \"httpStatusCode\": \"\",\n \"messages\": [\n \"\",\n \"\"\n ],\n \"errors\": [\n {\n \"code\": \"\",\n \"message\": \"\",\n \"retryable\": \"\",\n \"field\": \"\",\n \"details\": {\n \"key_0\": \"\",\n \"key_1\": \"\",\n \"key_2\": \"\",\n \"key_3\": \"\"\n }\n },\n {\n \"code\": \"\",\n \"message\": \"\",\n \"retryable\": \"\",\n \"field\": \"\",\n \"details\": {\n \"key_0\": \"\"\n }\n }\n ],\n \"creditsConsumed\": \"\"\n },\n \"hasErrors\": \"\"\n}", "cookie": [], "_postman_previewlanguage": "json" }, { "name": "Document processing could not complete because an upstream service or its\nadmission proof failed. The body is the service envelope. Read\n`meta.errors[].retryable` for the specific error; the HTTP status alone does\nnot mean the operation is safe to repeat.", "originalRequest": { "url": { "path": [ "Document", "crop" ], "host": [ "{{baseUrl}}" ], "query": [], "variable": [] }, "header": [ { "key": "Content-Type", "value": "multipart/form-data" }, { "key": "Accept", "value": "application/json" }, { "description": { "content": "Added as a part of security scheme: bearer", "type": "text/plain" }, "key": "Authorization", "value": "Bearer " } ], "method": "POST", "body": { "mode": "formdata", "formdata": [ { "description": { "content": "(Required) ", "type": "text/plain" }, "key": "file", "type": "file" } ] } }, "status": "Service Unavailable", "code": 503, "header": [ { "key": "Content-Type", "value": "application/json" } ], "body": "{\n \"data\": {\n \"key_0\": \"string\",\n \"key_1\": 8935,\n \"key_2\": 7067.274549044669,\n \"key_3\": 6605.237934272736\n },\n \"meta\": {\n \"httpStatusCode\": \"\",\n \"messages\": [\n \"\",\n \"\"\n ],\n \"errors\": [\n {\n \"code\": \"\",\n \"message\": \"\",\n \"retryable\": \"\",\n \"field\": \"\",\n \"details\": {\n \"key_0\": \"\",\n \"key_1\": \"\",\n \"key_2\": \"\",\n \"key_3\": \"\"\n }\n },\n {\n \"code\": \"\",\n \"message\": \"\",\n \"retryable\": \"\",\n \"field\": \"\",\n \"details\": {\n \"key_0\": \"\"\n }\n }\n ],\n \"creditsConsumed\": \"\"\n },\n \"hasErrors\": \"\"\n}", "cookie": [], "_postman_previewlanguage": "json" }, { "name": "Document processing could not complete because an upstream service or its\nadmission proof failed. The body is the service envelope. Read\n`meta.errors[].retryable` for the specific error; the HTTP status alone does\nnot mean the operation is safe to repeat.", "originalRequest": { "url": { "path": [ "Document", "crop" ], "host": [ "{{baseUrl}}" ], "query": [], "variable": [] }, "header": [ { "key": "Content-Type", "value": "multipart/form-data" }, { "key": "Accept", "value": "application/json" }, { "description": { "content": "Added as a part of security scheme: bearer", "type": "text/plain" }, "key": "Authorization", "value": "Bearer " } ], "method": "POST", "body": { "mode": "formdata", "formdata": [ { "description": { "content": "(Required) ", "type": "text/plain" }, "key": "file", "type": "file" } ] } }, "status": "Gateway Timeout", "code": 504, "header": [ { "key": "Content-Type", "value": "application/json" } ], "body": "{\n \"data\": {\n \"key_0\": \"string\",\n \"key_1\": 8935,\n \"key_2\": 7067.274549044669,\n \"key_3\": 6605.237934272736\n },\n \"meta\": {\n \"httpStatusCode\": \"\",\n \"messages\": [\n \"\",\n \"\"\n ],\n \"errors\": [\n {\n \"code\": \"\",\n \"message\": \"\",\n \"retryable\": \"\",\n \"field\": \"\",\n \"details\": {\n \"key_0\": \"\",\n \"key_1\": \"\",\n \"key_2\": \"\",\n \"key_3\": \"\"\n }\n },\n {\n \"code\": \"\",\n \"message\": \"\",\n \"retryable\": \"\",\n \"field\": \"\",\n \"details\": {\n \"key_0\": \"\"\n }\n }\n ],\n \"creditsConsumed\": \"\"\n },\n \"hasErrors\": \"\"\n}", "cookie": [], "_postman_previewlanguage": "json" } ], "event": [], "protocolProfileBehavior": { "disableBodyPruning": true } } ] }, { "name": "split", "description": "", "item": [ { "name": "Split a bundle into its documents", "request": { "name": "Split a bundle into its documents", "description": { "content": "Breaks one file into the documents it contains, returning a detected type and\npage range per segment. Accepts files up to 32 MB (the other document\nendpoints accept up to 10 MB). PDFs work best; other\nsupported formats are accepted but usually return a single segment.\n", "type": "text/plain" }, "url": { "path": [ "Document", "split" ], "host": [ "{{baseUrl}}" ], "query": [], "variable": [] }, "header": [ { "key": "Content-Type", "value": "multipart/form-data" }, { "key": "Accept", "value": "application/json" } ], "method": "POST", "body": { "mode": "formdata", "formdata": [ { "description": { "content": "(Required) ", "type": "text/plain" }, "key": "file", "type": "file" } ] }, "auth": null }, "response": [ { "name": "The service envelope. `data.metadata` is shaped by the template or operation\nthat ran, so its fields vary by document type. What does not vary is the shape of\neach field inside it — see `ExtractedField` for the value, confidence and source\ncoordinates every extracted field carries.", "originalRequest": { "url": { "path": [ "Document", "split" ], "host": [ "{{baseUrl}}" ], "query": [], "variable": [] }, "header": [ { "key": "Content-Type", "value": "multipart/form-data" }, { "key": "Accept", "value": "application/json" }, { "description": { "content": "Added as a part of security scheme: bearer", "type": "text/plain" }, "key": "Authorization", "value": "Bearer " } ], "method": "POST", "body": { "mode": "formdata", "formdata": [ { "description": { "content": "(Required) ", "type": "text/plain" }, "key": "file", "type": "file" } ] } }, "status": "OK", "code": 200, "header": [ { "key": "Content-Type", "value": "application/json" } ], "body": "{\n \"data\": {\n \"id\": \"\",\n \"templateId\": \"\",\n \"metadata\": {\n \"key_0\": 9202.600389253348,\n \"key_1\": \"string\",\n \"key_2\": 2346.2733905762434,\n \"key_3\": 3504\n },\n \"createdDate\": \"\",\n \"results\": [\n {\n \"fileName\": \"\",\n \"documentType\": \"\",\n \"confidence\": \"\",\n \"pages\": \"\",\n \"templateId\": \"\",\n \"templateMetadata\": \"\"\n },\n {\n \"fileName\": \"\",\n \"documentType\": \"\",\n \"confidence\": \"\",\n \"pages\": \"\",\n \"templateId\": \"\",\n \"templateMetadata\": \"\"\n }\n ],\n \"documentType\": \"\",\n \"confidence\": \"\",\n \"fraudBlocked\": \"\",\n \"fraudRequestId\": \"\",\n \"quality\": {\n \"overall\": 2,\n \"findings\": [\n {\n \"probe\": \"\",\n \"level\": 1,\n \"measured\": \"\",\n \"threshold\": \"\",\n \"message\": \"\"\n },\n {\n \"probe\": \"\",\n \"level\": 2,\n \"measured\": \"\",\n \"threshold\": \"\",\n \"message\": \"\"\n }\n ]\n },\n \"imageUrls\": null,\n \"documents\": [\n {\n \"box2D\": [\n \"\",\n \"\"\n ],\n \"mask\": [\n [\n \"\",\n \"\"\n ],\n [\n \"\",\n \"\"\n ]\n ],\n \"side\": \"\",\n \"type\": \"\",\n \"confidence\": \"\",\n \"imageUrl\": \"\"\n },\n {\n \"box2D\": [\n \"\",\n \"\"\n ],\n \"mask\": [\n [\n \"\",\n \"\"\n ],\n [\n \"\",\n \"\"\n ]\n ],\n \"side\": \"\",\n \"type\": \"\",\n \"confidence\": \"\",\n \"imageUrl\": \"\"\n }\n ],\n \"compositeImageUrl\": \"\",\n \"requestId\": \"\",\n \"extractions\": [\n {\n \"sourceDocumentId\": \"\",\n \"hasFace\": \"\",\n \"documentType\": \"\",\n \"cropSignedUrl\": \"\"\n },\n {\n \"sourceDocumentId\": \"\",\n \"hasFace\": \"\",\n \"documentType\": \"\",\n \"cropSignedUrl\": \"\"\n }\n ],\n \"matches\": [\n {\n \"sourceDocumentId\": \"\",\n \"selfieDocumentId\": \"\",\n \"score\": \"\",\n \"matched\": \"\",\n \"tooManyFaces\": \"\"\n },\n {\n \"sourceDocumentId\": \"\",\n \"selfieDocumentId\": \"\",\n \"score\": \"\",\n \"matched\": \"\",\n \"tooManyFaces\": \"\"\n }\n ]\n },\n \"meta\": {\n \"httpStatusCode\": \"\",\n \"messages\": [\n \"\",\n \"\"\n ],\n \"errors\": [\n {\n \"code\": \"\",\n \"message\": \"\",\n \"retryable\": \"\",\n \"field\": \"\",\n \"details\": null\n },\n {\n \"code\": \"\",\n \"message\": \"\",\n \"retryable\": \"\",\n \"field\": \"\",\n \"details\": {\n \"key_0\": \"\",\n \"key_1\": \"\"\n }\n }\n ],\n \"creditsConsumed\": \"\"\n },\n \"hasErrors\": \"\"\n}", "cookie": [], "_postman_previewlanguage": "json" }, { "name": "The request is invalid. Refused before processing — malformed or unsafe — it\nis a problem document; refused by processing itself, such as a missing file,\nit is the service envelope with the reason in `meta.errors`.", "originalRequest": { "url": { "path": [ "Document", "split" ], "host": [ "{{baseUrl}}" ], "query": [], "variable": [] }, "header": [ { "key": "Content-Type", "value": "multipart/form-data" }, { "key": "Accept", "value": "application/problem+json" }, { "description": { "content": "Added as a part of security scheme: bearer", "type": "text/plain" }, "key": "Authorization", "value": "Bearer " } ], "method": "POST", "body": { "mode": "formdata", "formdata": [ { "description": { "content": "(Required) ", "type": "text/plain" }, "key": "file", "type": "file" } ] } }, "status": "Bad Request", "code": 400, "header": [ { "key": "Content-Type", "value": "application/json" } ], "body": "{\n \"data\": {\n \"key_0\": \"string\",\n \"key_1\": 8935,\n \"key_2\": 7067.274549044669,\n \"key_3\": 6605.237934272736\n },\n \"meta\": {\n \"httpStatusCode\": \"\",\n \"messages\": [\n \"\",\n \"\"\n ],\n \"errors\": [\n {\n \"code\": \"\",\n \"message\": \"\",\n \"retryable\": \"\",\n \"field\": \"\",\n \"details\": {\n \"key_0\": \"\",\n \"key_1\": \"\",\n \"key_2\": \"\",\n \"key_3\": \"\"\n }\n },\n {\n \"code\": \"\",\n \"message\": \"\",\n \"retryable\": \"\",\n \"field\": \"\",\n \"details\": {\n \"key_0\": \"\"\n }\n }\n ],\n \"creditsConsumed\": \"\"\n },\n \"hasErrors\": \"\"\n}", "cookie": [], "_postman_previewlanguage": "json" }, { "name": "Missing or invalid API key. Both `xtkt_live_` (production) and `xtkt_test_`\n(sandbox) prefixes are accepted, but the key must also be valid and active.", "originalRequest": { "url": { "path": [ "Document", "split" ], "host": [ "{{baseUrl}}" ], "query": [], "variable": [] }, "header": [ { "key": "Content-Type", "value": "multipart/form-data" }, { "key": "Accept", "value": "application/problem+json" }, { "description": { "content": "Added as a part of security scheme: bearer", "type": "text/plain" }, "key": "Authorization", "value": "Bearer " } ], "method": "POST", "body": { "mode": "formdata", "formdata": [ { "description": { "content": "(Required) ", "type": "text/plain" }, "key": "file", "type": "file" } ] } }, "status": "Unauthorized", "code": 401, "header": [ { "key": "Content-Type", "value": "application/problem+json" } ], "body": "{\n \"type\": \"\",\n \"title\": \"\",\n \"status\": \"\",\n \"detail\": \"\",\n \"instance\": \"\",\n \"code\": \"\",\n \"correlationId\": \"\",\n \"retryable\": \"\",\n \"field\": \"\",\n \"errors\": [\n {\n \"code\": \"\",\n \"message\": \"\",\n \"field\": \"\",\n \"retryable\": \"\",\n \"details\": null\n },\n {\n \"code\": \"\",\n \"message\": \"\",\n \"field\": \"\",\n \"retryable\": \"\",\n \"details\": null\n }\n ]\n}", "cookie": [], "_postman_previewlanguage": "json" }, { "name": "The key is valid but not allowed to make this request. A sandbox key\n(`xtkt_test_`) is refused with `code` `environment.sandbox_route_unavailable`\non every route outside the sandbox set, and on `POST /api/v1/document-jobs`\nfor an unsupported operation or any `templateId`. See **Sandbox** in the\nAPI description.", "originalRequest": { "url": { "path": [ "Document", "split" ], "host": [ "{{baseUrl}}" ], "query": [], "variable": [] }, "header": [ { "key": "Content-Type", "value": "multipart/form-data" }, { "key": "Accept", "value": "application/problem+json" }, { "description": { "content": "Added as a part of security scheme: bearer", "type": "text/plain" }, "key": "Authorization", "value": "Bearer " } ], "method": "POST", "body": { "mode": "formdata", "formdata": [ { "description": { "content": "(Required) ", "type": "text/plain" }, "key": "file", "type": "file" } ] } }, "status": "Forbidden", "code": 403, "header": [ { "key": "Content-Type", "value": "application/problem+json" } ], "body": "{\n \"type\": \"\",\n \"title\": \"\",\n \"status\": \"\",\n \"detail\": \"\",\n \"instance\": \"\",\n \"code\": \"\",\n \"correlationId\": \"\",\n \"retryable\": \"\",\n \"field\": \"\",\n \"errors\": [\n {\n \"code\": \"\",\n \"message\": \"\",\n \"field\": \"\",\n \"retryable\": \"\",\n \"details\": null\n },\n {\n \"code\": \"\",\n \"message\": \"\",\n \"field\": \"\",\n \"retryable\": \"\",\n \"details\": null\n }\n ]\n}", "cookie": [], "_postman_previewlanguage": "json" }, { "name": "Nothing answers at this address for this tenant.", "originalRequest": { "url": { "path": [ "Document", "split" ], "host": [ "{{baseUrl}}" ], "query": [], "variable": [] }, "header": [ { "key": "Content-Type", "value": "multipart/form-data" }, { "key": "Accept", "value": "application/problem+json" }, { "description": { "content": "Added as a part of security scheme: bearer", "type": "text/plain" }, "key": "Authorization", "value": "Bearer " } ], "method": "POST", "body": { "mode": "formdata", "formdata": [ { "description": { "content": "(Required) ", "type": "text/plain" }, "key": "file", "type": "file" } ] } }, "status": "Not Found", "code": 404, "header": [ { "key": "Content-Type", "value": "application/problem+json" } ], "body": "{\n \"type\": \"\",\n \"title\": \"\",\n \"status\": \"\",\n \"detail\": \"\",\n \"instance\": \"\",\n \"code\": \"\",\n \"correlationId\": \"\",\n \"retryable\": \"\",\n \"field\": \"\",\n \"errors\": [\n {\n \"code\": \"\",\n \"message\": \"\",\n \"field\": \"\",\n \"retryable\": \"\",\n \"details\": null\n },\n {\n \"code\": \"\",\n \"message\": \"\",\n \"field\": \"\",\n \"retryable\": \"\",\n \"details\": null\n }\n ]\n}", "cookie": [], "_postman_previewlanguage": "json" }, { "name": "The request conflicts with the current state of what it acts on.", "originalRequest": { "url": { "path": [ "Document", "split" ], "host": [ "{{baseUrl}}" ], "query": [], "variable": [] }, "header": [ { "key": "Content-Type", "value": "multipart/form-data" }, { "key": "Accept", "value": "application/problem+json" }, { "description": { "content": "Added as a part of security scheme: bearer", "type": "text/plain" }, "key": "Authorization", "value": "Bearer " } ], "method": "POST", "body": { "mode": "formdata", "formdata": [ { "description": { "content": "(Required) ", "type": "text/plain" }, "key": "file", "type": "file" } ] } }, "status": "Conflict", "code": 409, "header": [ { "key": "Content-Type", "value": "application/problem+json" } ], "body": "{\n \"type\": \"\",\n \"title\": \"\",\n \"status\": \"\",\n \"detail\": \"\",\n \"instance\": \"\",\n \"code\": \"\",\n \"correlationId\": \"\",\n \"retryable\": \"\",\n \"field\": \"\",\n \"errors\": [\n {\n \"code\": \"\",\n \"message\": \"\",\n \"field\": \"\",\n \"retryable\": \"\",\n \"details\": null\n },\n {\n \"code\": \"\",\n \"message\": \"\",\n \"field\": \"\",\n \"retryable\": \"\",\n \"details\": null\n }\n ]\n}", "cookie": [], "_postman_previewlanguage": "json" }, { "name": "Over the size limit — 10 MB, or 32 MB on `/Document/split`.", "originalRequest": { "url": { "path": [ "Document", "split" ], "host": [ "{{baseUrl}}" ], "query": [], "variable": [] }, "header": [ { "key": "Content-Type", "value": "multipart/form-data" }, { "description": { "content": "Added as a part of security scheme: bearer", "type": "text/plain" }, "key": "Authorization", "value": "Bearer " } ], "method": "POST", "body": { "mode": "formdata", "formdata": [ { "description": { "content": "(Required) ", "type": "text/plain" }, "key": "file", "type": "file" } ] } }, "status": "Request Entity Too Large", "code": 413, "header": [], "cookie": [], "_postman_previewlanguage": "text" }, { "name": "The file's type is not accepted. The body is the service envelope\n(`ServiceErrorEnvelope`); read `meta.errors[].code`. None of these is retryable\nas is — fix the upload first.\n\n- `ADMISSION_UNSUPPORTED_MEDIA_TYPE` — the file part carried no usable\n `Content-Type` (none at all, or a generic `application/octet-stream`) and the\n type could not be determined from the file's content or its name either.\n Send the part with its MIME type, for example `application/pdf`, `image/png`\n or `image/jpeg`. Some multipart clients leave it out unless you set it —\n Python `requests` with a bare `open()`, for one.\n- `document.unsupported_media_type` — the file's extension or content is outside\n the accepted types listed under **Uploads**.\n- `ADMISSION_TYPE_REJECTED` — the file's content was refused as a document type.", "originalRequest": { "url": { "path": [ "Document", "split" ], "host": [ "{{baseUrl}}" ], "query": [], "variable": [] }, "header": [ { "key": "Content-Type", "value": "multipart/form-data" }, { "description": { "content": "Added as a part of security scheme: bearer", "type": "text/plain" }, "key": "Authorization", "value": "Bearer " } ], "method": "POST", "body": { "mode": "formdata", "formdata": [ { "description": { "content": "(Required) ", "type": "text/plain" }, "key": "file", "type": "file" } ] } }, "status": "Unsupported Media Type", "code": 415, "header": [], "cookie": [], "_postman_previewlanguage": "text" }, { "name": "Over 50 requests in the current 1-minute window for this key, answered as a\nproblem document; or the document admission quota is exhausted, answered as\nthe service envelope with `ADMISSION_QUOTA_EXCEEDED`. Both are retryable.", "originalRequest": { "url": { "path": [ "Document", "split" ], "host": [ "{{baseUrl}}" ], "query": [], "variable": [] }, "header": [ { "key": "Content-Type", "value": "multipart/form-data" }, { "key": "Accept", "value": "application/problem+json" }, { "description": { "content": "Added as a part of security scheme: bearer", "type": "text/plain" }, "key": "Authorization", "value": "Bearer " } ], "method": "POST", "body": { "mode": "formdata", "formdata": [ { "description": { "content": "(Required) ", "type": "text/plain" }, "key": "file", "type": "file" } ] } }, "status": "Too Many Requests", "code": 429, "header": [ { "key": "Content-Type", "value": "application/json" }, { "disabled": false, "description": { "content": "Seconds until the rate-limit window resets. Sent with the problem document.", "type": "text/plain" }, "key": "Retry-After", "value": "" } ], "body": "{\n \"data\": {\n \"key_0\": \"string\",\n \"key_1\": 8935,\n \"key_2\": 7067.274549044669,\n \"key_3\": 6605.237934272736\n },\n \"meta\": {\n \"httpStatusCode\": \"\",\n \"messages\": [\n \"\",\n \"\"\n ],\n \"errors\": [\n {\n \"code\": \"\",\n \"message\": \"\",\n \"retryable\": \"\",\n \"field\": \"\",\n \"details\": {\n \"key_0\": \"\",\n \"key_1\": \"\",\n \"key_2\": \"\",\n \"key_3\": \"\"\n }\n },\n {\n \"code\": \"\",\n \"message\": \"\",\n \"retryable\": \"\",\n \"field\": \"\",\n \"details\": {\n \"key_0\": \"\"\n }\n }\n ],\n \"creditsConsumed\": \"\"\n },\n \"hasErrors\": \"\"\n}", "cookie": [], "_postman_previewlanguage": "json" }, { "name": "Unexpected failure. `correlationId` identifies the request — quote it when\nyou contact support.", "originalRequest": { "url": { "path": [ "Document", "split" ], "host": [ "{{baseUrl}}" ], "query": [], "variable": [] }, "header": [ { "key": "Content-Type", "value": "multipart/form-data" }, { "key": "Accept", "value": "application/problem+json" }, { "description": { "content": "Added as a part of security scheme: bearer", "type": "text/plain" }, "key": "Authorization", "value": "Bearer " } ], "method": "POST", "body": { "mode": "formdata", "formdata": [ { "description": { "content": "(Required) ", "type": "text/plain" }, "key": "file", "type": "file" } ] } }, "status": "Internal Server Error", "code": 500, "header": [ { "key": "Content-Type", "value": "application/problem+json" } ], "body": "{\n \"type\": \"\",\n \"title\": \"\",\n \"status\": \"\",\n \"detail\": \"\",\n \"instance\": \"\",\n \"code\": \"\",\n \"correlationId\": \"\",\n \"retryable\": \"\",\n \"field\": \"\",\n \"errors\": [\n {\n \"code\": \"\",\n \"message\": \"\",\n \"field\": \"\",\n \"retryable\": \"\",\n \"details\": null\n },\n {\n \"code\": \"\",\n \"message\": \"\",\n \"field\": \"\",\n \"retryable\": \"\",\n \"details\": null\n }\n ]\n}", "cookie": [], "_postman_previewlanguage": "json" }, { "name": "Document processing could not complete because an upstream service or its\nadmission proof failed. The body is the service envelope. Read\n`meta.errors[].retryable` for the specific error; the HTTP status alone does\nnot mean the operation is safe to repeat.", "originalRequest": { "url": { "path": [ "Document", "split" ], "host": [ "{{baseUrl}}" ], "query": [], "variable": [] }, "header": [ { "key": "Content-Type", "value": "multipart/form-data" }, { "key": "Accept", "value": "application/json" }, { "description": { "content": "Added as a part of security scheme: bearer", "type": "text/plain" }, "key": "Authorization", "value": "Bearer " } ], "method": "POST", "body": { "mode": "formdata", "formdata": [ { "description": { "content": "(Required) ", "type": "text/plain" }, "key": "file", "type": "file" } ] } }, "status": "Bad Gateway", "code": 502, "header": [ { "key": "Content-Type", "value": "application/json" } ], "body": "{\n \"data\": {\n \"key_0\": \"string\",\n \"key_1\": 8935,\n \"key_2\": 7067.274549044669,\n \"key_3\": 6605.237934272736\n },\n \"meta\": {\n \"httpStatusCode\": \"\",\n \"messages\": [\n \"\",\n \"\"\n ],\n \"errors\": [\n {\n \"code\": \"\",\n \"message\": \"\",\n \"retryable\": \"\",\n \"field\": \"\",\n \"details\": {\n \"key_0\": \"\",\n \"key_1\": \"\",\n \"key_2\": \"\",\n \"key_3\": \"\"\n }\n },\n {\n \"code\": \"\",\n \"message\": \"\",\n \"retryable\": \"\",\n \"field\": \"\",\n \"details\": {\n \"key_0\": \"\"\n }\n }\n ],\n \"creditsConsumed\": \"\"\n },\n \"hasErrors\": \"\"\n}", "cookie": [], "_postman_previewlanguage": "json" }, { "name": "Document processing could not complete because an upstream service or its\nadmission proof failed. The body is the service envelope. Read\n`meta.errors[].retryable` for the specific error; the HTTP status alone does\nnot mean the operation is safe to repeat.", "originalRequest": { "url": { "path": [ "Document", "split" ], "host": [ "{{baseUrl}}" ], "query": [], "variable": [] }, "header": [ { "key": "Content-Type", "value": "multipart/form-data" }, { "key": "Accept", "value": "application/json" }, { "description": { "content": "Added as a part of security scheme: bearer", "type": "text/plain" }, "key": "Authorization", "value": "Bearer " } ], "method": "POST", "body": { "mode": "formdata", "formdata": [ { "description": { "content": "(Required) ", "type": "text/plain" }, "key": "file", "type": "file" } ] } }, "status": "Service Unavailable", "code": 503, "header": [ { "key": "Content-Type", "value": "application/json" } ], "body": "{\n \"data\": {\n \"key_0\": \"string\",\n \"key_1\": 8935,\n \"key_2\": 7067.274549044669,\n \"key_3\": 6605.237934272736\n },\n \"meta\": {\n \"httpStatusCode\": \"\",\n \"messages\": [\n \"\",\n \"\"\n ],\n \"errors\": [\n {\n \"code\": \"\",\n \"message\": \"\",\n \"retryable\": \"\",\n \"field\": \"\",\n \"details\": {\n \"key_0\": \"\",\n \"key_1\": \"\",\n \"key_2\": \"\",\n \"key_3\": \"\"\n }\n },\n {\n \"code\": \"\",\n \"message\": \"\",\n \"retryable\": \"\",\n \"field\": \"\",\n \"details\": {\n \"key_0\": \"\"\n }\n }\n ],\n \"creditsConsumed\": \"\"\n },\n \"hasErrors\": \"\"\n}", "cookie": [], "_postman_previewlanguage": "json" }, { "name": "Document processing could not complete because an upstream service or its\nadmission proof failed. The body is the service envelope. Read\n`meta.errors[].retryable` for the specific error; the HTTP status alone does\nnot mean the operation is safe to repeat.", "originalRequest": { "url": { "path": [ "Document", "split" ], "host": [ "{{baseUrl}}" ], "query": [], "variable": [] }, "header": [ { "key": "Content-Type", "value": "multipart/form-data" }, { "key": "Accept", "value": "application/json" }, { "description": { "content": "Added as a part of security scheme: bearer", "type": "text/plain" }, "key": "Authorization", "value": "Bearer " } ], "method": "POST", "body": { "mode": "formdata", "formdata": [ { "description": { "content": "(Required) ", "type": "text/plain" }, "key": "file", "type": "file" } ] } }, "status": "Gateway Timeout", "code": 504, "header": [ { "key": "Content-Type", "value": "application/json" } ], "body": "{\n \"data\": {\n \"key_0\": \"string\",\n \"key_1\": 8935,\n \"key_2\": 7067.274549044669,\n \"key_3\": 6605.237934272736\n },\n \"meta\": {\n \"httpStatusCode\": \"\",\n \"messages\": [\n \"\",\n \"\"\n ],\n \"errors\": [\n {\n \"code\": \"\",\n \"message\": \"\",\n \"retryable\": \"\",\n \"field\": \"\",\n \"details\": {\n \"key_0\": \"\",\n \"key_1\": \"\",\n \"key_2\": \"\",\n \"key_3\": \"\"\n }\n },\n {\n \"code\": \"\",\n \"message\": \"\",\n \"retryable\": \"\",\n \"field\": \"\",\n \"details\": {\n \"key_0\": \"\"\n }\n }\n ],\n \"creditsConsumed\": \"\"\n },\n \"hasErrors\": \"\"\n}", "cookie": [], "_postman_previewlanguage": "json" } ], "event": [], "protocolProfileBehavior": { "disableBodyPruning": true } } ] }, { "name": "facematch", "description": "", "item": [ { "name": "Match a selfie against identity documents", "request": { "name": "Match a selfie against identity documents", "description": {}, "url": { "path": [ "Document", "facematch" ], "host": [ "{{baseUrl}}" ], "query": [], "variable": [] }, "header": [ { "key": "Content-Type", "value": "multipart/form-data" }, { "key": "Accept", "value": "application/json" } ], "method": "POST", "body": { "mode": "formdata", "formdata": [ { "description": { "content": "(Required) The selfie to compare.", "type": "text/plain" }, "key": "selfie", "type": "file" }, { "description": { "content": "(Required) One or more identity documents to compare against.", "type": "text/plain" }, "key": "documents", "type": "file", "src": [] } ] }, "auth": null }, "response": [ { "name": "The service envelope. `data.metadata` is shaped by the template or operation\nthat ran, so its fields vary by document type. What does not vary is the shape of\neach field inside it — see `ExtractedField` for the value, confidence and source\ncoordinates every extracted field carries.", "originalRequest": { "url": { "path": [ "Document", "facematch" ], "host": [ "{{baseUrl}}" ], "query": [], "variable": [] }, "header": [ { "key": "Content-Type", "value": "multipart/form-data" }, { "key": "Accept", "value": "application/json" }, { "description": { "content": "Added as a part of security scheme: bearer", "type": "text/plain" }, "key": "Authorization", "value": "Bearer " } ], "method": "POST", "body": { "mode": "formdata", "formdata": [ { "description": { "content": "(Required) The selfie to compare.", "type": "text/plain" }, "key": "selfie", "type": "file" }, { "description": { "content": "(Required) One or more identity documents to compare against.", "type": "text/plain" }, "key": "documents", "value": ",", "type": "text" } ] } }, "status": "OK", "code": 200, "header": [ { "key": "Content-Type", "value": "application/json" } ], "body": "{\n \"data\": {\n \"id\": \"\",\n \"templateId\": \"\",\n \"metadata\": {\n \"key_0\": 9202.600389253348,\n \"key_1\": \"string\",\n \"key_2\": 2346.2733905762434,\n \"key_3\": 3504\n },\n \"createdDate\": \"\",\n \"results\": [\n {\n \"fileName\": \"\",\n \"documentType\": \"\",\n \"confidence\": \"\",\n \"pages\": \"\",\n \"templateId\": \"\",\n \"templateMetadata\": \"\"\n },\n {\n \"fileName\": \"\",\n \"documentType\": \"\",\n \"confidence\": \"\",\n \"pages\": \"\",\n \"templateId\": \"\",\n \"templateMetadata\": \"\"\n }\n ],\n \"documentType\": \"\",\n \"confidence\": \"\",\n \"fraudBlocked\": \"\",\n \"fraudRequestId\": \"\",\n \"quality\": {\n \"overall\": 2,\n \"findings\": [\n {\n \"probe\": \"\",\n \"level\": 1,\n \"measured\": \"\",\n \"threshold\": \"\",\n \"message\": \"\"\n },\n {\n \"probe\": \"\",\n \"level\": 2,\n \"measured\": \"\",\n \"threshold\": \"\",\n \"message\": \"\"\n }\n ]\n },\n \"imageUrls\": null,\n \"documents\": [\n {\n \"box2D\": [\n \"\",\n \"\"\n ],\n \"mask\": [\n [\n \"\",\n \"\"\n ],\n [\n \"\",\n \"\"\n ]\n ],\n \"side\": \"\",\n \"type\": \"\",\n \"confidence\": \"\",\n \"imageUrl\": \"\"\n },\n {\n \"box2D\": [\n \"\",\n \"\"\n ],\n \"mask\": [\n [\n \"\",\n \"\"\n ],\n [\n \"\",\n \"\"\n ]\n ],\n \"side\": \"\",\n \"type\": \"\",\n \"confidence\": \"\",\n \"imageUrl\": \"\"\n }\n ],\n \"compositeImageUrl\": \"\",\n \"requestId\": \"\",\n \"extractions\": [\n {\n \"sourceDocumentId\": \"\",\n \"hasFace\": \"\",\n \"documentType\": \"\",\n \"cropSignedUrl\": \"\"\n },\n {\n \"sourceDocumentId\": \"\",\n \"hasFace\": \"\",\n \"documentType\": \"\",\n \"cropSignedUrl\": \"\"\n }\n ],\n \"matches\": [\n {\n \"sourceDocumentId\": \"\",\n \"selfieDocumentId\": \"\",\n \"score\": \"\",\n \"matched\": \"\",\n \"tooManyFaces\": \"\"\n },\n {\n \"sourceDocumentId\": \"\",\n \"selfieDocumentId\": \"\",\n \"score\": \"\",\n \"matched\": \"\",\n \"tooManyFaces\": \"\"\n }\n ]\n },\n \"meta\": {\n \"httpStatusCode\": \"\",\n \"messages\": [\n \"\",\n \"\"\n ],\n \"errors\": [\n {\n \"code\": \"\",\n \"message\": \"\",\n \"retryable\": \"\",\n \"field\": \"\",\n \"details\": null\n },\n {\n \"code\": \"\",\n \"message\": \"\",\n \"retryable\": \"\",\n \"field\": \"\",\n \"details\": {\n \"key_0\": \"\",\n \"key_1\": \"\"\n }\n }\n ],\n \"creditsConsumed\": \"\"\n },\n \"hasErrors\": \"\"\n}", "cookie": [], "_postman_previewlanguage": "json" }, { "name": "The request is invalid. Refused before processing — malformed or unsafe — it\nis a problem document; refused by processing itself, such as a missing file,\nit is the service envelope with the reason in `meta.errors`.", "originalRequest": { "url": { "path": [ "Document", "facematch" ], "host": [ "{{baseUrl}}" ], "query": [], "variable": [] }, "header": [ { "key": "Content-Type", "value": "multipart/form-data" }, { "key": "Accept", "value": "application/problem+json" }, { "description": { "content": "Added as a part of security scheme: bearer", "type": "text/plain" }, "key": "Authorization", "value": "Bearer " } ], "method": "POST", "body": { "mode": "formdata", "formdata": [ { "description": { "content": "(Required) The selfie to compare.", "type": "text/plain" }, "key": "selfie", "type": "file" }, { "description": { "content": "(Required) One or more identity documents to compare against.", "type": "text/plain" }, "key": "documents", "value": ",", "type": "text" } ] } }, "status": "Bad Request", "code": 400, "header": [ { "key": "Content-Type", "value": "application/json" } ], "body": "{\n \"data\": {\n \"key_0\": \"string\",\n \"key_1\": 8935,\n \"key_2\": 7067.274549044669,\n \"key_3\": 6605.237934272736\n },\n \"meta\": {\n \"httpStatusCode\": \"\",\n \"messages\": [\n \"\",\n \"\"\n ],\n \"errors\": [\n {\n \"code\": \"\",\n \"message\": \"\",\n \"retryable\": \"\",\n \"field\": \"\",\n \"details\": {\n \"key_0\": \"\",\n \"key_1\": \"\",\n \"key_2\": \"\",\n \"key_3\": \"\"\n }\n },\n {\n \"code\": \"\",\n \"message\": \"\",\n \"retryable\": \"\",\n \"field\": \"\",\n \"details\": {\n \"key_0\": \"\"\n }\n }\n ],\n \"creditsConsumed\": \"\"\n },\n \"hasErrors\": \"\"\n}", "cookie": [], "_postman_previewlanguage": "json" }, { "name": "Missing or invalid API key. Both `xtkt_live_` (production) and `xtkt_test_`\n(sandbox) prefixes are accepted, but the key must also be valid and active.", "originalRequest": { "url": { "path": [ "Document", "facematch" ], "host": [ "{{baseUrl}}" ], "query": [], "variable": [] }, "header": [ { "key": "Content-Type", "value": "multipart/form-data" }, { "key": "Accept", "value": "application/problem+json" }, { "description": { "content": "Added as a part of security scheme: bearer", "type": "text/plain" }, "key": "Authorization", "value": "Bearer " } ], "method": "POST", "body": { "mode": "formdata", "formdata": [ { "description": { "content": "(Required) The selfie to compare.", "type": "text/plain" }, "key": "selfie", "type": "file" }, { "description": { "content": "(Required) One or more identity documents to compare against.", "type": "text/plain" }, "key": "documents", "value": ",", "type": "text" } ] } }, "status": "Unauthorized", "code": 401, "header": [ { "key": "Content-Type", "value": "application/problem+json" } ], "body": "{\n \"type\": \"\",\n \"title\": \"\",\n \"status\": \"\",\n \"detail\": \"\",\n \"instance\": \"\",\n \"code\": \"\",\n \"correlationId\": \"\",\n \"retryable\": \"\",\n \"field\": \"\",\n \"errors\": [\n {\n \"code\": \"\",\n \"message\": \"\",\n \"field\": \"\",\n \"retryable\": \"\",\n \"details\": null\n },\n {\n \"code\": \"\",\n \"message\": \"\",\n \"field\": \"\",\n \"retryable\": \"\",\n \"details\": null\n }\n ]\n}", "cookie": [], "_postman_previewlanguage": "json" }, { "name": "The key is valid but not allowed to make this request. A sandbox key\n(`xtkt_test_`) is refused with `code` `environment.sandbox_route_unavailable`\non every route outside the sandbox set, and on `POST /api/v1/document-jobs`\nfor an unsupported operation or any `templateId`. See **Sandbox** in the\nAPI description.", "originalRequest": { "url": { "path": [ "Document", "facematch" ], "host": [ "{{baseUrl}}" ], "query": [], "variable": [] }, "header": [ { "key": "Content-Type", "value": "multipart/form-data" }, { "key": "Accept", "value": "application/problem+json" }, { "description": { "content": "Added as a part of security scheme: bearer", "type": "text/plain" }, "key": "Authorization", "value": "Bearer " } ], "method": "POST", "body": { "mode": "formdata", "formdata": [ { "description": { "content": "(Required) The selfie to compare.", "type": "text/plain" }, "key": "selfie", "type": "file" }, { "description": { "content": "(Required) One or more identity documents to compare against.", "type": "text/plain" }, "key": "documents", "value": ",", "type": "text" } ] } }, "status": "Forbidden", "code": 403, "header": [ { "key": "Content-Type", "value": "application/problem+json" } ], "body": "{\n \"type\": \"\",\n \"title\": \"\",\n \"status\": \"\",\n \"detail\": \"\",\n \"instance\": \"\",\n \"code\": \"\",\n \"correlationId\": \"\",\n \"retryable\": \"\",\n \"field\": \"\",\n \"errors\": [\n {\n \"code\": \"\",\n \"message\": \"\",\n \"field\": \"\",\n \"retryable\": \"\",\n \"details\": null\n },\n {\n \"code\": \"\",\n \"message\": \"\",\n \"field\": \"\",\n \"retryable\": \"\",\n \"details\": null\n }\n ]\n}", "cookie": [], "_postman_previewlanguage": "json" }, { "name": "Nothing answers at this address for this tenant.", "originalRequest": { "url": { "path": [ "Document", "facematch" ], "host": [ "{{baseUrl}}" ], "query": [], "variable": [] }, "header": [ { "key": "Content-Type", "value": "multipart/form-data" }, { "key": "Accept", "value": "application/problem+json" }, { "description": { "content": "Added as a part of security scheme: bearer", "type": "text/plain" }, "key": "Authorization", "value": "Bearer " } ], "method": "POST", "body": { "mode": "formdata", "formdata": [ { "description": { "content": "(Required) The selfie to compare.", "type": "text/plain" }, "key": "selfie", "type": "file" }, { "description": { "content": "(Required) One or more identity documents to compare against.", "type": "text/plain" }, "key": "documents", "value": ",", "type": "text" } ] } }, "status": "Not Found", "code": 404, "header": [ { "key": "Content-Type", "value": "application/problem+json" } ], "body": "{\n \"type\": \"\",\n \"title\": \"\",\n \"status\": \"\",\n \"detail\": \"\",\n \"instance\": \"\",\n \"code\": \"\",\n \"correlationId\": \"\",\n \"retryable\": \"\",\n \"field\": \"\",\n \"errors\": [\n {\n \"code\": \"\",\n \"message\": \"\",\n \"field\": \"\",\n \"retryable\": \"\",\n \"details\": null\n },\n {\n \"code\": \"\",\n \"message\": \"\",\n \"field\": \"\",\n \"retryable\": \"\",\n \"details\": null\n }\n ]\n}", "cookie": [], "_postman_previewlanguage": "json" }, { "name": "The request conflicts with the current state of what it acts on.", "originalRequest": { "url": { "path": [ "Document", "facematch" ], "host": [ "{{baseUrl}}" ], "query": [], "variable": [] }, "header": [ { "key": "Content-Type", "value": "multipart/form-data" }, { "key": "Accept", "value": "application/problem+json" }, { "description": { "content": "Added as a part of security scheme: bearer", "type": "text/plain" }, "key": "Authorization", "value": "Bearer " } ], "method": "POST", "body": { "mode": "formdata", "formdata": [ { "description": { "content": "(Required) The selfie to compare.", "type": "text/plain" }, "key": "selfie", "type": "file" }, { "description": { "content": "(Required) One or more identity documents to compare against.", "type": "text/plain" }, "key": "documents", "value": ",", "type": "text" } ] } }, "status": "Conflict", "code": 409, "header": [ { "key": "Content-Type", "value": "application/problem+json" } ], "body": "{\n \"type\": \"\",\n \"title\": \"\",\n \"status\": \"\",\n \"detail\": \"\",\n \"instance\": \"\",\n \"code\": \"\",\n \"correlationId\": \"\",\n \"retryable\": \"\",\n \"field\": \"\",\n \"errors\": [\n {\n \"code\": \"\",\n \"message\": \"\",\n \"field\": \"\",\n \"retryable\": \"\",\n \"details\": null\n },\n {\n \"code\": \"\",\n \"message\": \"\",\n \"field\": \"\",\n \"retryable\": \"\",\n \"details\": null\n }\n ]\n}", "cookie": [], "_postman_previewlanguage": "json" }, { "name": "Over the size limit — 10 MB, or 32 MB on `/Document/split`.", "originalRequest": { "url": { "path": [ "Document", "facematch" ], "host": [ "{{baseUrl}}" ], "query": [], "variable": [] }, "header": [ { "key": "Content-Type", "value": "multipart/form-data" }, { "description": { "content": "Added as a part of security scheme: bearer", "type": "text/plain" }, "key": "Authorization", "value": "Bearer " } ], "method": "POST", "body": { "mode": "formdata", "formdata": [ { "description": { "content": "(Required) The selfie to compare.", "type": "text/plain" }, "key": "selfie", "type": "file" }, { "description": { "content": "(Required) One or more identity documents to compare against.", "type": "text/plain" }, "key": "documents", "value": ",", "type": "text" } ] } }, "status": "Request Entity Too Large", "code": 413, "header": [], "cookie": [], "_postman_previewlanguage": "text" }, { "name": "The file's type is not accepted. The body is the service envelope\n(`ServiceErrorEnvelope`); read `meta.errors[].code`. None of these is retryable\nas is — fix the upload first.\n\n- `ADMISSION_UNSUPPORTED_MEDIA_TYPE` — the file part carried no usable\n `Content-Type` (none at all, or a generic `application/octet-stream`) and the\n type could not be determined from the file's content or its name either.\n Send the part with its MIME type, for example `application/pdf`, `image/png`\n or `image/jpeg`. Some multipart clients leave it out unless you set it —\n Python `requests` with a bare `open()`, for one.\n- `document.unsupported_media_type` — the file's extension or content is outside\n the accepted types listed under **Uploads**.\n- `ADMISSION_TYPE_REJECTED` — the file's content was refused as a document type.", "originalRequest": { "url": { "path": [ "Document", "facematch" ], "host": [ "{{baseUrl}}" ], "query": [], "variable": [] }, "header": [ { "key": "Content-Type", "value": "multipart/form-data" }, { "description": { "content": "Added as a part of security scheme: bearer", "type": "text/plain" }, "key": "Authorization", "value": "Bearer " } ], "method": "POST", "body": { "mode": "formdata", "formdata": [ { "description": { "content": "(Required) The selfie to compare.", "type": "text/plain" }, "key": "selfie", "type": "file" }, { "description": { "content": "(Required) One or more identity documents to compare against.", "type": "text/plain" }, "key": "documents", "value": ",", "type": "text" } ] } }, "status": "Unsupported Media Type", "code": 415, "header": [], "cookie": [], "_postman_previewlanguage": "text" }, { "name": "Over 50 requests in the current 1-minute window for this key, answered as a\nproblem document; or the document admission quota is exhausted, answered as\nthe service envelope with `ADMISSION_QUOTA_EXCEEDED`. Both are retryable.", "originalRequest": { "url": { "path": [ "Document", "facematch" ], "host": [ "{{baseUrl}}" ], "query": [], "variable": [] }, "header": [ { "key": "Content-Type", "value": "multipart/form-data" }, { "key": "Accept", "value": "application/problem+json" }, { "description": { "content": "Added as a part of security scheme: bearer", "type": "text/plain" }, "key": "Authorization", "value": "Bearer " } ], "method": "POST", "body": { "mode": "formdata", "formdata": [ { "description": { "content": "(Required) The selfie to compare.", "type": "text/plain" }, "key": "selfie", "type": "file" }, { "description": { "content": "(Required) One or more identity documents to compare against.", "type": "text/plain" }, "key": "documents", "value": ",", "type": "text" } ] } }, "status": "Too Many Requests", "code": 429, "header": [ { "key": "Content-Type", "value": "application/json" }, { "disabled": false, "description": { "content": "Seconds until the rate-limit window resets. Sent with the problem document.", "type": "text/plain" }, "key": "Retry-After", "value": "" } ], "body": "{\n \"data\": {\n \"key_0\": \"string\",\n \"key_1\": 8935,\n \"key_2\": 7067.274549044669,\n \"key_3\": 6605.237934272736\n },\n \"meta\": {\n \"httpStatusCode\": \"\",\n \"messages\": [\n \"\",\n \"\"\n ],\n \"errors\": [\n {\n \"code\": \"\",\n \"message\": \"\",\n \"retryable\": \"\",\n \"field\": \"\",\n \"details\": {\n \"key_0\": \"\",\n \"key_1\": \"\",\n \"key_2\": \"\",\n \"key_3\": \"\"\n }\n },\n {\n \"code\": \"\",\n \"message\": \"\",\n \"retryable\": \"\",\n \"field\": \"\",\n \"details\": {\n \"key_0\": \"\"\n }\n }\n ],\n \"creditsConsumed\": \"\"\n },\n \"hasErrors\": \"\"\n}", "cookie": [], "_postman_previewlanguage": "json" }, { "name": "Unexpected failure. `correlationId` identifies the request — quote it when\nyou contact support.", "originalRequest": { "url": { "path": [ "Document", "facematch" ], "host": [ "{{baseUrl}}" ], "query": [], "variable": [] }, "header": [ { "key": "Content-Type", "value": "multipart/form-data" }, { "key": "Accept", "value": "application/problem+json" }, { "description": { "content": "Added as a part of security scheme: bearer", "type": "text/plain" }, "key": "Authorization", "value": "Bearer " } ], "method": "POST", "body": { "mode": "formdata", "formdata": [ { "description": { "content": "(Required) The selfie to compare.", "type": "text/plain" }, "key": "selfie", "type": "file" }, { "description": { "content": "(Required) One or more identity documents to compare against.", "type": "text/plain" }, "key": "documents", "value": ",", "type": "text" } ] } }, "status": "Internal Server Error", "code": 500, "header": [ { "key": "Content-Type", "value": "application/problem+json" } ], "body": "{\n \"type\": \"\",\n \"title\": \"\",\n \"status\": \"\",\n \"detail\": \"\",\n \"instance\": \"\",\n \"code\": \"\",\n \"correlationId\": \"\",\n \"retryable\": \"\",\n \"field\": \"\",\n \"errors\": [\n {\n \"code\": \"\",\n \"message\": \"\",\n \"field\": \"\",\n \"retryable\": \"\",\n \"details\": null\n },\n {\n \"code\": \"\",\n \"message\": \"\",\n \"field\": \"\",\n \"retryable\": \"\",\n \"details\": null\n }\n ]\n}", "cookie": [], "_postman_previewlanguage": "json" }, { "name": "Document processing could not complete because an upstream service or its\nadmission proof failed. The body is the service envelope. Read\n`meta.errors[].retryable` for the specific error; the HTTP status alone does\nnot mean the operation is safe to repeat.", "originalRequest": { "url": { "path": [ "Document", "facematch" ], "host": [ "{{baseUrl}}" ], "query": [], "variable": [] }, "header": [ { "key": "Content-Type", "value": "multipart/form-data" }, { "key": "Accept", "value": "application/json" }, { "description": { "content": "Added as a part of security scheme: bearer", "type": "text/plain" }, "key": "Authorization", "value": "Bearer " } ], "method": "POST", "body": { "mode": "formdata", "formdata": [ { "description": { "content": "(Required) The selfie to compare.", "type": "text/plain" }, "key": "selfie", "type": "file" }, { "description": { "content": "(Required) One or more identity documents to compare against.", "type": "text/plain" }, "key": "documents", "value": ",", "type": "text" } ] } }, "status": "Bad Gateway", "code": 502, "header": [ { "key": "Content-Type", "value": "application/json" } ], "body": "{\n \"data\": {\n \"key_0\": \"string\",\n \"key_1\": 8935,\n \"key_2\": 7067.274549044669,\n \"key_3\": 6605.237934272736\n },\n \"meta\": {\n \"httpStatusCode\": \"\",\n \"messages\": [\n \"\",\n \"\"\n ],\n \"errors\": [\n {\n \"code\": \"\",\n \"message\": \"\",\n \"retryable\": \"\",\n \"field\": \"\",\n \"details\": {\n \"key_0\": \"\",\n \"key_1\": \"\",\n \"key_2\": \"\",\n \"key_3\": \"\"\n }\n },\n {\n \"code\": \"\",\n \"message\": \"\",\n \"retryable\": \"\",\n \"field\": \"\",\n \"details\": {\n \"key_0\": \"\"\n }\n }\n ],\n \"creditsConsumed\": \"\"\n },\n \"hasErrors\": \"\"\n}", "cookie": [], "_postman_previewlanguage": "json" }, { "name": "Document processing could not complete because an upstream service or its\nadmission proof failed. The body is the service envelope. Read\n`meta.errors[].retryable` for the specific error; the HTTP status alone does\nnot mean the operation is safe to repeat.", "originalRequest": { "url": { "path": [ "Document", "facematch" ], "host": [ "{{baseUrl}}" ], "query": [], "variable": [] }, "header": [ { "key": "Content-Type", "value": "multipart/form-data" }, { "key": "Accept", "value": "application/json" }, { "description": { "content": "Added as a part of security scheme: bearer", "type": "text/plain" }, "key": "Authorization", "value": "Bearer " } ], "method": "POST", "body": { "mode": "formdata", "formdata": [ { "description": { "content": "(Required) The selfie to compare.", "type": "text/plain" }, "key": "selfie", "type": "file" }, { "description": { "content": "(Required) One or more identity documents to compare against.", "type": "text/plain" }, "key": "documents", "value": ",", "type": "text" } ] } }, "status": "Service Unavailable", "code": 503, "header": [ { "key": "Content-Type", "value": "application/json" } ], "body": "{\n \"data\": {\n \"key_0\": \"string\",\n \"key_1\": 8935,\n \"key_2\": 7067.274549044669,\n \"key_3\": 6605.237934272736\n },\n \"meta\": {\n \"httpStatusCode\": \"\",\n \"messages\": [\n \"\",\n \"\"\n ],\n \"errors\": [\n {\n \"code\": \"\",\n \"message\": \"\",\n \"retryable\": \"\",\n \"field\": \"\",\n \"details\": {\n \"key_0\": \"\",\n \"key_1\": \"\",\n \"key_2\": \"\",\n \"key_3\": \"\"\n }\n },\n {\n \"code\": \"\",\n \"message\": \"\",\n \"retryable\": \"\",\n \"field\": \"\",\n \"details\": {\n \"key_0\": \"\"\n }\n }\n ],\n \"creditsConsumed\": \"\"\n },\n \"hasErrors\": \"\"\n}", "cookie": [], "_postman_previewlanguage": "json" }, { "name": "Document processing could not complete because an upstream service or its\nadmission proof failed. The body is the service envelope. Read\n`meta.errors[].retryable` for the specific error; the HTTP status alone does\nnot mean the operation is safe to repeat.", "originalRequest": { "url": { "path": [ "Document", "facematch" ], "host": [ "{{baseUrl}}" ], "query": [], "variable": [] }, "header": [ { "key": "Content-Type", "value": "multipart/form-data" }, { "key": "Accept", "value": "application/json" }, { "description": { "content": "Added as a part of security scheme: bearer", "type": "text/plain" }, "key": "Authorization", "value": "Bearer " } ], "method": "POST", "body": { "mode": "formdata", "formdata": [ { "description": { "content": "(Required) The selfie to compare.", "type": "text/plain" }, "key": "selfie", "type": "file" }, { "description": { "content": "(Required) One or more identity documents to compare against.", "type": "text/plain" }, "key": "documents", "value": ",", "type": "text" } ] } }, "status": "Gateway Timeout", "code": 504, "header": [ { "key": "Content-Type", "value": "application/json" } ], "body": "{\n \"data\": {\n \"key_0\": \"string\",\n \"key_1\": 8935,\n \"key_2\": 7067.274549044669,\n \"key_3\": 6605.237934272736\n },\n \"meta\": {\n \"httpStatusCode\": \"\",\n \"messages\": [\n \"\",\n \"\"\n ],\n \"errors\": [\n {\n \"code\": \"\",\n \"message\": \"\",\n \"retryable\": \"\",\n \"field\": \"\",\n \"details\": {\n \"key_0\": \"\",\n \"key_1\": \"\",\n \"key_2\": \"\",\n \"key_3\": \"\"\n }\n },\n {\n \"code\": \"\",\n \"message\": \"\",\n \"retryable\": \"\",\n \"field\": \"\",\n \"details\": {\n \"key_0\": \"\"\n }\n }\n ],\n \"creditsConsumed\": \"\"\n },\n \"hasErrors\": \"\"\n}", "cookie": [], "_postman_previewlanguage": "json" } ], "event": [], "protocolProfileBehavior": { "disableBodyPruning": true } } ] } ] }, { "name": "api", "description": "", "item": [ { "name": "v1", "description": "", "item": [ { "name": "artifacts", "description": "", "item": [ { "name": "Upload the input document of an asynchronous job", "request": { "name": "Upload the input document of an asynchronous job", "description": { "content": "Stores a document and returns the `artifact://` reference to submit it with.\nThis is the only way to obtain one — the asynchronous job endpoints take a\nreference, never a file.\n\nThe document is scanned and normalized before it is stored, exactly as the\nsynchronous `/Document/*` endpoints do. Images are stored as uploaded, so\n`Crop` and `Facematch` still see the original pixels; everything else is\nstored in its canonical form, which is what the job will read.\n\nThe reference is reusable and expires after 7 days — see **Artifact\nreferences** above.\n", "type": "text/plain" }, "url": { "path": [ "api", "v1", "artifacts" ], "host": [ "{{baseUrl}}" ], "query": [], "variable": [] }, "header": [ { "key": "Content-Type", "value": "multipart/form-data" }, { "key": "Accept", "value": "application/json" } ], "method": "POST", "body": { "mode": "formdata", "formdata": [ { "description": { "content": "(Required) The document a job will consume. Same accepted extensions and the\nsame 10 MB limit as the synchronous endpoints.\n", "type": "text/plain" }, "key": "file", "type": "file" } ] }, "auth": null }, "response": [ { "name": "Stored.", "originalRequest": { "url": { "path": [ "api", "v1", "artifacts" ], "host": [ "{{baseUrl}}" ], "query": [], "variable": [] }, "header": [ { "key": "Content-Type", "value": "multipart/form-data" }, { "key": "Accept", "value": "application/json" }, { "description": { "content": "Added as a part of security scheme: bearer", "type": "text/plain" }, "key": "Authorization", "value": "Bearer " } ], "method": "POST", "body": { "mode": "formdata", "formdata": [ { "description": { "content": "(Required) The document a job will consume. Same accepted extensions and the\nsame 10 MB limit as the synchronous endpoints.\n", "type": "text/plain" }, "key": "file", "type": "file" } ] } }, "status": "Created", "code": 201, "header": [ { "key": "Content-Type", "value": "application/json" } ], "body": "{\n \"data\": {\n \"reference\": \"artifact://93\",\n \"fileName\": \"\",\n \"contentType\": \"\",\n \"sizeBytes\": \"\",\n \"expiresAt\": \"\"\n },\n \"meta\": {\n \"httpStatusCode\": \"\",\n \"messages\": [\n \"\",\n \"\"\n ],\n \"errors\": [\n {\n \"code\": \"\",\n \"message\": \"\",\n \"retryable\": \"\",\n \"field\": \"\",\n \"details\": {\n \"key_0\": \"\"\n }\n },\n {\n \"code\": \"\",\n \"message\": \"\",\n \"retryable\": \"\",\n \"field\": \"\",\n \"details\": {\n \"key_0\": \"\"\n }\n }\n ],\n \"creditsConsumed\": \"\"\n },\n \"hasErrors\": \"\"\n}", "cookie": [], "_postman_previewlanguage": "json" }, { "name": "The request is invalid. Refused before processing — malformed or unsafe — it\nis a problem document; refused by processing itself, such as a missing file,\nit is the service envelope with the reason in `meta.errors`.", "originalRequest": { "url": { "path": [ "api", "v1", "artifacts" ], "host": [ "{{baseUrl}}" ], "query": [], "variable": [] }, "header": [ { "key": "Content-Type", "value": "multipart/form-data" }, { "key": "Accept", "value": "application/problem+json" }, { "description": { "content": "Added as a part of security scheme: bearer", "type": "text/plain" }, "key": "Authorization", "value": "Bearer " } ], "method": "POST", "body": { "mode": "formdata", "formdata": [ { "description": { "content": "(Required) The document a job will consume. Same accepted extensions and the\nsame 10 MB limit as the synchronous endpoints.\n", "type": "text/plain" }, "key": "file", "type": "file" } ] } }, "status": "Bad Request", "code": 400, "header": [ { "key": "Content-Type", "value": "application/json" } ], "body": "{\n \"data\": {\n \"key_0\": \"string\",\n \"key_1\": 8935,\n \"key_2\": 7067.274549044669,\n \"key_3\": 6605.237934272736\n },\n \"meta\": {\n \"httpStatusCode\": \"\",\n \"messages\": [\n \"\",\n \"\"\n ],\n \"errors\": [\n {\n \"code\": \"\",\n \"message\": \"\",\n \"retryable\": \"\",\n \"field\": \"\",\n \"details\": {\n \"key_0\": \"\",\n \"key_1\": \"\",\n \"key_2\": \"\",\n \"key_3\": \"\"\n }\n },\n {\n \"code\": \"\",\n \"message\": \"\",\n \"retryable\": \"\",\n \"field\": \"\",\n \"details\": {\n \"key_0\": \"\"\n }\n }\n ],\n \"creditsConsumed\": \"\"\n },\n \"hasErrors\": \"\"\n}", "cookie": [], "_postman_previewlanguage": "json" }, { "name": "Missing or invalid API key. Both `xtkt_live_` (production) and `xtkt_test_`\n(sandbox) prefixes are accepted, but the key must also be valid and active.", "originalRequest": { "url": { "path": [ "api", "v1", "artifacts" ], "host": [ "{{baseUrl}}" ], "query": [], "variable": [] }, "header": [ { "key": "Content-Type", "value": "multipart/form-data" }, { "key": "Accept", "value": "application/problem+json" }, { "description": { "content": "Added as a part of security scheme: bearer", "type": "text/plain" }, "key": "Authorization", "value": "Bearer " } ], "method": "POST", "body": { "mode": "formdata", "formdata": [ { "description": { "content": "(Required) The document a job will consume. Same accepted extensions and the\nsame 10 MB limit as the synchronous endpoints.\n", "type": "text/plain" }, "key": "file", "type": "file" } ] } }, "status": "Unauthorized", "code": 401, "header": [ { "key": "Content-Type", "value": "application/problem+json" } ], "body": "{\n \"type\": \"\",\n \"title\": \"\",\n \"status\": \"\",\n \"detail\": \"\",\n \"instance\": \"\",\n \"code\": \"\",\n \"correlationId\": \"\",\n \"retryable\": \"\",\n \"field\": \"\",\n \"errors\": [\n {\n \"code\": \"\",\n \"message\": \"\",\n \"field\": \"\",\n \"retryable\": \"\",\n \"details\": null\n },\n {\n \"code\": \"\",\n \"message\": \"\",\n \"field\": \"\",\n \"retryable\": \"\",\n \"details\": null\n }\n ]\n}", "cookie": [], "_postman_previewlanguage": "json" }, { "name": "The key is valid but not allowed to make this request. A sandbox key\n(`xtkt_test_`) is refused with `code` `environment.sandbox_route_unavailable`\non every route outside the sandbox set, and on `POST /api/v1/document-jobs`\nfor an unsupported operation or any `templateId`. See **Sandbox** in the\nAPI description.", "originalRequest": { "url": { "path": [ "api", "v1", "artifacts" ], "host": [ "{{baseUrl}}" ], "query": [], "variable": [] }, "header": [ { "key": "Content-Type", "value": "multipart/form-data" }, { "key": "Accept", "value": "application/problem+json" }, { "description": { "content": "Added as a part of security scheme: bearer", "type": "text/plain" }, "key": "Authorization", "value": "Bearer " } ], "method": "POST", "body": { "mode": "formdata", "formdata": [ { "description": { "content": "(Required) The document a job will consume. Same accepted extensions and the\nsame 10 MB limit as the synchronous endpoints.\n", "type": "text/plain" }, "key": "file", "type": "file" } ] } }, "status": "Forbidden", "code": 403, "header": [ { "key": "Content-Type", "value": "application/problem+json" } ], "body": "{\n \"type\": \"\",\n \"title\": \"\",\n \"status\": \"\",\n \"detail\": \"\",\n \"instance\": \"\",\n \"code\": \"\",\n \"correlationId\": \"\",\n \"retryable\": \"\",\n \"field\": \"\",\n \"errors\": [\n {\n \"code\": \"\",\n \"message\": \"\",\n \"field\": \"\",\n \"retryable\": \"\",\n \"details\": null\n },\n {\n \"code\": \"\",\n \"message\": \"\",\n \"field\": \"\",\n \"retryable\": \"\",\n \"details\": null\n }\n ]\n}", "cookie": [], "_postman_previewlanguage": "json" }, { "name": "Nothing answers at this address for this tenant.", "originalRequest": { "url": { "path": [ "api", "v1", "artifacts" ], "host": [ "{{baseUrl}}" ], "query": [], "variable": [] }, "header": [ { "key": "Content-Type", "value": "multipart/form-data" }, { "key": "Accept", "value": "application/problem+json" }, { "description": { "content": "Added as a part of security scheme: bearer", "type": "text/plain" }, "key": "Authorization", "value": "Bearer " } ], "method": "POST", "body": { "mode": "formdata", "formdata": [ { "description": { "content": "(Required) The document a job will consume. Same accepted extensions and the\nsame 10 MB limit as the synchronous endpoints.\n", "type": "text/plain" }, "key": "file", "type": "file" } ] } }, "status": "Not Found", "code": 404, "header": [ { "key": "Content-Type", "value": "application/problem+json" } ], "body": "{\n \"type\": \"\",\n \"title\": \"\",\n \"status\": \"\",\n \"detail\": \"\",\n \"instance\": \"\",\n \"code\": \"\",\n \"correlationId\": \"\",\n \"retryable\": \"\",\n \"field\": \"\",\n \"errors\": [\n {\n \"code\": \"\",\n \"message\": \"\",\n \"field\": \"\",\n \"retryable\": \"\",\n \"details\": null\n },\n {\n \"code\": \"\",\n \"message\": \"\",\n \"field\": \"\",\n \"retryable\": \"\",\n \"details\": null\n }\n ]\n}", "cookie": [], "_postman_previewlanguage": "json" }, { "name": "The request conflicts with the current state of what it acts on.", "originalRequest": { "url": { "path": [ "api", "v1", "artifacts" ], "host": [ "{{baseUrl}}" ], "query": [], "variable": [] }, "header": [ { "key": "Content-Type", "value": "multipart/form-data" }, { "key": "Accept", "value": "application/problem+json" }, { "description": { "content": "Added as a part of security scheme: bearer", "type": "text/plain" }, "key": "Authorization", "value": "Bearer " } ], "method": "POST", "body": { "mode": "formdata", "formdata": [ { "description": { "content": "(Required) The document a job will consume. Same accepted extensions and the\nsame 10 MB limit as the synchronous endpoints.\n", "type": "text/plain" }, "key": "file", "type": "file" } ] } }, "status": "Conflict", "code": 409, "header": [ { "key": "Content-Type", "value": "application/problem+json" } ], "body": "{\n \"type\": \"\",\n \"title\": \"\",\n \"status\": \"\",\n \"detail\": \"\",\n \"instance\": \"\",\n \"code\": \"\",\n \"correlationId\": \"\",\n \"retryable\": \"\",\n \"field\": \"\",\n \"errors\": [\n {\n \"code\": \"\",\n \"message\": \"\",\n \"field\": \"\",\n \"retryable\": \"\",\n \"details\": null\n },\n {\n \"code\": \"\",\n \"message\": \"\",\n \"field\": \"\",\n \"retryable\": \"\",\n \"details\": null\n }\n ]\n}", "cookie": [], "_postman_previewlanguage": "json" }, { "name": "Over the size limit — 10 MB, or 32 MB on `/Document/split`.", "originalRequest": { "url": { "path": [ "api", "v1", "artifacts" ], "host": [ "{{baseUrl}}" ], "query": [], "variable": [] }, "header": [ { "key": "Content-Type", "value": "multipart/form-data" }, { "description": { "content": "Added as a part of security scheme: bearer", "type": "text/plain" }, "key": "Authorization", "value": "Bearer " } ], "method": "POST", "body": { "mode": "formdata", "formdata": [ { "description": { "content": "(Required) The document a job will consume. Same accepted extensions and the\nsame 10 MB limit as the synchronous endpoints.\n", "type": "text/plain" }, "key": "file", "type": "file" } ] } }, "status": "Request Entity Too Large", "code": 413, "header": [], "cookie": [], "_postman_previewlanguage": "text" }, { "name": "The file's type is not accepted. The body is the service envelope\n(`ServiceErrorEnvelope`); read `meta.errors[].code`. None of these is retryable\nas is — fix the upload first.\n\n- `ADMISSION_UNSUPPORTED_MEDIA_TYPE` — the file part carried no usable\n `Content-Type` (none at all, or a generic `application/octet-stream`) and the\n type could not be determined from the file's content or its name either.\n Send the part with its MIME type, for example `application/pdf`, `image/png`\n or `image/jpeg`. Some multipart clients leave it out unless you set it —\n Python `requests` with a bare `open()`, for one.\n- `document.unsupported_media_type` — the file's extension or content is outside\n the accepted types listed under **Uploads**.\n- `ADMISSION_TYPE_REJECTED` — the file's content was refused as a document type.", "originalRequest": { "url": { "path": [ "api", "v1", "artifacts" ], "host": [ "{{baseUrl}}" ], "query": [], "variable": [] }, "header": [ { "key": "Content-Type", "value": "multipart/form-data" }, { "description": { "content": "Added as a part of security scheme: bearer", "type": "text/plain" }, "key": "Authorization", "value": "Bearer " } ], "method": "POST", "body": { "mode": "formdata", "formdata": [ { "description": { "content": "(Required) The document a job will consume. Same accepted extensions and the\nsame 10 MB limit as the synchronous endpoints.\n", "type": "text/plain" }, "key": "file", "type": "file" } ] } }, "status": "Unsupported Media Type", "code": 415, "header": [], "cookie": [], "_postman_previewlanguage": "text" }, { "name": "The document was rejected by the security policy, or could not be\nconverted safely. The `code` says which.", "originalRequest": { "url": { "path": [ "api", "v1", "artifacts" ], "host": [ "{{baseUrl}}" ], "query": [], "variable": [] }, "header": [ { "key": "Content-Type", "value": "multipart/form-data" }, { "key": "Accept", "value": "application/json" }, { "description": { "content": "Added as a part of security scheme: bearer", "type": "text/plain" }, "key": "Authorization", "value": "Bearer " } ], "method": "POST", "body": { "mode": "formdata", "formdata": [ { "description": { "content": "(Required) The document a job will consume. Same accepted extensions and the\nsame 10 MB limit as the synchronous endpoints.\n", "type": "text/plain" }, "key": "file", "type": "file" } ] } }, "status": "Unprocessable Entity (WebDAV) (RFC 4918)", "code": 422, "header": [ { "key": "Content-Type", "value": "application/json" } ], "body": "{\n \"data\": {\n \"key_0\": \"string\",\n \"key_1\": 8935,\n \"key_2\": 7067.274549044669,\n \"key_3\": 6605.237934272736\n },\n \"meta\": {\n \"httpStatusCode\": \"\",\n \"messages\": [\n \"\",\n \"\"\n ],\n \"errors\": [\n {\n \"code\": \"\",\n \"message\": \"\",\n \"retryable\": \"\",\n \"field\": \"\",\n \"details\": {\n \"key_0\": \"\",\n \"key_1\": \"\",\n \"key_2\": \"\",\n \"key_3\": \"\"\n }\n },\n {\n \"code\": \"\",\n \"message\": \"\",\n \"retryable\": \"\",\n \"field\": \"\",\n \"details\": {\n \"key_0\": \"\"\n }\n }\n ],\n \"creditsConsumed\": \"\"\n },\n \"hasErrors\": \"\"\n}", "cookie": [], "_postman_previewlanguage": "json" }, { "name": "Over 50 requests in the current 1-minute window for this key, answered as a\nproblem document; or the document admission quota is exhausted, answered as\nthe service envelope with `ADMISSION_QUOTA_EXCEEDED`. Both are retryable.", "originalRequest": { "url": { "path": [ "api", "v1", "artifacts" ], "host": [ "{{baseUrl}}" ], "query": [], "variable": [] }, "header": [ { "key": "Content-Type", "value": "multipart/form-data" }, { "key": "Accept", "value": "application/problem+json" }, { "description": { "content": "Added as a part of security scheme: bearer", "type": "text/plain" }, "key": "Authorization", "value": "Bearer " } ], "method": "POST", "body": { "mode": "formdata", "formdata": [ { "description": { "content": "(Required) The document a job will consume. Same accepted extensions and the\nsame 10 MB limit as the synchronous endpoints.\n", "type": "text/plain" }, "key": "file", "type": "file" } ] } }, "status": "Too Many Requests", "code": 429, "header": [ { "key": "Content-Type", "value": "application/json" }, { "disabled": false, "description": { "content": "Seconds until the rate-limit window resets. Sent with the problem document.", "type": "text/plain" }, "key": "Retry-After", "value": "" } ], "body": "{\n \"data\": {\n \"key_0\": \"string\",\n \"key_1\": 8935,\n \"key_2\": 7067.274549044669,\n \"key_3\": 6605.237934272736\n },\n \"meta\": {\n \"httpStatusCode\": \"\",\n \"messages\": [\n \"\",\n \"\"\n ],\n \"errors\": [\n {\n \"code\": \"\",\n \"message\": \"\",\n \"retryable\": \"\",\n \"field\": \"\",\n \"details\": {\n \"key_0\": \"\",\n \"key_1\": \"\",\n \"key_2\": \"\",\n \"key_3\": \"\"\n }\n },\n {\n \"code\": \"\",\n \"message\": \"\",\n \"retryable\": \"\",\n \"field\": \"\",\n \"details\": {\n \"key_0\": \"\"\n }\n }\n ],\n \"creditsConsumed\": \"\"\n },\n \"hasErrors\": \"\"\n}", "cookie": [], "_postman_previewlanguage": "json" }, { "name": "Unexpected failure. `correlationId` identifies the request — quote it when\nyou contact support.", "originalRequest": { "url": { "path": [ "api", "v1", "artifacts" ], "host": [ "{{baseUrl}}" ], "query": [], "variable": [] }, "header": [ { "key": "Content-Type", "value": "multipart/form-data" }, { "key": "Accept", "value": "application/problem+json" }, { "description": { "content": "Added as a part of security scheme: bearer", "type": "text/plain" }, "key": "Authorization", "value": "Bearer " } ], "method": "POST", "body": { "mode": "formdata", "formdata": [ { "description": { "content": "(Required) The document a job will consume. Same accepted extensions and the\nsame 10 MB limit as the synchronous endpoints.\n", "type": "text/plain" }, "key": "file", "type": "file" } ] } }, "status": "Internal Server Error", "code": 500, "header": [ { "key": "Content-Type", "value": "application/problem+json" } ], "body": "{\n \"type\": \"\",\n \"title\": \"\",\n \"status\": \"\",\n \"detail\": \"\",\n \"instance\": \"\",\n \"code\": \"\",\n \"correlationId\": \"\",\n \"retryable\": \"\",\n \"field\": \"\",\n \"errors\": [\n {\n \"code\": \"\",\n \"message\": \"\",\n \"field\": \"\",\n \"retryable\": \"\",\n \"details\": null\n },\n {\n \"code\": \"\",\n \"message\": \"\",\n \"field\": \"\",\n \"retryable\": \"\",\n \"details\": null\n }\n ]\n}", "cookie": [], "_postman_previewlanguage": "json" }, { "name": "Document processing could not complete because an upstream service or its\nadmission proof failed. The body is the service envelope. Read\n`meta.errors[].retryable` for the specific error; the HTTP status alone does\nnot mean the operation is safe to repeat.", "originalRequest": { "url": { "path": [ "api", "v1", "artifacts" ], "host": [ "{{baseUrl}}" ], "query": [], "variable": [] }, "header": [ { "key": "Content-Type", "value": "multipart/form-data" }, { "key": "Accept", "value": "application/json" }, { "description": { "content": "Added as a part of security scheme: bearer", "type": "text/plain" }, "key": "Authorization", "value": "Bearer " } ], "method": "POST", "body": { "mode": "formdata", "formdata": [ { "description": { "content": "(Required) The document a job will consume. Same accepted extensions and the\nsame 10 MB limit as the synchronous endpoints.\n", "type": "text/plain" }, "key": "file", "type": "file" } ] } }, "status": "Bad Gateway", "code": 502, "header": [ { "key": "Content-Type", "value": "application/json" } ], "body": "{\n \"data\": {\n \"key_0\": \"string\",\n \"key_1\": 8935,\n \"key_2\": 7067.274549044669,\n \"key_3\": 6605.237934272736\n },\n \"meta\": {\n \"httpStatusCode\": \"\",\n \"messages\": [\n \"\",\n \"\"\n ],\n \"errors\": [\n {\n \"code\": \"\",\n \"message\": \"\",\n \"retryable\": \"\",\n \"field\": \"\",\n \"details\": {\n \"key_0\": \"\",\n \"key_1\": \"\",\n \"key_2\": \"\",\n \"key_3\": \"\"\n }\n },\n {\n \"code\": \"\",\n \"message\": \"\",\n \"retryable\": \"\",\n \"field\": \"\",\n \"details\": {\n \"key_0\": \"\"\n }\n }\n ],\n \"creditsConsumed\": \"\"\n },\n \"hasErrors\": \"\"\n}", "cookie": [], "_postman_previewlanguage": "json" }, { "name": "Document processing could not complete because an upstream service or its\nadmission proof failed. The body is the service envelope. Read\n`meta.errors[].retryable` for the specific error; the HTTP status alone does\nnot mean the operation is safe to repeat.", "originalRequest": { "url": { "path": [ "api", "v1", "artifacts" ], "host": [ "{{baseUrl}}" ], "query": [], "variable": [] }, "header": [ { "key": "Content-Type", "value": "multipart/form-data" }, { "key": "Accept", "value": "application/json" }, { "description": { "content": "Added as a part of security scheme: bearer", "type": "text/plain" }, "key": "Authorization", "value": "Bearer " } ], "method": "POST", "body": { "mode": "formdata", "formdata": [ { "description": { "content": "(Required) The document a job will consume. Same accepted extensions and the\nsame 10 MB limit as the synchronous endpoints.\n", "type": "text/plain" }, "key": "file", "type": "file" } ] } }, "status": "Service Unavailable", "code": 503, "header": [ { "key": "Content-Type", "value": "application/json" } ], "body": "{\n \"data\": {\n \"key_0\": \"string\",\n \"key_1\": 8935,\n \"key_2\": 7067.274549044669,\n \"key_3\": 6605.237934272736\n },\n \"meta\": {\n \"httpStatusCode\": \"\",\n \"messages\": [\n \"\",\n \"\"\n ],\n \"errors\": [\n {\n \"code\": \"\",\n \"message\": \"\",\n \"retryable\": \"\",\n \"field\": \"\",\n \"details\": {\n \"key_0\": \"\",\n \"key_1\": \"\",\n \"key_2\": \"\",\n \"key_3\": \"\"\n }\n },\n {\n \"code\": \"\",\n \"message\": \"\",\n \"retryable\": \"\",\n \"field\": \"\",\n \"details\": {\n \"key_0\": \"\"\n }\n }\n ],\n \"creditsConsumed\": \"\"\n },\n \"hasErrors\": \"\"\n}", "cookie": [], "_postman_previewlanguage": "json" }, { "name": "Document processing could not complete because an upstream service or its\nadmission proof failed. The body is the service envelope. Read\n`meta.errors[].retryable` for the specific error; the HTTP status alone does\nnot mean the operation is safe to repeat.", "originalRequest": { "url": { "path": [ "api", "v1", "artifacts" ], "host": [ "{{baseUrl}}" ], "query": [], "variable": [] }, "header": [ { "key": "Content-Type", "value": "multipart/form-data" }, { "key": "Accept", "value": "application/json" }, { "description": { "content": "Added as a part of security scheme: bearer", "type": "text/plain" }, "key": "Authorization", "value": "Bearer " } ], "method": "POST", "body": { "mode": "formdata", "formdata": [ { "description": { "content": "(Required) The document a job will consume. Same accepted extensions and the\nsame 10 MB limit as the synchronous endpoints.\n", "type": "text/plain" }, "key": "file", "type": "file" } ] } }, "status": "Gateway Timeout", "code": 504, "header": [ { "key": "Content-Type", "value": "application/json" } ], "body": "{\n \"data\": {\n \"key_0\": \"string\",\n \"key_1\": 8935,\n \"key_2\": 7067.274549044669,\n \"key_3\": 6605.237934272736\n },\n \"meta\": {\n \"httpStatusCode\": \"\",\n \"messages\": [\n \"\",\n \"\"\n ],\n \"errors\": [\n {\n \"code\": \"\",\n \"message\": \"\",\n \"retryable\": \"\",\n \"field\": \"\",\n \"details\": {\n \"key_0\": \"\",\n \"key_1\": \"\",\n \"key_2\": \"\",\n \"key_3\": \"\"\n }\n },\n {\n \"code\": \"\",\n \"message\": \"\",\n \"retryable\": \"\",\n \"field\": \"\",\n \"details\": {\n \"key_0\": \"\"\n }\n }\n ],\n \"creditsConsumed\": \"\"\n },\n \"hasErrors\": \"\"\n}", "cookie": [], "_postman_previewlanguage": "json" } ], "event": [], "protocolProfileBehavior": { "disableBodyPruning": true } }, { "name": "content", "description": "", "item": [ { "name": "Download the bytes behind a reference", "request": { "name": "Download the bytes behind a reference", "description": { "content": "Returns the stored bytes of an upload, or of a finished job's\n`outputReference`. For a completed job this is the result document —\n`application/json` for the extraction, classification and zero-shot\noperations.\n\nThe reference is a query parameter, not a path segment, because it is a URI\nin its own right. Percent-encode it.\n", "type": "text/plain" }, "url": { "path": [ "api", "v1", "artifacts", "content" ], "host": [ "{{baseUrl}}" ], "query": [ { "disabled": false, "description": { "content": "(Required) An `artifact://` reference, or the bucket-qualified form an older job\nreturned. Pass back exactly what you were given.\n", "type": "text/plain" }, "key": "reference", "value": "" } ], "variable": [] }, "header": [ { "key": "Accept", "value": "application/octet-stream" } ], "method": "GET", "body": {}, "auth": null }, "response": [ { "name": "The stored bytes, with the content type they were stored under.\n`Content-Disposition` carries the original file name.", "originalRequest": { "url": { "path": [ "api", "v1", "artifacts", "content" ], "host": [ "{{baseUrl}}" ], "query": [ { "disabled": false, "description": { "content": "(Required) An `artifact://` reference, or the bucket-qualified form an older job\nreturned. Pass back exactly what you were given.\n", "type": "text/plain" }, "key": "reference", "value": "" } ], "variable": [] }, "header": [ { "key": "Accept", "value": "application/octet-stream" }, { "description": { "content": "Added as a part of security scheme: bearer", "type": "text/plain" }, "key": "Authorization", "value": "Bearer " } ], "method": "GET", "body": {} }, "status": "OK", "code": 200, "header": [ { "key": "Content-Type", "value": "application/json" } ], "body": "{\n \"key_0\": 7361.338117625564\n}", "cookie": [], "_postman_previewlanguage": "json" }, { "name": "The reference is missing, unreadable, or not one this tenant can read.\nA reference belonging to another tenant answers here, not `403` — the\nresponse does not reveal whether it exists.", "originalRequest": { "url": { "path": [ "api", "v1", "artifacts", "content" ], "host": [ "{{baseUrl}}" ], "query": [ { "disabled": false, "description": { "content": "(Required) An `artifact://` reference, or the bucket-qualified form an older job\nreturned. Pass back exactly what you were given.\n", "type": "text/plain" }, "key": "reference", "value": "" } ], "variable": [] }, "header": [ { "key": "Accept", "value": "application/json" }, { "description": { "content": "Added as a part of security scheme: bearer", "type": "text/plain" }, "key": "Authorization", "value": "Bearer " } ], "method": "GET", "body": {} }, "status": "Bad Request", "code": 400, "header": [ { "key": "Content-Type", "value": "application/json" } ], "body": "{\n \"data\": {\n \"key_0\": \"string\",\n \"key_1\": 8935,\n \"key_2\": 7067.274549044669,\n \"key_3\": 6605.237934272736\n },\n \"meta\": {\n \"httpStatusCode\": \"\",\n \"messages\": [\n \"\",\n \"\"\n ],\n \"errors\": [\n {\n \"code\": \"\",\n \"message\": \"\",\n \"retryable\": \"\",\n \"field\": \"\",\n \"details\": {\n \"key_0\": \"\",\n \"key_1\": \"\",\n \"key_2\": \"\",\n \"key_3\": \"\"\n }\n },\n {\n \"code\": \"\",\n \"message\": \"\",\n \"retryable\": \"\",\n \"field\": \"\",\n \"details\": {\n \"key_0\": \"\"\n }\n }\n ],\n \"creditsConsumed\": \"\"\n },\n \"hasErrors\": \"\"\n}", "cookie": [], "_postman_previewlanguage": "json" }, { "name": "Missing or invalid API key. Both `xtkt_live_` (production) and `xtkt_test_`\n(sandbox) prefixes are accepted, but the key must also be valid and active.", "originalRequest": { "url": { "path": [ "api", "v1", "artifacts", "content" ], "host": [ "{{baseUrl}}" ], "query": [ { "disabled": false, "description": { "content": "(Required) An `artifact://` reference, or the bucket-qualified form an older job\nreturned. Pass back exactly what you were given.\n", "type": "text/plain" }, "key": "reference", "value": "" } ], "variable": [] }, "header": [ { "key": "Accept", "value": "application/problem+json" }, { "description": { "content": "Added as a part of security scheme: bearer", "type": "text/plain" }, "key": "Authorization", "value": "Bearer " } ], "method": "GET", "body": {} }, "status": "Unauthorized", "code": 401, "header": [ { "key": "Content-Type", "value": "application/problem+json" } ], "body": "{\n \"type\": \"\",\n \"title\": \"\",\n \"status\": \"\",\n \"detail\": \"\",\n \"instance\": \"\",\n \"code\": \"\",\n \"correlationId\": \"\",\n \"retryable\": \"\",\n \"field\": \"\",\n \"errors\": [\n {\n \"code\": \"\",\n \"message\": \"\",\n \"field\": \"\",\n \"retryable\": \"\",\n \"details\": null\n },\n {\n \"code\": \"\",\n \"message\": \"\",\n \"field\": \"\",\n \"retryable\": \"\",\n \"details\": null\n }\n ]\n}", "cookie": [], "_postman_previewlanguage": "json" }, { "name": "The key is valid but not allowed to make this request. A sandbox key\n(`xtkt_test_`) is refused with `code` `environment.sandbox_route_unavailable`\non every route outside the sandbox set, and on `POST /api/v1/document-jobs`\nfor an unsupported operation or any `templateId`. See **Sandbox** in the\nAPI description.", "originalRequest": { "url": { "path": [ "api", "v1", "artifacts", "content" ], "host": [ "{{baseUrl}}" ], "query": [ { "disabled": false, "description": { "content": "(Required) An `artifact://` reference, or the bucket-qualified form an older job\nreturned. Pass back exactly what you were given.\n", "type": "text/plain" }, "key": "reference", "value": "" } ], "variable": [] }, "header": [ { "key": "Accept", "value": "application/problem+json" }, { "description": { "content": "Added as a part of security scheme: bearer", "type": "text/plain" }, "key": "Authorization", "value": "Bearer " } ], "method": "GET", "body": {} }, "status": "Forbidden", "code": 403, "header": [ { "key": "Content-Type", "value": "application/problem+json" } ], "body": "{\n \"type\": \"\",\n \"title\": \"\",\n \"status\": \"\",\n \"detail\": \"\",\n \"instance\": \"\",\n \"code\": \"\",\n \"correlationId\": \"\",\n \"retryable\": \"\",\n \"field\": \"\",\n \"errors\": [\n {\n \"code\": \"\",\n \"message\": \"\",\n \"field\": \"\",\n \"retryable\": \"\",\n \"details\": null\n },\n {\n \"code\": \"\",\n \"message\": \"\",\n \"field\": \"\",\n \"retryable\": \"\",\n \"details\": null\n }\n ]\n}", "cookie": [], "_postman_previewlanguage": "json" }, { "name": "No artifact with that reference in this tenant.", "originalRequest": { "url": { "path": [ "api", "v1", "artifacts", "content" ], "host": [ "{{baseUrl}}" ], "query": [ { "disabled": false, "description": { "content": "(Required) An `artifact://` reference, or the bucket-qualified form an older job\nreturned. Pass back exactly what you were given.\n", "type": "text/plain" }, "key": "reference", "value": "" } ], "variable": [] }, "header": [ { "key": "Accept", "value": "application/json" }, { "description": { "content": "Added as a part of security scheme: bearer", "type": "text/plain" }, "key": "Authorization", "value": "Bearer " } ], "method": "GET", "body": {} }, "status": "Not Found", "code": 404, "header": [ { "key": "Content-Type", "value": "application/json" } ], "body": "{\n \"data\": {\n \"key_0\": \"string\",\n \"key_1\": 8935,\n \"key_2\": 7067.274549044669,\n \"key_3\": 6605.237934272736\n },\n \"meta\": {\n \"httpStatusCode\": \"\",\n \"messages\": [\n \"\",\n \"\"\n ],\n \"errors\": [\n {\n \"code\": \"\",\n \"message\": \"\",\n \"retryable\": \"\",\n \"field\": \"\",\n \"details\": {\n \"key_0\": \"\",\n \"key_1\": \"\",\n \"key_2\": \"\",\n \"key_3\": \"\"\n }\n },\n {\n \"code\": \"\",\n \"message\": \"\",\n \"retryable\": \"\",\n \"field\": \"\",\n \"details\": {\n \"key_0\": \"\"\n }\n }\n ],\n \"creditsConsumed\": \"\"\n },\n \"hasErrors\": \"\"\n}", "cookie": [], "_postman_previewlanguage": "json" }, { "name": "The request conflicts with the current state of what it acts on.", "originalRequest": { "url": { "path": [ "api", "v1", "artifacts", "content" ], "host": [ "{{baseUrl}}" ], "query": [ { "disabled": false, "description": { "content": "(Required) An `artifact://` reference, or the bucket-qualified form an older job\nreturned. Pass back exactly what you were given.\n", "type": "text/plain" }, "key": "reference", "value": "" } ], "variable": [] }, "header": [ { "key": "Accept", "value": "application/problem+json" }, { "description": { "content": "Added as a part of security scheme: bearer", "type": "text/plain" }, "key": "Authorization", "value": "Bearer " } ], "method": "GET", "body": {} }, "status": "Conflict", "code": 409, "header": [ { "key": "Content-Type", "value": "application/problem+json" } ], "body": "{\n \"type\": \"\",\n \"title\": \"\",\n \"status\": \"\",\n \"detail\": \"\",\n \"instance\": \"\",\n \"code\": \"\",\n \"correlationId\": \"\",\n \"retryable\": \"\",\n \"field\": \"\",\n \"errors\": [\n {\n \"code\": \"\",\n \"message\": \"\",\n \"field\": \"\",\n \"retryable\": \"\",\n \"details\": null\n },\n {\n \"code\": \"\",\n \"message\": \"\",\n \"field\": \"\",\n \"retryable\": \"\",\n \"details\": null\n }\n ]\n}", "cookie": [], "_postman_previewlanguage": "json" }, { "name": "The reference was valid and has expired. Distinct from `404` on purpose:\nretrying will never succeed, so upload again.", "originalRequest": { "url": { "path": [ "api", "v1", "artifacts", "content" ], "host": [ "{{baseUrl}}" ], "query": [ { "disabled": false, "description": { "content": "(Required) An `artifact://` reference, or the bucket-qualified form an older job\nreturned. Pass back exactly what you were given.\n", "type": "text/plain" }, "key": "reference", "value": "" } ], "variable": [] }, "header": [ { "key": "Accept", "value": "application/json" }, { "description": { "content": "Added as a part of security scheme: bearer", "type": "text/plain" }, "key": "Authorization", "value": "Bearer " } ], "method": "GET", "body": {} }, "status": "Gone", "code": 410, "header": [ { "key": "Content-Type", "value": "application/json" } ], "body": "{\n \"data\": {\n \"key_0\": \"string\",\n \"key_1\": 8935,\n \"key_2\": 7067.274549044669,\n \"key_3\": 6605.237934272736\n },\n \"meta\": {\n \"httpStatusCode\": \"\",\n \"messages\": [\n \"\",\n \"\"\n ],\n \"errors\": [\n {\n \"code\": \"\",\n \"message\": \"\",\n \"retryable\": \"\",\n \"field\": \"\",\n \"details\": {\n \"key_0\": \"\",\n \"key_1\": \"\",\n \"key_2\": \"\",\n \"key_3\": \"\"\n }\n },\n {\n \"code\": \"\",\n \"message\": \"\",\n \"retryable\": \"\",\n \"field\": \"\",\n \"details\": {\n \"key_0\": \"\"\n }\n }\n ],\n \"creditsConsumed\": \"\"\n },\n \"hasErrors\": \"\"\n}", "cookie": [], "_postman_previewlanguage": "json" }, { "name": "Over 50 requests in the current 1-minute window for this key.", "originalRequest": { "url": { "path": [ "api", "v1", "artifacts", "content" ], "host": [ "{{baseUrl}}" ], "query": [ { "disabled": false, "description": { "content": "(Required) An `artifact://` reference, or the bucket-qualified form an older job\nreturned. Pass back exactly what you were given.\n", "type": "text/plain" }, "key": "reference", "value": "" } ], "variable": [] }, "header": [ { "key": "Accept", "value": "application/problem+json" }, { "description": { "content": "Added as a part of security scheme: bearer", "type": "text/plain" }, "key": "Authorization", "value": "Bearer " } ], "method": "GET", "body": {} }, "status": "Too Many Requests", "code": 429, "header": [ { "key": "Content-Type", "value": "application/problem+json" }, { "disabled": false, "description": { "content": "Seconds until the window resets.", "type": "text/plain" }, "key": "Retry-After", "value": "" } ], "body": "{\n \"type\": \"\",\n \"title\": \"\",\n \"status\": \"\",\n \"detail\": \"\",\n \"instance\": \"\",\n \"code\": \"\",\n \"correlationId\": \"\",\n \"retryable\": \"\",\n \"field\": \"\",\n \"errors\": [\n {\n \"code\": \"\",\n \"message\": \"\",\n \"field\": \"\",\n \"retryable\": \"\",\n \"details\": null\n },\n {\n \"code\": \"\",\n \"message\": \"\",\n \"field\": \"\",\n \"retryable\": \"\",\n \"details\": null\n }\n ]\n}", "cookie": [], "_postman_previewlanguage": "json" }, { "name": "Unexpected failure. `correlationId` identifies the request — quote it when\nyou contact support.", "originalRequest": { "url": { "path": [ "api", "v1", "artifacts", "content" ], "host": [ "{{baseUrl}}" ], "query": [ { "disabled": false, "description": { "content": "(Required) An `artifact://` reference, or the bucket-qualified form an older job\nreturned. Pass back exactly what you were given.\n", "type": "text/plain" }, "key": "reference", "value": "" } ], "variable": [] }, "header": [ { "key": "Accept", "value": "application/problem+json" }, { "description": { "content": "Added as a part of security scheme: bearer", "type": "text/plain" }, "key": "Authorization", "value": "Bearer " } ], "method": "GET", "body": {} }, "status": "Internal Server Error", "code": 500, "header": [ { "key": "Content-Type", "value": "application/problem+json" } ], "body": "{\n \"type\": \"\",\n \"title\": \"\",\n \"status\": \"\",\n \"detail\": \"\",\n \"instance\": \"\",\n \"code\": \"\",\n \"correlationId\": \"\",\n \"retryable\": \"\",\n \"field\": \"\",\n \"errors\": [\n {\n \"code\": \"\",\n \"message\": \"\",\n \"field\": \"\",\n \"retryable\": \"\",\n \"details\": null\n },\n {\n \"code\": \"\",\n \"message\": \"\",\n \"field\": \"\",\n \"retryable\": \"\",\n \"details\": null\n }\n ]\n}", "cookie": [], "_postman_previewlanguage": "json" } ], "event": [], "protocolProfileBehavior": { "disableBodyPruning": true } } ] } ] }, { "name": "document-jobs", "description": "", "item": [ { "name": "Submit an asynchronous document job", "request": { "name": "Submit an asynchronous document job", "description": { "content": "Queues a long-running operation. Answers `202` with a `Location` header\npointing at the job and a `Retry-After` hint. Poll that URL, or subscribe to\nwebhooks and let the completion event come to you.\n\nSend a stable `Idempotency-Key` to make retries safe. Within the job's\n7-day retention, a repeat with the same key and the same body returns the\n**original** job instead of queuing a second one: the response is `202`\nwith `data.replayed: true` and an `Idempotent-Replayed: true` header, and\n`data.status` is that job's current status. Keys are scoped to your tenant\nand environment.\nReusing a key with a different body is rejected with `422`, and a repeat\nthat arrives while the first request is still being accepted gets `409`\nand can be retried.\n\nWith a sandbox key (`xtkt_test_`) only `Extraction` without `templateId`,\n`Classification`, `ZeroShot`, `Crop` and `Split` are accepted. Any other\noperation, or any `templateId`, answers `403` with `code`\n`environment.sandbox_route_unavailable`. See **Sandbox** above.\n", "type": "text/plain" }, "url": { "path": [ "api", "v1", "document-jobs" ], "host": [ "{{baseUrl}}" ], "query": [], "variable": [] }, "header": [ { "disabled": false, "description": { "content": "Stable caller-supplied key that makes a retried submit resolve to the\njob it first created. Use a new key for each distinct job.\n", "type": "text/plain" }, "key": "Idempotency-Key", "value": "POPOPOPO" }, { "key": "Content-Type", "value": "application/json" }, { "key": "Accept", "value": "application/json" } ], "method": "POST", "body": { "mode": "raw", "raw": "{\n \"operation\": \"ZeroShot\",\n \"inputReference\": \"artifact://g-/X\",\n \"templateId\": \"\"\n}", "options": { "raw": { "headerFamily": "json", "language": "json" } } }, "auth": null }, "response": [ { "name": "Job accepted.", "originalRequest": { "url": { "path": [ "api", "v1", "document-jobs" ], "host": [ "{{baseUrl}}" ], "query": [], "variable": [] }, "header": [ { "disabled": false, "description": { "content": "Stable caller-supplied key that makes a retried submit resolve to the\njob it first created. Use a new key for each distinct job.\n", "type": "text/plain" }, "key": "Idempotency-Key", "value": "POPOPOPO" }, { "key": "Content-Type", "value": "application/json" }, { "key": "Accept", "value": "application/json" }, { "description": { "content": "Added as a part of security scheme: bearer", "type": "text/plain" }, "key": "Authorization", "value": "Bearer " } ], "method": "POST", "body": { "mode": "raw", "raw": "{\n \"operation\": \"ZeroShot\",\n \"inputReference\": \"artifact://g-/X\",\n \"templateId\": \"\"\n}", "options": { "raw": { "headerFamily": "json", "language": "json" } } } }, "status": "Accepted", "code": 202, "header": [ { "key": "Content-Type", "value": "application/json" }, { "disabled": false, "description": { "content": "URL of the created job.", "type": "text/plain" }, "key": "Location", "value": "" }, { "disabled": false, "description": { "content": "Suggested seconds to wait before polling.", "type": "text/plain" }, "key": "Retry-After", "value": "" }, { "disabled": false, "description": { "content": "Present only when an `Idempotency-Key` matched an earlier submit. (This can only be one of true)", "type": "text/plain" }, "key": "Idempotent-Replayed", "value": "true" } ], "body": "{\n \"data\": {\n \"jobId\": \"\",\n \"status\": \"Failed\",\n \"statusUrl\": \"\",\n \"retryAfterSeconds\": \"\",\n \"replayed\": \"\"\n },\n \"meta\": {\n \"httpStatusCode\": \"\",\n \"messages\": [\n \"\",\n \"\"\n ],\n \"errors\": [\n {\n \"code\": \"\",\n \"message\": \"\",\n \"retryable\": \"\",\n \"field\": \"\",\n \"details\": null\n },\n {\n \"code\": \"\",\n \"message\": \"\",\n \"retryable\": \"\",\n \"field\": \"\",\n \"details\": null\n }\n ],\n \"creditsConsumed\": \"\"\n },\n \"hasErrors\": \"\"\n}", "cookie": [], "_postman_previewlanguage": "json" }, { "name": "The request failed validation. A malformed `Idempotency-Key` is reported\nwith `errors[].code` `idempotency_key_invalid` and nothing is queued.", "originalRequest": { "url": { "path": [ "api", "v1", "document-jobs" ], "host": [ "{{baseUrl}}" ], "query": [], "variable": [] }, "header": [ { "disabled": false, "description": { "content": "Stable caller-supplied key that makes a retried submit resolve to the\njob it first created. Use a new key for each distinct job.\n", "type": "text/plain" }, "key": "Idempotency-Key", "value": "POPOPOPO" }, { "key": "Content-Type", "value": "application/json" }, { "key": "Accept", "value": "application/json" }, { "description": { "content": "Added as a part of security scheme: bearer", "type": "text/plain" }, "key": "Authorization", "value": "Bearer " } ], "method": "POST", "body": { "mode": "raw", "raw": "{\n \"operation\": \"ZeroShot\",\n \"inputReference\": \"artifact://g-/X\",\n \"templateId\": \"\"\n}", "options": { "raw": { "headerFamily": "json", "language": "json" } } } }, "status": "Bad Request", "code": 400, "header": [ { "key": "Content-Type", "value": "application/json" } ], "body": "{\n \"data\": {\n \"key_0\": \"string\",\n \"key_1\": 8935,\n \"key_2\": 7067.274549044669,\n \"key_3\": 6605.237934272736\n },\n \"meta\": {\n \"httpStatusCode\": \"\",\n \"messages\": [\n \"\",\n \"\"\n ],\n \"errors\": [\n {\n \"code\": \"\",\n \"message\": \"\",\n \"retryable\": \"\",\n \"field\": \"\",\n \"details\": {\n \"key_0\": \"\",\n \"key_1\": \"\",\n \"key_2\": \"\",\n \"key_3\": \"\"\n }\n },\n {\n \"code\": \"\",\n \"message\": \"\",\n \"retryable\": \"\",\n \"field\": \"\",\n \"details\": {\n \"key_0\": \"\"\n }\n }\n ],\n \"creditsConsumed\": \"\"\n },\n \"hasErrors\": \"\"\n}", "cookie": [], "_postman_previewlanguage": "json" }, { "name": "Missing or invalid API key. Both `xtkt_live_` (production) and `xtkt_test_`\n(sandbox) prefixes are accepted, but the key must also be valid and active.", "originalRequest": { "url": { "path": [ "api", "v1", "document-jobs" ], "host": [ "{{baseUrl}}" ], "query": [], "variable": [] }, "header": [ { "disabled": false, "description": { "content": "Stable caller-supplied key that makes a retried submit resolve to the\njob it first created. Use a new key for each distinct job.\n", "type": "text/plain" }, "key": "Idempotency-Key", "value": "POPOPOPO" }, { "key": "Content-Type", "value": "application/json" }, { "key": "Accept", "value": "application/problem+json" }, { "description": { "content": "Added as a part of security scheme: bearer", "type": "text/plain" }, "key": "Authorization", "value": "Bearer " } ], "method": "POST", "body": { "mode": "raw", "raw": "{\n \"operation\": \"ZeroShot\",\n \"inputReference\": \"artifact://g-/X\",\n \"templateId\": \"\"\n}", "options": { "raw": { "headerFamily": "json", "language": "json" } } } }, "status": "Unauthorized", "code": 401, "header": [ { "key": "Content-Type", "value": "application/problem+json" } ], "body": "{\n \"type\": \"\",\n \"title\": \"\",\n \"status\": \"\",\n \"detail\": \"\",\n \"instance\": \"\",\n \"code\": \"\",\n \"correlationId\": \"\",\n \"retryable\": \"\",\n \"field\": \"\",\n \"errors\": [\n {\n \"code\": \"\",\n \"message\": \"\",\n \"field\": \"\",\n \"retryable\": \"\",\n \"details\": null\n },\n {\n \"code\": \"\",\n \"message\": \"\",\n \"field\": \"\",\n \"retryable\": \"\",\n \"details\": null\n }\n ]\n}", "cookie": [], "_postman_previewlanguage": "json" }, { "name": "The key is valid but not allowed to make this request. A sandbox key\n(`xtkt_test_`) is refused with `code` `environment.sandbox_route_unavailable`\non every route outside the sandbox set, and on `POST /api/v1/document-jobs`\nfor an unsupported operation or any `templateId`. See **Sandbox** in the\nAPI description.", "originalRequest": { "url": { "path": [ "api", "v1", "document-jobs" ], "host": [ "{{baseUrl}}" ], "query": [], "variable": [] }, "header": [ { "disabled": false, "description": { "content": "Stable caller-supplied key that makes a retried submit resolve to the\njob it first created. Use a new key for each distinct job.\n", "type": "text/plain" }, "key": "Idempotency-Key", "value": "POPOPOPO" }, { "key": "Content-Type", "value": "application/json" }, { "key": "Accept", "value": "application/problem+json" }, { "description": { "content": "Added as a part of security scheme: bearer", "type": "text/plain" }, "key": "Authorization", "value": "Bearer " } ], "method": "POST", "body": { "mode": "raw", "raw": "{\n \"operation\": \"ZeroShot\",\n \"inputReference\": \"artifact://g-/X\",\n \"templateId\": \"\"\n}", "options": { "raw": { "headerFamily": "json", "language": "json" } } } }, "status": "Forbidden", "code": 403, "header": [ { "key": "Content-Type", "value": "application/problem+json" } ], "body": "{\n \"type\": \"\",\n \"title\": \"\",\n \"status\": \"\",\n \"detail\": \"\",\n \"instance\": \"\",\n \"code\": \"\",\n \"correlationId\": \"\",\n \"retryable\": \"\",\n \"field\": \"\",\n \"errors\": [\n {\n \"code\": \"\",\n \"message\": \"\",\n \"field\": \"\",\n \"retryable\": \"\",\n \"details\": null\n },\n {\n \"code\": \"\",\n \"message\": \"\",\n \"field\": \"\",\n \"retryable\": \"\",\n \"details\": null\n }\n ]\n}", "cookie": [], "_postman_previewlanguage": "json" }, { "name": "Nothing answers at this address for this tenant.", "originalRequest": { "url": { "path": [ "api", "v1", "document-jobs" ], "host": [ "{{baseUrl}}" ], "query": [], "variable": [] }, "header": [ { "disabled": false, "description": { "content": "Stable caller-supplied key that makes a retried submit resolve to the\njob it first created. Use a new key for each distinct job.\n", "type": "text/plain" }, "key": "Idempotency-Key", "value": "POPOPOPO" }, { "key": "Content-Type", "value": "application/json" }, { "key": "Accept", "value": "application/problem+json" }, { "description": { "content": "Added as a part of security scheme: bearer", "type": "text/plain" }, "key": "Authorization", "value": "Bearer " } ], "method": "POST", "body": { "mode": "raw", "raw": "{\n \"operation\": \"ZeroShot\",\n \"inputReference\": \"artifact://g-/X\",\n \"templateId\": \"\"\n}", "options": { "raw": { "headerFamily": "json", "language": "json" } } } }, "status": "Not Found", "code": 404, "header": [ { "key": "Content-Type", "value": "application/problem+json" } ], "body": "{\n \"type\": \"\",\n \"title\": \"\",\n \"status\": \"\",\n \"detail\": \"\",\n \"instance\": \"\",\n \"code\": \"\",\n \"correlationId\": \"\",\n \"retryable\": \"\",\n \"field\": \"\",\n \"errors\": [\n {\n \"code\": \"\",\n \"message\": \"\",\n \"field\": \"\",\n \"retryable\": \"\",\n \"details\": null\n },\n {\n \"code\": \"\",\n \"message\": \"\",\n \"field\": \"\",\n \"retryable\": \"\",\n \"details\": null\n }\n ]\n}", "cookie": [], "_postman_previewlanguage": "json" }, { "name": "`errors[].code` is `idempotency_request_in_progress` (retryable) when a\nrequest with the same key is still being accepted, or\n`idempotency_replay_unavailable` when the job that key created is no\nlonger retained; submit again with a new key.", "originalRequest": { "url": { "path": [ "api", "v1", "document-jobs" ], "host": [ "{{baseUrl}}" ], "query": [], "variable": [] }, "header": [ { "disabled": false, "description": { "content": "Stable caller-supplied key that makes a retried submit resolve to the\njob it first created. Use a new key for each distinct job.\n", "type": "text/plain" }, "key": "Idempotency-Key", "value": "POPOPOPO" }, { "key": "Content-Type", "value": "application/json" }, { "key": "Accept", "value": "application/json" }, { "description": { "content": "Added as a part of security scheme: bearer", "type": "text/plain" }, "key": "Authorization", "value": "Bearer " } ], "method": "POST", "body": { "mode": "raw", "raw": "{\n \"operation\": \"ZeroShot\",\n \"inputReference\": \"artifact://g-/X\",\n \"templateId\": \"\"\n}", "options": { "raw": { "headerFamily": "json", "language": "json" } } } }, "status": "Conflict", "code": 409, "header": [ { "key": "Content-Type", "value": "application/json" } ], "body": "{\n \"data\": {\n \"key_0\": \"string\",\n \"key_1\": 8935,\n \"key_2\": 7067.274549044669,\n \"key_3\": 6605.237934272736\n },\n \"meta\": {\n \"httpStatusCode\": \"\",\n \"messages\": [\n \"\",\n \"\"\n ],\n \"errors\": [\n {\n \"code\": \"\",\n \"message\": \"\",\n \"retryable\": \"\",\n \"field\": \"\",\n \"details\": {\n \"key_0\": \"\",\n \"key_1\": \"\",\n \"key_2\": \"\",\n \"key_3\": \"\"\n }\n },\n {\n \"code\": \"\",\n \"message\": \"\",\n \"retryable\": \"\",\n \"field\": \"\",\n \"details\": {\n \"key_0\": \"\"\n }\n }\n ],\n \"creditsConsumed\": \"\"\n },\n \"hasErrors\": \"\"\n}", "cookie": [], "_postman_previewlanguage": "json" }, { "name": "`errors[].code` is `idempotency_key_conflict` when the key was already\nused with a different `operation`, `inputReference` or `templateId`.\n\nThe requested extraction template cannot be used for this job.\n`template_unknown` means the id is not a finished template in the API\nkey's tenant; `template_not_applicable` means a nonzero template id was\nsupplied for an operation other than Extraction.", "originalRequest": { "url": { "path": [ "api", "v1", "document-jobs" ], "host": [ "{{baseUrl}}" ], "query": [], "variable": [] }, "header": [ { "disabled": false, "description": { "content": "Stable caller-supplied key that makes a retried submit resolve to the\njob it first created. Use a new key for each distinct job.\n", "type": "text/plain" }, "key": "Idempotency-Key", "value": "POPOPOPO" }, { "key": "Content-Type", "value": "application/json" }, { "key": "Accept", "value": "application/json" }, { "description": { "content": "Added as a part of security scheme: bearer", "type": "text/plain" }, "key": "Authorization", "value": "Bearer " } ], "method": "POST", "body": { "mode": "raw", "raw": "{\n \"operation\": \"ZeroShot\",\n \"inputReference\": \"artifact://g-/X\",\n \"templateId\": \"\"\n}", "options": { "raw": { "headerFamily": "json", "language": "json" } } } }, "status": "Unprocessable Entity (WebDAV) (RFC 4918)", "code": 422, "header": [ { "key": "Content-Type", "value": "application/json" } ], "body": "{\n \"data\": {\n \"key_0\": \"string\",\n \"key_1\": 8935,\n \"key_2\": 7067.274549044669,\n \"key_3\": 6605.237934272736\n },\n \"meta\": {\n \"httpStatusCode\": \"\",\n \"messages\": [\n \"\",\n \"\"\n ],\n \"errors\": [\n {\n \"code\": \"\",\n \"message\": \"\",\n \"retryable\": \"\",\n \"field\": \"\",\n \"details\": {\n \"key_0\": \"\",\n \"key_1\": \"\",\n \"key_2\": \"\",\n \"key_3\": \"\"\n }\n },\n {\n \"code\": \"\",\n \"message\": \"\",\n \"retryable\": \"\",\n \"field\": \"\",\n \"details\": {\n \"key_0\": \"\"\n }\n }\n ],\n \"creditsConsumed\": \"\"\n },\n \"hasErrors\": \"\"\n}", "cookie": [], "_postman_previewlanguage": "json" }, { "name": "Over 50 requests in the current 1-minute window for this key.", "originalRequest": { "url": { "path": [ "api", "v1", "document-jobs" ], "host": [ "{{baseUrl}}" ], "query": [], "variable": [] }, "header": [ { "disabled": false, "description": { "content": "Stable caller-supplied key that makes a retried submit resolve to the\njob it first created. Use a new key for each distinct job.\n", "type": "text/plain" }, "key": "Idempotency-Key", "value": "POPOPOPO" }, { "key": "Content-Type", "value": "application/json" }, { "key": "Accept", "value": "application/problem+json" }, { "description": { "content": "Added as a part of security scheme: bearer", "type": "text/plain" }, "key": "Authorization", "value": "Bearer " } ], "method": "POST", "body": { "mode": "raw", "raw": "{\n \"operation\": \"ZeroShot\",\n \"inputReference\": \"artifact://g-/X\",\n \"templateId\": \"\"\n}", "options": { "raw": { "headerFamily": "json", "language": "json" } } } }, "status": "Too Many Requests", "code": 429, "header": [ { "key": "Content-Type", "value": "application/problem+json" }, { "disabled": false, "description": { "content": "Seconds until the window resets.", "type": "text/plain" }, "key": "Retry-After", "value": "" } ], "body": "{\n \"type\": \"\",\n \"title\": \"\",\n \"status\": \"\",\n \"detail\": \"\",\n \"instance\": \"\",\n \"code\": \"\",\n \"correlationId\": \"\",\n \"retryable\": \"\",\n \"field\": \"\",\n \"errors\": [\n {\n \"code\": \"\",\n \"message\": \"\",\n \"field\": \"\",\n \"retryable\": \"\",\n \"details\": null\n },\n {\n \"code\": \"\",\n \"message\": \"\",\n \"field\": \"\",\n \"retryable\": \"\",\n \"details\": null\n }\n ]\n}", "cookie": [], "_postman_previewlanguage": "json" }, { "name": "Unexpected failure. `correlationId` identifies the request — quote it when\nyou contact support.", "originalRequest": { "url": { "path": [ "api", "v1", "document-jobs" ], "host": [ "{{baseUrl}}" ], "query": [], "variable": [] }, "header": [ { "disabled": false, "description": { "content": "Stable caller-supplied key that makes a retried submit resolve to the\njob it first created. Use a new key for each distinct job.\n", "type": "text/plain" }, "key": "Idempotency-Key", "value": "POPOPOPO" }, { "key": "Content-Type", "value": "application/json" }, { "key": "Accept", "value": "application/problem+json" }, { "description": { "content": "Added as a part of security scheme: bearer", "type": "text/plain" }, "key": "Authorization", "value": "Bearer " } ], "method": "POST", "body": { "mode": "raw", "raw": "{\n \"operation\": \"ZeroShot\",\n \"inputReference\": \"artifact://g-/X\",\n \"templateId\": \"\"\n}", "options": { "raw": { "headerFamily": "json", "language": "json" } } } }, "status": "Internal Server Error", "code": 500, "header": [ { "key": "Content-Type", "value": "application/problem+json" } ], "body": "{\n \"type\": \"\",\n \"title\": \"\",\n \"status\": \"\",\n \"detail\": \"\",\n \"instance\": \"\",\n \"code\": \"\",\n \"correlationId\": \"\",\n \"retryable\": \"\",\n \"field\": \"\",\n \"errors\": [\n {\n \"code\": \"\",\n \"message\": \"\",\n \"field\": \"\",\n \"retryable\": \"\",\n \"details\": null\n },\n {\n \"code\": \"\",\n \"message\": \"\",\n \"field\": \"\",\n \"retryable\": \"\",\n \"details\": null\n }\n ]\n}", "cookie": [], "_postman_previewlanguage": "json" } ], "event": [], "protocolProfileBehavior": { "disableBodyPruning": true } }, { "name": "List document jobs", "request": { "name": "List document jobs", "description": {}, "url": { "path": [ "api", "v1", "document-jobs" ], "host": [ "{{baseUrl}}" ], "query": [ { "disabled": false, "description": { "content": "", "type": "text/plain" }, "key": "limit", "value": "100" } ], "variable": [] }, "header": [ { "key": "Accept", "value": "application/json" } ], "method": "GET", "body": {}, "auth": null }, "response": [ { "name": "Jobs for the tenant.", "originalRequest": { "url": { "path": [ "api", "v1", "document-jobs" ], "host": [ "{{baseUrl}}" ], "query": [ { "disabled": false, "description": { "content": "", "type": "text/plain" }, "key": "limit", "value": "100" } ], "variable": [] }, "header": [ { "key": "Accept", "value": "application/json" }, { "description": { "content": "Added as a part of security scheme: bearer", "type": "text/plain" }, "key": "Authorization", "value": "Bearer " } ], "method": "GET", "body": {} }, "status": "OK", "code": 200, "header": [ { "key": "Content-Type", "value": "application/json" } ], "body": "{\n \"data\": {\n \"jobs\": [\n {\n \"jobId\": \"\",\n \"operation\": \"Classification\",\n \"status\": \"Processing\",\n \"templateId\": \"\",\n \"templateVersion\": \"\",\n \"outputReference\": \"\",\n \"stage\": \"\",\n \"processedPages\": \"\",\n \"totalPages\": \"\",\n \"attemptCount\": \"\",\n \"failureCode\": \"\",\n \"retryable\": \"\",\n \"startedAt\": \"\",\n \"completedAt\": \"\",\n \"cancellationRequestedAt\": \"\",\n \"expiresAt\": \"\",\n \"creditsConsumed\": \"\"\n },\n {\n \"jobId\": \"\",\n \"operation\": \"ZeroShot\",\n \"status\": \"Cancelled\",\n \"templateId\": \"\",\n \"templateVersion\": \"\",\n \"outputReference\": \"\",\n \"stage\": \"\",\n \"processedPages\": \"\",\n \"totalPages\": \"\",\n \"attemptCount\": \"\",\n \"failureCode\": \"\",\n \"retryable\": \"\",\n \"startedAt\": \"\",\n \"completedAt\": \"\",\n \"cancellationRequestedAt\": \"\",\n \"expiresAt\": \"\",\n \"creditsConsumed\": \"\"\n }\n ],\n \"hasMore\": \"\",\n \"limit\": \"\",\n \"nextCursor\": \"\"\n },\n \"meta\": {\n \"httpStatusCode\": \"\",\n \"messages\": [\n \"\",\n \"\"\n ],\n \"errors\": [\n {\n \"code\": \"\",\n \"message\": \"\",\n \"retryable\": \"\",\n \"field\": \"\",\n \"details\": {\n \"key_0\": \"\",\n \"key_1\": \"\"\n }\n },\n {\n \"code\": \"\",\n \"message\": \"\",\n \"retryable\": \"\",\n \"field\": \"\",\n \"details\": null\n }\n ],\n \"creditsConsumed\": \"\"\n },\n \"hasErrors\": \"\"\n}", "cookie": [], "_postman_previewlanguage": "json" }, { "name": "The request is invalid. Refused before processing — malformed or unsafe — it\nis a problem document; refused by processing itself, such as a missing file,\nit is the service envelope with the reason in `meta.errors`.", "originalRequest": { "url": { "path": [ "api", "v1", "document-jobs" ], "host": [ "{{baseUrl}}" ], "query": [ { "disabled": false, "description": { "content": "", "type": "text/plain" }, "key": "limit", "value": "100" } ], "variable": [] }, "header": [ { "key": "Accept", "value": "application/problem+json" }, { "description": { "content": "Added as a part of security scheme: bearer", "type": "text/plain" }, "key": "Authorization", "value": "Bearer " } ], "method": "GET", "body": {} }, "status": "Bad Request", "code": 400, "header": [ { "key": "Content-Type", "value": "application/json" } ], "body": "{\n \"data\": {\n \"key_0\": \"string\",\n \"key_1\": 8935,\n \"key_2\": 7067.274549044669,\n \"key_3\": 6605.237934272736\n },\n \"meta\": {\n \"httpStatusCode\": \"\",\n \"messages\": [\n \"\",\n \"\"\n ],\n \"errors\": [\n {\n \"code\": \"\",\n \"message\": \"\",\n \"retryable\": \"\",\n \"field\": \"\",\n \"details\": {\n \"key_0\": \"\",\n \"key_1\": \"\",\n \"key_2\": \"\",\n \"key_3\": \"\"\n }\n },\n {\n \"code\": \"\",\n \"message\": \"\",\n \"retryable\": \"\",\n \"field\": \"\",\n \"details\": {\n \"key_0\": \"\"\n }\n }\n ],\n \"creditsConsumed\": \"\"\n },\n \"hasErrors\": \"\"\n}", "cookie": [], "_postman_previewlanguage": "json" }, { "name": "Missing or invalid API key. Both `xtkt_live_` (production) and `xtkt_test_`\n(sandbox) prefixes are accepted, but the key must also be valid and active.", "originalRequest": { "url": { "path": [ "api", "v1", "document-jobs" ], "host": [ "{{baseUrl}}" ], "query": [ { "disabled": false, "description": { "content": "", "type": "text/plain" }, "key": "limit", "value": "100" } ], "variable": [] }, "header": [ { "key": "Accept", "value": "application/problem+json" }, { "description": { "content": "Added as a part of security scheme: bearer", "type": "text/plain" }, "key": "Authorization", "value": "Bearer " } ], "method": "GET", "body": {} }, "status": "Unauthorized", "code": 401, "header": [ { "key": "Content-Type", "value": "application/problem+json" } ], "body": "{\n \"type\": \"\",\n \"title\": \"\",\n \"status\": \"\",\n \"detail\": \"\",\n \"instance\": \"\",\n \"code\": \"\",\n \"correlationId\": \"\",\n \"retryable\": \"\",\n \"field\": \"\",\n \"errors\": [\n {\n \"code\": \"\",\n \"message\": \"\",\n \"field\": \"\",\n \"retryable\": \"\",\n \"details\": null\n },\n {\n \"code\": \"\",\n \"message\": \"\",\n \"field\": \"\",\n \"retryable\": \"\",\n \"details\": null\n }\n ]\n}", "cookie": [], "_postman_previewlanguage": "json" }, { "name": "The key is valid but not allowed to make this request. A sandbox key\n(`xtkt_test_`) is refused with `code` `environment.sandbox_route_unavailable`\non every route outside the sandbox set, and on `POST /api/v1/document-jobs`\nfor an unsupported operation or any `templateId`. See **Sandbox** in the\nAPI description.", "originalRequest": { "url": { "path": [ "api", "v1", "document-jobs" ], "host": [ "{{baseUrl}}" ], "query": [ { "disabled": false, "description": { "content": "", "type": "text/plain" }, "key": "limit", "value": "100" } ], "variable": [] }, "header": [ { "key": "Accept", "value": "application/problem+json" }, { "description": { "content": "Added as a part of security scheme: bearer", "type": "text/plain" }, "key": "Authorization", "value": "Bearer " } ], "method": "GET", "body": {} }, "status": "Forbidden", "code": 403, "header": [ { "key": "Content-Type", "value": "application/problem+json" } ], "body": "{\n \"type\": \"\",\n \"title\": \"\",\n \"status\": \"\",\n \"detail\": \"\",\n \"instance\": \"\",\n \"code\": \"\",\n \"correlationId\": \"\",\n \"retryable\": \"\",\n \"field\": \"\",\n \"errors\": [\n {\n \"code\": \"\",\n \"message\": \"\",\n \"field\": \"\",\n \"retryable\": \"\",\n \"details\": null\n },\n {\n \"code\": \"\",\n \"message\": \"\",\n \"field\": \"\",\n \"retryable\": \"\",\n \"details\": null\n }\n ]\n}", "cookie": [], "_postman_previewlanguage": "json" }, { "name": "Nothing answers at this address for this tenant.", "originalRequest": { "url": { "path": [ "api", "v1", "document-jobs" ], "host": [ "{{baseUrl}}" ], "query": [ { "disabled": false, "description": { "content": "", "type": "text/plain" }, "key": "limit", "value": "100" } ], "variable": [] }, "header": [ { "key": "Accept", "value": "application/problem+json" }, { "description": { "content": "Added as a part of security scheme: bearer", "type": "text/plain" }, "key": "Authorization", "value": "Bearer " } ], "method": "GET", "body": {} }, "status": "Not Found", "code": 404, "header": [ { "key": "Content-Type", "value": "application/problem+json" } ], "body": "{\n \"type\": \"\",\n \"title\": \"\",\n \"status\": \"\",\n \"detail\": \"\",\n \"instance\": \"\",\n \"code\": \"\",\n \"correlationId\": \"\",\n \"retryable\": \"\",\n \"field\": \"\",\n \"errors\": [\n {\n \"code\": \"\",\n \"message\": \"\",\n \"field\": \"\",\n \"retryable\": \"\",\n \"details\": null\n },\n {\n \"code\": \"\",\n \"message\": \"\",\n \"field\": \"\",\n \"retryable\": \"\",\n \"details\": null\n }\n ]\n}", "cookie": [], "_postman_previewlanguage": "json" }, { "name": "The request conflicts with the current state of what it acts on.", "originalRequest": { "url": { "path": [ "api", "v1", "document-jobs" ], "host": [ "{{baseUrl}}" ], "query": [ { "disabled": false, "description": { "content": "", "type": "text/plain" }, "key": "limit", "value": "100" } ], "variable": [] }, "header": [ { "key": "Accept", "value": "application/problem+json" }, { "description": { "content": "Added as a part of security scheme: bearer", "type": "text/plain" }, "key": "Authorization", "value": "Bearer " } ], "method": "GET", "body": {} }, "status": "Conflict", "code": 409, "header": [ { "key": "Content-Type", "value": "application/problem+json" } ], "body": "{\n \"type\": \"\",\n \"title\": \"\",\n \"status\": \"\",\n \"detail\": \"\",\n \"instance\": \"\",\n \"code\": \"\",\n \"correlationId\": \"\",\n \"retryable\": \"\",\n \"field\": \"\",\n \"errors\": [\n {\n \"code\": \"\",\n \"message\": \"\",\n \"field\": \"\",\n \"retryable\": \"\",\n \"details\": null\n },\n {\n \"code\": \"\",\n \"message\": \"\",\n \"field\": \"\",\n \"retryable\": \"\",\n \"details\": null\n }\n ]\n}", "cookie": [], "_postman_previewlanguage": "json" }, { "name": "Over 50 requests in the current 1-minute window for this key.", "originalRequest": { "url": { "path": [ "api", "v1", "document-jobs" ], "host": [ "{{baseUrl}}" ], "query": [ { "disabled": false, "description": { "content": "", "type": "text/plain" }, "key": "limit", "value": "100" } ], "variable": [] }, "header": [ { "key": "Accept", "value": "application/problem+json" }, { "description": { "content": "Added as a part of security scheme: bearer", "type": "text/plain" }, "key": "Authorization", "value": "Bearer " } ], "method": "GET", "body": {} }, "status": "Too Many Requests", "code": 429, "header": [ { "key": "Content-Type", "value": "application/problem+json" }, { "disabled": false, "description": { "content": "Seconds until the window resets.", "type": "text/plain" }, "key": "Retry-After", "value": "" } ], "body": "{\n \"type\": \"\",\n \"title\": \"\",\n \"status\": \"\",\n \"detail\": \"\",\n \"instance\": \"\",\n \"code\": \"\",\n \"correlationId\": \"\",\n \"retryable\": \"\",\n \"field\": \"\",\n \"errors\": [\n {\n \"code\": \"\",\n \"message\": \"\",\n \"field\": \"\",\n \"retryable\": \"\",\n \"details\": null\n },\n {\n \"code\": \"\",\n \"message\": \"\",\n \"field\": \"\",\n \"retryable\": \"\",\n \"details\": null\n }\n ]\n}", "cookie": [], "_postman_previewlanguage": "json" }, { "name": "Unexpected failure. `correlationId` identifies the request — quote it when\nyou contact support.", "originalRequest": { "url": { "path": [ "api", "v1", "document-jobs" ], "host": [ "{{baseUrl}}" ], "query": [ { "disabled": false, "description": { "content": "", "type": "text/plain" }, "key": "limit", "value": "100" } ], "variable": [] }, "header": [ { "key": "Accept", "value": "application/problem+json" }, { "description": { "content": "Added as a part of security scheme: bearer", "type": "text/plain" }, "key": "Authorization", "value": "Bearer " } ], "method": "GET", "body": {} }, "status": "Internal Server Error", "code": 500, "header": [ { "key": "Content-Type", "value": "application/problem+json" } ], "body": "{\n \"type\": \"\",\n \"title\": \"\",\n \"status\": \"\",\n \"detail\": \"\",\n \"instance\": \"\",\n \"code\": \"\",\n \"correlationId\": \"\",\n \"retryable\": \"\",\n \"field\": \"\",\n \"errors\": [\n {\n \"code\": \"\",\n \"message\": \"\",\n \"field\": \"\",\n \"retryable\": \"\",\n \"details\": null\n },\n {\n \"code\": \"\",\n \"message\": \"\",\n \"field\": \"\",\n \"retryable\": \"\",\n \"details\": null\n }\n ]\n}", "cookie": [], "_postman_previewlanguage": "json" } ], "event": [], "protocolProfileBehavior": { "disableBodyPruning": true } }, { "name": "{jobId}", "description": "", "item": [ { "name": "Get a document job", "request": { "name": "Get a document job", "description": {}, "url": { "path": [ "api", "v1", "document-jobs", ":jobId" ], "host": [ "{{baseUrl}}" ], "query": [], "variable": [ { "type": "any", "value": "", "key": "jobId", "disabled": false, "description": { "content": "(Required) ", "type": "text/plain" } } ] }, "header": [ { "key": "Accept", "value": "application/json" } ], "method": "GET", "body": {}, "auth": null }, "response": [ { "name": "The job.", "originalRequest": { "url": { "path": [ "api", "v1", "document-jobs", ":jobId" ], "host": [ "{{baseUrl}}" ], "query": [], "variable": [ { "disabled": false, "description": { "content": "(Required) ", "type": "text/plain" }, "type": "any", "value": "", "key": "jobId" } ] }, "header": [ { "key": "Accept", "value": "application/json" }, { "description": { "content": "Added as a part of security scheme: bearer", "type": "text/plain" }, "key": "Authorization", "value": "Bearer " } ], "method": "GET", "body": {} }, "status": "OK", "code": 200, "header": [ { "key": "Content-Type", "value": "application/json" } ], "body": "{\n \"data\": {\n \"jobId\": \"\",\n \"operation\": \"Facematch\",\n \"status\": \"Processing\",\n \"templateId\": \"\",\n \"templateVersion\": \"\",\n \"outputReference\": \"\",\n \"stage\": \"\",\n \"processedPages\": \"\",\n \"totalPages\": \"\",\n \"attemptCount\": \"\",\n \"failureCode\": \"\",\n \"retryable\": \"\",\n \"startedAt\": \"\",\n \"completedAt\": \"\",\n \"cancellationRequestedAt\": \"\",\n \"expiresAt\": \"\",\n \"creditsConsumed\": \"\"\n },\n \"meta\": {\n \"httpStatusCode\": \"\",\n \"messages\": [\n \"\",\n \"\"\n ],\n \"errors\": [\n {\n \"code\": \"\",\n \"message\": \"\",\n \"retryable\": \"\",\n \"field\": \"\",\n \"details\": {\n \"key_0\": \"\"\n }\n },\n {\n \"code\": \"\",\n \"message\": \"\",\n \"retryable\": \"\",\n \"field\": \"\",\n \"details\": {\n \"key_0\": \"\"\n }\n }\n ],\n \"creditsConsumed\": \"\"\n },\n \"hasErrors\": \"\"\n}", "cookie": [], "_postman_previewlanguage": "json" }, { "name": "The request is invalid. Refused before processing — malformed or unsafe — it\nis a problem document; refused by processing itself, such as a missing file,\nit is the service envelope with the reason in `meta.errors`.", "originalRequest": { "url": { "path": [ "api", "v1", "document-jobs", ":jobId" ], "host": [ "{{baseUrl}}" ], "query": [], "variable": [ { "disabled": false, "description": { "content": "(Required) ", "type": "text/plain" }, "type": "any", "value": "", "key": "jobId" } ] }, "header": [ { "key": "Accept", "value": "application/problem+json" }, { "description": { "content": "Added as a part of security scheme: bearer", "type": "text/plain" }, "key": "Authorization", "value": "Bearer " } ], "method": "GET", "body": {} }, "status": "Bad Request", "code": 400, "header": [ { "key": "Content-Type", "value": "application/json" } ], "body": "{\n \"data\": {\n \"key_0\": \"string\",\n \"key_1\": 8935,\n \"key_2\": 7067.274549044669,\n \"key_3\": 6605.237934272736\n },\n \"meta\": {\n \"httpStatusCode\": \"\",\n \"messages\": [\n \"\",\n \"\"\n ],\n \"errors\": [\n {\n \"code\": \"\",\n \"message\": \"\",\n \"retryable\": \"\",\n \"field\": \"\",\n \"details\": {\n \"key_0\": \"\",\n \"key_1\": \"\",\n \"key_2\": \"\",\n \"key_3\": \"\"\n }\n },\n {\n \"code\": \"\",\n \"message\": \"\",\n \"retryable\": \"\",\n \"field\": \"\",\n \"details\": {\n \"key_0\": \"\"\n }\n }\n ],\n \"creditsConsumed\": \"\"\n },\n \"hasErrors\": \"\"\n}", "cookie": [], "_postman_previewlanguage": "json" }, { "name": "Missing or invalid API key. Both `xtkt_live_` (production) and `xtkt_test_`\n(sandbox) prefixes are accepted, but the key must also be valid and active.", "originalRequest": { "url": { "path": [ "api", "v1", "document-jobs", ":jobId" ], "host": [ "{{baseUrl}}" ], "query": [], "variable": [ { "disabled": false, "description": { "content": "(Required) ", "type": "text/plain" }, "type": "any", "value": "", "key": "jobId" } ] }, "header": [ { "key": "Accept", "value": "application/problem+json" }, { "description": { "content": "Added as a part of security scheme: bearer", "type": "text/plain" }, "key": "Authorization", "value": "Bearer " } ], "method": "GET", "body": {} }, "status": "Unauthorized", "code": 401, "header": [ { "key": "Content-Type", "value": "application/problem+json" } ], "body": "{\n \"type\": \"\",\n \"title\": \"\",\n \"status\": \"\",\n \"detail\": \"\",\n \"instance\": \"\",\n \"code\": \"\",\n \"correlationId\": \"\",\n \"retryable\": \"\",\n \"field\": \"\",\n \"errors\": [\n {\n \"code\": \"\",\n \"message\": \"\",\n \"field\": \"\",\n \"retryable\": \"\",\n \"details\": null\n },\n {\n \"code\": \"\",\n \"message\": \"\",\n \"field\": \"\",\n \"retryable\": \"\",\n \"details\": null\n }\n ]\n}", "cookie": [], "_postman_previewlanguage": "json" }, { "name": "The key is valid but not allowed to make this request. A sandbox key\n(`xtkt_test_`) is refused with `code` `environment.sandbox_route_unavailable`\non every route outside the sandbox set, and on `POST /api/v1/document-jobs`\nfor an unsupported operation or any `templateId`. See **Sandbox** in the\nAPI description.", "originalRequest": { "url": { "path": [ "api", "v1", "document-jobs", ":jobId" ], "host": [ "{{baseUrl}}" ], "query": [], "variable": [ { "disabled": false, "description": { "content": "(Required) ", "type": "text/plain" }, "type": "any", "value": "", "key": "jobId" } ] }, "header": [ { "key": "Accept", "value": "application/problem+json" }, { "description": { "content": "Added as a part of security scheme: bearer", "type": "text/plain" }, "key": "Authorization", "value": "Bearer " } ], "method": "GET", "body": {} }, "status": "Forbidden", "code": 403, "header": [ { "key": "Content-Type", "value": "application/problem+json" } ], "body": "{\n \"type\": \"\",\n \"title\": \"\",\n \"status\": \"\",\n \"detail\": \"\",\n \"instance\": \"\",\n \"code\": \"\",\n \"correlationId\": \"\",\n \"retryable\": \"\",\n \"field\": \"\",\n \"errors\": [\n {\n \"code\": \"\",\n \"message\": \"\",\n \"field\": \"\",\n \"retryable\": \"\",\n \"details\": null\n },\n {\n \"code\": \"\",\n \"message\": \"\",\n \"field\": \"\",\n \"retryable\": \"\",\n \"details\": null\n }\n ]\n}", "cookie": [], "_postman_previewlanguage": "json" }, { "name": "No job with that id in this tenant.", "originalRequest": { "url": { "path": [ "api", "v1", "document-jobs", ":jobId" ], "host": [ "{{baseUrl}}" ], "query": [], "variable": [ { "disabled": false, "description": { "content": "(Required) ", "type": "text/plain" }, "type": "any", "value": "", "key": "jobId" } ] }, "header": [ { "key": "Accept", "value": "application/json" }, { "description": { "content": "Added as a part of security scheme: bearer", "type": "text/plain" }, "key": "Authorization", "value": "Bearer " } ], "method": "GET", "body": {} }, "status": "Not Found", "code": 404, "header": [ { "key": "Content-Type", "value": "application/json" } ], "body": "{\n \"data\": {\n \"key_0\": \"string\",\n \"key_1\": 8935,\n \"key_2\": 7067.274549044669,\n \"key_3\": 6605.237934272736\n },\n \"meta\": {\n \"httpStatusCode\": \"\",\n \"messages\": [\n \"\",\n \"\"\n ],\n \"errors\": [\n {\n \"code\": \"\",\n \"message\": \"\",\n \"retryable\": \"\",\n \"field\": \"\",\n \"details\": {\n \"key_0\": \"\",\n \"key_1\": \"\",\n \"key_2\": \"\",\n \"key_3\": \"\"\n }\n },\n {\n \"code\": \"\",\n \"message\": \"\",\n \"retryable\": \"\",\n \"field\": \"\",\n \"details\": {\n \"key_0\": \"\"\n }\n }\n ],\n \"creditsConsumed\": \"\"\n },\n \"hasErrors\": \"\"\n}", "cookie": [], "_postman_previewlanguage": "json" }, { "name": "The request conflicts with the current state of what it acts on.", "originalRequest": { "url": { "path": [ "api", "v1", "document-jobs", ":jobId" ], "host": [ "{{baseUrl}}" ], "query": [], "variable": [ { "disabled": false, "description": { "content": "(Required) ", "type": "text/plain" }, "type": "any", "value": "", "key": "jobId" } ] }, "header": [ { "key": "Accept", "value": "application/problem+json" }, { "description": { "content": "Added as a part of security scheme: bearer", "type": "text/plain" }, "key": "Authorization", "value": "Bearer " } ], "method": "GET", "body": {} }, "status": "Conflict", "code": 409, "header": [ { "key": "Content-Type", "value": "application/problem+json" } ], "body": "{\n \"type\": \"\",\n \"title\": \"\",\n \"status\": \"\",\n \"detail\": \"\",\n \"instance\": \"\",\n \"code\": \"\",\n \"correlationId\": \"\",\n \"retryable\": \"\",\n \"field\": \"\",\n \"errors\": [\n {\n \"code\": \"\",\n \"message\": \"\",\n \"field\": \"\",\n \"retryable\": \"\",\n \"details\": null\n },\n {\n \"code\": \"\",\n \"message\": \"\",\n \"field\": \"\",\n \"retryable\": \"\",\n \"details\": null\n }\n ]\n}", "cookie": [], "_postman_previewlanguage": "json" }, { "name": "Over 50 requests in the current 1-minute window for this key.", "originalRequest": { "url": { "path": [ "api", "v1", "document-jobs", ":jobId" ], "host": [ "{{baseUrl}}" ], "query": [], "variable": [ { "disabled": false, "description": { "content": "(Required) ", "type": "text/plain" }, "type": "any", "value": "", "key": "jobId" } ] }, "header": [ { "key": "Accept", "value": "application/problem+json" }, { "description": { "content": "Added as a part of security scheme: bearer", "type": "text/plain" }, "key": "Authorization", "value": "Bearer " } ], "method": "GET", "body": {} }, "status": "Too Many Requests", "code": 429, "header": [ { "key": "Content-Type", "value": "application/problem+json" }, { "disabled": false, "description": { "content": "Seconds until the window resets.", "type": "text/plain" }, "key": "Retry-After", "value": "" } ], "body": "{\n \"type\": \"\",\n \"title\": \"\",\n \"status\": \"\",\n \"detail\": \"\",\n \"instance\": \"\",\n \"code\": \"\",\n \"correlationId\": \"\",\n \"retryable\": \"\",\n \"field\": \"\",\n \"errors\": [\n {\n \"code\": \"\",\n \"message\": \"\",\n \"field\": \"\",\n \"retryable\": \"\",\n \"details\": null\n },\n {\n \"code\": \"\",\n \"message\": \"\",\n \"field\": \"\",\n \"retryable\": \"\",\n \"details\": null\n }\n ]\n}", "cookie": [], "_postman_previewlanguage": "json" }, { "name": "Unexpected failure. `correlationId` identifies the request — quote it when\nyou contact support.", "originalRequest": { "url": { "path": [ "api", "v1", "document-jobs", ":jobId" ], "host": [ "{{baseUrl}}" ], "query": [], "variable": [ { "disabled": false, "description": { "content": "(Required) ", "type": "text/plain" }, "type": "any", "value": "", "key": "jobId" } ] }, "header": [ { "key": "Accept", "value": "application/problem+json" }, { "description": { "content": "Added as a part of security scheme: bearer", "type": "text/plain" }, "key": "Authorization", "value": "Bearer " } ], "method": "GET", "body": {} }, "status": "Internal Server Error", "code": 500, "header": [ { "key": "Content-Type", "value": "application/problem+json" } ], "body": "{\n \"type\": \"\",\n \"title\": \"\",\n \"status\": \"\",\n \"detail\": \"\",\n \"instance\": \"\",\n \"code\": \"\",\n \"correlationId\": \"\",\n \"retryable\": \"\",\n \"field\": \"\",\n \"errors\": [\n {\n \"code\": \"\",\n \"message\": \"\",\n \"field\": \"\",\n \"retryable\": \"\",\n \"details\": null\n },\n {\n \"code\": \"\",\n \"message\": \"\",\n \"field\": \"\",\n \"retryable\": \"\",\n \"details\": null\n }\n ]\n}", "cookie": [], "_postman_previewlanguage": "json" } ], "event": [], "protocolProfileBehavior": { "disableBodyPruning": true } }, { "name": "cancel", "description": "", "item": [ { "name": "Cancel a document job", "request": { "name": "Cancel a document job", "description": {}, "url": { "path": [ "api", "v1", "document-jobs", ":jobId", "cancel" ], "host": [ "{{baseUrl}}" ], "query": [], "variable": [ { "type": "any", "value": "", "key": "jobId", "disabled": false, "description": { "content": "(Required) ", "type": "text/plain" } } ] }, "header": [ { "key": "Accept", "value": "application/json" } ], "method": "POST", "body": {}, "auth": null }, "response": [ { "name": "Cancellation requested.", "originalRequest": { "url": { "path": [ "api", "v1", "document-jobs", ":jobId", "cancel" ], "host": [ "{{baseUrl}}" ], "query": [], "variable": [ { "disabled": false, "description": { "content": "(Required) ", "type": "text/plain" }, "type": "any", "value": "", "key": "jobId" } ] }, "header": [ { "key": "Accept", "value": "application/json" }, { "description": { "content": "Added as a part of security scheme: bearer", "type": "text/plain" }, "key": "Authorization", "value": "Bearer " } ], "method": "POST", "body": {} }, "status": "Accepted", "code": 202, "header": [ { "key": "Content-Type", "value": "application/json" } ], "body": "{\n \"data\": {\n \"jobId\": \"\",\n \"cancellationRequested\": \"\"\n },\n \"meta\": {\n \"httpStatusCode\": \"\",\n \"messages\": [\n \"\",\n \"\"\n ],\n \"errors\": [\n {\n \"code\": \"\",\n \"message\": \"\",\n \"retryable\": \"\",\n \"field\": \"\",\n \"details\": {\n \"key_0\": \"\",\n \"key_1\": \"\"\n }\n },\n {\n \"code\": \"\",\n \"message\": \"\",\n \"retryable\": \"\",\n \"field\": \"\",\n \"details\": null\n }\n ],\n \"creditsConsumed\": \"\"\n },\n \"hasErrors\": \"\"\n}", "cookie": [], "_postman_previewlanguage": "json" }, { "name": "The request is invalid. Refused before processing — malformed or unsafe — it\nis a problem document; refused by processing itself, such as a missing file,\nit is the service envelope with the reason in `meta.errors`.", "originalRequest": { "url": { "path": [ "api", "v1", "document-jobs", ":jobId", "cancel" ], "host": [ "{{baseUrl}}" ], "query": [], "variable": [ { "disabled": false, "description": { "content": "(Required) ", "type": "text/plain" }, "type": "any", "value": "", "key": "jobId" } ] }, "header": [ { "key": "Accept", "value": "application/problem+json" }, { "description": { "content": "Added as a part of security scheme: bearer", "type": "text/plain" }, "key": "Authorization", "value": "Bearer " } ], "method": "POST", "body": {} }, "status": "Bad Request", "code": 400, "header": [ { "key": "Content-Type", "value": "application/json" } ], "body": "{\n \"data\": {\n \"key_0\": \"string\",\n \"key_1\": 8935,\n \"key_2\": 7067.274549044669,\n \"key_3\": 6605.237934272736\n },\n \"meta\": {\n \"httpStatusCode\": \"\",\n \"messages\": [\n \"\",\n \"\"\n ],\n \"errors\": [\n {\n \"code\": \"\",\n \"message\": \"\",\n \"retryable\": \"\",\n \"field\": \"\",\n \"details\": {\n \"key_0\": \"\",\n \"key_1\": \"\",\n \"key_2\": \"\",\n \"key_3\": \"\"\n }\n },\n {\n \"code\": \"\",\n \"message\": \"\",\n \"retryable\": \"\",\n \"field\": \"\",\n \"details\": {\n \"key_0\": \"\"\n }\n }\n ],\n \"creditsConsumed\": \"\"\n },\n \"hasErrors\": \"\"\n}", "cookie": [], "_postman_previewlanguage": "json" }, { "name": "Missing or invalid API key. Both `xtkt_live_` (production) and `xtkt_test_`\n(sandbox) prefixes are accepted, but the key must also be valid and active.", "originalRequest": { "url": { "path": [ "api", "v1", "document-jobs", ":jobId", "cancel" ], "host": [ "{{baseUrl}}" ], "query": [], "variable": [ { "disabled": false, "description": { "content": "(Required) ", "type": "text/plain" }, "type": "any", "value": "", "key": "jobId" } ] }, "header": [ { "key": "Accept", "value": "application/problem+json" }, { "description": { "content": "Added as a part of security scheme: bearer", "type": "text/plain" }, "key": "Authorization", "value": "Bearer " } ], "method": "POST", "body": {} }, "status": "Unauthorized", "code": 401, "header": [ { "key": "Content-Type", "value": "application/problem+json" } ], "body": "{\n \"type\": \"\",\n \"title\": \"\",\n \"status\": \"\",\n \"detail\": \"\",\n \"instance\": \"\",\n \"code\": \"\",\n \"correlationId\": \"\",\n \"retryable\": \"\",\n \"field\": \"\",\n \"errors\": [\n {\n \"code\": \"\",\n \"message\": \"\",\n \"field\": \"\",\n \"retryable\": \"\",\n \"details\": null\n },\n {\n \"code\": \"\",\n \"message\": \"\",\n \"field\": \"\",\n \"retryable\": \"\",\n \"details\": null\n }\n ]\n}", "cookie": [], "_postman_previewlanguage": "json" }, { "name": "The key is valid but not allowed to make this request. A sandbox key\n(`xtkt_test_`) is refused with `code` `environment.sandbox_route_unavailable`\non every route outside the sandbox set, and on `POST /api/v1/document-jobs`\nfor an unsupported operation or any `templateId`. See **Sandbox** in the\nAPI description.", "originalRequest": { "url": { "path": [ "api", "v1", "document-jobs", ":jobId", "cancel" ], "host": [ "{{baseUrl}}" ], "query": [], "variable": [ { "disabled": false, "description": { "content": "(Required) ", "type": "text/plain" }, "type": "any", "value": "", "key": "jobId" } ] }, "header": [ { "key": "Accept", "value": "application/problem+json" }, { "description": { "content": "Added as a part of security scheme: bearer", "type": "text/plain" }, "key": "Authorization", "value": "Bearer " } ], "method": "POST", "body": {} }, "status": "Forbidden", "code": 403, "header": [ { "key": "Content-Type", "value": "application/problem+json" } ], "body": "{\n \"type\": \"\",\n \"title\": \"\",\n \"status\": \"\",\n \"detail\": \"\",\n \"instance\": \"\",\n \"code\": \"\",\n \"correlationId\": \"\",\n \"retryable\": \"\",\n \"field\": \"\",\n \"errors\": [\n {\n \"code\": \"\",\n \"message\": \"\",\n \"field\": \"\",\n \"retryable\": \"\",\n \"details\": null\n },\n {\n \"code\": \"\",\n \"message\": \"\",\n \"field\": \"\",\n \"retryable\": \"\",\n \"details\": null\n }\n ]\n}", "cookie": [], "_postman_previewlanguage": "json" }, { "name": "Nothing answers at this address for this tenant.", "originalRequest": { "url": { "path": [ "api", "v1", "document-jobs", ":jobId", "cancel" ], "host": [ "{{baseUrl}}" ], "query": [], "variable": [ { "disabled": false, "description": { "content": "(Required) ", "type": "text/plain" }, "type": "any", "value": "", "key": "jobId" } ] }, "header": [ { "key": "Accept", "value": "application/problem+json" }, { "description": { "content": "Added as a part of security scheme: bearer", "type": "text/plain" }, "key": "Authorization", "value": "Bearer " } ], "method": "POST", "body": {} }, "status": "Not Found", "code": 404, "header": [ { "key": "Content-Type", "value": "application/problem+json" } ], "body": "{\n \"type\": \"\",\n \"title\": \"\",\n \"status\": \"\",\n \"detail\": \"\",\n \"instance\": \"\",\n \"code\": \"\",\n \"correlationId\": \"\",\n \"retryable\": \"\",\n \"field\": \"\",\n \"errors\": [\n {\n \"code\": \"\",\n \"message\": \"\",\n \"field\": \"\",\n \"retryable\": \"\",\n \"details\": null\n },\n {\n \"code\": \"\",\n \"message\": \"\",\n \"field\": \"\",\n \"retryable\": \"\",\n \"details\": null\n }\n ]\n}", "cookie": [], "_postman_previewlanguage": "json" }, { "name": "The job does not exist or can no longer be cancelled.", "originalRequest": { "url": { "path": [ "api", "v1", "document-jobs", ":jobId", "cancel" ], "host": [ "{{baseUrl}}" ], "query": [], "variable": [ { "disabled": false, "description": { "content": "(Required) ", "type": "text/plain" }, "type": "any", "value": "", "key": "jobId" } ] }, "header": [ { "key": "Accept", "value": "application/json" }, { "description": { "content": "Added as a part of security scheme: bearer", "type": "text/plain" }, "key": "Authorization", "value": "Bearer " } ], "method": "POST", "body": {} }, "status": "Conflict", "code": 409, "header": [ { "key": "Content-Type", "value": "application/json" } ], "body": "{\n \"data\": {\n \"key_0\": \"string\",\n \"key_1\": 8935,\n \"key_2\": 7067.274549044669,\n \"key_3\": 6605.237934272736\n },\n \"meta\": {\n \"httpStatusCode\": \"\",\n \"messages\": [\n \"\",\n \"\"\n ],\n \"errors\": [\n {\n \"code\": \"\",\n \"message\": \"\",\n \"retryable\": \"\",\n \"field\": \"\",\n \"details\": {\n \"key_0\": \"\",\n \"key_1\": \"\",\n \"key_2\": \"\",\n \"key_3\": \"\"\n }\n },\n {\n \"code\": \"\",\n \"message\": \"\",\n \"retryable\": \"\",\n \"field\": \"\",\n \"details\": {\n \"key_0\": \"\"\n }\n }\n ],\n \"creditsConsumed\": \"\"\n },\n \"hasErrors\": \"\"\n}", "cookie": [], "_postman_previewlanguage": "json" }, { "name": "Over 50 requests in the current 1-minute window for this key.", "originalRequest": { "url": { "path": [ "api", "v1", "document-jobs", ":jobId", "cancel" ], "host": [ "{{baseUrl}}" ], "query": [], "variable": [ { "disabled": false, "description": { "content": "(Required) ", "type": "text/plain" }, "type": "any", "value": "", "key": "jobId" } ] }, "header": [ { "key": "Accept", "value": "application/problem+json" }, { "description": { "content": "Added as a part of security scheme: bearer", "type": "text/plain" }, "key": "Authorization", "value": "Bearer " } ], "method": "POST", "body": {} }, "status": "Too Many Requests", "code": 429, "header": [ { "key": "Content-Type", "value": "application/problem+json" }, { "disabled": false, "description": { "content": "Seconds until the window resets.", "type": "text/plain" }, "key": "Retry-After", "value": "" } ], "body": "{\n \"type\": \"\",\n \"title\": \"\",\n \"status\": \"\",\n \"detail\": \"\",\n \"instance\": \"\",\n \"code\": \"\",\n \"correlationId\": \"\",\n \"retryable\": \"\",\n \"field\": \"\",\n \"errors\": [\n {\n \"code\": \"\",\n \"message\": \"\",\n \"field\": \"\",\n \"retryable\": \"\",\n \"details\": null\n },\n {\n \"code\": \"\",\n \"message\": \"\",\n \"field\": \"\",\n \"retryable\": \"\",\n \"details\": null\n }\n ]\n}", "cookie": [], "_postman_previewlanguage": "json" }, { "name": "Unexpected failure. `correlationId` identifies the request — quote it when\nyou contact support.", "originalRequest": { "url": { "path": [ "api", "v1", "document-jobs", ":jobId", "cancel" ], "host": [ "{{baseUrl}}" ], "query": [], "variable": [ { "disabled": false, "description": { "content": "(Required) ", "type": "text/plain" }, "type": "any", "value": "", "key": "jobId" } ] }, "header": [ { "key": "Accept", "value": "application/problem+json" }, { "description": { "content": "Added as a part of security scheme: bearer", "type": "text/plain" }, "key": "Authorization", "value": "Bearer " } ], "method": "POST", "body": {} }, "status": "Internal Server Error", "code": 500, "header": [ { "key": "Content-Type", "value": "application/problem+json" } ], "body": "{\n \"type\": \"\",\n \"title\": \"\",\n \"status\": \"\",\n \"detail\": \"\",\n \"instance\": \"\",\n \"code\": \"\",\n \"correlationId\": \"\",\n \"retryable\": \"\",\n \"field\": \"\",\n \"errors\": [\n {\n \"code\": \"\",\n \"message\": \"\",\n \"field\": \"\",\n \"retryable\": \"\",\n \"details\": null\n },\n {\n \"code\": \"\",\n \"message\": \"\",\n \"field\": \"\",\n \"retryable\": \"\",\n \"details\": null\n }\n ]\n}", "cookie": [], "_postman_previewlanguage": "json" } ], "event": [], "protocolProfileBehavior": { "disableBodyPruning": true } } ] } ] } ] }, { "name": "templates", "description": "", "item": [ { "name": "List finished templates", "request": { "name": "List finished templates", "description": { "content": "Returns only finished templates belonging to the API key's tenant. Use an id from\nthis list as `templateId` when submitting an asynchronous Extraction job.\n", "type": "text/plain" }, "url": { "path": [ "api", "v1", "templates" ], "host": [ "{{baseUrl}}" ], "query": [ { "disabled": false, "description": { "content": "", "type": "text/plain" }, "key": "limit", "value": "50" }, { "disabled": false, "description": { "content": "The `nextCursor` returned by the preceding page.", "type": "text/plain" }, "key": "cursor", "value": "" } ], "variable": [] }, "header": [ { "key": "Accept", "value": "application/json" } ], "method": "GET", "body": {}, "auth": null }, "response": [ { "name": "Finished templates for the tenant.", "originalRequest": { "url": { "path": [ "api", "v1", "templates" ], "host": [ "{{baseUrl}}" ], "query": [ { "disabled": false, "description": { "content": "", "type": "text/plain" }, "key": "limit", "value": "50" }, { "disabled": false, "description": { "content": "The `nextCursor` returned by the preceding page.", "type": "text/plain" }, "key": "cursor", "value": "" } ], "variable": [] }, "header": [ { "key": "Accept", "value": "application/json" }, { "description": { "content": "Added as a part of security scheme: bearer", "type": "text/plain" }, "key": "Authorization", "value": "Bearer " } ], "method": "GET", "body": {} }, "status": "OK", "code": 200, "header": [ { "key": "Content-Type", "value": "application/json" } ], "body": "{\n \"data\": {\n \"templates\": [\n {\n \"id\": \"\",\n \"name\": \"\",\n \"status\": \"Finished\",\n \"description\": \"\"\n },\n {\n \"id\": \"\",\n \"name\": \"\",\n \"status\": \"Finished\",\n \"description\": \"\"\n }\n ],\n \"hasMore\": \"\",\n \"limit\": \"\",\n \"nextCursor\": \"\"\n },\n \"meta\": {\n \"httpStatusCode\": \"\",\n \"messages\": [\n \"\",\n \"\"\n ],\n \"errors\": [\n {\n \"code\": \"\",\n \"message\": \"\",\n \"retryable\": \"\",\n \"field\": \"\",\n \"details\": null\n },\n {\n \"code\": \"\",\n \"message\": \"\",\n \"retryable\": \"\",\n \"field\": \"\",\n \"details\": {\n \"key_0\": \"\",\n \"key_1\": \"\"\n }\n }\n ],\n \"creditsConsumed\": \"\"\n },\n \"hasErrors\": \"\"\n}", "cookie": [], "_postman_previewlanguage": "json" }, { "name": "The request is invalid. Refused before processing — malformed or unsafe — it\nis a problem document; refused by processing itself, such as a missing file,\nit is the service envelope with the reason in `meta.errors`.", "originalRequest": { "url": { "path": [ "api", "v1", "templates" ], "host": [ "{{baseUrl}}" ], "query": [ { "disabled": false, "description": { "content": "", "type": "text/plain" }, "key": "limit", "value": "50" }, { "disabled": false, "description": { "content": "The `nextCursor` returned by the preceding page.", "type": "text/plain" }, "key": "cursor", "value": "" } ], "variable": [] }, "header": [ { "key": "Accept", "value": "application/problem+json" }, { "description": { "content": "Added as a part of security scheme: bearer", "type": "text/plain" }, "key": "Authorization", "value": "Bearer " } ], "method": "GET", "body": {} }, "status": "Bad Request", "code": 400, "header": [ { "key": "Content-Type", "value": "application/json" } ], "body": "{\n \"data\": {\n \"key_0\": \"string\",\n \"key_1\": 8935,\n \"key_2\": 7067.274549044669,\n \"key_3\": 6605.237934272736\n },\n \"meta\": {\n \"httpStatusCode\": \"\",\n \"messages\": [\n \"\",\n \"\"\n ],\n \"errors\": [\n {\n \"code\": \"\",\n \"message\": \"\",\n \"retryable\": \"\",\n \"field\": \"\",\n \"details\": {\n \"key_0\": \"\",\n \"key_1\": \"\",\n \"key_2\": \"\",\n \"key_3\": \"\"\n }\n },\n {\n \"code\": \"\",\n \"message\": \"\",\n \"retryable\": \"\",\n \"field\": \"\",\n \"details\": {\n \"key_0\": \"\"\n }\n }\n ],\n \"creditsConsumed\": \"\"\n },\n \"hasErrors\": \"\"\n}", "cookie": [], "_postman_previewlanguage": "json" }, { "name": "Missing or invalid API key. Both `xtkt_live_` (production) and `xtkt_test_`\n(sandbox) prefixes are accepted, but the key must also be valid and active.", "originalRequest": { "url": { "path": [ "api", "v1", "templates" ], "host": [ "{{baseUrl}}" ], "query": [ { "disabled": false, "description": { "content": "", "type": "text/plain" }, "key": "limit", "value": "50" }, { "disabled": false, "description": { "content": "The `nextCursor` returned by the preceding page.", "type": "text/plain" }, "key": "cursor", "value": "" } ], "variable": [] }, "header": [ { "key": "Accept", "value": "application/problem+json" }, { "description": { "content": "Added as a part of security scheme: bearer", "type": "text/plain" }, "key": "Authorization", "value": "Bearer " } ], "method": "GET", "body": {} }, "status": "Unauthorized", "code": 401, "header": [ { "key": "Content-Type", "value": "application/problem+json" } ], "body": "{\n \"type\": \"\",\n \"title\": \"\",\n \"status\": \"\",\n \"detail\": \"\",\n \"instance\": \"\",\n \"code\": \"\",\n \"correlationId\": \"\",\n \"retryable\": \"\",\n \"field\": \"\",\n \"errors\": [\n {\n \"code\": \"\",\n \"message\": \"\",\n \"field\": \"\",\n \"retryable\": \"\",\n \"details\": null\n },\n {\n \"code\": \"\",\n \"message\": \"\",\n \"field\": \"\",\n \"retryable\": \"\",\n \"details\": null\n }\n ]\n}", "cookie": [], "_postman_previewlanguage": "json" }, { "name": "The key is valid but not allowed to make this request. A sandbox key\n(`xtkt_test_`) is refused with `code` `environment.sandbox_route_unavailable`\non every route outside the sandbox set, and on `POST /api/v1/document-jobs`\nfor an unsupported operation or any `templateId`. See **Sandbox** in the\nAPI description.", "originalRequest": { "url": { "path": [ "api", "v1", "templates" ], "host": [ "{{baseUrl}}" ], "query": [ { "disabled": false, "description": { "content": "", "type": "text/plain" }, "key": "limit", "value": "50" }, { "disabled": false, "description": { "content": "The `nextCursor` returned by the preceding page.", "type": "text/plain" }, "key": "cursor", "value": "" } ], "variable": [] }, "header": [ { "key": "Accept", "value": "application/problem+json" }, { "description": { "content": "Added as a part of security scheme: bearer", "type": "text/plain" }, "key": "Authorization", "value": "Bearer " } ], "method": "GET", "body": {} }, "status": "Forbidden", "code": 403, "header": [ { "key": "Content-Type", "value": "application/problem+json" } ], "body": "{\n \"type\": \"\",\n \"title\": \"\",\n \"status\": \"\",\n \"detail\": \"\",\n \"instance\": \"\",\n \"code\": \"\",\n \"correlationId\": \"\",\n \"retryable\": \"\",\n \"field\": \"\",\n \"errors\": [\n {\n \"code\": \"\",\n \"message\": \"\",\n \"field\": \"\",\n \"retryable\": \"\",\n \"details\": null\n },\n {\n \"code\": \"\",\n \"message\": \"\",\n \"field\": \"\",\n \"retryable\": \"\",\n \"details\": null\n }\n ]\n}", "cookie": [], "_postman_previewlanguage": "json" }, { "name": "Nothing answers at this address for this tenant.", "originalRequest": { "url": { "path": [ "api", "v1", "templates" ], "host": [ "{{baseUrl}}" ], "query": [ { "disabled": false, "description": { "content": "", "type": "text/plain" }, "key": "limit", "value": "50" }, { "disabled": false, "description": { "content": "The `nextCursor` returned by the preceding page.", "type": "text/plain" }, "key": "cursor", "value": "" } ], "variable": [] }, "header": [ { "key": "Accept", "value": "application/problem+json" }, { "description": { "content": "Added as a part of security scheme: bearer", "type": "text/plain" }, "key": "Authorization", "value": "Bearer " } ], "method": "GET", "body": {} }, "status": "Not Found", "code": 404, "header": [ { "key": "Content-Type", "value": "application/problem+json" } ], "body": "{\n \"type\": \"\",\n \"title\": \"\",\n \"status\": \"\",\n \"detail\": \"\",\n \"instance\": \"\",\n \"code\": \"\",\n \"correlationId\": \"\",\n \"retryable\": \"\",\n \"field\": \"\",\n \"errors\": [\n {\n \"code\": \"\",\n \"message\": \"\",\n \"field\": \"\",\n \"retryable\": \"\",\n \"details\": null\n },\n {\n \"code\": \"\",\n \"message\": \"\",\n \"field\": \"\",\n \"retryable\": \"\",\n \"details\": null\n }\n ]\n}", "cookie": [], "_postman_previewlanguage": "json" }, { "name": "The request conflicts with the current state of what it acts on.", "originalRequest": { "url": { "path": [ "api", "v1", "templates" ], "host": [ "{{baseUrl}}" ], "query": [ { "disabled": false, "description": { "content": "", "type": "text/plain" }, "key": "limit", "value": "50" }, { "disabled": false, "description": { "content": "The `nextCursor` returned by the preceding page.", "type": "text/plain" }, "key": "cursor", "value": "" } ], "variable": [] }, "header": [ { "key": "Accept", "value": "application/problem+json" }, { "description": { "content": "Added as a part of security scheme: bearer", "type": "text/plain" }, "key": "Authorization", "value": "Bearer " } ], "method": "GET", "body": {} }, "status": "Conflict", "code": 409, "header": [ { "key": "Content-Type", "value": "application/problem+json" } ], "body": "{\n \"type\": \"\",\n \"title\": \"\",\n \"status\": \"\",\n \"detail\": \"\",\n \"instance\": \"\",\n \"code\": \"\",\n \"correlationId\": \"\",\n \"retryable\": \"\",\n \"field\": \"\",\n \"errors\": [\n {\n \"code\": \"\",\n \"message\": \"\",\n \"field\": \"\",\n \"retryable\": \"\",\n \"details\": null\n },\n {\n \"code\": \"\",\n \"message\": \"\",\n \"field\": \"\",\n \"retryable\": \"\",\n \"details\": null\n }\n ]\n}", "cookie": [], "_postman_previewlanguage": "json" }, { "name": "Over 50 requests in the current 1-minute window for this key.", "originalRequest": { "url": { "path": [ "api", "v1", "templates" ], "host": [ "{{baseUrl}}" ], "query": [ { "disabled": false, "description": { "content": "", "type": "text/plain" }, "key": "limit", "value": "50" }, { "disabled": false, "description": { "content": "The `nextCursor` returned by the preceding page.", "type": "text/plain" }, "key": "cursor", "value": "" } ], "variable": [] }, "header": [ { "key": "Accept", "value": "application/problem+json" }, { "description": { "content": "Added as a part of security scheme: bearer", "type": "text/plain" }, "key": "Authorization", "value": "Bearer " } ], "method": "GET", "body": {} }, "status": "Too Many Requests", "code": 429, "header": [ { "key": "Content-Type", "value": "application/problem+json" }, { "disabled": false, "description": { "content": "Seconds until the window resets.", "type": "text/plain" }, "key": "Retry-After", "value": "" } ], "body": "{\n \"type\": \"\",\n \"title\": \"\",\n \"status\": \"\",\n \"detail\": \"\",\n \"instance\": \"\",\n \"code\": \"\",\n \"correlationId\": \"\",\n \"retryable\": \"\",\n \"field\": \"\",\n \"errors\": [\n {\n \"code\": \"\",\n \"message\": \"\",\n \"field\": \"\",\n \"retryable\": \"\",\n \"details\": null\n },\n {\n \"code\": \"\",\n \"message\": \"\",\n \"field\": \"\",\n \"retryable\": \"\",\n \"details\": null\n }\n ]\n}", "cookie": [], "_postman_previewlanguage": "json" }, { "name": "Unexpected failure. `correlationId` identifies the request — quote it when\nyou contact support.", "originalRequest": { "url": { "path": [ "api", "v1", "templates" ], "host": [ "{{baseUrl}}" ], "query": [ { "disabled": false, "description": { "content": "", "type": "text/plain" }, "key": "limit", "value": "50" }, { "disabled": false, "description": { "content": "The `nextCursor` returned by the preceding page.", "type": "text/plain" }, "key": "cursor", "value": "" } ], "variable": [] }, "header": [ { "key": "Accept", "value": "application/problem+json" }, { "description": { "content": "Added as a part of security scheme: bearer", "type": "text/plain" }, "key": "Authorization", "value": "Bearer " } ], "method": "GET", "body": {} }, "status": "Internal Server Error", "code": 500, "header": [ { "key": "Content-Type", "value": "application/problem+json" } ], "body": "{\n \"type\": \"\",\n \"title\": \"\",\n \"status\": \"\",\n \"detail\": \"\",\n \"instance\": \"\",\n \"code\": \"\",\n \"correlationId\": \"\",\n \"retryable\": \"\",\n \"field\": \"\",\n \"errors\": [\n {\n \"code\": \"\",\n \"message\": \"\",\n \"field\": \"\",\n \"retryable\": \"\",\n \"details\": null\n },\n {\n \"code\": \"\",\n \"message\": \"\",\n \"field\": \"\",\n \"retryable\": \"\",\n \"details\": null\n }\n ]\n}", "cookie": [], "_postman_previewlanguage": "json" } ], "event": [], "protocolProfileBehavior": { "disableBodyPruning": true } } ] }, { "name": "webhook-endpoints", "description": "", "item": [ { "name": "List webhook endpoints", "request": { "name": "List webhook endpoints", "description": { "content": "Every endpoint registered for the tenant. A signing secret is never returned\nhere — only by the create, and by an update that changed the `url`. The\ncustom `headers` are returned, which is why listing needs the same scope as\nwriting.\n", "type": "text/plain" }, "url": { "path": [ "api", "v1", "webhook-endpoints" ], "host": [ "{{baseUrl}}" ], "query": [], "variable": [] }, "header": [ { "key": "Accept", "value": "application/json" } ], "method": "GET", "body": {}, "auth": null }, "response": [ { "name": "The tenant's endpoints.", "originalRequest": { "url": { "path": [ "api", "v1", "webhook-endpoints" ], "host": [ "{{baseUrl}}" ], "query": [], "variable": [] }, "header": [ { "key": "Accept", "value": "application/json" }, { "description": { "content": "Added as a part of security scheme: bearer", "type": "text/plain" }, "key": "Authorization", "value": "Bearer " } ], "method": "GET", "body": {} }, "status": "OK", "code": 200, "header": [ { "key": "Content-Type", "value": "application/json" } ], "body": "{\n \"data\": {\n \"endpoints\": [\n {\n \"id\": \"\",\n \"name\": \"\",\n \"url\": \"\",\n \"events\": [\n \"split.failed\",\n \"facematch.failed\"\n ],\n \"isActive\": \"\",\n \"createdWhen\": \"\",\n \"headers\": null,\n \"body\": \"\",\n \"environment\": \"production\",\n \"changedWhen\": \"\",\n \"secret\": \"\"\n },\n {\n \"id\": \"\",\n \"name\": \"\",\n \"url\": \"\",\n \"events\": [\n \"split.failed\",\n \"classifier.processed\"\n ],\n \"isActive\": \"\",\n \"createdWhen\": \"\",\n \"headers\": null,\n \"body\": \"\",\n \"environment\": \"sandbox\",\n \"changedWhen\": \"\",\n \"secret\": \"\"\n }\n ]\n },\n \"meta\": {\n \"httpStatusCode\": \"\",\n \"messages\": [\n \"\",\n \"\"\n ],\n \"errors\": [\n {\n \"code\": \"\",\n \"message\": \"\",\n \"retryable\": \"\",\n \"field\": \"\",\n \"details\": null\n },\n {\n \"code\": \"\",\n \"message\": \"\",\n \"retryable\": \"\",\n \"field\": \"\",\n \"details\": {\n \"key_0\": \"\",\n \"key_1\": \"\"\n }\n }\n ],\n \"creditsConsumed\": \"\"\n },\n \"hasErrors\": \"\"\n}", "cookie": [], "_postman_previewlanguage": "json" }, { "name": "Invalid request — a `url` that is not absolute HTTPS on a public address, no\nevents, an unknown event, or a missing `Idempotency-Key`. `code` says which.", "originalRequest": { "url": { "path": [ "api", "v1", "webhook-endpoints" ], "host": [ "{{baseUrl}}" ], "query": [], "variable": [] }, "header": [ { "key": "Accept", "value": "application/problem+json" }, { "description": { "content": "Added as a part of security scheme: bearer", "type": "text/plain" }, "key": "Authorization", "value": "Bearer " } ], "method": "GET", "body": {} }, "status": "Bad Request", "code": 400, "header": [ { "key": "Content-Type", "value": "application/problem+json" } ], "body": "{\n \"type\": \"\",\n \"title\": \"\",\n \"status\": \"\",\n \"detail\": \"\",\n \"instance\": \"\",\n \"code\": \"\",\n \"correlationId\": \"\",\n \"retryable\": \"\",\n \"field\": \"\",\n \"errors\": [\n {\n \"code\": \"\",\n \"message\": \"\",\n \"field\": \"\",\n \"retryable\": \"\",\n \"details\": null\n },\n {\n \"code\": \"\",\n \"message\": \"\",\n \"field\": \"\",\n \"retryable\": \"\",\n \"details\": null\n }\n ]\n}", "cookie": [], "_postman_previewlanguage": "json" }, { "name": "Missing, invalid or inactive API key.", "originalRequest": { "url": { "path": [ "api", "v1", "webhook-endpoints" ], "host": [ "{{baseUrl}}" ], "query": [], "variable": [] }, "header": [ { "key": "Accept", "value": "application/problem+json" }, { "description": { "content": "Added as a part of security scheme: bearer", "type": "text/plain" }, "key": "Authorization", "value": "Bearer " } ], "method": "GET", "body": {} }, "status": "Unauthorized", "code": 401, "header": [ { "key": "Content-Type", "value": "application/problem+json" } ], "body": "{\n \"type\": \"\",\n \"title\": \"\",\n \"status\": \"\",\n \"detail\": \"\",\n \"instance\": \"\",\n \"code\": \"\",\n \"correlationId\": \"\",\n \"retryable\": \"\",\n \"field\": \"\",\n \"errors\": [\n {\n \"code\": \"\",\n \"message\": \"\",\n \"field\": \"\",\n \"retryable\": \"\",\n \"details\": null\n },\n {\n \"code\": \"\",\n \"message\": \"\",\n \"field\": \"\",\n \"retryable\": \"\",\n \"details\": null\n }\n ]\n}", "cookie": [], "_postman_previewlanguage": "json" }, { "name": "The key cannot manage webhook endpoints. `webhook.scope_required`: it lacks\n`webhooks.manage` (or `*`). `webhook.production_key_required`: it is not a\nproduction key — endpoints receive production events only.", "originalRequest": { "url": { "path": [ "api", "v1", "webhook-endpoints" ], "host": [ "{{baseUrl}}" ], "query": [], "variable": [] }, "header": [ { "key": "Accept", "value": "application/problem+json" }, { "description": { "content": "Added as a part of security scheme: bearer", "type": "text/plain" }, "key": "Authorization", "value": "Bearer " } ], "method": "GET", "body": {} }, "status": "Forbidden", "code": 403, "header": [ { "key": "Content-Type", "value": "application/problem+json" } ], "body": "{\n \"type\": \"\",\n \"title\": \"\",\n \"status\": \"\",\n \"detail\": \"\",\n \"instance\": \"\",\n \"code\": \"\",\n \"correlationId\": \"\",\n \"retryable\": \"\",\n \"field\": \"\",\n \"errors\": [\n {\n \"code\": \"\",\n \"message\": \"\",\n \"field\": \"\",\n \"retryable\": \"\",\n \"details\": null\n },\n {\n \"code\": \"\",\n \"message\": \"\",\n \"field\": \"\",\n \"retryable\": \"\",\n \"details\": null\n }\n ]\n}", "cookie": [], "_postman_previewlanguage": "json" }, { "name": "No endpoint with that id in this tenant.", "originalRequest": { "url": { "path": [ "api", "v1", "webhook-endpoints" ], "host": [ "{{baseUrl}}" ], "query": [], "variable": [] }, "header": [ { "key": "Accept", "value": "application/problem+json" }, { "description": { "content": "Added as a part of security scheme: bearer", "type": "text/plain" }, "key": "Authorization", "value": "Bearer " } ], "method": "GET", "body": {} }, "status": "Not Found", "code": 404, "header": [ { "key": "Content-Type", "value": "application/problem+json" } ], "body": "{\n \"type\": \"\",\n \"title\": \"\",\n \"status\": \"\",\n \"detail\": \"\",\n \"instance\": \"\",\n \"code\": \"\",\n \"correlationId\": \"\",\n \"retryable\": \"\",\n \"field\": \"\",\n \"errors\": [\n {\n \"code\": \"\",\n \"message\": \"\",\n \"field\": \"\",\n \"retryable\": \"\",\n \"details\": null\n },\n {\n \"code\": \"\",\n \"message\": \"\",\n \"field\": \"\",\n \"retryable\": \"\",\n \"details\": null\n }\n ]\n}", "cookie": [], "_postman_previewlanguage": "json" }, { "name": "The `Idempotency-Key` was used with a different body (`idempotency_key_reused`),\nor the first request with it is still in progress (`idempotency_in_progress`,\nretryable, with `Retry-After`).", "originalRequest": { "url": { "path": [ "api", "v1", "webhook-endpoints" ], "host": [ "{{baseUrl}}" ], "query": [], "variable": [] }, "header": [ { "key": "Accept", "value": "application/problem+json" }, { "description": { "content": "Added as a part of security scheme: bearer", "type": "text/plain" }, "key": "Authorization", "value": "Bearer " } ], "method": "GET", "body": {} }, "status": "Conflict", "code": 409, "header": [ { "key": "Content-Type", "value": "application/problem+json" } ], "body": "{\n \"type\": \"\",\n \"title\": \"\",\n \"status\": \"\",\n \"detail\": \"\",\n \"instance\": \"\",\n \"code\": \"\",\n \"correlationId\": \"\",\n \"retryable\": \"\",\n \"field\": \"\",\n \"errors\": [\n {\n \"code\": \"\",\n \"message\": \"\",\n \"field\": \"\",\n \"retryable\": \"\",\n \"details\": null\n },\n {\n \"code\": \"\",\n \"message\": \"\",\n \"field\": \"\",\n \"retryable\": \"\",\n \"details\": null\n }\n ]\n}", "cookie": [], "_postman_previewlanguage": "json" }, { "name": "Over 50 requests in the current 1-minute window for this key.", "originalRequest": { "url": { "path": [ "api", "v1", "webhook-endpoints" ], "host": [ "{{baseUrl}}" ], "query": [], "variable": [] }, "header": [ { "key": "Accept", "value": "application/problem+json" }, { "description": { "content": "Added as a part of security scheme: bearer", "type": "text/plain" }, "key": "Authorization", "value": "Bearer " } ], "method": "GET", "body": {} }, "status": "Too Many Requests", "code": 429, "header": [ { "key": "Content-Type", "value": "application/problem+json" } ], "body": "{\n \"type\": \"\",\n \"title\": \"\",\n \"status\": \"\",\n \"detail\": \"\",\n \"instance\": \"\",\n \"code\": \"\",\n \"correlationId\": \"\",\n \"retryable\": \"\",\n \"field\": \"\",\n \"errors\": [\n {\n \"code\": \"\",\n \"message\": \"\",\n \"field\": \"\",\n \"retryable\": \"\",\n \"details\": null\n },\n {\n \"code\": \"\",\n \"message\": \"\",\n \"field\": \"\",\n \"retryable\": \"\",\n \"details\": null\n }\n ]\n}", "cookie": [], "_postman_previewlanguage": "json" }, { "name": "Unexpected failure. Safe to retry a read; retry a write with the same `Idempotency-Key`.", "originalRequest": { "url": { "path": [ "api", "v1", "webhook-endpoints" ], "host": [ "{{baseUrl}}" ], "query": [], "variable": [] }, "header": [ { "key": "Accept", "value": "application/problem+json" }, { "description": { "content": "Added as a part of security scheme: bearer", "type": "text/plain" }, "key": "Authorization", "value": "Bearer " } ], "method": "GET", "body": {} }, "status": "Internal Server Error", "code": 500, "header": [ { "key": "Content-Type", "value": "application/problem+json" } ], "body": "{\n \"type\": \"\",\n \"title\": \"\",\n \"status\": \"\",\n \"detail\": \"\",\n \"instance\": \"\",\n \"code\": \"\",\n \"correlationId\": \"\",\n \"retryable\": \"\",\n \"field\": \"\",\n \"errors\": [\n {\n \"code\": \"\",\n \"message\": \"\",\n \"field\": \"\",\n \"retryable\": \"\",\n \"details\": null\n },\n {\n \"code\": \"\",\n \"message\": \"\",\n \"field\": \"\",\n \"retryable\": \"\",\n \"details\": null\n }\n ]\n}", "cookie": [], "_postman_previewlanguage": "json" } ], "event": [], "protocolProfileBehavior": { "disableBodyPruning": true } }, { "name": "Register a webhook endpoint", "request": { "name": "Register a webhook endpoint", "description": { "content": "Registers an endpoint and returns its signing secret. **This is the only\ntime the secret is shown** — store it before you close the response.\n\n`Idempotency-Key` is required. Repeating the request with the same key and\nbody returns the same endpoint and the same secret, with\n`Idempotency-Replayed: true`; the same key with a different body answers\n`409`.\n", "type": "text/plain" }, "url": { "path": [ "api", "v1", "webhook-endpoints" ], "host": [ "{{baseUrl}}" ], "query": [], "variable": [] }, "header": [ { "disabled": false, "description": { "content": "(Required) Your identifier for this write, so a retry cannot register or change an\nendpoint twice. Reuse it only to repeat the identical request. Kept for 24\nhours.\n", "type": "text/plain" }, "key": "Idempotency-Key", "value": "" }, { "key": "Content-Type", "value": "application/json" }, { "key": "Accept", "value": "application/json" } ], "method": "POST", "body": { "mode": "raw", "raw": "{\n \"name\": \"\",\n \"url\": \"\",\n \"events\": [\n \"classifier.processed\"\n ],\n \"headers\": null,\n \"body\": \"\"\n}", "options": { "raw": { "headerFamily": "json", "language": "json" } } }, "auth": null }, "response": [ { "name": "Registered.", "originalRequest": { "url": { "path": [ "api", "v1", "webhook-endpoints" ], "host": [ "{{baseUrl}}" ], "query": [], "variable": [] }, "header": [ { "disabled": false, "description": { "content": "(Required) Your identifier for this write, so a retry cannot register or change an\nendpoint twice. Reuse it only to repeat the identical request. Kept for 24\nhours.\n", "type": "text/plain" }, "key": "Idempotency-Key", "value": "" }, { "key": "Content-Type", "value": "application/json" }, { "key": "Accept", "value": "application/json" }, { "description": { "content": "Added as a part of security scheme: bearer", "type": "text/plain" }, "key": "Authorization", "value": "Bearer " } ], "method": "POST", "body": { "mode": "raw", "raw": "{\n \"name\": \"\",\n \"url\": \"\",\n \"events\": [\n \"classifier.processed\"\n ],\n \"headers\": null,\n \"body\": \"\"\n}", "options": { "raw": { "headerFamily": "json", "language": "json" } } } }, "status": "OK", "code": 200, "header": [ { "key": "Content-Type", "value": "application/json" }, { "disabled": false, "description": { "content": "Present when this answer is a replay of an earlier create. (This can only be one of true)", "type": "text/plain" }, "key": "Idempotency-Replayed", "value": "true" } ], "body": "{\n \"data\": {\n \"endpoint\": {\n \"id\": \"\",\n \"name\": \"\",\n \"url\": \"\",\n \"events\": [\n \"extract.failed\",\n \"crop.processed\"\n ],\n \"isActive\": \"\",\n \"createdWhen\": \"\",\n \"headers\": null,\n \"body\": \"\",\n \"environment\": \"production\",\n \"changedWhen\": \"\",\n \"secret\": \"\"\n },\n \"secret\": \"\"\n },\n \"meta\": {\n \"httpStatusCode\": \"\",\n \"messages\": [\n \"\",\n \"\"\n ],\n \"errors\": [\n {\n \"code\": \"\",\n \"message\": \"\",\n \"retryable\": \"\",\n \"field\": \"\",\n \"details\": null\n },\n {\n \"code\": \"\",\n \"message\": \"\",\n \"retryable\": \"\",\n \"field\": \"\",\n \"details\": null\n }\n ],\n \"creditsConsumed\": \"\"\n },\n \"hasErrors\": \"\"\n}", "cookie": [], "_postman_previewlanguage": "json" }, { "name": "Invalid request — a `url` that is not absolute HTTPS on a public address, no\nevents, an unknown event, or a missing `Idempotency-Key`. `code` says which.", "originalRequest": { "url": { "path": [ "api", "v1", "webhook-endpoints" ], "host": [ "{{baseUrl}}" ], "query": [], "variable": [] }, "header": [ { "disabled": false, "description": { "content": "(Required) Your identifier for this write, so a retry cannot register or change an\nendpoint twice. Reuse it only to repeat the identical request. Kept for 24\nhours.\n", "type": "text/plain" }, "key": "Idempotency-Key", "value": "" }, { "key": "Content-Type", "value": "application/json" }, { "key": "Accept", "value": "application/problem+json" }, { "description": { "content": "Added as a part of security scheme: bearer", "type": "text/plain" }, "key": "Authorization", "value": "Bearer " } ], "method": "POST", "body": { "mode": "raw", "raw": "{\n \"name\": \"\",\n \"url\": \"\",\n \"events\": [\n \"classifier.processed\"\n ],\n \"headers\": null,\n \"body\": \"\"\n}", "options": { "raw": { "headerFamily": "json", "language": "json" } } } }, "status": "Bad Request", "code": 400, "header": [ { "key": "Content-Type", "value": "application/problem+json" } ], "body": "{\n \"type\": \"\",\n \"title\": \"\",\n \"status\": \"\",\n \"detail\": \"\",\n \"instance\": \"\",\n \"code\": \"\",\n \"correlationId\": \"\",\n \"retryable\": \"\",\n \"field\": \"\",\n \"errors\": [\n {\n \"code\": \"\",\n \"message\": \"\",\n \"field\": \"\",\n \"retryable\": \"\",\n \"details\": null\n },\n {\n \"code\": \"\",\n \"message\": \"\",\n \"field\": \"\",\n \"retryable\": \"\",\n \"details\": null\n }\n ]\n}", "cookie": [], "_postman_previewlanguage": "json" }, { "name": "Missing, invalid or inactive API key.", "originalRequest": { "url": { "path": [ "api", "v1", "webhook-endpoints" ], "host": [ "{{baseUrl}}" ], "query": [], "variable": [] }, "header": [ { "disabled": false, "description": { "content": "(Required) Your identifier for this write, so a retry cannot register or change an\nendpoint twice. Reuse it only to repeat the identical request. Kept for 24\nhours.\n", "type": "text/plain" }, "key": "Idempotency-Key", "value": "" }, { "key": "Content-Type", "value": "application/json" }, { "key": "Accept", "value": "application/problem+json" }, { "description": { "content": "Added as a part of security scheme: bearer", "type": "text/plain" }, "key": "Authorization", "value": "Bearer " } ], "method": "POST", "body": { "mode": "raw", "raw": "{\n \"name\": \"\",\n \"url\": \"\",\n \"events\": [\n \"classifier.processed\"\n ],\n \"headers\": null,\n \"body\": \"\"\n}", "options": { "raw": { "headerFamily": "json", "language": "json" } } } }, "status": "Unauthorized", "code": 401, "header": [ { "key": "Content-Type", "value": "application/problem+json" } ], "body": "{\n \"type\": \"\",\n \"title\": \"\",\n \"status\": \"\",\n \"detail\": \"\",\n \"instance\": \"\",\n \"code\": \"\",\n \"correlationId\": \"\",\n \"retryable\": \"\",\n \"field\": \"\",\n \"errors\": [\n {\n \"code\": \"\",\n \"message\": \"\",\n \"field\": \"\",\n \"retryable\": \"\",\n \"details\": null\n },\n {\n \"code\": \"\",\n \"message\": \"\",\n \"field\": \"\",\n \"retryable\": \"\",\n \"details\": null\n }\n ]\n}", "cookie": [], "_postman_previewlanguage": "json" }, { "name": "The key cannot manage webhook endpoints. `webhook.scope_required`: it lacks\n`webhooks.manage` (or `*`). `webhook.production_key_required`: it is not a\nproduction key — endpoints receive production events only.", "originalRequest": { "url": { "path": [ "api", "v1", "webhook-endpoints" ], "host": [ "{{baseUrl}}" ], "query": [], "variable": [] }, "header": [ { "disabled": false, "description": { "content": "(Required) Your identifier for this write, so a retry cannot register or change an\nendpoint twice. Reuse it only to repeat the identical request. Kept for 24\nhours.\n", "type": "text/plain" }, "key": "Idempotency-Key", "value": "" }, { "key": "Content-Type", "value": "application/json" }, { "key": "Accept", "value": "application/problem+json" }, { "description": { "content": "Added as a part of security scheme: bearer", "type": "text/plain" }, "key": "Authorization", "value": "Bearer " } ], "method": "POST", "body": { "mode": "raw", "raw": "{\n \"name\": \"\",\n \"url\": \"\",\n \"events\": [\n \"classifier.processed\"\n ],\n \"headers\": null,\n \"body\": \"\"\n}", "options": { "raw": { "headerFamily": "json", "language": "json" } } } }, "status": "Forbidden", "code": 403, "header": [ { "key": "Content-Type", "value": "application/problem+json" } ], "body": "{\n \"type\": \"\",\n \"title\": \"\",\n \"status\": \"\",\n \"detail\": \"\",\n \"instance\": \"\",\n \"code\": \"\",\n \"correlationId\": \"\",\n \"retryable\": \"\",\n \"field\": \"\",\n \"errors\": [\n {\n \"code\": \"\",\n \"message\": \"\",\n \"field\": \"\",\n \"retryable\": \"\",\n \"details\": null\n },\n {\n \"code\": \"\",\n \"message\": \"\",\n \"field\": \"\",\n \"retryable\": \"\",\n \"details\": null\n }\n ]\n}", "cookie": [], "_postman_previewlanguage": "json" }, { "name": "No endpoint with that id in this tenant.", "originalRequest": { "url": { "path": [ "api", "v1", "webhook-endpoints" ], "host": [ "{{baseUrl}}" ], "query": [], "variable": [] }, "header": [ { "disabled": false, "description": { "content": "(Required) Your identifier for this write, so a retry cannot register or change an\nendpoint twice. Reuse it only to repeat the identical request. Kept for 24\nhours.\n", "type": "text/plain" }, "key": "Idempotency-Key", "value": "" }, { "key": "Content-Type", "value": "application/json" }, { "key": "Accept", "value": "application/problem+json" }, { "description": { "content": "Added as a part of security scheme: bearer", "type": "text/plain" }, "key": "Authorization", "value": "Bearer " } ], "method": "POST", "body": { "mode": "raw", "raw": "{\n \"name\": \"\",\n \"url\": \"\",\n \"events\": [\n \"classifier.processed\"\n ],\n \"headers\": null,\n \"body\": \"\"\n}", "options": { "raw": { "headerFamily": "json", "language": "json" } } } }, "status": "Not Found", "code": 404, "header": [ { "key": "Content-Type", "value": "application/problem+json" } ], "body": "{\n \"type\": \"\",\n \"title\": \"\",\n \"status\": \"\",\n \"detail\": \"\",\n \"instance\": \"\",\n \"code\": \"\",\n \"correlationId\": \"\",\n \"retryable\": \"\",\n \"field\": \"\",\n \"errors\": [\n {\n \"code\": \"\",\n \"message\": \"\",\n \"field\": \"\",\n \"retryable\": \"\",\n \"details\": null\n },\n {\n \"code\": \"\",\n \"message\": \"\",\n \"field\": \"\",\n \"retryable\": \"\",\n \"details\": null\n }\n ]\n}", "cookie": [], "_postman_previewlanguage": "json" }, { "name": "The `Idempotency-Key` was used with a different body (`idempotency_key_reused`),\nor the first request with it is still in progress (`idempotency_in_progress`,\nretryable, with `Retry-After`).", "originalRequest": { "url": { "path": [ "api", "v1", "webhook-endpoints" ], "host": [ "{{baseUrl}}" ], "query": [], "variable": [] }, "header": [ { "disabled": false, "description": { "content": "(Required) Your identifier for this write, so a retry cannot register or change an\nendpoint twice. Reuse it only to repeat the identical request. Kept for 24\nhours.\n", "type": "text/plain" }, "key": "Idempotency-Key", "value": "" }, { "key": "Content-Type", "value": "application/json" }, { "key": "Accept", "value": "application/problem+json" }, { "description": { "content": "Added as a part of security scheme: bearer", "type": "text/plain" }, "key": "Authorization", "value": "Bearer " } ], "method": "POST", "body": { "mode": "raw", "raw": "{\n \"name\": \"\",\n \"url\": \"\",\n \"events\": [\n \"classifier.processed\"\n ],\n \"headers\": null,\n \"body\": \"\"\n}", "options": { "raw": { "headerFamily": "json", "language": "json" } } } }, "status": "Conflict", "code": 409, "header": [ { "key": "Content-Type", "value": "application/problem+json" } ], "body": "{\n \"type\": \"\",\n \"title\": \"\",\n \"status\": \"\",\n \"detail\": \"\",\n \"instance\": \"\",\n \"code\": \"\",\n \"correlationId\": \"\",\n \"retryable\": \"\",\n \"field\": \"\",\n \"errors\": [\n {\n \"code\": \"\",\n \"message\": \"\",\n \"field\": \"\",\n \"retryable\": \"\",\n \"details\": null\n },\n {\n \"code\": \"\",\n \"message\": \"\",\n \"field\": \"\",\n \"retryable\": \"\",\n \"details\": null\n }\n ]\n}", "cookie": [], "_postman_previewlanguage": "json" }, { "name": "Over 50 requests in the current 1-minute window for this key.", "originalRequest": { "url": { "path": [ "api", "v1", "webhook-endpoints" ], "host": [ "{{baseUrl}}" ], "query": [], "variable": [] }, "header": [ { "disabled": false, "description": { "content": "(Required) Your identifier for this write, so a retry cannot register or change an\nendpoint twice. Reuse it only to repeat the identical request. Kept for 24\nhours.\n", "type": "text/plain" }, "key": "Idempotency-Key", "value": "" }, { "key": "Content-Type", "value": "application/json" }, { "key": "Accept", "value": "application/problem+json" }, { "description": { "content": "Added as a part of security scheme: bearer", "type": "text/plain" }, "key": "Authorization", "value": "Bearer " } ], "method": "POST", "body": { "mode": "raw", "raw": "{\n \"name\": \"\",\n \"url\": \"\",\n \"events\": [\n \"classifier.processed\"\n ],\n \"headers\": null,\n \"body\": \"\"\n}", "options": { "raw": { "headerFamily": "json", "language": "json" } } } }, "status": "Too Many Requests", "code": 429, "header": [ { "key": "Content-Type", "value": "application/problem+json" } ], "body": "{\n \"type\": \"\",\n \"title\": \"\",\n \"status\": \"\",\n \"detail\": \"\",\n \"instance\": \"\",\n \"code\": \"\",\n \"correlationId\": \"\",\n \"retryable\": \"\",\n \"field\": \"\",\n \"errors\": [\n {\n \"code\": \"\",\n \"message\": \"\",\n \"field\": \"\",\n \"retryable\": \"\",\n \"details\": null\n },\n {\n \"code\": \"\",\n \"message\": \"\",\n \"field\": \"\",\n \"retryable\": \"\",\n \"details\": null\n }\n ]\n}", "cookie": [], "_postman_previewlanguage": "json" }, { "name": "Unexpected failure. Safe to retry a read; retry a write with the same `Idempotency-Key`.", "originalRequest": { "url": { "path": [ "api", "v1", "webhook-endpoints" ], "host": [ "{{baseUrl}}" ], "query": [], "variable": [] }, "header": [ { "disabled": false, "description": { "content": "(Required) Your identifier for this write, so a retry cannot register or change an\nendpoint twice. Reuse it only to repeat the identical request. Kept for 24\nhours.\n", "type": "text/plain" }, "key": "Idempotency-Key", "value": "" }, { "key": "Content-Type", "value": "application/json" }, { "key": "Accept", "value": "application/problem+json" }, { "description": { "content": "Added as a part of security scheme: bearer", "type": "text/plain" }, "key": "Authorization", "value": "Bearer " } ], "method": "POST", "body": { "mode": "raw", "raw": "{\n \"name\": \"\",\n \"url\": \"\",\n \"events\": [\n \"classifier.processed\"\n ],\n \"headers\": null,\n \"body\": \"\"\n}", "options": { "raw": { "headerFamily": "json", "language": "json" } } } }, "status": "Internal Server Error", "code": 500, "header": [ { "key": "Content-Type", "value": "application/problem+json" } ], "body": "{\n \"type\": \"\",\n \"title\": \"\",\n \"status\": \"\",\n \"detail\": \"\",\n \"instance\": \"\",\n \"code\": \"\",\n \"correlationId\": \"\",\n \"retryable\": \"\",\n \"field\": \"\",\n \"errors\": [\n {\n \"code\": \"\",\n \"message\": \"\",\n \"field\": \"\",\n \"retryable\": \"\",\n \"details\": null\n },\n {\n \"code\": \"\",\n \"message\": \"\",\n \"field\": \"\",\n \"retryable\": \"\",\n \"details\": null\n }\n ]\n}", "cookie": [], "_postman_previewlanguage": "json" } ], "event": [], "protocolProfileBehavior": { "disableBodyPruning": true } }, { "name": "{id}", "description": "", "item": [ { "name": "Replace a webhook endpoint", "request": { "name": "Replace a webhook endpoint", "description": { "content": "Replaces every field. **Changing `url` rotates the signing secret**, and the\nnew one is returned as `data.secret` on this response only. Deliveries already\nin flight were signed with the old secret, so accept both until they drain.\nAn update that keeps the `url` keeps the secret and returns `secret: null`.\n\n`Idempotency-Key` is required, with the same replay rules as the create.\n", "type": "text/plain" }, "url": { "path": [ "api", "v1", "webhook-endpoints", ":id" ], "host": [ "{{baseUrl}}" ], "query": [], "variable": [ { "type": "any", "value": "", "key": "id", "disabled": false, "description": { "content": "(Required) ", "type": "text/plain" } } ] }, "header": [ { "disabled": false, "description": { "content": "(Required) Your identifier for this write, so a retry cannot register or change an\nendpoint twice. Reuse it only to repeat the identical request. Kept for 24\nhours.\n", "type": "text/plain" }, "key": "Idempotency-Key", "value": "" }, { "key": "Content-Type", "value": "application/json" }, { "key": "Accept", "value": "application/json" } ], "method": "PUT", "body": { "mode": "raw", "raw": "{\n \"name\": \"\",\n \"url\": \"\",\n \"events\": [\n \"classifier.processed\"\n ],\n \"id\": \"\",\n \"headers\": null,\n \"body\": \"\",\n \"isActive\": true\n}", "options": { "raw": { "headerFamily": "json", "language": "json" } } }, "auth": null }, "response": [ { "name": "Replaced.", "originalRequest": { "url": { "path": [ "api", "v1", "webhook-endpoints", ":id" ], "host": [ "{{baseUrl}}" ], "query": [], "variable": [ { "disabled": false, "description": { "content": "(Required) ", "type": "text/plain" }, "type": "any", "value": "", "key": "id" } ] }, "header": [ { "disabled": false, "description": { "content": "(Required) Your identifier for this write, so a retry cannot register or change an\nendpoint twice. Reuse it only to repeat the identical request. Kept for 24\nhours.\n", "type": "text/plain" }, "key": "Idempotency-Key", "value": "" }, { "key": "Content-Type", "value": "application/json" }, { "key": "Accept", "value": "application/json" }, { "description": { "content": "Added as a part of security scheme: bearer", "type": "text/plain" }, "key": "Authorization", "value": "Bearer " } ], "method": "PUT", "body": { "mode": "raw", "raw": "{\n \"name\": \"\",\n \"url\": \"\",\n \"events\": [\n \"classifier.processed\"\n ],\n \"id\": \"\",\n \"headers\": null,\n \"body\": \"\",\n \"isActive\": true\n}", "options": { "raw": { "headerFamily": "json", "language": "json" } } } }, "status": "OK", "code": 200, "header": [ { "key": "Content-Type", "value": "application/json" } ], "body": "{\n \"data\": {\n \"id\": \"\",\n \"name\": \"\",\n \"url\": \"\",\n \"events\": [\n \"crop.failed\",\n \"split.failed\"\n ],\n \"isActive\": \"\",\n \"createdWhen\": \"\",\n \"headers\": null,\n \"body\": \"\",\n \"environment\": \"production\",\n \"changedWhen\": \"\",\n \"secret\": \"\"\n },\n \"meta\": {\n \"httpStatusCode\": \"\",\n \"messages\": [\n \"\",\n \"\"\n ],\n \"errors\": [\n {\n \"code\": \"\",\n \"message\": \"\",\n \"retryable\": \"\",\n \"field\": \"\",\n \"details\": null\n },\n {\n \"code\": \"\",\n \"message\": \"\",\n \"retryable\": \"\",\n \"field\": \"\",\n \"details\": {\n \"key_0\": \"\"\n }\n }\n ],\n \"creditsConsumed\": \"\"\n },\n \"hasErrors\": \"\"\n}", "cookie": [], "_postman_previewlanguage": "json" }, { "name": "Invalid request — a `url` that is not absolute HTTPS on a public address, no\nevents, an unknown event, or a missing `Idempotency-Key`. `code` says which.", "originalRequest": { "url": { "path": [ "api", "v1", "webhook-endpoints", ":id" ], "host": [ "{{baseUrl}}" ], "query": [], "variable": [ { "disabled": false, "description": { "content": "(Required) ", "type": "text/plain" }, "type": "any", "value": "", "key": "id" } ] }, "header": [ { "disabled": false, "description": { "content": "(Required) Your identifier for this write, so a retry cannot register or change an\nendpoint twice. Reuse it only to repeat the identical request. Kept for 24\nhours.\n", "type": "text/plain" }, "key": "Idempotency-Key", "value": "" }, { "key": "Content-Type", "value": "application/json" }, { "key": "Accept", "value": "application/problem+json" }, { "description": { "content": "Added as a part of security scheme: bearer", "type": "text/plain" }, "key": "Authorization", "value": "Bearer " } ], "method": "PUT", "body": { "mode": "raw", "raw": "{\n \"name\": \"\",\n \"url\": \"\",\n \"events\": [\n \"classifier.processed\"\n ],\n \"id\": \"\",\n \"headers\": null,\n \"body\": \"\",\n \"isActive\": true\n}", "options": { "raw": { "headerFamily": "json", "language": "json" } } } }, "status": "Bad Request", "code": 400, "header": [ { "key": "Content-Type", "value": "application/problem+json" } ], "body": "{\n \"type\": \"\",\n \"title\": \"\",\n \"status\": \"\",\n \"detail\": \"\",\n \"instance\": \"\",\n \"code\": \"\",\n \"correlationId\": \"\",\n \"retryable\": \"\",\n \"field\": \"\",\n \"errors\": [\n {\n \"code\": \"\",\n \"message\": \"\",\n \"field\": \"\",\n \"retryable\": \"\",\n \"details\": null\n },\n {\n \"code\": \"\",\n \"message\": \"\",\n \"field\": \"\",\n \"retryable\": \"\",\n \"details\": null\n }\n ]\n}", "cookie": [], "_postman_previewlanguage": "json" }, { "name": "Missing, invalid or inactive API key.", "originalRequest": { "url": { "path": [ "api", "v1", "webhook-endpoints", ":id" ], "host": [ "{{baseUrl}}" ], "query": [], "variable": [ { "disabled": false, "description": { "content": "(Required) ", "type": "text/plain" }, "type": "any", "value": "", "key": "id" } ] }, "header": [ { "disabled": false, "description": { "content": "(Required) Your identifier for this write, so a retry cannot register or change an\nendpoint twice. Reuse it only to repeat the identical request. Kept for 24\nhours.\n", "type": "text/plain" }, "key": "Idempotency-Key", "value": "" }, { "key": "Content-Type", "value": "application/json" }, { "key": "Accept", "value": "application/problem+json" }, { "description": { "content": "Added as a part of security scheme: bearer", "type": "text/plain" }, "key": "Authorization", "value": "Bearer " } ], "method": "PUT", "body": { "mode": "raw", "raw": "{\n \"name\": \"\",\n \"url\": \"\",\n \"events\": [\n \"classifier.processed\"\n ],\n \"id\": \"\",\n \"headers\": null,\n \"body\": \"\",\n \"isActive\": true\n}", "options": { "raw": { "headerFamily": "json", "language": "json" } } } }, "status": "Unauthorized", "code": 401, "header": [ { "key": "Content-Type", "value": "application/problem+json" } ], "body": "{\n \"type\": \"\",\n \"title\": \"\",\n \"status\": \"\",\n \"detail\": \"\",\n \"instance\": \"\",\n \"code\": \"\",\n \"correlationId\": \"\",\n \"retryable\": \"\",\n \"field\": \"\",\n \"errors\": [\n {\n \"code\": \"\",\n \"message\": \"\",\n \"field\": \"\",\n \"retryable\": \"\",\n \"details\": null\n },\n {\n \"code\": \"\",\n \"message\": \"\",\n \"field\": \"\",\n \"retryable\": \"\",\n \"details\": null\n }\n ]\n}", "cookie": [], "_postman_previewlanguage": "json" }, { "name": "The key cannot manage webhook endpoints. `webhook.scope_required`: it lacks\n`webhooks.manage` (or `*`). `webhook.production_key_required`: it is not a\nproduction key — endpoints receive production events only.", "originalRequest": { "url": { "path": [ "api", "v1", "webhook-endpoints", ":id" ], "host": [ "{{baseUrl}}" ], "query": [], "variable": [ { "disabled": false, "description": { "content": "(Required) ", "type": "text/plain" }, "type": "any", "value": "", "key": "id" } ] }, "header": [ { "disabled": false, "description": { "content": "(Required) Your identifier for this write, so a retry cannot register or change an\nendpoint twice. Reuse it only to repeat the identical request. Kept for 24\nhours.\n", "type": "text/plain" }, "key": "Idempotency-Key", "value": "" }, { "key": "Content-Type", "value": "application/json" }, { "key": "Accept", "value": "application/problem+json" }, { "description": { "content": "Added as a part of security scheme: bearer", "type": "text/plain" }, "key": "Authorization", "value": "Bearer " } ], "method": "PUT", "body": { "mode": "raw", "raw": "{\n \"name\": \"\",\n \"url\": \"\",\n \"events\": [\n \"classifier.processed\"\n ],\n \"id\": \"\",\n \"headers\": null,\n \"body\": \"\",\n \"isActive\": true\n}", "options": { "raw": { "headerFamily": "json", "language": "json" } } } }, "status": "Forbidden", "code": 403, "header": [ { "key": "Content-Type", "value": "application/problem+json" } ], "body": "{\n \"type\": \"\",\n \"title\": \"\",\n \"status\": \"\",\n \"detail\": \"\",\n \"instance\": \"\",\n \"code\": \"\",\n \"correlationId\": \"\",\n \"retryable\": \"\",\n \"field\": \"\",\n \"errors\": [\n {\n \"code\": \"\",\n \"message\": \"\",\n \"field\": \"\",\n \"retryable\": \"\",\n \"details\": null\n },\n {\n \"code\": \"\",\n \"message\": \"\",\n \"field\": \"\",\n \"retryable\": \"\",\n \"details\": null\n }\n ]\n}", "cookie": [], "_postman_previewlanguage": "json" }, { "name": "No endpoint with that id in this tenant.", "originalRequest": { "url": { "path": [ "api", "v1", "webhook-endpoints", ":id" ], "host": [ "{{baseUrl}}" ], "query": [], "variable": [ { "disabled": false, "description": { "content": "(Required) ", "type": "text/plain" }, "type": "any", "value": "", "key": "id" } ] }, "header": [ { "disabled": false, "description": { "content": "(Required) Your identifier for this write, so a retry cannot register or change an\nendpoint twice. Reuse it only to repeat the identical request. Kept for 24\nhours.\n", "type": "text/plain" }, "key": "Idempotency-Key", "value": "" }, { "key": "Content-Type", "value": "application/json" }, { "key": "Accept", "value": "application/problem+json" }, { "description": { "content": "Added as a part of security scheme: bearer", "type": "text/plain" }, "key": "Authorization", "value": "Bearer " } ], "method": "PUT", "body": { "mode": "raw", "raw": "{\n \"name\": \"\",\n \"url\": \"\",\n \"events\": [\n \"classifier.processed\"\n ],\n \"id\": \"\",\n \"headers\": null,\n \"body\": \"\",\n \"isActive\": true\n}", "options": { "raw": { "headerFamily": "json", "language": "json" } } } }, "status": "Not Found", "code": 404, "header": [ { "key": "Content-Type", "value": "application/problem+json" } ], "body": "{\n \"type\": \"\",\n \"title\": \"\",\n \"status\": \"\",\n \"detail\": \"\",\n \"instance\": \"\",\n \"code\": \"\",\n \"correlationId\": \"\",\n \"retryable\": \"\",\n \"field\": \"\",\n \"errors\": [\n {\n \"code\": \"\",\n \"message\": \"\",\n \"field\": \"\",\n \"retryable\": \"\",\n \"details\": null\n },\n {\n \"code\": \"\",\n \"message\": \"\",\n \"field\": \"\",\n \"retryable\": \"\",\n \"details\": null\n }\n ]\n}", "cookie": [], "_postman_previewlanguage": "json" }, { "name": "The `Idempotency-Key` was used with a different body (`idempotency_key_reused`),\nor the first request with it is still in progress (`idempotency_in_progress`,\nretryable, with `Retry-After`).", "originalRequest": { "url": { "path": [ "api", "v1", "webhook-endpoints", ":id" ], "host": [ "{{baseUrl}}" ], "query": [], "variable": [ { "disabled": false, "description": { "content": "(Required) ", "type": "text/plain" }, "type": "any", "value": "", "key": "id" } ] }, "header": [ { "disabled": false, "description": { "content": "(Required) Your identifier for this write, so a retry cannot register or change an\nendpoint twice. Reuse it only to repeat the identical request. Kept for 24\nhours.\n", "type": "text/plain" }, "key": "Idempotency-Key", "value": "" }, { "key": "Content-Type", "value": "application/json" }, { "key": "Accept", "value": "application/problem+json" }, { "description": { "content": "Added as a part of security scheme: bearer", "type": "text/plain" }, "key": "Authorization", "value": "Bearer " } ], "method": "PUT", "body": { "mode": "raw", "raw": "{\n \"name\": \"\",\n \"url\": \"\",\n \"events\": [\n \"classifier.processed\"\n ],\n \"id\": \"\",\n \"headers\": null,\n \"body\": \"\",\n \"isActive\": true\n}", "options": { "raw": { "headerFamily": "json", "language": "json" } } } }, "status": "Conflict", "code": 409, "header": [ { "key": "Content-Type", "value": "application/problem+json" } ], "body": "{\n \"type\": \"\",\n \"title\": \"\",\n \"status\": \"\",\n \"detail\": \"\",\n \"instance\": \"\",\n \"code\": \"\",\n \"correlationId\": \"\",\n \"retryable\": \"\",\n \"field\": \"\",\n \"errors\": [\n {\n \"code\": \"\",\n \"message\": \"\",\n \"field\": \"\",\n \"retryable\": \"\",\n \"details\": null\n },\n {\n \"code\": \"\",\n \"message\": \"\",\n \"field\": \"\",\n \"retryable\": \"\",\n \"details\": null\n }\n ]\n}", "cookie": [], "_postman_previewlanguage": "json" }, { "name": "Over 50 requests in the current 1-minute window for this key.", "originalRequest": { "url": { "path": [ "api", "v1", "webhook-endpoints", ":id" ], "host": [ "{{baseUrl}}" ], "query": [], "variable": [ { "disabled": false, "description": { "content": "(Required) ", "type": "text/plain" }, "type": "any", "value": "", "key": "id" } ] }, "header": [ { "disabled": false, "description": { "content": "(Required) Your identifier for this write, so a retry cannot register or change an\nendpoint twice. Reuse it only to repeat the identical request. Kept for 24\nhours.\n", "type": "text/plain" }, "key": "Idempotency-Key", "value": "" }, { "key": "Content-Type", "value": "application/json" }, { "key": "Accept", "value": "application/problem+json" }, { "description": { "content": "Added as a part of security scheme: bearer", "type": "text/plain" }, "key": "Authorization", "value": "Bearer " } ], "method": "PUT", "body": { "mode": "raw", "raw": "{\n \"name\": \"\",\n \"url\": \"\",\n \"events\": [\n \"classifier.processed\"\n ],\n \"id\": \"\",\n \"headers\": null,\n \"body\": \"\",\n \"isActive\": true\n}", "options": { "raw": { "headerFamily": "json", "language": "json" } } } }, "status": "Too Many Requests", "code": 429, "header": [ { "key": "Content-Type", "value": "application/problem+json" } ], "body": "{\n \"type\": \"\",\n \"title\": \"\",\n \"status\": \"\",\n \"detail\": \"\",\n \"instance\": \"\",\n \"code\": \"\",\n \"correlationId\": \"\",\n \"retryable\": \"\",\n \"field\": \"\",\n \"errors\": [\n {\n \"code\": \"\",\n \"message\": \"\",\n \"field\": \"\",\n \"retryable\": \"\",\n \"details\": null\n },\n {\n \"code\": \"\",\n \"message\": \"\",\n \"field\": \"\",\n \"retryable\": \"\",\n \"details\": null\n }\n ]\n}", "cookie": [], "_postman_previewlanguage": "json" }, { "name": "Unexpected failure. Safe to retry a read; retry a write with the same `Idempotency-Key`.", "originalRequest": { "url": { "path": [ "api", "v1", "webhook-endpoints", ":id" ], "host": [ "{{baseUrl}}" ], "query": [], "variable": [ { "disabled": false, "description": { "content": "(Required) ", "type": "text/plain" }, "type": "any", "value": "", "key": "id" } ] }, "header": [ { "disabled": false, "description": { "content": "(Required) Your identifier for this write, so a retry cannot register or change an\nendpoint twice. Reuse it only to repeat the identical request. Kept for 24\nhours.\n", "type": "text/plain" }, "key": "Idempotency-Key", "value": "" }, { "key": "Content-Type", "value": "application/json" }, { "key": "Accept", "value": "application/problem+json" }, { "description": { "content": "Added as a part of security scheme: bearer", "type": "text/plain" }, "key": "Authorization", "value": "Bearer " } ], "method": "PUT", "body": { "mode": "raw", "raw": "{\n \"name\": \"\",\n \"url\": \"\",\n \"events\": [\n \"classifier.processed\"\n ],\n \"id\": \"\",\n \"headers\": null,\n \"body\": \"\",\n \"isActive\": true\n}", "options": { "raw": { "headerFamily": "json", "language": "json" } } } }, "status": "Internal Server Error", "code": 500, "header": [ { "key": "Content-Type", "value": "application/problem+json" } ], "body": "{\n \"type\": \"\",\n \"title\": \"\",\n \"status\": \"\",\n \"detail\": \"\",\n \"instance\": \"\",\n \"code\": \"\",\n \"correlationId\": \"\",\n \"retryable\": \"\",\n \"field\": \"\",\n \"errors\": [\n {\n \"code\": \"\",\n \"message\": \"\",\n \"field\": \"\",\n \"retryable\": \"\",\n \"details\": null\n },\n {\n \"code\": \"\",\n \"message\": \"\",\n \"field\": \"\",\n \"retryable\": \"\",\n \"details\": null\n }\n ]\n}", "cookie": [], "_postman_previewlanguage": "json" } ], "event": [], "protocolProfileBehavior": { "disableBodyPruning": true } }, { "name": "Remove a webhook endpoint", "request": { "name": "Remove a webhook endpoint", "description": {}, "url": { "path": [ "api", "v1", "webhook-endpoints", ":id" ], "host": [ "{{baseUrl}}" ], "query": [], "variable": [ { "type": "any", "value": "", "key": "id", "disabled": false, "description": { "content": "(Required) ", "type": "text/plain" } } ] }, "header": [ { "key": "Accept", "value": "application/json" } ], "method": "DELETE", "body": {}, "auth": null }, "response": [ { "name": "Removed.", "originalRequest": { "url": { "path": [ "api", "v1", "webhook-endpoints", ":id" ], "host": [ "{{baseUrl}}" ], "query": [], "variable": [ { "disabled": false, "description": { "content": "(Required) ", "type": "text/plain" }, "type": "any", "value": "", "key": "id" } ] }, "header": [ { "key": "Accept", "value": "application/json" }, { "description": { "content": "Added as a part of security scheme: bearer", "type": "text/plain" }, "key": "Authorization", "value": "Bearer " } ], "method": "DELETE", "body": {} }, "status": "OK", "code": 200, "header": [ { "key": "Content-Type", "value": "application/json" } ], "body": "{\n \"data\": {\n \"deleted\": \"\"\n },\n \"meta\": {\n \"httpStatusCode\": \"\",\n \"messages\": [\n \"\",\n \"\"\n ],\n \"errors\": [\n {\n \"code\": \"\",\n \"message\": \"\",\n \"retryable\": \"\",\n \"field\": \"\",\n \"details\": null\n },\n {\n \"code\": \"\",\n \"message\": \"\",\n \"retryable\": \"\",\n \"field\": \"\",\n \"details\": {\n \"key_0\": \"\",\n \"key_1\": \"\"\n }\n }\n ],\n \"creditsConsumed\": \"\"\n },\n \"hasErrors\": \"\"\n}", "cookie": [], "_postman_previewlanguage": "json" }, { "name": "Invalid request — a `url` that is not absolute HTTPS on a public address, no\nevents, an unknown event, or a missing `Idempotency-Key`. `code` says which.", "originalRequest": { "url": { "path": [ "api", "v1", "webhook-endpoints", ":id" ], "host": [ "{{baseUrl}}" ], "query": [], "variable": [ { "disabled": false, "description": { "content": "(Required) ", "type": "text/plain" }, "type": "any", "value": "", "key": "id" } ] }, "header": [ { "key": "Accept", "value": "application/problem+json" }, { "description": { "content": "Added as a part of security scheme: bearer", "type": "text/plain" }, "key": "Authorization", "value": "Bearer " } ], "method": "DELETE", "body": {} }, "status": "Bad Request", "code": 400, "header": [ { "key": "Content-Type", "value": "application/problem+json" } ], "body": "{\n \"type\": \"\",\n \"title\": \"\",\n \"status\": \"\",\n \"detail\": \"\",\n \"instance\": \"\",\n \"code\": \"\",\n \"correlationId\": \"\",\n \"retryable\": \"\",\n \"field\": \"\",\n \"errors\": [\n {\n \"code\": \"\",\n \"message\": \"\",\n \"field\": \"\",\n \"retryable\": \"\",\n \"details\": null\n },\n {\n \"code\": \"\",\n \"message\": \"\",\n \"field\": \"\",\n \"retryable\": \"\",\n \"details\": null\n }\n ]\n}", "cookie": [], "_postman_previewlanguage": "json" }, { "name": "Missing, invalid or inactive API key.", "originalRequest": { "url": { "path": [ "api", "v1", "webhook-endpoints", ":id" ], "host": [ "{{baseUrl}}" ], "query": [], "variable": [ { "disabled": false, "description": { "content": "(Required) ", "type": "text/plain" }, "type": "any", "value": "", "key": "id" } ] }, "header": [ { "key": "Accept", "value": "application/problem+json" }, { "description": { "content": "Added as a part of security scheme: bearer", "type": "text/plain" }, "key": "Authorization", "value": "Bearer " } ], "method": "DELETE", "body": {} }, "status": "Unauthorized", "code": 401, "header": [ { "key": "Content-Type", "value": "application/problem+json" } ], "body": "{\n \"type\": \"\",\n \"title\": \"\",\n \"status\": \"\",\n \"detail\": \"\",\n \"instance\": \"\",\n \"code\": \"\",\n \"correlationId\": \"\",\n \"retryable\": \"\",\n \"field\": \"\",\n \"errors\": [\n {\n \"code\": \"\",\n \"message\": \"\",\n \"field\": \"\",\n \"retryable\": \"\",\n \"details\": null\n },\n {\n \"code\": \"\",\n \"message\": \"\",\n \"field\": \"\",\n \"retryable\": \"\",\n \"details\": null\n }\n ]\n}", "cookie": [], "_postman_previewlanguage": "json" }, { "name": "The key cannot manage webhook endpoints. `webhook.scope_required`: it lacks\n`webhooks.manage` (or `*`). `webhook.production_key_required`: it is not a\nproduction key — endpoints receive production events only.", "originalRequest": { "url": { "path": [ "api", "v1", "webhook-endpoints", ":id" ], "host": [ "{{baseUrl}}" ], "query": [], "variable": [ { "disabled": false, "description": { "content": "(Required) ", "type": "text/plain" }, "type": "any", "value": "", "key": "id" } ] }, "header": [ { "key": "Accept", "value": "application/problem+json" }, { "description": { "content": "Added as a part of security scheme: bearer", "type": "text/plain" }, "key": "Authorization", "value": "Bearer " } ], "method": "DELETE", "body": {} }, "status": "Forbidden", "code": 403, "header": [ { "key": "Content-Type", "value": "application/problem+json" } ], "body": "{\n \"type\": \"\",\n \"title\": \"\",\n \"status\": \"\",\n \"detail\": \"\",\n \"instance\": \"\",\n \"code\": \"\",\n \"correlationId\": \"\",\n \"retryable\": \"\",\n \"field\": \"\",\n \"errors\": [\n {\n \"code\": \"\",\n \"message\": \"\",\n \"field\": \"\",\n \"retryable\": \"\",\n \"details\": null\n },\n {\n \"code\": \"\",\n \"message\": \"\",\n \"field\": \"\",\n \"retryable\": \"\",\n \"details\": null\n }\n ]\n}", "cookie": [], "_postman_previewlanguage": "json" }, { "name": "No endpoint with that id in this tenant.", "originalRequest": { "url": { "path": [ "api", "v1", "webhook-endpoints", ":id" ], "host": [ "{{baseUrl}}" ], "query": [], "variable": [ { "disabled": false, "description": { "content": "(Required) ", "type": "text/plain" }, "type": "any", "value": "", "key": "id" } ] }, "header": [ { "key": "Accept", "value": "application/problem+json" }, { "description": { "content": "Added as a part of security scheme: bearer", "type": "text/plain" }, "key": "Authorization", "value": "Bearer " } ], "method": "DELETE", "body": {} }, "status": "Not Found", "code": 404, "header": [ { "key": "Content-Type", "value": "application/problem+json" } ], "body": "{\n \"type\": \"\",\n \"title\": \"\",\n \"status\": \"\",\n \"detail\": \"\",\n \"instance\": \"\",\n \"code\": \"\",\n \"correlationId\": \"\",\n \"retryable\": \"\",\n \"field\": \"\",\n \"errors\": [\n {\n \"code\": \"\",\n \"message\": \"\",\n \"field\": \"\",\n \"retryable\": \"\",\n \"details\": null\n },\n {\n \"code\": \"\",\n \"message\": \"\",\n \"field\": \"\",\n \"retryable\": \"\",\n \"details\": null\n }\n ]\n}", "cookie": [], "_postman_previewlanguage": "json" }, { "name": "The `Idempotency-Key` was used with a different body (`idempotency_key_reused`),\nor the first request with it is still in progress (`idempotency_in_progress`,\nretryable, with `Retry-After`).", "originalRequest": { "url": { "path": [ "api", "v1", "webhook-endpoints", ":id" ], "host": [ "{{baseUrl}}" ], "query": [], "variable": [ { "disabled": false, "description": { "content": "(Required) ", "type": "text/plain" }, "type": "any", "value": "", "key": "id" } ] }, "header": [ { "key": "Accept", "value": "application/problem+json" }, { "description": { "content": "Added as a part of security scheme: bearer", "type": "text/plain" }, "key": "Authorization", "value": "Bearer " } ], "method": "DELETE", "body": {} }, "status": "Conflict", "code": 409, "header": [ { "key": "Content-Type", "value": "application/problem+json" } ], "body": "{\n \"type\": \"\",\n \"title\": \"\",\n \"status\": \"\",\n \"detail\": \"\",\n \"instance\": \"\",\n \"code\": \"\",\n \"correlationId\": \"\",\n \"retryable\": \"\",\n \"field\": \"\",\n \"errors\": [\n {\n \"code\": \"\",\n \"message\": \"\",\n \"field\": \"\",\n \"retryable\": \"\",\n \"details\": null\n },\n {\n \"code\": \"\",\n \"message\": \"\",\n \"field\": \"\",\n \"retryable\": \"\",\n \"details\": null\n }\n ]\n}", "cookie": [], "_postman_previewlanguage": "json" }, { "name": "Over 50 requests in the current 1-minute window for this key.", "originalRequest": { "url": { "path": [ "api", "v1", "webhook-endpoints", ":id" ], "host": [ "{{baseUrl}}" ], "query": [], "variable": [ { "disabled": false, "description": { "content": "(Required) ", "type": "text/plain" }, "type": "any", "value": "", "key": "id" } ] }, "header": [ { "key": "Accept", "value": "application/problem+json" }, { "description": { "content": "Added as a part of security scheme: bearer", "type": "text/plain" }, "key": "Authorization", "value": "Bearer " } ], "method": "DELETE", "body": {} }, "status": "Too Many Requests", "code": 429, "header": [ { "key": "Content-Type", "value": "application/problem+json" } ], "body": "{\n \"type\": \"\",\n \"title\": \"\",\n \"status\": \"\",\n \"detail\": \"\",\n \"instance\": \"\",\n \"code\": \"\",\n \"correlationId\": \"\",\n \"retryable\": \"\",\n \"field\": \"\",\n \"errors\": [\n {\n \"code\": \"\",\n \"message\": \"\",\n \"field\": \"\",\n \"retryable\": \"\",\n \"details\": null\n },\n {\n \"code\": \"\",\n \"message\": \"\",\n \"field\": \"\",\n \"retryable\": \"\",\n \"details\": null\n }\n ]\n}", "cookie": [], "_postman_previewlanguage": "json" }, { "name": "Unexpected failure. Safe to retry a read; retry a write with the same `Idempotency-Key`.", "originalRequest": { "url": { "path": [ "api", "v1", "webhook-endpoints", ":id" ], "host": [ "{{baseUrl}}" ], "query": [], "variable": [ { "disabled": false, "description": { "content": "(Required) ", "type": "text/plain" }, "type": "any", "value": "", "key": "id" } ] }, "header": [ { "key": "Accept", "value": "application/problem+json" }, { "description": { "content": "Added as a part of security scheme: bearer", "type": "text/plain" }, "key": "Authorization", "value": "Bearer " } ], "method": "DELETE", "body": {} }, "status": "Internal Server Error", "code": 500, "header": [ { "key": "Content-Type", "value": "application/problem+json" } ], "body": "{\n \"type\": \"\",\n \"title\": \"\",\n \"status\": \"\",\n \"detail\": \"\",\n \"instance\": \"\",\n \"code\": \"\",\n \"correlationId\": \"\",\n \"retryable\": \"\",\n \"field\": \"\",\n \"errors\": [\n {\n \"code\": \"\",\n \"message\": \"\",\n \"field\": \"\",\n \"retryable\": \"\",\n \"details\": null\n },\n {\n \"code\": \"\",\n \"message\": \"\",\n \"field\": \"\",\n \"retryable\": \"\",\n \"details\": null\n }\n ]\n}", "cookie": [], "_postman_previewlanguage": "json" } ], "event": [], "protocolProfileBehavior": { "disableBodyPruning": true } } ] } ] }, { "name": "portal", "description": "", "item": [ { "name": "forms", "description": "", "item": [ { "name": "List the forms available to the tenant", "request": { "name": "List the forms available to the tenant", "description": { "content": "Returns every intake form configured for your tenant, so you can resolve the\n`formId` a magic link needs. Forms are created in the dashboard, not here.\n\nThe response is a bare array, not the document-endpoint envelope, and it is\nnot paginated.\n", "type": "text/plain" }, "url": { "path": [ "api", "v1", "portal", "forms" ], "host": [ "{{baseUrl}}" ], "query": [], "variable": [] }, "header": [ { "key": "Accept", "value": "application/json" } ], "method": "GET", "body": {}, "auth": null }, "response": [ { "name": "The tenant's forms.", "originalRequest": { "url": { "path": [ "api", "v1", "portal", "forms" ], "host": [ "{{baseUrl}}" ], "query": [], "variable": [] }, "header": [ { "key": "Accept", "value": "application/json" }, { "description": { "content": "Added as a part of security scheme: bearer", "type": "text/plain" }, "key": "Authorization", "value": "Bearer " } ], "method": "GET", "body": {} }, "status": "OK", "code": 200, "header": [ { "key": "Content-Type", "value": "application/json" } ], "body": "[\n {\n \"formId\": \"\",\n \"formName\": \"\",\n \"formDescription\": \"\"\n },\n {\n \"formId\": \"\",\n \"formName\": \"\",\n \"formDescription\": \"\"\n }\n]", "cookie": [], "_postman_previewlanguage": "json" }, { "name": "The request was refused before it was processed — malformed, unsafe, or\nmissing something it needs. `code` says which.", "originalRequest": { "url": { "path": [ "api", "v1", "portal", "forms" ], "host": [ "{{baseUrl}}" ], "query": [], "variable": [] }, "header": [ { "key": "Accept", "value": "application/problem+json" }, { "description": { "content": "Added as a part of security scheme: bearer", "type": "text/plain" }, "key": "Authorization", "value": "Bearer " } ], "method": "GET", "body": {} }, "status": "Bad Request", "code": 400, "header": [ { "key": "Content-Type", "value": "application/problem+json" } ], "body": "{\n \"type\": \"\",\n \"title\": \"\",\n \"status\": \"\",\n \"detail\": \"\",\n \"instance\": \"\",\n \"code\": \"\",\n \"correlationId\": \"\",\n \"retryable\": \"\",\n \"field\": \"\",\n \"errors\": [\n {\n \"code\": \"\",\n \"message\": \"\",\n \"field\": \"\",\n \"retryable\": \"\",\n \"details\": null\n },\n {\n \"code\": \"\",\n \"message\": \"\",\n \"field\": \"\",\n \"retryable\": \"\",\n \"details\": null\n }\n ]\n}", "cookie": [], "_postman_previewlanguage": "json" }, { "name": "Missing or invalid API key. Both `xtkt_live_` (production) and `xtkt_test_`\n(sandbox) prefixes are accepted, but the key must also be valid and active.", "originalRequest": { "url": { "path": [ "api", "v1", "portal", "forms" ], "host": [ "{{baseUrl}}" ], "query": [], "variable": [] }, "header": [ { "key": "Accept", "value": "application/problem+json" }, { "description": { "content": "Added as a part of security scheme: bearer", "type": "text/plain" }, "key": "Authorization", "value": "Bearer " } ], "method": "GET", "body": {} }, "status": "Unauthorized", "code": 401, "header": [ { "key": "Content-Type", "value": "application/problem+json" } ], "body": "{\n \"type\": \"\",\n \"title\": \"\",\n \"status\": \"\",\n \"detail\": \"\",\n \"instance\": \"\",\n \"code\": \"\",\n \"correlationId\": \"\",\n \"retryable\": \"\",\n \"field\": \"\",\n \"errors\": [\n {\n \"code\": \"\",\n \"message\": \"\",\n \"field\": \"\",\n \"retryable\": \"\",\n \"details\": null\n },\n {\n \"code\": \"\",\n \"message\": \"\",\n \"field\": \"\",\n \"retryable\": \"\",\n \"details\": null\n }\n ]\n}", "cookie": [], "_postman_previewlanguage": "json" }, { "name": "The key is valid but lacks the scope this endpoint requires —\n`portal.forms.read` to read, `portal.magiclinks.write` to create. The missing\nscope is named in the response.", "originalRequest": { "url": { "path": [ "api", "v1", "portal", "forms" ], "host": [ "{{baseUrl}}" ], "query": [], "variable": [] }, "header": [ { "key": "Accept", "value": "application/problem+json" }, { "description": { "content": "Added as a part of security scheme: bearer", "type": "text/plain" }, "key": "Authorization", "value": "Bearer " } ], "method": "GET", "body": {} }, "status": "Forbidden", "code": 403, "header": [ { "key": "Content-Type", "value": "application/problem+json" } ], "body": "{\n \"type\": \"\",\n \"title\": \"\",\n \"status\": \"\",\n \"detail\": \"\",\n \"instance\": \"\",\n \"code\": \"\",\n \"correlationId\": \"\",\n \"retryable\": \"\",\n \"field\": \"\",\n \"errors\": [\n {\n \"code\": \"\",\n \"message\": \"\",\n \"field\": \"\",\n \"retryable\": \"\",\n \"details\": null\n },\n {\n \"code\": \"\",\n \"message\": \"\",\n \"field\": \"\",\n \"retryable\": \"\",\n \"details\": null\n }\n ]\n}", "cookie": [], "_postman_previewlanguage": "json" }, { "name": "Nothing answers at this address for this tenant.", "originalRequest": { "url": { "path": [ "api", "v1", "portal", "forms" ], "host": [ "{{baseUrl}}" ], "query": [], "variable": [] }, "header": [ { "key": "Accept", "value": "application/problem+json" }, { "description": { "content": "Added as a part of security scheme: bearer", "type": "text/plain" }, "key": "Authorization", "value": "Bearer " } ], "method": "GET", "body": {} }, "status": "Not Found", "code": 404, "header": [ { "key": "Content-Type", "value": "application/problem+json" } ], "body": "{\n \"type\": \"\",\n \"title\": \"\",\n \"status\": \"\",\n \"detail\": \"\",\n \"instance\": \"\",\n \"code\": \"\",\n \"correlationId\": \"\",\n \"retryable\": \"\",\n \"field\": \"\",\n \"errors\": [\n {\n \"code\": \"\",\n \"message\": \"\",\n \"field\": \"\",\n \"retryable\": \"\",\n \"details\": null\n },\n {\n \"code\": \"\",\n \"message\": \"\",\n \"field\": \"\",\n \"retryable\": \"\",\n \"details\": null\n }\n ]\n}", "cookie": [], "_postman_previewlanguage": "json" }, { "name": "The request conflicts with the current state of what it acts on.", "originalRequest": { "url": { "path": [ "api", "v1", "portal", "forms" ], "host": [ "{{baseUrl}}" ], "query": [], "variable": [] }, "header": [ { "key": "Accept", "value": "application/problem+json" }, { "description": { "content": "Added as a part of security scheme: bearer", "type": "text/plain" }, "key": "Authorization", "value": "Bearer " } ], "method": "GET", "body": {} }, "status": "Conflict", "code": 409, "header": [ { "key": "Content-Type", "value": "application/problem+json" } ], "body": "{\n \"type\": \"\",\n \"title\": \"\",\n \"status\": \"\",\n \"detail\": \"\",\n \"instance\": \"\",\n \"code\": \"\",\n \"correlationId\": \"\",\n \"retryable\": \"\",\n \"field\": \"\",\n \"errors\": [\n {\n \"code\": \"\",\n \"message\": \"\",\n \"field\": \"\",\n \"retryable\": \"\",\n \"details\": null\n },\n {\n \"code\": \"\",\n \"message\": \"\",\n \"field\": \"\",\n \"retryable\": \"\",\n \"details\": null\n }\n ]\n}", "cookie": [], "_postman_previewlanguage": "json" }, { "name": "Over 50 requests in the current 1-minute window for this key.", "originalRequest": { "url": { "path": [ "api", "v1", "portal", "forms" ], "host": [ "{{baseUrl}}" ], "query": [], "variable": [] }, "header": [ { "key": "Accept", "value": "application/problem+json" }, { "description": { "content": "Added as a part of security scheme: bearer", "type": "text/plain" }, "key": "Authorization", "value": "Bearer " } ], "method": "GET", "body": {} }, "status": "Too Many Requests", "code": 429, "header": [ { "key": "Content-Type", "value": "application/problem+json" }, { "disabled": false, "description": { "content": "Seconds until the window resets.", "type": "text/plain" }, "key": "Retry-After", "value": "" } ], "body": "{\n \"type\": \"\",\n \"title\": \"\",\n \"status\": \"\",\n \"detail\": \"\",\n \"instance\": \"\",\n \"code\": \"\",\n \"correlationId\": \"\",\n \"retryable\": \"\",\n \"field\": \"\",\n \"errors\": [\n {\n \"code\": \"\",\n \"message\": \"\",\n \"field\": \"\",\n \"retryable\": \"\",\n \"details\": null\n },\n {\n \"code\": \"\",\n \"message\": \"\",\n \"field\": \"\",\n \"retryable\": \"\",\n \"details\": null\n }\n ]\n}", "cookie": [], "_postman_previewlanguage": "json" }, { "name": "Unexpected failure. `correlationId` identifies the request — quote it when\nyou contact support.", "originalRequest": { "url": { "path": [ "api", "v1", "portal", "forms" ], "host": [ "{{baseUrl}}" ], "query": [], "variable": [] }, "header": [ { "key": "Accept", "value": "application/problem+json" }, { "description": { "content": "Added as a part of security scheme: bearer", "type": "text/plain" }, "key": "Authorization", "value": "Bearer " } ], "method": "GET", "body": {} }, "status": "Internal Server Error", "code": 500, "header": [ { "key": "Content-Type", "value": "application/problem+json" } ], "body": "{\n \"type\": \"\",\n \"title\": \"\",\n \"status\": \"\",\n \"detail\": \"\",\n \"instance\": \"\",\n \"code\": \"\",\n \"correlationId\": \"\",\n \"retryable\": \"\",\n \"field\": \"\",\n \"errors\": [\n {\n \"code\": \"\",\n \"message\": \"\",\n \"field\": \"\",\n \"retryable\": \"\",\n \"details\": null\n },\n {\n \"code\": \"\",\n \"message\": \"\",\n \"field\": \"\",\n \"retryable\": \"\",\n \"details\": null\n }\n ]\n}", "cookie": [], "_postman_previewlanguage": "json" }, { "name": "The Portal service is unreachable. Marked retryable — back off and try again.", "originalRequest": { "url": { "path": [ "api", "v1", "portal", "forms" ], "host": [ "{{baseUrl}}" ], "query": [], "variable": [] }, "header": [ { "key": "Accept", "value": "application/problem+json" }, { "description": { "content": "Added as a part of security scheme: bearer", "type": "text/plain" }, "key": "Authorization", "value": "Bearer " } ], "method": "GET", "body": {} }, "status": "Bad Gateway", "code": 502, "header": [ { "key": "Content-Type", "value": "application/problem+json" } ], "body": "{\n \"type\": \"\",\n \"title\": \"\",\n \"status\": \"\",\n \"detail\": \"\",\n \"instance\": \"\",\n \"code\": \"\",\n \"correlationId\": \"\",\n \"retryable\": \"\",\n \"field\": \"\",\n \"errors\": [\n {\n \"code\": \"\",\n \"message\": \"\",\n \"field\": \"\",\n \"retryable\": \"\",\n \"details\": null\n },\n {\n \"code\": \"\",\n \"message\": \"\",\n \"field\": \"\",\n \"retryable\": \"\",\n \"details\": null\n }\n ]\n}", "cookie": [], "_postman_previewlanguage": "json" } ], "event": [], "protocolProfileBehavior": { "disableBodyPruning": true } } ] }, { "name": "available-channels", "description": "", "item": [ { "name": "List the send channels this environment can use", "request": { "name": "List the send channels this environment can use", "description": { "content": "The channels available for delivering a magic link. This is a property of the\nenvironment — it follows the delivery credentials configured there — rather\nthan a per-tenant or per-plan entitlement, so it may be shorter than expected.\n\nWhatsApp additionally requires a Meta-approved template and respects the\n24-hour service window.\n", "type": "text/plain" }, "url": { "path": [ "api", "v1", "portal", "available-channels" ], "host": [ "{{baseUrl}}" ], "query": [], "variable": [] }, "header": [ { "key": "Accept", "value": "application/json" } ], "method": "GET", "body": {}, "auth": null }, "response": [ { "name": "The enabled channels.", "originalRequest": { "url": { "path": [ "api", "v1", "portal", "available-channels" ], "host": [ "{{baseUrl}}" ], "query": [], "variable": [] }, "header": [ { "key": "Accept", "value": "application/json" }, { "description": { "content": "Added as a part of security scheme: bearer", "type": "text/plain" }, "key": "Authorization", "value": "Bearer " } ], "method": "GET", "body": {} }, "status": "OK", "code": 200, "header": [ { "key": "Content-Type", "value": "application/json" } ], "body": "{\n \"channels\": [\n \"whatsapp\",\n \"email\"\n ]\n}", "cookie": [], "_postman_previewlanguage": "json" }, { "name": "The request was refused before it was processed — malformed, unsafe, or\nmissing something it needs. `code` says which.", "originalRequest": { "url": { "path": [ "api", "v1", "portal", "available-channels" ], "host": [ "{{baseUrl}}" ], "query": [], "variable": [] }, "header": [ { "key": "Accept", "value": "application/problem+json" }, { "description": { "content": "Added as a part of security scheme: bearer", "type": "text/plain" }, "key": "Authorization", "value": "Bearer " } ], "method": "GET", "body": {} }, "status": "Bad Request", "code": 400, "header": [ { "key": "Content-Type", "value": "application/problem+json" } ], "body": "{\n \"type\": \"\",\n \"title\": \"\",\n \"status\": \"\",\n \"detail\": \"\",\n \"instance\": \"\",\n \"code\": \"\",\n \"correlationId\": \"\",\n \"retryable\": \"\",\n \"field\": \"\",\n \"errors\": [\n {\n \"code\": \"\",\n \"message\": \"\",\n \"field\": \"\",\n \"retryable\": \"\",\n \"details\": null\n },\n {\n \"code\": \"\",\n \"message\": \"\",\n \"field\": \"\",\n \"retryable\": \"\",\n \"details\": null\n }\n ]\n}", "cookie": [], "_postman_previewlanguage": "json" }, { "name": "Missing or invalid API key. Both `xtkt_live_` (production) and `xtkt_test_`\n(sandbox) prefixes are accepted, but the key must also be valid and active.", "originalRequest": { "url": { "path": [ "api", "v1", "portal", "available-channels" ], "host": [ "{{baseUrl}}" ], "query": [], "variable": [] }, "header": [ { "key": "Accept", "value": "application/problem+json" }, { "description": { "content": "Added as a part of security scheme: bearer", "type": "text/plain" }, "key": "Authorization", "value": "Bearer " } ], "method": "GET", "body": {} }, "status": "Unauthorized", "code": 401, "header": [ { "key": "Content-Type", "value": "application/problem+json" } ], "body": "{\n \"type\": \"\",\n \"title\": \"\",\n \"status\": \"\",\n \"detail\": \"\",\n \"instance\": \"\",\n \"code\": \"\",\n \"correlationId\": \"\",\n \"retryable\": \"\",\n \"field\": \"\",\n \"errors\": [\n {\n \"code\": \"\",\n \"message\": \"\",\n \"field\": \"\",\n \"retryable\": \"\",\n \"details\": null\n },\n {\n \"code\": \"\",\n \"message\": \"\",\n \"field\": \"\",\n \"retryable\": \"\",\n \"details\": null\n }\n ]\n}", "cookie": [], "_postman_previewlanguage": "json" }, { "name": "The key is valid but lacks the scope this endpoint requires —\n`portal.forms.read` to read, `portal.magiclinks.write` to create. The missing\nscope is named in the response.", "originalRequest": { "url": { "path": [ "api", "v1", "portal", "available-channels" ], "host": [ "{{baseUrl}}" ], "query": [], "variable": [] }, "header": [ { "key": "Accept", "value": "application/problem+json" }, { "description": { "content": "Added as a part of security scheme: bearer", "type": "text/plain" }, "key": "Authorization", "value": "Bearer " } ], "method": "GET", "body": {} }, "status": "Forbidden", "code": 403, "header": [ { "key": "Content-Type", "value": "application/problem+json" } ], "body": "{\n \"type\": \"\",\n \"title\": \"\",\n \"status\": \"\",\n \"detail\": \"\",\n \"instance\": \"\",\n \"code\": \"\",\n \"correlationId\": \"\",\n \"retryable\": \"\",\n \"field\": \"\",\n \"errors\": [\n {\n \"code\": \"\",\n \"message\": \"\",\n \"field\": \"\",\n \"retryable\": \"\",\n \"details\": null\n },\n {\n \"code\": \"\",\n \"message\": \"\",\n \"field\": \"\",\n \"retryable\": \"\",\n \"details\": null\n }\n ]\n}", "cookie": [], "_postman_previewlanguage": "json" }, { "name": "Nothing answers at this address for this tenant.", "originalRequest": { "url": { "path": [ "api", "v1", "portal", "available-channels" ], "host": [ "{{baseUrl}}" ], "query": [], "variable": [] }, "header": [ { "key": "Accept", "value": "application/problem+json" }, { "description": { "content": "Added as a part of security scheme: bearer", "type": "text/plain" }, "key": "Authorization", "value": "Bearer " } ], "method": "GET", "body": {} }, "status": "Not Found", "code": 404, "header": [ { "key": "Content-Type", "value": "application/problem+json" } ], "body": "{\n \"type\": \"\",\n \"title\": \"\",\n \"status\": \"\",\n \"detail\": \"\",\n \"instance\": \"\",\n \"code\": \"\",\n \"correlationId\": \"\",\n \"retryable\": \"\",\n \"field\": \"\",\n \"errors\": [\n {\n \"code\": \"\",\n \"message\": \"\",\n \"field\": \"\",\n \"retryable\": \"\",\n \"details\": null\n },\n {\n \"code\": \"\",\n \"message\": \"\",\n \"field\": \"\",\n \"retryable\": \"\",\n \"details\": null\n }\n ]\n}", "cookie": [], "_postman_previewlanguage": "json" }, { "name": "The request conflicts with the current state of what it acts on.", "originalRequest": { "url": { "path": [ "api", "v1", "portal", "available-channels" ], "host": [ "{{baseUrl}}" ], "query": [], "variable": [] }, "header": [ { "key": "Accept", "value": "application/problem+json" }, { "description": { "content": "Added as a part of security scheme: bearer", "type": "text/plain" }, "key": "Authorization", "value": "Bearer " } ], "method": "GET", "body": {} }, "status": "Conflict", "code": 409, "header": [ { "key": "Content-Type", "value": "application/problem+json" } ], "body": "{\n \"type\": \"\",\n \"title\": \"\",\n \"status\": \"\",\n \"detail\": \"\",\n \"instance\": \"\",\n \"code\": \"\",\n \"correlationId\": \"\",\n \"retryable\": \"\",\n \"field\": \"\",\n \"errors\": [\n {\n \"code\": \"\",\n \"message\": \"\",\n \"field\": \"\",\n \"retryable\": \"\",\n \"details\": null\n },\n {\n \"code\": \"\",\n \"message\": \"\",\n \"field\": \"\",\n \"retryable\": \"\",\n \"details\": null\n }\n ]\n}", "cookie": [], "_postman_previewlanguage": "json" }, { "name": "Over 50 requests in the current 1-minute window for this key.", "originalRequest": { "url": { "path": [ "api", "v1", "portal", "available-channels" ], "host": [ "{{baseUrl}}" ], "query": [], "variable": [] }, "header": [ { "key": "Accept", "value": "application/problem+json" }, { "description": { "content": "Added as a part of security scheme: bearer", "type": "text/plain" }, "key": "Authorization", "value": "Bearer " } ], "method": "GET", "body": {} }, "status": "Too Many Requests", "code": 429, "header": [ { "key": "Content-Type", "value": "application/problem+json" }, { "disabled": false, "description": { "content": "Seconds until the window resets.", "type": "text/plain" }, "key": "Retry-After", "value": "" } ], "body": "{\n \"type\": \"\",\n \"title\": \"\",\n \"status\": \"\",\n \"detail\": \"\",\n \"instance\": \"\",\n \"code\": \"\",\n \"correlationId\": \"\",\n \"retryable\": \"\",\n \"field\": \"\",\n \"errors\": [\n {\n \"code\": \"\",\n \"message\": \"\",\n \"field\": \"\",\n \"retryable\": \"\",\n \"details\": null\n },\n {\n \"code\": \"\",\n \"message\": \"\",\n \"field\": \"\",\n \"retryable\": \"\",\n \"details\": null\n }\n ]\n}", "cookie": [], "_postman_previewlanguage": "json" }, { "name": "Unexpected failure. `correlationId` identifies the request — quote it when\nyou contact support.", "originalRequest": { "url": { "path": [ "api", "v1", "portal", "available-channels" ], "host": [ "{{baseUrl}}" ], "query": [], "variable": [] }, "header": [ { "key": "Accept", "value": "application/problem+json" }, { "description": { "content": "Added as a part of security scheme: bearer", "type": "text/plain" }, "key": "Authorization", "value": "Bearer " } ], "method": "GET", "body": {} }, "status": "Internal Server Error", "code": 500, "header": [ { "key": "Content-Type", "value": "application/problem+json" } ], "body": "{\n \"type\": \"\",\n \"title\": \"\",\n \"status\": \"\",\n \"detail\": \"\",\n \"instance\": \"\",\n \"code\": \"\",\n \"correlationId\": \"\",\n \"retryable\": \"\",\n \"field\": \"\",\n \"errors\": [\n {\n \"code\": \"\",\n \"message\": \"\",\n \"field\": \"\",\n \"retryable\": \"\",\n \"details\": null\n },\n {\n \"code\": \"\",\n \"message\": \"\",\n \"field\": \"\",\n \"retryable\": \"\",\n \"details\": null\n }\n ]\n}", "cookie": [], "_postman_previewlanguage": "json" }, { "name": "The Portal service is unreachable. Marked retryable — back off and try again.", "originalRequest": { "url": { "path": [ "api", "v1", "portal", "available-channels" ], "host": [ "{{baseUrl}}" ], "query": [], "variable": [] }, "header": [ { "key": "Accept", "value": "application/problem+json" }, { "description": { "content": "Added as a part of security scheme: bearer", "type": "text/plain" }, "key": "Authorization", "value": "Bearer " } ], "method": "GET", "body": {} }, "status": "Bad Gateway", "code": 502, "header": [ { "key": "Content-Type", "value": "application/problem+json" } ], "body": "{\n \"type\": \"\",\n \"title\": \"\",\n \"status\": \"\",\n \"detail\": \"\",\n \"instance\": \"\",\n \"code\": \"\",\n \"correlationId\": \"\",\n \"retryable\": \"\",\n \"field\": \"\",\n \"errors\": [\n {\n \"code\": \"\",\n \"message\": \"\",\n \"field\": \"\",\n \"retryable\": \"\",\n \"details\": null\n },\n {\n \"code\": \"\",\n \"message\": \"\",\n \"field\": \"\",\n \"retryable\": \"\",\n \"details\": null\n }\n ]\n}", "cookie": [], "_postman_previewlanguage": "json" } ], "event": [], "protocolProfileBehavior": { "disableBodyPruning": true } } ] }, { "name": "magic-link", "description": "", "item": [ { "name": "Create a magic link", "request": { "name": "Create a magic link", "description": { "content": "Creates a link to an intake form for a named recipient and, when `sendChannel`\nis set, dispatches it on that channel. Omit `sendChannel` to create the link\nwithout sending anything and deliver it yourself.\n\nSend a stable `Idempotency-Key` to make retries safe: a repeat resolves to the\nsame link rather than creating a second one or charging twice.\n\n`url` is returned **only on the first create**. The raw token is never stored\nin readable form, so an idempotent replay returns the same `id` with `url`\nabsent — persist it from the original `201`.\n", "type": "text/plain" }, "url": { "path": [ "api", "v1", "portal", "magic-link" ], "host": [ "{{baseUrl}}" ], "query": [], "variable": [] }, "header": [ { "disabled": false, "description": { "content": "Stable caller-supplied key that makes a retry resolve to the same link.", "type": "text/plain" }, "key": "Idempotency-Key", "value": "" }, { "key": "Content-Type", "value": "application/json" }, { "key": "Accept", "value": "application/json" } ], "method": "POST", "body": { "mode": "raw", "raw": "{\n \"formId\": \"\",\n \"name\": \"\",\n \"sendChannel\": \"whatsapp\",\n \"email\": \"\",\n \"phone\": \"\",\n \"taxId\": \"\",\n \"dueDays\": 30,\n \"maxAccesses\": \"\",\n \"notes\": \"\",\n \"optIn\": {\n \"source\": \"contract\",\n \"evidenceText\": \"\",\n \"evidenceUrl\": \"\",\n \"collectedWhen\": \"\"\n }\n}", "options": { "raw": { "headerFamily": "json", "language": "json" } } }, "auth": null }, "response": [ { "name": "The link was created.", "originalRequest": { "url": { "path": [ "api", "v1", "portal", "magic-link" ], "host": [ "{{baseUrl}}" ], "query": [], "variable": [] }, "header": [ { "disabled": false, "description": { "content": "Stable caller-supplied key that makes a retry resolve to the same link.", "type": "text/plain" }, "key": "Idempotency-Key", "value": "" }, { "key": "Content-Type", "value": "application/json" }, { "key": "Accept", "value": "application/json" }, { "description": { "content": "Added as a part of security scheme: bearer", "type": "text/plain" }, "key": "Authorization", "value": "Bearer " } ], "method": "POST", "body": { "mode": "raw", "raw": "{\n \"formId\": \"\",\n \"name\": \"\",\n \"sendChannel\": \"whatsapp\",\n \"email\": \"\",\n \"phone\": \"\",\n \"taxId\": \"\",\n \"dueDays\": 30,\n \"maxAccesses\": \"\",\n \"notes\": \"\",\n \"optIn\": {\n \"source\": \"contract\",\n \"evidenceText\": \"\",\n \"evidenceUrl\": \"\",\n \"collectedWhen\": \"\"\n }\n}", "options": { "raw": { "headerFamily": "json", "language": "json" } } } }, "status": "Created", "code": 201, "header": [ { "key": "Content-Type", "value": "application/json" } ], "body": "{\n \"id\": \"\",\n \"url\": \"\",\n \"sent\": \"\",\n \"sendChannel\": \"whatsapp\",\n \"sendSuppressionReason\": \"\"\n}", "cookie": [], "_postman_previewlanguage": "json" }, { "name": "A field failed validation — a missing `formId` or `name`, a `sendChannel`\noutside the allowed set, or a channel whose matching contact field is absent.\nThe offending field is named in `errors[].field`.", "originalRequest": { "url": { "path": [ "api", "v1", "portal", "magic-link" ], "host": [ "{{baseUrl}}" ], "query": [], "variable": [] }, "header": [ { "disabled": false, "description": { "content": "Stable caller-supplied key that makes a retry resolve to the same link.", "type": "text/plain" }, "key": "Idempotency-Key", "value": "" }, { "key": "Content-Type", "value": "application/json" }, { "key": "Accept", "value": "application/problem+json" }, { "description": { "content": "Added as a part of security scheme: bearer", "type": "text/plain" }, "key": "Authorization", "value": "Bearer " } ], "method": "POST", "body": { "mode": "raw", "raw": "{\n \"formId\": \"\",\n \"name\": \"\",\n \"sendChannel\": \"whatsapp\",\n \"email\": \"\",\n \"phone\": \"\",\n \"taxId\": \"\",\n \"dueDays\": 30,\n \"maxAccesses\": \"\",\n \"notes\": \"\",\n \"optIn\": {\n \"source\": \"contract\",\n \"evidenceText\": \"\",\n \"evidenceUrl\": \"\",\n \"collectedWhen\": \"\"\n }\n}", "options": { "raw": { "headerFamily": "json", "language": "json" } } } }, "status": "Bad Request", "code": 400, "header": [ { "key": "Content-Type", "value": "application/problem+json" } ], "body": "{\n \"type\": \"\",\n \"title\": \"\",\n \"status\": \"\",\n \"detail\": \"\",\n \"instance\": \"\",\n \"code\": \"\",\n \"correlationId\": \"\",\n \"retryable\": \"\",\n \"field\": \"\",\n \"errors\": [\n {\n \"code\": \"\",\n \"message\": \"\",\n \"field\": \"\",\n \"retryable\": \"\",\n \"details\": null\n },\n {\n \"code\": \"\",\n \"message\": \"\",\n \"field\": \"\",\n \"retryable\": \"\",\n \"details\": null\n }\n ]\n}", "cookie": [], "_postman_previewlanguage": "json" }, { "name": "Missing or invalid API key. Both `xtkt_live_` (production) and `xtkt_test_`\n(sandbox) prefixes are accepted, but the key must also be valid and active.", "originalRequest": { "url": { "path": [ "api", "v1", "portal", "magic-link" ], "host": [ "{{baseUrl}}" ], "query": [], "variable": [] }, "header": [ { "disabled": false, "description": { "content": "Stable caller-supplied key that makes a retry resolve to the same link.", "type": "text/plain" }, "key": "Idempotency-Key", "value": "" }, { "key": "Content-Type", "value": "application/json" }, { "key": "Accept", "value": "application/problem+json" }, { "description": { "content": "Added as a part of security scheme: bearer", "type": "text/plain" }, "key": "Authorization", "value": "Bearer " } ], "method": "POST", "body": { "mode": "raw", "raw": "{\n \"formId\": \"\",\n \"name\": \"\",\n \"sendChannel\": \"whatsapp\",\n \"email\": \"\",\n \"phone\": \"\",\n \"taxId\": \"\",\n \"dueDays\": 30,\n \"maxAccesses\": \"\",\n \"notes\": \"\",\n \"optIn\": {\n \"source\": \"contract\",\n \"evidenceText\": \"\",\n \"evidenceUrl\": \"\",\n \"collectedWhen\": \"\"\n }\n}", "options": { "raw": { "headerFamily": "json", "language": "json" } } } }, "status": "Unauthorized", "code": 401, "header": [ { "key": "Content-Type", "value": "application/problem+json" } ], "body": "{\n \"type\": \"\",\n \"title\": \"\",\n \"status\": \"\",\n \"detail\": \"\",\n \"instance\": \"\",\n \"code\": \"\",\n \"correlationId\": \"\",\n \"retryable\": \"\",\n \"field\": \"\",\n \"errors\": [\n {\n \"code\": \"\",\n \"message\": \"\",\n \"field\": \"\",\n \"retryable\": \"\",\n \"details\": null\n },\n {\n \"code\": \"\",\n \"message\": \"\",\n \"field\": \"\",\n \"retryable\": \"\",\n \"details\": null\n }\n ]\n}", "cookie": [], "_postman_previewlanguage": "json" }, { "name": "Billing quota exhausted. `detail` carries the reason and, where one applies, an upgrade URL.", "originalRequest": { "url": { "path": [ "api", "v1", "portal", "magic-link" ], "host": [ "{{baseUrl}}" ], "query": [], "variable": [] }, "header": [ { "disabled": false, "description": { "content": "Stable caller-supplied key that makes a retry resolve to the same link.", "type": "text/plain" }, "key": "Idempotency-Key", "value": "" }, { "key": "Content-Type", "value": "application/json" }, { "key": "Accept", "value": "application/problem+json" }, { "description": { "content": "Added as a part of security scheme: bearer", "type": "text/plain" }, "key": "Authorization", "value": "Bearer " } ], "method": "POST", "body": { "mode": "raw", "raw": "{\n \"formId\": \"\",\n \"name\": \"\",\n \"sendChannel\": \"whatsapp\",\n \"email\": \"\",\n \"phone\": \"\",\n \"taxId\": \"\",\n \"dueDays\": 30,\n \"maxAccesses\": \"\",\n \"notes\": \"\",\n \"optIn\": {\n \"source\": \"contract\",\n \"evidenceText\": \"\",\n \"evidenceUrl\": \"\",\n \"collectedWhen\": \"\"\n }\n}", "options": { "raw": { "headerFamily": "json", "language": "json" } } } }, "status": "Payment Required", "code": 402, "header": [ { "key": "Content-Type", "value": "application/problem+json" } ], "body": "{\n \"type\": \"\",\n \"title\": \"\",\n \"status\": \"\",\n \"detail\": \"\",\n \"instance\": \"\",\n \"code\": \"\",\n \"correlationId\": \"\",\n \"retryable\": \"\",\n \"field\": \"\",\n \"errors\": [\n {\n \"code\": \"\",\n \"message\": \"\",\n \"field\": \"\",\n \"retryable\": \"\",\n \"details\": null\n },\n {\n \"code\": \"\",\n \"message\": \"\",\n \"field\": \"\",\n \"retryable\": \"\",\n \"details\": null\n }\n ]\n}", "cookie": [], "_postman_previewlanguage": "json" }, { "name": "The key is valid but lacks the scope this endpoint requires —\n`portal.forms.read` to read, `portal.magiclinks.write` to create. The missing\nscope is named in the response.", "originalRequest": { "url": { "path": [ "api", "v1", "portal", "magic-link" ], "host": [ "{{baseUrl}}" ], "query": [], "variable": [] }, "header": [ { "disabled": false, "description": { "content": "Stable caller-supplied key that makes a retry resolve to the same link.", "type": "text/plain" }, "key": "Idempotency-Key", "value": "" }, { "key": "Content-Type", "value": "application/json" }, { "key": "Accept", "value": "application/problem+json" }, { "description": { "content": "Added as a part of security scheme: bearer", "type": "text/plain" }, "key": "Authorization", "value": "Bearer " } ], "method": "POST", "body": { "mode": "raw", "raw": "{\n \"formId\": \"\",\n \"name\": \"\",\n \"sendChannel\": \"whatsapp\",\n \"email\": \"\",\n \"phone\": \"\",\n \"taxId\": \"\",\n \"dueDays\": 30,\n \"maxAccesses\": \"\",\n \"notes\": \"\",\n \"optIn\": {\n \"source\": \"contract\",\n \"evidenceText\": \"\",\n \"evidenceUrl\": \"\",\n \"collectedWhen\": \"\"\n }\n}", "options": { "raw": { "headerFamily": "json", "language": "json" } } } }, "status": "Forbidden", "code": 403, "header": [ { "key": "Content-Type", "value": "application/problem+json" } ], "body": "{\n \"type\": \"\",\n \"title\": \"\",\n \"status\": \"\",\n \"detail\": \"\",\n \"instance\": \"\",\n \"code\": \"\",\n \"correlationId\": \"\",\n \"retryable\": \"\",\n \"field\": \"\",\n \"errors\": [\n {\n \"code\": \"\",\n \"message\": \"\",\n \"field\": \"\",\n \"retryable\": \"\",\n \"details\": null\n },\n {\n \"code\": \"\",\n \"message\": \"\",\n \"field\": \"\",\n \"retryable\": \"\",\n \"details\": null\n }\n ]\n}", "cookie": [], "_postman_previewlanguage": "json" }, { "name": "No such form, or it belongs to another tenant. The two are indistinguishable by design.", "originalRequest": { "url": { "path": [ "api", "v1", "portal", "magic-link" ], "host": [ "{{baseUrl}}" ], "query": [], "variable": [] }, "header": [ { "disabled": false, "description": { "content": "Stable caller-supplied key that makes a retry resolve to the same link.", "type": "text/plain" }, "key": "Idempotency-Key", "value": "" }, { "key": "Content-Type", "value": "application/json" }, { "key": "Accept", "value": "application/problem+json" }, { "description": { "content": "Added as a part of security scheme: bearer", "type": "text/plain" }, "key": "Authorization", "value": "Bearer " } ], "method": "POST", "body": { "mode": "raw", "raw": "{\n \"formId\": \"\",\n \"name\": \"\",\n \"sendChannel\": \"whatsapp\",\n \"email\": \"\",\n \"phone\": \"\",\n \"taxId\": \"\",\n \"dueDays\": 30,\n \"maxAccesses\": \"\",\n \"notes\": \"\",\n \"optIn\": {\n \"source\": \"contract\",\n \"evidenceText\": \"\",\n \"evidenceUrl\": \"\",\n \"collectedWhen\": \"\"\n }\n}", "options": { "raw": { "headerFamily": "json", "language": "json" } } } }, "status": "Not Found", "code": 404, "header": [ { "key": "Content-Type", "value": "application/problem+json" } ], "body": "{\n \"type\": \"\",\n \"title\": \"\",\n \"status\": \"\",\n \"detail\": \"\",\n \"instance\": \"\",\n \"code\": \"\",\n \"correlationId\": \"\",\n \"retryable\": \"\",\n \"field\": \"\",\n \"errors\": [\n {\n \"code\": \"\",\n \"message\": \"\",\n \"field\": \"\",\n \"retryable\": \"\",\n \"details\": null\n },\n {\n \"code\": \"\",\n \"message\": \"\",\n \"field\": \"\",\n \"retryable\": \"\",\n \"details\": null\n }\n ]\n}", "cookie": [], "_postman_previewlanguage": "json" }, { "name": "The request conflicts with the current state of what it acts on.", "originalRequest": { "url": { "path": [ "api", "v1", "portal", "magic-link" ], "host": [ "{{baseUrl}}" ], "query": [], "variable": [] }, "header": [ { "disabled": false, "description": { "content": "Stable caller-supplied key that makes a retry resolve to the same link.", "type": "text/plain" }, "key": "Idempotency-Key", "value": "" }, { "key": "Content-Type", "value": "application/json" }, { "key": "Accept", "value": "application/problem+json" }, { "description": { "content": "Added as a part of security scheme: bearer", "type": "text/plain" }, "key": "Authorization", "value": "Bearer " } ], "method": "POST", "body": { "mode": "raw", "raw": "{\n \"formId\": \"\",\n \"name\": \"\",\n \"sendChannel\": \"whatsapp\",\n \"email\": \"\",\n \"phone\": \"\",\n \"taxId\": \"\",\n \"dueDays\": 30,\n \"maxAccesses\": \"\",\n \"notes\": \"\",\n \"optIn\": {\n \"source\": \"contract\",\n \"evidenceText\": \"\",\n \"evidenceUrl\": \"\",\n \"collectedWhen\": \"\"\n }\n}", "options": { "raw": { "headerFamily": "json", "language": "json" } } } }, "status": "Conflict", "code": 409, "header": [ { "key": "Content-Type", "value": "application/problem+json" } ], "body": "{\n \"type\": \"\",\n \"title\": \"\",\n \"status\": \"\",\n \"detail\": \"\",\n \"instance\": \"\",\n \"code\": \"\",\n \"correlationId\": \"\",\n \"retryable\": \"\",\n \"field\": \"\",\n \"errors\": [\n {\n \"code\": \"\",\n \"message\": \"\",\n \"field\": \"\",\n \"retryable\": \"\",\n \"details\": null\n },\n {\n \"code\": \"\",\n \"message\": \"\",\n \"field\": \"\",\n \"retryable\": \"\",\n \"details\": null\n }\n ]\n}", "cookie": [], "_postman_previewlanguage": "json" }, { "name": "Over 50 requests in the current 1-minute window for this key.", "originalRequest": { "url": { "path": [ "api", "v1", "portal", "magic-link" ], "host": [ "{{baseUrl}}" ], "query": [], "variable": [] }, "header": [ { "disabled": false, "description": { "content": "Stable caller-supplied key that makes a retry resolve to the same link.", "type": "text/plain" }, "key": "Idempotency-Key", "value": "" }, { "key": "Content-Type", "value": "application/json" }, { "key": "Accept", "value": "application/problem+json" }, { "description": { "content": "Added as a part of security scheme: bearer", "type": "text/plain" }, "key": "Authorization", "value": "Bearer " } ], "method": "POST", "body": { "mode": "raw", "raw": "{\n \"formId\": \"\",\n \"name\": \"\",\n \"sendChannel\": \"whatsapp\",\n \"email\": \"\",\n \"phone\": \"\",\n \"taxId\": \"\",\n \"dueDays\": 30,\n \"maxAccesses\": \"\",\n \"notes\": \"\",\n \"optIn\": {\n \"source\": \"contract\",\n \"evidenceText\": \"\",\n \"evidenceUrl\": \"\",\n \"collectedWhen\": \"\"\n }\n}", "options": { "raw": { "headerFamily": "json", "language": "json" } } } }, "status": "Too Many Requests", "code": 429, "header": [ { "key": "Content-Type", "value": "application/problem+json" }, { "disabled": false, "description": { "content": "Seconds until the window resets.", "type": "text/plain" }, "key": "Retry-After", "value": "" } ], "body": "{\n \"type\": \"\",\n \"title\": \"\",\n \"status\": \"\",\n \"detail\": \"\",\n \"instance\": \"\",\n \"code\": \"\",\n \"correlationId\": \"\",\n \"retryable\": \"\",\n \"field\": \"\",\n \"errors\": [\n {\n \"code\": \"\",\n \"message\": \"\",\n \"field\": \"\",\n \"retryable\": \"\",\n \"details\": null\n },\n {\n \"code\": \"\",\n \"message\": \"\",\n \"field\": \"\",\n \"retryable\": \"\",\n \"details\": null\n }\n ]\n}", "cookie": [], "_postman_previewlanguage": "json" }, { "name": "Unexpected failure. `correlationId` identifies the request — quote it when\nyou contact support.", "originalRequest": { "url": { "path": [ "api", "v1", "portal", "magic-link" ], "host": [ "{{baseUrl}}" ], "query": [], "variable": [] }, "header": [ { "disabled": false, "description": { "content": "Stable caller-supplied key that makes a retry resolve to the same link.", "type": "text/plain" }, "key": "Idempotency-Key", "value": "" }, { "key": "Content-Type", "value": "application/json" }, { "key": "Accept", "value": "application/problem+json" }, { "description": { "content": "Added as a part of security scheme: bearer", "type": "text/plain" }, "key": "Authorization", "value": "Bearer " } ], "method": "POST", "body": { "mode": "raw", "raw": "{\n \"formId\": \"\",\n \"name\": \"\",\n \"sendChannel\": \"whatsapp\",\n \"email\": \"\",\n \"phone\": \"\",\n \"taxId\": \"\",\n \"dueDays\": 30,\n \"maxAccesses\": \"\",\n \"notes\": \"\",\n \"optIn\": {\n \"source\": \"contract\",\n \"evidenceText\": \"\",\n \"evidenceUrl\": \"\",\n \"collectedWhen\": \"\"\n }\n}", "options": { "raw": { "headerFamily": "json", "language": "json" } } } }, "status": "Internal Server Error", "code": 500, "header": [ { "key": "Content-Type", "value": "application/problem+json" } ], "body": "{\n \"type\": \"\",\n \"title\": \"\",\n \"status\": \"\",\n \"detail\": \"\",\n \"instance\": \"\",\n \"code\": \"\",\n \"correlationId\": \"\",\n \"retryable\": \"\",\n \"field\": \"\",\n \"errors\": [\n {\n \"code\": \"\",\n \"message\": \"\",\n \"field\": \"\",\n \"retryable\": \"\",\n \"details\": null\n },\n {\n \"code\": \"\",\n \"message\": \"\",\n \"field\": \"\",\n \"retryable\": \"\",\n \"details\": null\n }\n ]\n}", "cookie": [], "_postman_previewlanguage": "json" }, { "name": "The Portal service is unreachable. Marked retryable — back off and try again.", "originalRequest": { "url": { "path": [ "api", "v1", "portal", "magic-link" ], "host": [ "{{baseUrl}}" ], "query": [], "variable": [] }, "header": [ { "disabled": false, "description": { "content": "Stable caller-supplied key that makes a retry resolve to the same link.", "type": "text/plain" }, "key": "Idempotency-Key", "value": "" }, { "key": "Content-Type", "value": "application/json" }, { "key": "Accept", "value": "application/problem+json" }, { "description": { "content": "Added as a part of security scheme: bearer", "type": "text/plain" }, "key": "Authorization", "value": "Bearer " } ], "method": "POST", "body": { "mode": "raw", "raw": "{\n \"formId\": \"\",\n \"name\": \"\",\n \"sendChannel\": \"whatsapp\",\n \"email\": \"\",\n \"phone\": \"\",\n \"taxId\": \"\",\n \"dueDays\": 30,\n \"maxAccesses\": \"\",\n \"notes\": \"\",\n \"optIn\": {\n \"source\": \"contract\",\n \"evidenceText\": \"\",\n \"evidenceUrl\": \"\",\n \"collectedWhen\": \"\"\n }\n}", "options": { "raw": { "headerFamily": "json", "language": "json" } } } }, "status": "Bad Gateway", "code": 502, "header": [ { "key": "Content-Type", "value": "application/problem+json" } ], "body": "{\n \"type\": \"\",\n \"title\": \"\",\n \"status\": \"\",\n \"detail\": \"\",\n \"instance\": \"\",\n \"code\": \"\",\n \"correlationId\": \"\",\n \"retryable\": \"\",\n \"field\": \"\",\n \"errors\": [\n {\n \"code\": \"\",\n \"message\": \"\",\n \"field\": \"\",\n \"retryable\": \"\",\n \"details\": null\n },\n {\n \"code\": \"\",\n \"message\": \"\",\n \"field\": \"\",\n \"retryable\": \"\",\n \"details\": null\n }\n ]\n}", "cookie": [], "_postman_previewlanguage": "json" } ], "event": [], "protocolProfileBehavior": { "disableBodyPruning": true } } ] } ] }, { "name": "fraud-verify", "description": "", "item": [ { "name": "Verify a document for fraud", "request": { "name": "Verify a document for fraud", "description": { "content": "Checks one document — a PDF or an image — for signs that it was edited after it\nwas issued, fabricated, or submitted before, and returns a verdict:\n\n- `trusted` — nothing worth a second look;\n- `review` — a person should look before relying on it;\n- `suspect` — strong signs; a person must look.\n\nA verdict never rejects a document by itself. It tells you whether to route the\ndocument to a person.\n\n**What is checked.** PDF edit history and metadata, compression inconsistencies\nbetween image regions, content credentials (C2PA), digital signatures, and whether\nthe same file or the same layout was submitted to your tenant before. When you\nsend `fields` — values already extracted from this document — tax ids, dates and\ntotals are checked as well. `checks` lists every check that ran and what it\nanswered; `failedCoverage` lists the ones that could not run. A check that did not\nrun is not a clear result.\n\n**The file is analysed as you sent it.** Send the original file, not a re-saved or\nprinted copy: re-saving erases the edit history several checks read.\n\n**Opt-in.** Fraud verification runs only for a tenant whose administrator enabled\nfraud detection. Otherwise the call is refused with `fraud.not_enabled` and nothing\nis charged.\n\n**Credits.** 8 credits per analysis, reported in `meta.creditsConsumed`. With\n`reuse` (the default), sending the same file again at the same sensitivity within\n24 hours returns the earlier analysis with `reused: true`, free of charge. An\nanalysis that could not complete (`fraud.unavailable`) is not charged.\n\nProduction keys only. Requires the `fraud-verify.write` scope (a `*` key holds it).\n", "type": "text/plain" }, "url": { "path": [ "api", "v1", "fraud-verify" ], "host": [ "{{baseUrl}}" ], "query": [], "variable": [] }, "header": [ { "key": "Content-Type", "value": "multipart/form-data" }, { "key": "Accept", "value": "application/json" } ], "method": "POST", "body": { "mode": "formdata", "formdata": [ { "description": { "content": "(Required) The document, as received from its holder. PDF or image, up to 10 MB.", "type": "text/plain" }, "key": "file", "type": "file" }, { "description": { "content": "How readily signals turn into `review` and `suspect`. Default: the\nsensitivity saved on `templateId`, otherwise `medium`.\n", "type": "text/plain" }, "key": "sensitivity", "value": "medium", "type": "text", "disabled": true }, { "description": { "content": "A template whose saved fraud settings supply the default sensitivity.", "type": "text/plain" }, "key": "templateId", "value": "", "type": "text", "disabled": true }, { "description": { "content": "Return an earlier analysis of the same file instead of running a new one.", "type": "text/plain" }, "key": "reuse", "value": "true", "type": "text", "disabled": true }, { "description": { "content": "A JSON object of values already extracted from this document, for\nexample `{\"cpf\":\"123.456.789-09\",\"issueDate\":\"2026-02-30\"}`. Enables the\nchecks on tax ids, dates and totals.\n", "type": "text/plain" }, "key": "fields", "value": "", "type": "text", "disabled": true } ] }, "auth": null }, "response": [ { "name": "The analysis.", "originalRequest": { "url": { "path": [ "api", "v1", "fraud-verify" ], "host": [ "{{baseUrl}}" ], "query": [], "variable": [] }, "header": [ { "key": "Content-Type", "value": "multipart/form-data" }, { "key": "Accept", "value": "application/json" }, { "description": { "content": "Added as a part of security scheme: bearer", "type": "text/plain" }, "key": "Authorization", "value": "Bearer " } ], "method": "POST", "body": { "mode": "formdata", "formdata": [ { "description": { "content": "(Required) The document, as received from its holder. PDF or image, up to 10 MB.", "type": "text/plain" }, "key": "file", "type": "file" }, { "description": { "content": "How readily signals turn into `review` and `suspect`. Default: the\nsensitivity saved on `templateId`, otherwise `medium`.\n", "type": "text/plain" }, "key": "sensitivity", "value": "medium", "type": "text" }, { "description": { "content": "A template whose saved fraud settings supply the default sensitivity.", "type": "text/plain" }, "key": "templateId", "value": "", "type": "text" }, { "description": { "content": "Return an earlier analysis of the same file instead of running a new one.", "type": "text/plain" }, "key": "reuse", "value": "true", "type": "text" }, { "description": { "content": "A JSON object of values already extracted from this document, for\nexample `{\"cpf\":\"123.456.789-09\",\"issueDate\":\"2026-02-30\"}`. Enables the\nchecks on tax ids, dates and totals.\n", "type": "text/plain" }, "key": "fields", "value": "", "type": "text" } ] } }, "status": "OK", "code": 200, "header": [ { "key": "Content-Type", "value": "application/json" } ], "body": "{\n \"data\": {\n \"requestId\": \"\",\n \"verdict\": \"trusted\",\n \"riskScore\": \"\",\n \"policyAction\": \"flag\",\n \"reused\": \"\",\n \"signals\": [\n {\n \"code\": \"\",\n \"label\": \"\",\n \"severity\": \"high\",\n \"score\": \"\",\n \"evidence\": \"\"\n },\n {\n \"code\": \"\",\n \"label\": \"\",\n \"severity\": \"high\",\n \"score\": \"\",\n \"evidence\": \"\"\n }\n ],\n \"checks\": [\n {\n \"name\": \"\",\n \"status\": \"clear\",\n \"signals\": [\n {\n \"code\": \"\",\n \"label\": \"\",\n \"severity\": \"low\",\n \"score\": \"\",\n \"evidence\": \"\"\n },\n {\n \"code\": \"\",\n \"label\": \"\",\n \"severity\": \"medium\",\n \"score\": \"\",\n \"evidence\": \"\"\n }\n ]\n },\n {\n \"name\": \"\",\n \"status\": \"failed\",\n \"signals\": [\n {\n \"code\": \"\",\n \"label\": \"\",\n \"severity\": \"high\",\n \"score\": \"\",\n \"evidence\": \"\"\n },\n {\n \"code\": \"\",\n \"label\": \"\",\n \"severity\": \"high\",\n \"score\": \"\",\n \"evidence\": \"\"\n }\n ]\n }\n ],\n \"failedCoverage\": [\n \"\",\n \"\"\n ],\n \"aiGeneratedLikelihood\": \"\",\n \"pipelineVersion\": \"\"\n },\n \"meta\": {\n \"httpStatusCode\": \"\",\n \"messages\": [\n \"\",\n \"\"\n ],\n \"errors\": [\n {\n \"code\": \"\",\n \"message\": \"\",\n \"retryable\": \"\",\n \"field\": \"\",\n \"details\": null\n },\n {\n \"code\": \"\",\n \"message\": \"\",\n \"retryable\": \"\",\n \"field\": \"\",\n \"details\": {\n \"key_0\": \"\"\n }\n }\n ],\n \"creditsConsumed\": \"\"\n },\n \"hasErrors\": \"\"\n}", "cookie": [], "_postman_previewlanguage": "json" }, { "name": "The request is invalid. Refused before processing — malformed or unsafe — it\nis a problem document; refused by processing itself, such as a missing file,\nit is the service envelope with the reason in `meta.errors`.", "originalRequest": { "url": { "path": [ "api", "v1", "fraud-verify" ], "host": [ "{{baseUrl}}" ], "query": [], "variable": [] }, "header": [ { "key": "Content-Type", "value": "multipart/form-data" }, { "key": "Accept", "value": "application/problem+json" }, { "description": { "content": "Added as a part of security scheme: bearer", "type": "text/plain" }, "key": "Authorization", "value": "Bearer " } ], "method": "POST", "body": { "mode": "formdata", "formdata": [ { "description": { "content": "(Required) The document, as received from its holder. PDF or image, up to 10 MB.", "type": "text/plain" }, "key": "file", "type": "file" }, { "description": { "content": "How readily signals turn into `review` and `suspect`. Default: the\nsensitivity saved on `templateId`, otherwise `medium`.\n", "type": "text/plain" }, "key": "sensitivity", "value": "medium", "type": "text" }, { "description": { "content": "A template whose saved fraud settings supply the default sensitivity.", "type": "text/plain" }, "key": "templateId", "value": "", "type": "text" }, { "description": { "content": "Return an earlier analysis of the same file instead of running a new one.", "type": "text/plain" }, "key": "reuse", "value": "true", "type": "text" }, { "description": { "content": "A JSON object of values already extracted from this document, for\nexample `{\"cpf\":\"123.456.789-09\",\"issueDate\":\"2026-02-30\"}`. Enables the\nchecks on tax ids, dates and totals.\n", "type": "text/plain" }, "key": "fields", "value": "", "type": "text" } ] } }, "status": "Bad Request", "code": 400, "header": [ { "key": "Content-Type", "value": "application/json" } ], "body": "{\n \"data\": {\n \"key_0\": \"string\",\n \"key_1\": 8935,\n \"key_2\": 7067.274549044669,\n \"key_3\": 6605.237934272736\n },\n \"meta\": {\n \"httpStatusCode\": \"\",\n \"messages\": [\n \"\",\n \"\"\n ],\n \"errors\": [\n {\n \"code\": \"\",\n \"message\": \"\",\n \"retryable\": \"\",\n \"field\": \"\",\n \"details\": {\n \"key_0\": \"\",\n \"key_1\": \"\",\n \"key_2\": \"\",\n \"key_3\": \"\"\n }\n },\n {\n \"code\": \"\",\n \"message\": \"\",\n \"retryable\": \"\",\n \"field\": \"\",\n \"details\": {\n \"key_0\": \"\"\n }\n }\n ],\n \"creditsConsumed\": \"\"\n },\n \"hasErrors\": \"\"\n}", "cookie": [], "_postman_previewlanguage": "json" }, { "name": "Missing or invalid API key. Both `xtkt_live_` (production) and `xtkt_test_`\n(sandbox) prefixes are accepted, but the key must also be valid and active.", "originalRequest": { "url": { "path": [ "api", "v1", "fraud-verify" ], "host": [ "{{baseUrl}}" ], "query": [], "variable": [] }, "header": [ { "key": "Content-Type", "value": "multipart/form-data" }, { "key": "Accept", "value": "application/problem+json" }, { "description": { "content": "Added as a part of security scheme: bearer", "type": "text/plain" }, "key": "Authorization", "value": "Bearer " } ], "method": "POST", "body": { "mode": "formdata", "formdata": [ { "description": { "content": "(Required) The document, as received from its holder. PDF or image, up to 10 MB.", "type": "text/plain" }, "key": "file", "type": "file" }, { "description": { "content": "How readily signals turn into `review` and `suspect`. Default: the\nsensitivity saved on `templateId`, otherwise `medium`.\n", "type": "text/plain" }, "key": "sensitivity", "value": "medium", "type": "text" }, { "description": { "content": "A template whose saved fraud settings supply the default sensitivity.", "type": "text/plain" }, "key": "templateId", "value": "", "type": "text" }, { "description": { "content": "Return an earlier analysis of the same file instead of running a new one.", "type": "text/plain" }, "key": "reuse", "value": "true", "type": "text" }, { "description": { "content": "A JSON object of values already extracted from this document, for\nexample `{\"cpf\":\"123.456.789-09\",\"issueDate\":\"2026-02-30\"}`. Enables the\nchecks on tax ids, dates and totals.\n", "type": "text/plain" }, "key": "fields", "value": "", "type": "text" } ] } }, "status": "Unauthorized", "code": 401, "header": [ { "key": "Content-Type", "value": "application/problem+json" } ], "body": "{\n \"type\": \"\",\n \"title\": \"\",\n \"status\": \"\",\n \"detail\": \"\",\n \"instance\": \"\",\n \"code\": \"\",\n \"correlationId\": \"\",\n \"retryable\": \"\",\n \"field\": \"\",\n \"errors\": [\n {\n \"code\": \"\",\n \"message\": \"\",\n \"field\": \"\",\n \"retryable\": \"\",\n \"details\": null\n },\n {\n \"code\": \"\",\n \"message\": \"\",\n \"field\": \"\",\n \"retryable\": \"\",\n \"details\": null\n }\n ]\n}", "cookie": [], "_postman_previewlanguage": "json" }, { "name": "Refused before anything ran, nothing charged. `fraud.not_enabled`: your tenant has\nnot enabled fraud detection; an administrator turns it on. `fraud.scope_required`:\nthe key lacks `fraud-verify.write` (or `fraud-verify.read` to read back). A sandbox\nkey gets `environment.sandbox_route_unavailable`.", "originalRequest": { "url": { "path": [ "api", "v1", "fraud-verify" ], "host": [ "{{baseUrl}}" ], "query": [], "variable": [] }, "header": [ { "key": "Content-Type", "value": "multipart/form-data" }, { "key": "Accept", "value": "application/json" }, { "description": { "content": "Added as a part of security scheme: bearer", "type": "text/plain" }, "key": "Authorization", "value": "Bearer " } ], "method": "POST", "body": { "mode": "formdata", "formdata": [ { "description": { "content": "(Required) The document, as received from its holder. PDF or image, up to 10 MB.", "type": "text/plain" }, "key": "file", "type": "file" }, { "description": { "content": "How readily signals turn into `review` and `suspect`. Default: the\nsensitivity saved on `templateId`, otherwise `medium`.\n", "type": "text/plain" }, "key": "sensitivity", "value": "medium", "type": "text" }, { "description": { "content": "A template whose saved fraud settings supply the default sensitivity.", "type": "text/plain" }, "key": "templateId", "value": "", "type": "text" }, { "description": { "content": "Return an earlier analysis of the same file instead of running a new one.", "type": "text/plain" }, "key": "reuse", "value": "true", "type": "text" }, { "description": { "content": "A JSON object of values already extracted from this document, for\nexample `{\"cpf\":\"123.456.789-09\",\"issueDate\":\"2026-02-30\"}`. Enables the\nchecks on tax ids, dates and totals.\n", "type": "text/plain" }, "key": "fields", "value": "", "type": "text" } ] } }, "status": "Forbidden", "code": 403, "header": [ { "key": "Content-Type", "value": "application/json" } ], "body": "{\n \"data\": {\n \"key_0\": \"string\",\n \"key_1\": 8935,\n \"key_2\": 7067.274549044669,\n \"key_3\": 6605.237934272736\n },\n \"meta\": {\n \"httpStatusCode\": \"\",\n \"messages\": [\n \"\",\n \"\"\n ],\n \"errors\": [\n {\n \"code\": \"\",\n \"message\": \"\",\n \"retryable\": \"\",\n \"field\": \"\",\n \"details\": {\n \"key_0\": \"\",\n \"key_1\": \"\",\n \"key_2\": \"\",\n \"key_3\": \"\"\n }\n },\n {\n \"code\": \"\",\n \"message\": \"\",\n \"retryable\": \"\",\n \"field\": \"\",\n \"details\": {\n \"key_0\": \"\"\n }\n }\n ],\n \"creditsConsumed\": \"\"\n },\n \"hasErrors\": \"\"\n}", "cookie": [], "_postman_previewlanguage": "json" }, { "name": "Nothing answers at this address for this tenant.", "originalRequest": { "url": { "path": [ "api", "v1", "fraud-verify" ], "host": [ "{{baseUrl}}" ], "query": [], "variable": [] }, "header": [ { "key": "Content-Type", "value": "multipart/form-data" }, { "key": "Accept", "value": "application/problem+json" }, { "description": { "content": "Added as a part of security scheme: bearer", "type": "text/plain" }, "key": "Authorization", "value": "Bearer " } ], "method": "POST", "body": { "mode": "formdata", "formdata": [ { "description": { "content": "(Required) The document, as received from its holder. PDF or image, up to 10 MB.", "type": "text/plain" }, "key": "file", "type": "file" }, { "description": { "content": "How readily signals turn into `review` and `suspect`. Default: the\nsensitivity saved on `templateId`, otherwise `medium`.\n", "type": "text/plain" }, "key": "sensitivity", "value": "medium", "type": "text" }, { "description": { "content": "A template whose saved fraud settings supply the default sensitivity.", "type": "text/plain" }, "key": "templateId", "value": "", "type": "text" }, { "description": { "content": "Return an earlier analysis of the same file instead of running a new one.", "type": "text/plain" }, "key": "reuse", "value": "true", "type": "text" }, { "description": { "content": "A JSON object of values already extracted from this document, for\nexample `{\"cpf\":\"123.456.789-09\",\"issueDate\":\"2026-02-30\"}`. Enables the\nchecks on tax ids, dates and totals.\n", "type": "text/plain" }, "key": "fields", "value": "", "type": "text" } ] } }, "status": "Not Found", "code": 404, "header": [ { "key": "Content-Type", "value": "application/problem+json" } ], "body": "{\n \"type\": \"\",\n \"title\": \"\",\n \"status\": \"\",\n \"detail\": \"\",\n \"instance\": \"\",\n \"code\": \"\",\n \"correlationId\": \"\",\n \"retryable\": \"\",\n \"field\": \"\",\n \"errors\": [\n {\n \"code\": \"\",\n \"message\": \"\",\n \"field\": \"\",\n \"retryable\": \"\",\n \"details\": null\n },\n {\n \"code\": \"\",\n \"message\": \"\",\n \"field\": \"\",\n \"retryable\": \"\",\n \"details\": null\n }\n ]\n}", "cookie": [], "_postman_previewlanguage": "json" }, { "name": "The request conflicts with the current state of what it acts on.", "originalRequest": { "url": { "path": [ "api", "v1", "fraud-verify" ], "host": [ "{{baseUrl}}" ], "query": [], "variable": [] }, "header": [ { "key": "Content-Type", "value": "multipart/form-data" }, { "key": "Accept", "value": "application/problem+json" }, { "description": { "content": "Added as a part of security scheme: bearer", "type": "text/plain" }, "key": "Authorization", "value": "Bearer " } ], "method": "POST", "body": { "mode": "formdata", "formdata": [ { "description": { "content": "(Required) The document, as received from its holder. PDF or image, up to 10 MB.", "type": "text/plain" }, "key": "file", "type": "file" }, { "description": { "content": "How readily signals turn into `review` and `suspect`. Default: the\nsensitivity saved on `templateId`, otherwise `medium`.\n", "type": "text/plain" }, "key": "sensitivity", "value": "medium", "type": "text" }, { "description": { "content": "A template whose saved fraud settings supply the default sensitivity.", "type": "text/plain" }, "key": "templateId", "value": "", "type": "text" }, { "description": { "content": "Return an earlier analysis of the same file instead of running a new one.", "type": "text/plain" }, "key": "reuse", "value": "true", "type": "text" }, { "description": { "content": "A JSON object of values already extracted from this document, for\nexample `{\"cpf\":\"123.456.789-09\",\"issueDate\":\"2026-02-30\"}`. Enables the\nchecks on tax ids, dates and totals.\n", "type": "text/plain" }, "key": "fields", "value": "", "type": "text" } ] } }, "status": "Conflict", "code": 409, "header": [ { "key": "Content-Type", "value": "application/problem+json" } ], "body": "{\n \"type\": \"\",\n \"title\": \"\",\n \"status\": \"\",\n \"detail\": \"\",\n \"instance\": \"\",\n \"code\": \"\",\n \"correlationId\": \"\",\n \"retryable\": \"\",\n \"field\": \"\",\n \"errors\": [\n {\n \"code\": \"\",\n \"message\": \"\",\n \"field\": \"\",\n \"retryable\": \"\",\n \"details\": null\n },\n {\n \"code\": \"\",\n \"message\": \"\",\n \"field\": \"\",\n \"retryable\": \"\",\n \"details\": null\n }\n ]\n}", "cookie": [], "_postman_previewlanguage": "json" }, { "name": "Over the size limit — 10 MB, or 32 MB on `/Document/split`.", "originalRequest": { "url": { "path": [ "api", "v1", "fraud-verify" ], "host": [ "{{baseUrl}}" ], "query": [], "variable": [] }, "header": [ { "key": "Content-Type", "value": "multipart/form-data" }, { "description": { "content": "Added as a part of security scheme: bearer", "type": "text/plain" }, "key": "Authorization", "value": "Bearer " } ], "method": "POST", "body": { "mode": "formdata", "formdata": [ { "description": { "content": "(Required) The document, as received from its holder. PDF or image, up to 10 MB.", "type": "text/plain" }, "key": "file", "type": "file" }, { "description": { "content": "How readily signals turn into `review` and `suspect`. Default: the\nsensitivity saved on `templateId`, otherwise `medium`.\n", "type": "text/plain" }, "key": "sensitivity", "value": "medium", "type": "text" }, { "description": { "content": "A template whose saved fraud settings supply the default sensitivity.", "type": "text/plain" }, "key": "templateId", "value": "", "type": "text" }, { "description": { "content": "Return an earlier analysis of the same file instead of running a new one.", "type": "text/plain" }, "key": "reuse", "value": "true", "type": "text" }, { "description": { "content": "A JSON object of values already extracted from this document, for\nexample `{\"cpf\":\"123.456.789-09\",\"issueDate\":\"2026-02-30\"}`. Enables the\nchecks on tax ids, dates and totals.\n", "type": "text/plain" }, "key": "fields", "value": "", "type": "text" } ] } }, "status": "Request Entity Too Large", "code": 413, "header": [], "cookie": [], "_postman_previewlanguage": "text" }, { "name": "The file's type is not accepted. The body is the service envelope\n(`ServiceErrorEnvelope`); read `meta.errors[].code`. None of these is retryable\nas is — fix the upload first.\n\n- `ADMISSION_UNSUPPORTED_MEDIA_TYPE` — the file part carried no usable\n `Content-Type` (none at all, or a generic `application/octet-stream`) and the\n type could not be determined from the file's content or its name either.\n Send the part with its MIME type, for example `application/pdf`, `image/png`\n or `image/jpeg`. Some multipart clients leave it out unless you set it —\n Python `requests` with a bare `open()`, for one.\n- `document.unsupported_media_type` — the file's extension or content is outside\n the accepted types listed under **Uploads**.\n- `ADMISSION_TYPE_REJECTED` — the file's content was refused as a document type.", "originalRequest": { "url": { "path": [ "api", "v1", "fraud-verify" ], "host": [ "{{baseUrl}}" ], "query": [], "variable": [] }, "header": [ { "key": "Content-Type", "value": "multipart/form-data" }, { "description": { "content": "Added as a part of security scheme: bearer", "type": "text/plain" }, "key": "Authorization", "value": "Bearer " } ], "method": "POST", "body": { "mode": "formdata", "formdata": [ { "description": { "content": "(Required) The document, as received from its holder. PDF or image, up to 10 MB.", "type": "text/plain" }, "key": "file", "type": "file" }, { "description": { "content": "How readily signals turn into `review` and `suspect`. Default: the\nsensitivity saved on `templateId`, otherwise `medium`.\n", "type": "text/plain" }, "key": "sensitivity", "value": "medium", "type": "text" }, { "description": { "content": "A template whose saved fraud settings supply the default sensitivity.", "type": "text/plain" }, "key": "templateId", "value": "", "type": "text" }, { "description": { "content": "Return an earlier analysis of the same file instead of running a new one.", "type": "text/plain" }, "key": "reuse", "value": "true", "type": "text" }, { "description": { "content": "A JSON object of values already extracted from this document, for\nexample `{\"cpf\":\"123.456.789-09\",\"issueDate\":\"2026-02-30\"}`. Enables the\nchecks on tax ids, dates and totals.\n", "type": "text/plain" }, "key": "fields", "value": "", "type": "text" } ] } }, "status": "Unsupported Media Type", "code": 415, "header": [], "cookie": [], "_postman_previewlanguage": "text" }, { "name": "The document was rejected by the security policy, or could not be\nconverted safely. The `code` says which.", "originalRequest": { "url": { "path": [ "api", "v1", "fraud-verify" ], "host": [ "{{baseUrl}}" ], "query": [], "variable": [] }, "header": [ { "key": "Content-Type", "value": "multipart/form-data" }, { "key": "Accept", "value": "application/json" }, { "description": { "content": "Added as a part of security scheme: bearer", "type": "text/plain" }, "key": "Authorization", "value": "Bearer " } ], "method": "POST", "body": { "mode": "formdata", "formdata": [ { "description": { "content": "(Required) The document, as received from its holder. PDF or image, up to 10 MB.", "type": "text/plain" }, "key": "file", "type": "file" }, { "description": { "content": "How readily signals turn into `review` and `suspect`. Default: the\nsensitivity saved on `templateId`, otherwise `medium`.\n", "type": "text/plain" }, "key": "sensitivity", "value": "medium", "type": "text" }, { "description": { "content": "A template whose saved fraud settings supply the default sensitivity.", "type": "text/plain" }, "key": "templateId", "value": "", "type": "text" }, { "description": { "content": "Return an earlier analysis of the same file instead of running a new one.", "type": "text/plain" }, "key": "reuse", "value": "true", "type": "text" }, { "description": { "content": "A JSON object of values already extracted from this document, for\nexample `{\"cpf\":\"123.456.789-09\",\"issueDate\":\"2026-02-30\"}`. Enables the\nchecks on tax ids, dates and totals.\n", "type": "text/plain" }, "key": "fields", "value": "", "type": "text" } ] } }, "status": "Unprocessable Entity (WebDAV) (RFC 4918)", "code": 422, "header": [ { "key": "Content-Type", "value": "application/json" } ], "body": "{\n \"data\": {\n \"key_0\": \"string\",\n \"key_1\": 8935,\n \"key_2\": 7067.274549044669,\n \"key_3\": 6605.237934272736\n },\n \"meta\": {\n \"httpStatusCode\": \"\",\n \"messages\": [\n \"\",\n \"\"\n ],\n \"errors\": [\n {\n \"code\": \"\",\n \"message\": \"\",\n \"retryable\": \"\",\n \"field\": \"\",\n \"details\": {\n \"key_0\": \"\",\n \"key_1\": \"\",\n \"key_2\": \"\",\n \"key_3\": \"\"\n }\n },\n {\n \"code\": \"\",\n \"message\": \"\",\n \"retryable\": \"\",\n \"field\": \"\",\n \"details\": {\n \"key_0\": \"\"\n }\n }\n ],\n \"creditsConsumed\": \"\"\n },\n \"hasErrors\": \"\"\n}", "cookie": [], "_postman_previewlanguage": "json" }, { "name": "Over 50 requests in the current 1-minute window for this key, answered as a\nproblem document; or the document admission quota is exhausted, answered as\nthe service envelope with `ADMISSION_QUOTA_EXCEEDED`. Both are retryable.", "originalRequest": { "url": { "path": [ "api", "v1", "fraud-verify" ], "host": [ "{{baseUrl}}" ], "query": [], "variable": [] }, "header": [ { "key": "Content-Type", "value": "multipart/form-data" }, { "key": "Accept", "value": "application/problem+json" }, { "description": { "content": "Added as a part of security scheme: bearer", "type": "text/plain" }, "key": "Authorization", "value": "Bearer " } ], "method": "POST", "body": { "mode": "formdata", "formdata": [ { "description": { "content": "(Required) The document, as received from its holder. PDF or image, up to 10 MB.", "type": "text/plain" }, "key": "file", "type": "file" }, { "description": { "content": "How readily signals turn into `review` and `suspect`. Default: the\nsensitivity saved on `templateId`, otherwise `medium`.\n", "type": "text/plain" }, "key": "sensitivity", "value": "medium", "type": "text" }, { "description": { "content": "A template whose saved fraud settings supply the default sensitivity.", "type": "text/plain" }, "key": "templateId", "value": "", "type": "text" }, { "description": { "content": "Return an earlier analysis of the same file instead of running a new one.", "type": "text/plain" }, "key": "reuse", "value": "true", "type": "text" }, { "description": { "content": "A JSON object of values already extracted from this document, for\nexample `{\"cpf\":\"123.456.789-09\",\"issueDate\":\"2026-02-30\"}`. Enables the\nchecks on tax ids, dates and totals.\n", "type": "text/plain" }, "key": "fields", "value": "", "type": "text" } ] } }, "status": "Too Many Requests", "code": 429, "header": [ { "key": "Content-Type", "value": "application/json" }, { "disabled": false, "description": { "content": "Seconds until the rate-limit window resets. Sent with the problem document.", "type": "text/plain" }, "key": "Retry-After", "value": "" } ], "body": "{\n \"data\": {\n \"key_0\": \"string\",\n \"key_1\": 8935,\n \"key_2\": 7067.274549044669,\n \"key_3\": 6605.237934272736\n },\n \"meta\": {\n \"httpStatusCode\": \"\",\n \"messages\": [\n \"\",\n \"\"\n ],\n \"errors\": [\n {\n \"code\": \"\",\n \"message\": \"\",\n \"retryable\": \"\",\n \"field\": \"\",\n \"details\": {\n \"key_0\": \"\",\n \"key_1\": \"\",\n \"key_2\": \"\",\n \"key_3\": \"\"\n }\n },\n {\n \"code\": \"\",\n \"message\": \"\",\n \"retryable\": \"\",\n \"field\": \"\",\n \"details\": {\n \"key_0\": \"\"\n }\n }\n ],\n \"creditsConsumed\": \"\"\n },\n \"hasErrors\": \"\"\n}", "cookie": [], "_postman_previewlanguage": "json" }, { "name": "Unexpected failure. `correlationId` identifies the request — quote it when\nyou contact support.", "originalRequest": { "url": { "path": [ "api", "v1", "fraud-verify" ], "host": [ "{{baseUrl}}" ], "query": [], "variable": [] }, "header": [ { "key": "Content-Type", "value": "multipart/form-data" }, { "key": "Accept", "value": "application/problem+json" }, { "description": { "content": "Added as a part of security scheme: bearer", "type": "text/plain" }, "key": "Authorization", "value": "Bearer " } ], "method": "POST", "body": { "mode": "formdata", "formdata": [ { "description": { "content": "(Required) The document, as received from its holder. PDF or image, up to 10 MB.", "type": "text/plain" }, "key": "file", "type": "file" }, { "description": { "content": "How readily signals turn into `review` and `suspect`. Default: the\nsensitivity saved on `templateId`, otherwise `medium`.\n", "type": "text/plain" }, "key": "sensitivity", "value": "medium", "type": "text" }, { "description": { "content": "A template whose saved fraud settings supply the default sensitivity.", "type": "text/plain" }, "key": "templateId", "value": "", "type": "text" }, { "description": { "content": "Return an earlier analysis of the same file instead of running a new one.", "type": "text/plain" }, "key": "reuse", "value": "true", "type": "text" }, { "description": { "content": "A JSON object of values already extracted from this document, for\nexample `{\"cpf\":\"123.456.789-09\",\"issueDate\":\"2026-02-30\"}`. Enables the\nchecks on tax ids, dates and totals.\n", "type": "text/plain" }, "key": "fields", "value": "", "type": "text" } ] } }, "status": "Internal Server Error", "code": 500, "header": [ { "key": "Content-Type", "value": "application/problem+json" } ], "body": "{\n \"type\": \"\",\n \"title\": \"\",\n \"status\": \"\",\n \"detail\": \"\",\n \"instance\": \"\",\n \"code\": \"\",\n \"correlationId\": \"\",\n \"retryable\": \"\",\n \"field\": \"\",\n \"errors\": [\n {\n \"code\": \"\",\n \"message\": \"\",\n \"field\": \"\",\n \"retryable\": \"\",\n \"details\": null\n },\n {\n \"code\": \"\",\n \"message\": \"\",\n \"field\": \"\",\n \"retryable\": \"\",\n \"details\": null\n }\n ]\n}", "cookie": [], "_postman_previewlanguage": "json" }, { "name": "Document processing could not complete because an upstream service or its\nadmission proof failed. The body is the service envelope. Read\n`meta.errors[].retryable` for the specific error; the HTTP status alone does\nnot mean the operation is safe to repeat.", "originalRequest": { "url": { "path": [ "api", "v1", "fraud-verify" ], "host": [ "{{baseUrl}}" ], "query": [], "variable": [] }, "header": [ { "key": "Content-Type", "value": "multipart/form-data" }, { "key": "Accept", "value": "application/json" }, { "description": { "content": "Added as a part of security scheme: bearer", "type": "text/plain" }, "key": "Authorization", "value": "Bearer " } ], "method": "POST", "body": { "mode": "formdata", "formdata": [ { "description": { "content": "(Required) The document, as received from its holder. PDF or image, up to 10 MB.", "type": "text/plain" }, "key": "file", "type": "file" }, { "description": { "content": "How readily signals turn into `review` and `suspect`. Default: the\nsensitivity saved on `templateId`, otherwise `medium`.\n", "type": "text/plain" }, "key": "sensitivity", "value": "medium", "type": "text" }, { "description": { "content": "A template whose saved fraud settings supply the default sensitivity.", "type": "text/plain" }, "key": "templateId", "value": "", "type": "text" }, { "description": { "content": "Return an earlier analysis of the same file instead of running a new one.", "type": "text/plain" }, "key": "reuse", "value": "true", "type": "text" }, { "description": { "content": "A JSON object of values already extracted from this document, for\nexample `{\"cpf\":\"123.456.789-09\",\"issueDate\":\"2026-02-30\"}`. Enables the\nchecks on tax ids, dates and totals.\n", "type": "text/plain" }, "key": "fields", "value": "", "type": "text" } ] } }, "status": "Bad Gateway", "code": 502, "header": [ { "key": "Content-Type", "value": "application/json" } ], "body": "{\n \"data\": {\n \"key_0\": \"string\",\n \"key_1\": 8935,\n \"key_2\": 7067.274549044669,\n \"key_3\": 6605.237934272736\n },\n \"meta\": {\n \"httpStatusCode\": \"\",\n \"messages\": [\n \"\",\n \"\"\n ],\n \"errors\": [\n {\n \"code\": \"\",\n \"message\": \"\",\n \"retryable\": \"\",\n \"field\": \"\",\n \"details\": {\n \"key_0\": \"\",\n \"key_1\": \"\",\n \"key_2\": \"\",\n \"key_3\": \"\"\n }\n },\n {\n \"code\": \"\",\n \"message\": \"\",\n \"retryable\": \"\",\n \"field\": \"\",\n \"details\": {\n \"key_0\": \"\"\n }\n }\n ],\n \"creditsConsumed\": \"\"\n },\n \"hasErrors\": \"\"\n}", "cookie": [], "_postman_previewlanguage": "json" }, { "name": "Document processing could not complete because an upstream service or its\nadmission proof failed. The body is the service envelope. Read\n`meta.errors[].retryable` for the specific error; the HTTP status alone does\nnot mean the operation is safe to repeat.", "originalRequest": { "url": { "path": [ "api", "v1", "fraud-verify" ], "host": [ "{{baseUrl}}" ], "query": [], "variable": [] }, "header": [ { "key": "Content-Type", "value": "multipart/form-data" }, { "key": "Accept", "value": "application/json" }, { "description": { "content": "Added as a part of security scheme: bearer", "type": "text/plain" }, "key": "Authorization", "value": "Bearer " } ], "method": "POST", "body": { "mode": "formdata", "formdata": [ { "description": { "content": "(Required) The document, as received from its holder. PDF or image, up to 10 MB.", "type": "text/plain" }, "key": "file", "type": "file" }, { "description": { "content": "How readily signals turn into `review` and `suspect`. Default: the\nsensitivity saved on `templateId`, otherwise `medium`.\n", "type": "text/plain" }, "key": "sensitivity", "value": "medium", "type": "text" }, { "description": { "content": "A template whose saved fraud settings supply the default sensitivity.", "type": "text/plain" }, "key": "templateId", "value": "", "type": "text" }, { "description": { "content": "Return an earlier analysis of the same file instead of running a new one.", "type": "text/plain" }, "key": "reuse", "value": "true", "type": "text" }, { "description": { "content": "A JSON object of values already extracted from this document, for\nexample `{\"cpf\":\"123.456.789-09\",\"issueDate\":\"2026-02-30\"}`. Enables the\nchecks on tax ids, dates and totals.\n", "type": "text/plain" }, "key": "fields", "value": "", "type": "text" } ] } }, "status": "Service Unavailable", "code": 503, "header": [ { "key": "Content-Type", "value": "application/json" } ], "body": "{\n \"data\": {\n \"key_0\": \"string\",\n \"key_1\": 8935,\n \"key_2\": 7067.274549044669,\n \"key_3\": 6605.237934272736\n },\n \"meta\": {\n \"httpStatusCode\": \"\",\n \"messages\": [\n \"\",\n \"\"\n ],\n \"errors\": [\n {\n \"code\": \"\",\n \"message\": \"\",\n \"retryable\": \"\",\n \"field\": \"\",\n \"details\": {\n \"key_0\": \"\",\n \"key_1\": \"\",\n \"key_2\": \"\",\n \"key_3\": \"\"\n }\n },\n {\n \"code\": \"\",\n \"message\": \"\",\n \"retryable\": \"\",\n \"field\": \"\",\n \"details\": {\n \"key_0\": \"\"\n }\n }\n ],\n \"creditsConsumed\": \"\"\n },\n \"hasErrors\": \"\"\n}", "cookie": [], "_postman_previewlanguage": "json" }, { "name": "Document processing could not complete because an upstream service or its\nadmission proof failed. The body is the service envelope. Read\n`meta.errors[].retryable` for the specific error; the HTTP status alone does\nnot mean the operation is safe to repeat.", "originalRequest": { "url": { "path": [ "api", "v1", "fraud-verify" ], "host": [ "{{baseUrl}}" ], "query": [], "variable": [] }, "header": [ { "key": "Content-Type", "value": "multipart/form-data" }, { "key": "Accept", "value": "application/json" }, { "description": { "content": "Added as a part of security scheme: bearer", "type": "text/plain" }, "key": "Authorization", "value": "Bearer " } ], "method": "POST", "body": { "mode": "formdata", "formdata": [ { "description": { "content": "(Required) The document, as received from its holder. PDF or image, up to 10 MB.", "type": "text/plain" }, "key": "file", "type": "file" }, { "description": { "content": "How readily signals turn into `review` and `suspect`. Default: the\nsensitivity saved on `templateId`, otherwise `medium`.\n", "type": "text/plain" }, "key": "sensitivity", "value": "medium", "type": "text" }, { "description": { "content": "A template whose saved fraud settings supply the default sensitivity.", "type": "text/plain" }, "key": "templateId", "value": "", "type": "text" }, { "description": { "content": "Return an earlier analysis of the same file instead of running a new one.", "type": "text/plain" }, "key": "reuse", "value": "true", "type": "text" }, { "description": { "content": "A JSON object of values already extracted from this document, for\nexample `{\"cpf\":\"123.456.789-09\",\"issueDate\":\"2026-02-30\"}`. Enables the\nchecks on tax ids, dates and totals.\n", "type": "text/plain" }, "key": "fields", "value": "", "type": "text" } ] } }, "status": "Gateway Timeout", "code": 504, "header": [ { "key": "Content-Type", "value": "application/json" } ], "body": "{\n \"data\": {\n \"key_0\": \"string\",\n \"key_1\": 8935,\n \"key_2\": 7067.274549044669,\n \"key_3\": 6605.237934272736\n },\n \"meta\": {\n \"httpStatusCode\": \"\",\n \"messages\": [\n \"\",\n \"\"\n ],\n \"errors\": [\n {\n \"code\": \"\",\n \"message\": \"\",\n \"retryable\": \"\",\n \"field\": \"\",\n \"details\": {\n \"key_0\": \"\",\n \"key_1\": \"\",\n \"key_2\": \"\",\n \"key_3\": \"\"\n }\n },\n {\n \"code\": \"\",\n \"message\": \"\",\n \"retryable\": \"\",\n \"field\": \"\",\n \"details\": {\n \"key_0\": \"\"\n }\n }\n ],\n \"creditsConsumed\": \"\"\n },\n \"hasErrors\": \"\"\n}", "cookie": [], "_postman_previewlanguage": "json" } ], "event": [], "protocolProfileBehavior": { "disableBodyPruning": true } }, { "name": "{requestId}", "description": "", "item": [ { "name": "Get a fraud verification", "request": { "name": "Get a fraud verification", "description": { "content": "Reads an analysis back by the `requestId` the verification returned. It also reads\nthe analysis of a document a workflow or an extraction checked, when fraud\ndetection is enabled for them. Requires the `fraud-verify.read` scope.\n", "type": "text/plain" }, "url": { "path": [ "api", "v1", "fraud-verify", ":requestId" ], "host": [ "{{baseUrl}}" ], "query": [], "variable": [ { "type": "any", "value": "", "key": "requestId", "disabled": false, "description": { "content": "(Required) ", "type": "text/plain" } } ] }, "header": [ { "key": "Accept", "value": "application/json" } ], "method": "GET", "body": {}, "auth": null }, "response": [ { "name": "The stored analysis. `reused` is always `false` here.", "originalRequest": { "url": { "path": [ "api", "v1", "fraud-verify", ":requestId" ], "host": [ "{{baseUrl}}" ], "query": [], "variable": [ { "disabled": false, "description": { "content": "(Required) ", "type": "text/plain" }, "type": "any", "value": "", "key": "requestId" } ] }, "header": [ { "key": "Accept", "value": "application/json" }, { "description": { "content": "Added as a part of security scheme: bearer", "type": "text/plain" }, "key": "Authorization", "value": "Bearer " } ], "method": "GET", "body": {} }, "status": "OK", "code": 200, "header": [ { "key": "Content-Type", "value": "application/json" } ], "body": "{\n \"data\": {\n \"requestId\": \"\",\n \"verdict\": \"trusted\",\n \"riskScore\": \"\",\n \"policyAction\": \"flag\",\n \"reused\": \"\",\n \"signals\": [\n {\n \"code\": \"\",\n \"label\": \"\",\n \"severity\": \"high\",\n \"score\": \"\",\n \"evidence\": \"\"\n },\n {\n \"code\": \"\",\n \"label\": \"\",\n \"severity\": \"high\",\n \"score\": \"\",\n \"evidence\": \"\"\n }\n ],\n \"checks\": [\n {\n \"name\": \"\",\n \"status\": \"clear\",\n \"signals\": [\n {\n \"code\": \"\",\n \"label\": \"\",\n \"severity\": \"low\",\n \"score\": \"\",\n \"evidence\": \"\"\n },\n {\n \"code\": \"\",\n \"label\": \"\",\n \"severity\": \"medium\",\n \"score\": \"\",\n \"evidence\": \"\"\n }\n ]\n },\n {\n \"name\": \"\",\n \"status\": \"failed\",\n \"signals\": [\n {\n \"code\": \"\",\n \"label\": \"\",\n \"severity\": \"high\",\n \"score\": \"\",\n \"evidence\": \"\"\n },\n {\n \"code\": \"\",\n \"label\": \"\",\n \"severity\": \"high\",\n \"score\": \"\",\n \"evidence\": \"\"\n }\n ]\n }\n ],\n \"failedCoverage\": [\n \"\",\n \"\"\n ],\n \"aiGeneratedLikelihood\": \"\",\n \"pipelineVersion\": \"\"\n },\n \"meta\": {\n \"httpStatusCode\": \"\",\n \"messages\": [\n \"\",\n \"\"\n ],\n \"errors\": [\n {\n \"code\": \"\",\n \"message\": \"\",\n \"retryable\": \"\",\n \"field\": \"\",\n \"details\": null\n },\n {\n \"code\": \"\",\n \"message\": \"\",\n \"retryable\": \"\",\n \"field\": \"\",\n \"details\": {\n \"key_0\": \"\"\n }\n }\n ],\n \"creditsConsumed\": \"\"\n },\n \"hasErrors\": \"\"\n}", "cookie": [], "_postman_previewlanguage": "json" }, { "name": "The request is invalid. Refused before processing — malformed or unsafe — it\nis a problem document; refused by processing itself, such as a missing file,\nit is the service envelope with the reason in `meta.errors`.", "originalRequest": { "url": { "path": [ "api", "v1", "fraud-verify", ":requestId" ], "host": [ "{{baseUrl}}" ], "query": [], "variable": [ { "disabled": false, "description": { "content": "(Required) ", "type": "text/plain" }, "type": "any", "value": "", "key": "requestId" } ] }, "header": [ { "key": "Accept", "value": "application/problem+json" }, { "description": { "content": "Added as a part of security scheme: bearer", "type": "text/plain" }, "key": "Authorization", "value": "Bearer " } ], "method": "GET", "body": {} }, "status": "Bad Request", "code": 400, "header": [ { "key": "Content-Type", "value": "application/json" } ], "body": "{\n \"data\": {\n \"key_0\": \"string\",\n \"key_1\": 8935,\n \"key_2\": 7067.274549044669,\n \"key_3\": 6605.237934272736\n },\n \"meta\": {\n \"httpStatusCode\": \"\",\n \"messages\": [\n \"\",\n \"\"\n ],\n \"errors\": [\n {\n \"code\": \"\",\n \"message\": \"\",\n \"retryable\": \"\",\n \"field\": \"\",\n \"details\": {\n \"key_0\": \"\",\n \"key_1\": \"\",\n \"key_2\": \"\",\n \"key_3\": \"\"\n }\n },\n {\n \"code\": \"\",\n \"message\": \"\",\n \"retryable\": \"\",\n \"field\": \"\",\n \"details\": {\n \"key_0\": \"\"\n }\n }\n ],\n \"creditsConsumed\": \"\"\n },\n \"hasErrors\": \"\"\n}", "cookie": [], "_postman_previewlanguage": "json" }, { "name": "Missing or invalid API key. Both `xtkt_live_` (production) and `xtkt_test_`\n(sandbox) prefixes are accepted, but the key must also be valid and active.", "originalRequest": { "url": { "path": [ "api", "v1", "fraud-verify", ":requestId" ], "host": [ "{{baseUrl}}" ], "query": [], "variable": [ { "disabled": false, "description": { "content": "(Required) ", "type": "text/plain" }, "type": "any", "value": "", "key": "requestId" } ] }, "header": [ { "key": "Accept", "value": "application/problem+json" }, { "description": { "content": "Added as a part of security scheme: bearer", "type": "text/plain" }, "key": "Authorization", "value": "Bearer " } ], "method": "GET", "body": {} }, "status": "Unauthorized", "code": 401, "header": [ { "key": "Content-Type", "value": "application/problem+json" } ], "body": "{\n \"type\": \"\",\n \"title\": \"\",\n \"status\": \"\",\n \"detail\": \"\",\n \"instance\": \"\",\n \"code\": \"\",\n \"correlationId\": \"\",\n \"retryable\": \"\",\n \"field\": \"\",\n \"errors\": [\n {\n \"code\": \"\",\n \"message\": \"\",\n \"field\": \"\",\n \"retryable\": \"\",\n \"details\": null\n },\n {\n \"code\": \"\",\n \"message\": \"\",\n \"field\": \"\",\n \"retryable\": \"\",\n \"details\": null\n }\n ]\n}", "cookie": [], "_postman_previewlanguage": "json" }, { "name": "Refused before anything ran, nothing charged. `fraud.not_enabled`: your tenant has\nnot enabled fraud detection; an administrator turns it on. `fraud.scope_required`:\nthe key lacks `fraud-verify.write` (or `fraud-verify.read` to read back). A sandbox\nkey gets `environment.sandbox_route_unavailable`.", "originalRequest": { "url": { "path": [ "api", "v1", "fraud-verify", ":requestId" ], "host": [ "{{baseUrl}}" ], "query": [], "variable": [ { "disabled": false, "description": { "content": "(Required) ", "type": "text/plain" }, "type": "any", "value": "", "key": "requestId" } ] }, "header": [ { "key": "Accept", "value": "application/json" }, { "description": { "content": "Added as a part of security scheme: bearer", "type": "text/plain" }, "key": "Authorization", "value": "Bearer " } ], "method": "GET", "body": {} }, "status": "Forbidden", "code": 403, "header": [ { "key": "Content-Type", "value": "application/json" } ], "body": "{\n \"data\": {\n \"key_0\": \"string\",\n \"key_1\": 8935,\n \"key_2\": 7067.274549044669,\n \"key_3\": 6605.237934272736\n },\n \"meta\": {\n \"httpStatusCode\": \"\",\n \"messages\": [\n \"\",\n \"\"\n ],\n \"errors\": [\n {\n \"code\": \"\",\n \"message\": \"\",\n \"retryable\": \"\",\n \"field\": \"\",\n \"details\": {\n \"key_0\": \"\",\n \"key_1\": \"\",\n \"key_2\": \"\",\n \"key_3\": \"\"\n }\n },\n {\n \"code\": \"\",\n \"message\": \"\",\n \"retryable\": \"\",\n \"field\": \"\",\n \"details\": {\n \"key_0\": \"\"\n }\n }\n ],\n \"creditsConsumed\": \"\"\n },\n \"hasErrors\": \"\"\n}", "cookie": [], "_postman_previewlanguage": "json" }, { "name": "No analysis with this `requestId` exists for your tenant (`fraud.not_found`, the\nservice envelope). Any other 404, such as an address nothing answers at, is a\nproblem document.", "originalRequest": { "url": { "path": [ "api", "v1", "fraud-verify", ":requestId" ], "host": [ "{{baseUrl}}" ], "query": [], "variable": [ { "disabled": false, "description": { "content": "(Required) ", "type": "text/plain" }, "type": "any", "value": "", "key": "requestId" } ] }, "header": [ { "key": "Accept", "value": "application/json" }, { "description": { "content": "Added as a part of security scheme: bearer", "type": "text/plain" }, "key": "Authorization", "value": "Bearer " } ], "method": "GET", "body": {} }, "status": "Not Found", "code": 404, "header": [ { "key": "Content-Type", "value": "application/json" } ], "body": "{\n \"data\": {\n \"key_0\": \"string\",\n \"key_1\": 8935,\n \"key_2\": 7067.274549044669,\n \"key_3\": 6605.237934272736\n },\n \"meta\": {\n \"httpStatusCode\": \"\",\n \"messages\": [\n \"\",\n \"\"\n ],\n \"errors\": [\n {\n \"code\": \"\",\n \"message\": \"\",\n \"retryable\": \"\",\n \"field\": \"\",\n \"details\": {\n \"key_0\": \"\",\n \"key_1\": \"\",\n \"key_2\": \"\",\n \"key_3\": \"\"\n }\n },\n {\n \"code\": \"\",\n \"message\": \"\",\n \"retryable\": \"\",\n \"field\": \"\",\n \"details\": {\n \"key_0\": \"\"\n }\n }\n ],\n \"creditsConsumed\": \"\"\n },\n \"hasErrors\": \"\"\n}", "cookie": [], "_postman_previewlanguage": "json" }, { "name": "The request conflicts with the current state of what it acts on.", "originalRequest": { "url": { "path": [ "api", "v1", "fraud-verify", ":requestId" ], "host": [ "{{baseUrl}}" ], "query": [], "variable": [ { "disabled": false, "description": { "content": "(Required) ", "type": "text/plain" }, "type": "any", "value": "", "key": "requestId" } ] }, "header": [ { "key": "Accept", "value": "application/problem+json" }, { "description": { "content": "Added as a part of security scheme: bearer", "type": "text/plain" }, "key": "Authorization", "value": "Bearer " } ], "method": "GET", "body": {} }, "status": "Conflict", "code": 409, "header": [ { "key": "Content-Type", "value": "application/problem+json" } ], "body": "{\n \"type\": \"\",\n \"title\": \"\",\n \"status\": \"\",\n \"detail\": \"\",\n \"instance\": \"\",\n \"code\": \"\",\n \"correlationId\": \"\",\n \"retryable\": \"\",\n \"field\": \"\",\n \"errors\": [\n {\n \"code\": \"\",\n \"message\": \"\",\n \"field\": \"\",\n \"retryable\": \"\",\n \"details\": null\n },\n {\n \"code\": \"\",\n \"message\": \"\",\n \"field\": \"\",\n \"retryable\": \"\",\n \"details\": null\n }\n ]\n}", "cookie": [], "_postman_previewlanguage": "json" }, { "name": "Over 50 requests in the current 1-minute window for this key, answered as a\nproblem document; or the document admission quota is exhausted, answered as\nthe service envelope with `ADMISSION_QUOTA_EXCEEDED`. Both are retryable.", "originalRequest": { "url": { "path": [ "api", "v1", "fraud-verify", ":requestId" ], "host": [ "{{baseUrl}}" ], "query": [], "variable": [ { "disabled": false, "description": { "content": "(Required) ", "type": "text/plain" }, "type": "any", "value": "", "key": "requestId" } ] }, "header": [ { "key": "Accept", "value": "application/problem+json" }, { "description": { "content": "Added as a part of security scheme: bearer", "type": "text/plain" }, "key": "Authorization", "value": "Bearer " } ], "method": "GET", "body": {} }, "status": "Too Many Requests", "code": 429, "header": [ { "key": "Content-Type", "value": "application/json" }, { "disabled": false, "description": { "content": "Seconds until the rate-limit window resets. Sent with the problem document.", "type": "text/plain" }, "key": "Retry-After", "value": "" } ], "body": "{\n \"data\": {\n \"key_0\": \"string\",\n \"key_1\": 8935,\n \"key_2\": 7067.274549044669,\n \"key_3\": 6605.237934272736\n },\n \"meta\": {\n \"httpStatusCode\": \"\",\n \"messages\": [\n \"\",\n \"\"\n ],\n \"errors\": [\n {\n \"code\": \"\",\n \"message\": \"\",\n \"retryable\": \"\",\n \"field\": \"\",\n \"details\": {\n \"key_0\": \"\",\n \"key_1\": \"\",\n \"key_2\": \"\",\n \"key_3\": \"\"\n }\n },\n {\n \"code\": \"\",\n \"message\": \"\",\n \"retryable\": \"\",\n \"field\": \"\",\n \"details\": {\n \"key_0\": \"\"\n }\n }\n ],\n \"creditsConsumed\": \"\"\n },\n \"hasErrors\": \"\"\n}", "cookie": [], "_postman_previewlanguage": "json" }, { "name": "Unexpected failure. `correlationId` identifies the request — quote it when\nyou contact support.", "originalRequest": { "url": { "path": [ "api", "v1", "fraud-verify", ":requestId" ], "host": [ "{{baseUrl}}" ], "query": [], "variable": [ { "disabled": false, "description": { "content": "(Required) ", "type": "text/plain" }, "type": "any", "value": "", "key": "requestId" } ] }, "header": [ { "key": "Accept", "value": "application/problem+json" }, { "description": { "content": "Added as a part of security scheme: bearer", "type": "text/plain" }, "key": "Authorization", "value": "Bearer " } ], "method": "GET", "body": {} }, "status": "Internal Server Error", "code": 500, "header": [ { "key": "Content-Type", "value": "application/problem+json" } ], "body": "{\n \"type\": \"\",\n \"title\": \"\",\n \"status\": \"\",\n \"detail\": \"\",\n \"instance\": \"\",\n \"code\": \"\",\n \"correlationId\": \"\",\n \"retryable\": \"\",\n \"field\": \"\",\n \"errors\": [\n {\n \"code\": \"\",\n \"message\": \"\",\n \"field\": \"\",\n \"retryable\": \"\",\n \"details\": null\n },\n {\n \"code\": \"\",\n \"message\": \"\",\n \"field\": \"\",\n \"retryable\": \"\",\n \"details\": null\n }\n ]\n}", "cookie": [], "_postman_previewlanguage": "json" }, { "name": "Document processing could not complete because an upstream service or its\nadmission proof failed. The body is the service envelope. Read\n`meta.errors[].retryable` for the specific error; the HTTP status alone does\nnot mean the operation is safe to repeat.", "originalRequest": { "url": { "path": [ "api", "v1", "fraud-verify", ":requestId" ], "host": [ "{{baseUrl}}" ], "query": [], "variable": [ { "disabled": false, "description": { "content": "(Required) ", "type": "text/plain" }, "type": "any", "value": "", "key": "requestId" } ] }, "header": [ { "key": "Accept", "value": "application/json" }, { "description": { "content": "Added as a part of security scheme: bearer", "type": "text/plain" }, "key": "Authorization", "value": "Bearer " } ], "method": "GET", "body": {} }, "status": "Bad Gateway", "code": 502, "header": [ { "key": "Content-Type", "value": "application/json" } ], "body": "{\n \"data\": {\n \"key_0\": \"string\",\n \"key_1\": 8935,\n \"key_2\": 7067.274549044669,\n \"key_3\": 6605.237934272736\n },\n \"meta\": {\n \"httpStatusCode\": \"\",\n \"messages\": [\n \"\",\n \"\"\n ],\n \"errors\": [\n {\n \"code\": \"\",\n \"message\": \"\",\n \"retryable\": \"\",\n \"field\": \"\",\n \"details\": {\n \"key_0\": \"\",\n \"key_1\": \"\",\n \"key_2\": \"\",\n \"key_3\": \"\"\n }\n },\n {\n \"code\": \"\",\n \"message\": \"\",\n \"retryable\": \"\",\n \"field\": \"\",\n \"details\": {\n \"key_0\": \"\"\n }\n }\n ],\n \"creditsConsumed\": \"\"\n },\n \"hasErrors\": \"\"\n}", "cookie": [], "_postman_previewlanguage": "json" }, { "name": "Document processing could not complete because an upstream service or its\nadmission proof failed. The body is the service envelope. Read\n`meta.errors[].retryable` for the specific error; the HTTP status alone does\nnot mean the operation is safe to repeat.", "originalRequest": { "url": { "path": [ "api", "v1", "fraud-verify", ":requestId" ], "host": [ "{{baseUrl}}" ], "query": [], "variable": [ { "disabled": false, "description": { "content": "(Required) ", "type": "text/plain" }, "type": "any", "value": "", "key": "requestId" } ] }, "header": [ { "key": "Accept", "value": "application/json" }, { "description": { "content": "Added as a part of security scheme: bearer", "type": "text/plain" }, "key": "Authorization", "value": "Bearer " } ], "method": "GET", "body": {} }, "status": "Service Unavailable", "code": 503, "header": [ { "key": "Content-Type", "value": "application/json" } ], "body": "{\n \"data\": {\n \"key_0\": \"string\",\n \"key_1\": 8935,\n \"key_2\": 7067.274549044669,\n \"key_3\": 6605.237934272736\n },\n \"meta\": {\n \"httpStatusCode\": \"\",\n \"messages\": [\n \"\",\n \"\"\n ],\n \"errors\": [\n {\n \"code\": \"\",\n \"message\": \"\",\n \"retryable\": \"\",\n \"field\": \"\",\n \"details\": {\n \"key_0\": \"\",\n \"key_1\": \"\",\n \"key_2\": \"\",\n \"key_3\": \"\"\n }\n },\n {\n \"code\": \"\",\n \"message\": \"\",\n \"retryable\": \"\",\n \"field\": \"\",\n \"details\": {\n \"key_0\": \"\"\n }\n }\n ],\n \"creditsConsumed\": \"\"\n },\n \"hasErrors\": \"\"\n}", "cookie": [], "_postman_previewlanguage": "json" }, { "name": "Document processing could not complete because an upstream service or its\nadmission proof failed. The body is the service envelope. Read\n`meta.errors[].retryable` for the specific error; the HTTP status alone does\nnot mean the operation is safe to repeat.", "originalRequest": { "url": { "path": [ "api", "v1", "fraud-verify", ":requestId" ], "host": [ "{{baseUrl}}" ], "query": [], "variable": [ { "disabled": false, "description": { "content": "(Required) ", "type": "text/plain" }, "type": "any", "value": "", "key": "requestId" } ] }, "header": [ { "key": "Accept", "value": "application/json" }, { "description": { "content": "Added as a part of security scheme: bearer", "type": "text/plain" }, "key": "Authorization", "value": "Bearer " } ], "method": "GET", "body": {} }, "status": "Gateway Timeout", "code": 504, "header": [ { "key": "Content-Type", "value": "application/json" } ], "body": "{\n \"data\": {\n \"key_0\": \"string\",\n \"key_1\": 8935,\n \"key_2\": 7067.274549044669,\n \"key_3\": 6605.237934272736\n },\n \"meta\": {\n \"httpStatusCode\": \"\",\n \"messages\": [\n \"\",\n \"\"\n ],\n \"errors\": [\n {\n \"code\": \"\",\n \"message\": \"\",\n \"retryable\": \"\",\n \"field\": \"\",\n \"details\": {\n \"key_0\": \"\",\n \"key_1\": \"\",\n \"key_2\": \"\",\n \"key_3\": \"\"\n }\n },\n {\n \"code\": \"\",\n \"message\": \"\",\n \"retryable\": \"\",\n \"field\": \"\",\n \"details\": {\n \"key_0\": \"\"\n }\n }\n ],\n \"creditsConsumed\": \"\"\n },\n \"hasErrors\": \"\"\n}", "cookie": [], "_postman_previewlanguage": "json" } ], "event": [], "protocolProfileBehavior": { "disableBodyPruning": true } } ] } ] } ] } ] } ], "auth": { "type": "bearer", "bearer": [ { "type": "any", "value": "{{bearerToken}}", "key": "token" } ] }, "event": [], "variable": [ { "key": "baseUrl", "value": "https://api-eu.cogneris.ai" }, { "key": "bearerToken", "value": "", "type": "secret" } ], "info": { "name": "Cogneris Document AI API", "schema": "https://schema.getpostman.com/json/collection/v2.1.0/collection.json", "description": { "content": "The Cogneris Document AI API turns unstructured documents — PDFs, images, scans —\ninto structured JSON.\n\nThis document describes the endpoints that are actually deployed. It is written\nfrom the running service (`cogneris-api-be`) rather than from a design, so what\nis listed here is what you can call.\n\n## Authentication\n\nEvery endpoint takes an API key in the `Authorization` header as\n`Bearer `. Keys begin with `xtkt_live_` (production) or `xtkt_test_`\n(sandbox); either prefix is accepted before the key is looked up for validation.\nThe key selects the application environment. A recognized prefix alone does\nnot authenticate a request: the key must also be valid and active. Keys are\ntenant-scoped and cannot cross tenant boundaries. Mint them in the console\nunder **Vision → Developers → API Keys**.\n\n## Sandbox\n\nA `xtkt_test_` (sandbox) key is accepted for authentication, but sandbox covers\nonly the asynchronous job flow. Everything else refuses it.\n\n- **Available routes.** `POST /api/v1/artifacts`, `GET /api/v1/artifacts/content`,\n `POST /api/v1/document-jobs`, `GET /api/v1/document-jobs`,\n `GET /api/v1/document-jobs/{jobId}` and `POST /api/v1/document-jobs/{jobId}/cancel`.\n- **Every other route refuses a sandbox key** — the synchronous `/Document/*`\n endpoints, `/api/v1/templates`, `/api/v1/portal/*` and\n `/api/v1/webhook-endpoints*` — with `403`, `application/problem+json` and\n `code` `environment.sandbox_route_unavailable`.\n- **Job submit is narrower.** On `POST /api/v1/document-jobs` a sandbox key may\n run only `Extraction` without a `templateId`, `Classification`, `ZeroShot`,\n `Crop` and `Split`. Any other operation (for example `Facematch`), or any\n `templateId`, is refused with the same `403` and `code`.\n- **No credits.** A sandbox job does not debit credits or production quota, so\n `creditsConsumed` is always `null` for a sandbox key.\n\n## Uploads\n\nThe synchronous document endpoints take `multipart/form-data`. There is no\nfetch-by-URL variant — the file travels in the request body.\n\n- Accepted extensions: `.pdf`, `.png`, `.jpg`, `.jpeg`, `.tiff`, `.tif`,\n `.bmp`, `.doc`, `.docx`\n- Maximum size: 10 MB per file, except `/Document/split`, which accepts 32 MB\n\nThe asynchronous job endpoints do not take a file. Upload it first to\n`POST /api/v1/artifacts` — same extensions, same 10 MB limit — and submit the\n`artifact://` reference it returns.\n\n## Artifact references\n\nA reference names one stored object. `POST /api/v1/artifacts` returns one, a job\nsubmit consumes one as `inputReference`, and a finished job returns one as\n`outputReference`. `GET /api/v1/artifacts/content` turns either back into bytes.\n\n- References are scoped to the tenant that created them. One belonging to another\n tenant is refused as an invalid reference — the answer does not distinguish a\n reference that exists elsewhere from one that never existed.\n- An uploaded reference is **reusable**: one upload can back several jobs.\n- It expires **7 days** after upload, matching how long a job is retained. The\n exact instant is returned as `expiresAt`. Reading it afterwards answers `410`,\n which is not `404` — the reference was real, it aged out, and re-requesting it\n will never succeed. Upload again.\n- A job's `outputReference` lives as long as the job does.\n\n### Two shapes, one of them historical\n\nEverything this API produces today is `artifact://`. Jobs that completed\nbefore 2026-09-22 carry a bucket-qualified path instead —\n`//document-jobs//result.json`, sometimes with an\n`@` suffix. `GET /api/v1/artifacts/content` accepts both, so a reference\nstored from an older job still resolves for the rest of its life. Treat a\nreference as opaque: pass back exactly what you were given.\n\n## Templates\n\nExtraction and classification are driven by the document types and templates\nconfigured for your tenant. The platform selects the template from the document\nitself, so the synchronous `/Document/*` calls take no template or schema\nparameter. Use `GET /api/v1/templates` to list the finished templates available\nto your key before naming one explicitly with `templateId` on\n`POST /api/v1/document-jobs`. The list is cursor-paginated; pass its\n`nextCursor` as `cursor` to read the next page.\n\nTemplates keep a version history. Publishing or updating a template's\ndefinition records a new version, and a job submitted with `templateId` runs on\nthe version that was current when the submit was accepted, reported back as\n`templateVersion`. You never send a version, and earlier versions cannot be\nselected for new work, so the same submit repeated after a new publish can\nreturn a different result.\n\n## Scopes\n\nKeys carry scopes. The Portal and webhook-endpoint routes check them and answer\n`403` when the required one is absent; the document endpoints accept any valid\nkey for the tenant without consulting the list. `*` is a real scope meaning full access, and\nit is what a key receives when it is created without an explicit scope list.\n\n## Webhooks\n\nA finished asynchronous job can announce itself, so you do not have to poll it.\nRegister an HTTPS endpoint with `POST /api/v1/webhook-endpoints` and it receives a\nsigned `POST` when a job you subscribed to succeeds, fails or is cancelled. The\nwebhook **announces** the result and does not carry it: read the bytes with\n`GET /api/v1/artifacts/content?reference=`.\n\nEndpoints are managed with a **production** key holding `webhooks.manage` (or\n`*`). An endpoint receives your whole account's production events for the events\nit subscribes to, and events from sandbox jobs are never delivered, so a sandbox\nkey is refused.\n\nEach delivery carries four headers:\n\n- `X-Xtrakt-Event` — the event name, such as `extract.processed`.\n- `X-Xtrakt-Delivery` — one id shared by every attempt of the same event at the\n same endpoint. Deduplicate on it.\n- `X-Xtrakt-Delivery-Attempt` — the attempt number, `1` on the first send.\n- `X-Xtrakt-Signature` — `t=,v1=`, where `v1` is the\n HMAC-SHA256 of `.` keyed with the endpoint's `whsec_` secret.\n Recompute it over the raw bytes, compare in constant time, and reject a `t`\n outside your tolerance.\n\nFor a job, the body is the job's terminal state. **Its property names are\nPascalCase**, unlike the rest of this API:\n\n```json\n{\"JobId\":\"7c9e6679-7425-40de-944b-e07fc1f90ae7\",\"Operation\":\"Extraction\",\n \"Status\":\"succeeded\",\"OutputReference\":\"artifact://document-jobs/7c9e6679-7425-40de-944b-e07fc1f90ae7/result.json\",\n \"Stage\":null,\"ProcessedPages\":null,\"TotalPages\":null,\"FailureCode\":null,\n \"AttemptCount\":1,\"CompletedAt\":\"2026-09-23T14:02:11.482Z\"}\n```\n\n`Status` is `succeeded`, `failed` or `cancelled`, and a cancelled job sends the\n`.failed` event. `OutputReference` is null unless the job succeeded, and always\nnull for `Redaction`. The synchronous `/Document/*` calls fire the same event\nnames with their own response as the body; a delivery about a job is the one\nthat has `JobId`. An endpoint with a `body` sends that fixed text **instead of**\nthe payload.\n\nDelivery semantics:\n\n- **A job's outcome never depends on its webhook.** A job that succeeded stays\n succeeded when the delivery fails; `GET /api/v1/document-jobs/{jobId}` is the\n source of truth.\n- **Up to 5 attempts per endpoint, the first one included.** A timeout, a\n transport failure, or a `5xx`, `408` or `429` answer is retried with exponential\n backoff (10 s to 600 s between attempts); any other `4xx` is final. The attempt\n that reaches the ceiling is recorded as `webhook_retries_exhausted`. Answer `2xx`\n fast and do the work afterwards, and reconcile periodically with\n `GET /api/v1/document-jobs`.\n- **Duplicates are possible.** Deduplicate on `X-Xtrakt-Delivery`, or on `JobId`\n plus the event.\n- Every delivery attempt is metered as webhook usage, successful or not.\n\n## Rate limits\n\nOne shared policy covers every surface in this document, Portal included:\n**50 requests per API key per fixed 1-minute window**. It is a fixed window\nrather than a token bucket, so the allowance resets on the minute instead of\nrefilling gradually. Requests over the limit receive `429`.\n\n## Response envelope\n\nSuccessful responses from the **document, job and webhook-endpoint** routes share\none wrapper: `data` for the payload, `meta` for the status and any messages, and\n`hasErrors` for a fast failure check. The webhook-endpoint routes send their\n**errors** as problem documents, described next.\n\nThe **Portal** endpoints do not use that wrapper. They return the payload\ndirectly, and their errors are RFC 9457 problem documents sent as\n`application/problem+json`, with a stable `code`, a `correlationId` that is also\nreturned in the `x-correlation-id` header, and a `retryable` flag. Branch on\n`code`; treat `type` as an opaque identifier.\n\n## Errors\n\nAn error arrives in one of two shapes, and the `Content-Type` says which.\n\n- `application/problem+json` — an RFC 9457 problem document, the same one the\n Portal uses. Every route answers this way when the failure happens before your\n request is processed: a missing or invalid key (`401`), the rate limit (`429`),\n a request refused as malformed or unsafe (`400`), or an unexpected failure\n (`500`).\n- `application/json` — the service envelope with `hasErrors: true` and the\n reasons in `meta.errors`. The document, job and artifact routes answer this way\n when processing itself fails. Each operation lists the statuses where it does.\n\nEvery operation lists `400`, `401`, `403`, `404`, `409`, `429` and `500`, because\nthe API answers each of them in the same shape wherever it occurs. A status on\nan operation with nothing to miss or conflict with — a `409` on a read, say — is\npart of that uniform model and not something the operation returns in practice.\n", "type": "text/plain" } } }