# komplai developers > Use Redact, Chat, Decide and Coding from your organisation's own systems through komplai's API, and connect Word and MCP clients. The same pages in Danish are under https://developers.komplai.dk/da. Every page below is Markdown; https://developers.komplai.dk/llms-full.txt holds them all in one file. ## Get started - [Get started](https://developers.komplai.dk/get-started.md): Create a personal API key in the hub, check it with GET /v1/access and send your first text to Redact. ## Tools - [Redact](https://developers.komplai.dk/tools/redact.md): Pseudonymise text and the text of PDF and Word files with Redact through the API, choose where each layer runs, and put the originals back. - [Chat](https://developers.komplai.dk/tools/chat.md): Send messages to Chat's models through the API, choose where the model runs, and read the answer as one OpenAI-compatible response. - [Decide (Beta)](https://developers.komplai.dk/tools/decide.md): Ask Decide typed questions about a text through the API and get probabilities back instead of prose, for one text or a batch of up to 100. - [Coding (Beta)](https://developers.komplai.dk/tools/coding.md): Connect a coding client to komplai: read the account and terms, choose a model and stream OpenAI-compatible completions with function calls. - [Register lookup (Beta)](https://developers.komplai.dk/tools/register-lookup.md): Connect an AI assistant to Register lookup, komplai's MCP server for CVR, Retsinformation, Danmarks Statistik and Folketinget, with a personal API key. - [Run](https://developers.komplai.dk/tools/run.md): Publish a finished web app at its own address on komplai.run, for your organisation or for everyone, and let it use komplai through the app SDK. - [Redact in Word](https://developers.komplai.dk/tools/redact-word.md): Find personal data in the Word document you have open and replace it with labels through your organisation's Redact: install, sign in, scan and what is sent. - [Coding client (Beta)](https://developers.komplai.dk/tools/coding-client.md): komplai's coding client connects the command line and OpenCode to Coding: browser sign-in with your organisation, review of terms and prices, models and logout. ## API reference - [API reference](https://developers.komplai.dk/api.md): Base URLs, versions, the OpenAPI document, JSON conventions, request ids and retries, and every endpoint of komplai's API with a console to try it. - [Redact](https://developers.komplai.dk/reference/redact.md): Pseudonymise text, find personal data and put the originals back. Send short texts synchronously and long documents as encrypted text jobs; PDF and Word files are in beta. Organisation integration keys and personal keys both work here. - [Account](https://developers.komplai.dk/reference/account.md): What the key can reach, where each Redact layer processes text, the NER places and models a call may choose, and the limits. - [Chat](https://developers.komplai.dk/reference/chat.md): Chat completions and model discovery on the organisation's approved processing. Needs a personal key with chat:complete; an organisation integration key gets 403 integration_not_permitted. - [Decide (Beta)](https://developers.komplai.dk/reference/decide.md): Typed questions about a text, answered with probabilities. Beta. Needs a personal key with decide:process; an organisation integration key gets 403 integration_not_permitted. - [Coding (Beta)](https://developers.komplai.dk/reference/coding.md): Account, models and streamed completions for coding clients. Beta. Needs a personal key with coding:read or coding:complete; an organisation integration key gets 403 integration_not_permitted. ## Guides - [Sign-in with Entra ID and AD FS](https://developers.komplai.dk/guides/entra-id-ad-fs.md): Let people sign in to komplai with their Microsoft work account. You prepare Entra ID or AD FS, and komplai sets up the connection with your IT team. - [Roll out Word in Microsoft 365](https://developers.komplai.dk/guides/word-rollout.md): Deploy Redact in Word to your organisation from the Microsoft 365 admin center with komplai's manifest URL, and test it with pilot users first. - [Your own AI connections](https://developers.komplai.dk/guides/ai-connections.md): Add your organisation's own AI infrastructure or provider account in the hub, choose whether Chat and the API may use it, and call it with processing connection:. - [MCP clients](https://developers.komplai.dk/guides/mcp-clients.md): Connect VS Code or another MCP client to Register lookup over Streamable HTTP with a personal API key, without the key ending up in a file. - [Publish with Run](https://developers.komplai.dk/guides/run.md): Create an app in Run, try it on your own computer, publish versions from the terminal, a pipeline or your AI coding assistant, and use komplai from the app through the app SDK. - [Invitations](https://developers.komplai.dk/guides/invitations.md): Invite colleagues to your organisation in komplai, choose their role, tools and sign-in method, and follow each invitation until it is accepted. - [Redact rules](https://developers.komplai.dk/guides/redact-rules.md): Write your organisation's own Redact rules for text that must always, or never, be pseudonymised, in the Redact workspace, the API and Redact in Word. - [Processing approval](https://developers.komplai.dk/guides/processing-approval.md): See what your organisation's agreement approves for each tool, choose which approved places each tool may use, and give people access. ## Resources - [API keys and authentication](https://developers.komplai.dk/authentication.md): The two kinds of komplai API key, how you get, renew and revoke them, the scopes that limit them and what GET /v1/access tells you. - [Errors](https://developers.komplai.dk/errors.md): How komplai's API reports an error, how to handle each status and when to try again, with every error code and what to do. - [Limits](https://developers.komplai.dk/limits.md): Request limits, AI spending limits, size limits and timeouts in komplai's API, and what to do when a call reaches one. - [Where data is processed](https://developers.komplai.dk/data-processing.md): Where each tool and API call processes data, who runs it, whether data leaves the EU, and what is stored for how long. - [Changelog](https://developers.komplai.dk/changelog.md): Changes to komplai's API, newest first, by version of the OpenAPI document. - [Test data](https://developers.komplai.dk/test-data.md): Work with fictitious data until your organisation's agreement approves personal data, check what your key may send, and use the examples the API documents. - [llms.txt](https://developers.komplai.dk/llms-txt.md): Give an AI assistant this documentation as llms.txt, as one full text file or as a Markdown copy of each page. ## API - [OpenAPI document](https://developers.komplai.dk/openapi.json): the komplai API as OpenAPI 3.1, the document the reference is built from ## Optional - [access_service_unavailable](https://developers.komplai.dk/errors/access_service_unavailable.md): Keys and access could not be checked. - [agent_no_progress](https://developers.komplai.dk/errors/agent_no_progress.md): Redact Agentic stopped making progress: several rounds in a row read nothing new, found nothing and moved to no new step. No partial result is returned. - [agentic_disabled](https://developers.komplai.dk/errors/agentic_disabled.md): engine agentic is switched off on this server. - [agentic_lookup_not_allowed](https://developers.komplai.dk/errors/agentic_lookup_not_allowed.md): A source in sources is not approved by the organisation's administrator. - [agentic_lookup_unavailable](https://developers.komplai.dk/errors/agentic_lookup_unavailable.md): A source in sources is not available right now. - [agentic_preview_not_enabled](https://developers.komplai.dk/errors/agentic_preview_not_enabled.md): The organisation's administrator has not turned on the Redact Agentic preview. - [ai_credit_exhausted](https://developers.komplai.dk/errors/ai_credit_exhausted.md): The organisation's monthly AI spending cap for EU cloud is reached, or its own lower limit, or on a pilot the pilot's total allowance. Local processing keeps working. - [ai_credit_not_granted](https://developers.komplai.dk/errors/ai_credit_not_granted.md): No monthly AI spending cap is set up for this month, so eu-cloud cannot run. - [api_key_required](https://developers.komplai.dk/errors/api_key_required.md): No Authorization: Bearer header with a komplai key. - [app_not_assigned](https://developers.komplai.dk/errors/app_not_assigned.md): The key's person lost the app or their membership while the request was admitted. - [approved_redact_storage_policy_required](https://developers.komplai.dk/errors/approved_redact_storage_policy_required.md): Your organisation processes personal data but has no approved storage policy for text jobs. - [Bad Request](https://developers.komplai.dk/errors/bad-request.md): Fastify's reason phrase: a path parameter does not have the documented form, for example a job id that is not a UUID. - [chat_cloud_unavailable](https://developers.komplai.dk/errors/chat_cloud_unavailable.md): The organisation's EU cloud setup cannot be used right now. - [coding_not_configured](https://developers.komplai.dk/errors/coding_not_configured.md): komplai's EU route has no coding terms or coding models on this server. - [coding_not_enabled](https://developers.komplai.dk/errors/coding_not_enabled.md): Coding is not enabled for the organisation, its Chat does not run in komplai's EU cloud with an approved setup, or the key's person is not assigned Chat. - [coding_service_unavailable](https://developers.komplai.dk/errors/coding_service_unavailable.md): The coding model's provider failed or could not be reached, or an unexpected failure happened. - [connection_failed](https://developers.komplai.dk/errors/connection_failed.md): The provider behind one of the organisation's own connections could not be reached or failed. - [connection_model_unavailable](https://developers.komplai.dk/errors/connection_model_unavailable.md): The provider behind the connection does not know the model the connection names. - [connection_not_found](https://developers.komplai.dk/errors/connection_not_found.md): No connection with this id is available to you through the API. - [connection_payment_required](https://developers.komplai.dk/errors/connection_payment_required.md): The provider behind the connection wants payment on the organisation's account. - [connection_rate_limited](https://developers.komplai.dk/errors/connection_rate_limited.md): The provider behind the connection refused the call for now. - [connection_request_refused](https://developers.komplai.dk/errors/connection_request_refused.md): The provider behind the connection refused the request, for example a value it does not take. - [connection_unauthorized](https://developers.komplai.dk/errors/connection_unauthorized.md): The provider refused the connection's key. - [connection_unavailable](https://developers.komplai.dk/errors/connection_unavailable.md): The connection cannot be used: its key cannot be read or its address is refused. - [context_limit](https://developers.komplai.dk/errors/context_limit.md): The input and the requested output do not fit the model: max_tokens is over the model's limit, the input with max_tokens is over its context, or, in Redact, a part of the text does not fit even after it was asked again in halves down to 1,500 characters. - [detection_service_unavailable](https://developers.komplai.dk/errors/detection_service_unavailable.md): The detection service could not be reached or failed. - [detector_unavailable](https://developers.komplai.dk/errors/detector_unavailable.md): detectors includes ner, but NER is not set up. - [duplicate_request](https://developers.komplai.dk/errors/duplicate_request.md): This X-Request-Id was used before with this key, so nothing was sent to the model. - [empty_file](https://developers.komplai.dk/errors/empty_file.md): file.data decodes to nothing. - [encrypted_file](https://developers.komplai.dk/errors/encrypted_file.md): The PDF is password protected. - [engine_retired](https://developers.komplai.dk/errors/engine_retired.md): engine review, the separate LLM engine, is retired. Send engine pipeline, or leave engine out, with detectors ["regex", "llm"]; hint says the same. Nothing was reserved or processed. - [eu_cloud_refused](https://developers.komplai.dk/errors/eu_cloud_refused.md): komplai's EU cloud refused the call, so the model did not answer it. - [exceeds_ner_window](https://developers.komplai.dk/errors/exceeds_ner_window.md): text is over 16,000 UTF-16 code units, or the body is over 100,000 bytes. Use POST /v1/redact for longer texts. - [file_extraction_unavailable](https://developers.komplai.dk/errors/file_extraction_unavailable.md): The file reader could not start or stopped. This is not caused by the file. - [file_too_complex](https://developers.komplai.dk/errors/file_too_complex.md): Reading the file took more than 120 seconds or more resources than allowed (memory, ZIP entries, XML size or depth). - [file_too_large](https://developers.komplai.dk/errors/file_too_large.md): The file is over 50 MiB, or the body is over its byte limit. - [file_type_mismatch](https://developers.komplai.dk/errors/file_type_mismatch.md): The extension or contentType disagrees with the file's content. - [gateway_misconfigured](https://developers.komplai.dk/errors/gateway_misconfigured.md): The connection to the detection service or the language model is misconfigured. - [idempotency_conflict](https://developers.komplai.dk/errors/idempotency_conflict.md): This Idempotency-Key was used with a different body. Use a new UUID for a new job. - [identity_retired](https://developers.komplai.dk/errors/identity_retired.md): The person behind a personal key has been removed from komplai. - [incoherent_redaction_policy](https://developers.komplai.dk/errors/incoherent_redaction_policy.md): Your organisation's redaction and allow rules conflict for this text. - [incomplete_detection](https://developers.komplai.dk/errors/incomplete_detection.md): A detection layer did not finish the whole text. No partial result is returned. - [insufficient_scope](https://developers.komplai.dk/errors/insufficient_scope.md): The key lacks a scope the operation needs (x-komplai-scopes): it was not issued or created with it, its person is no longer assigned the app, or the organisation's processing approval no longer covers it. - [integration_not_permitted](https://developers.komplai.dk/errors/integration_not_permitted.md): An organisation integration key cannot use this operation or this option. - [Internal Server Error](https://developers.komplai.dk/errors/internal-server-error.md): Fastify's reason phrase for a failure the API did not expect. - [invalid_api_key](https://developers.komplai.dk/errors/invalid_api_key.md): The key is unknown, expired, revoked or retired, the person behind a personal key is no longer a member or no longer assigned any app the key covers, or your organisation's API access for it is not set up or no longer active. - [invalid_body](https://developers.komplai.dk/errors/invalid_body.md): The body is not a JSON object with the documented fields: invalid JSON, Content-Type text/plain, an unknown field, a field of the wrong type, or a required field that is missing or blank. - [invalid_coding_input](https://developers.komplai.dk/errors/invalid_coding_input.md): The body is not a coding request as documented. - [invalid_coding_response](https://developers.komplai.dk/errors/invalid_coding_response.md): The model provider's stream failed validation. - [invalid_detection](https://developers.komplai.dk/errors/invalid_detection.md): A detection layer returned output that failed validation. For llm: an answer that still could not be used after its part of the text was asked again in halves down to 1,500 characters. - [invalid_detectors](https://developers.komplai.dk/errors/invalid_detectors.md): detectors is empty, has an unknown or repeated value, or more than three values. - [invalid_file](https://developers.komplai.dk/errors/invalid_file.md): file is missing or malformed (filename missing, blank, longer than 255 characters or with control characters; data not a string; an unknown key), or the PDF or Word file itself is damaged or not a Word document. - [invalid_file_encoding](https://developers.komplai.dk/errors/invalid_file_encoding.md): file.data is empty or not base64. - [invalid_idempotency_key](https://developers.komplai.dk/errors/invalid_idempotency_key.md): Idempotency-Key is not a UUID, or it was sent more than once. - [invalid_include](https://developers.komplai.dk/errors/invalid_include.md): include has an unknown or repeated value. - [invalid_input](https://developers.komplai.dk/errors/invalid_input.md): The request is not what the operation documents, for example invalid JSON, a field that is not listed or a value out of range. - [invalid_job](https://developers.komplai.dk/errors/invalid_job.md): job is not a UUID. - [invalid_mapping](https://developers.komplai.dk/errors/invalid_mapping.md): mapping is not an object, or a value is empty, not a string, or contains NUL or a lone surrogate. - [invalid_ner_deployment](https://developers.komplai.dk/errors/invalid_ner_deployment.md): nerDeployment is not eu-de or local. - [invalid_organisation_policy](https://developers.komplai.dk/errors/invalid_organisation_policy.md): Your organisation's redaction rules cannot be applied (more than 500 rules, or an invalid rule). - [invalid_placeholder](https://developers.komplai.dk/errors/invalid_placeholder.md): A mapping key is empty, longer than 128 UTF-16 code units, has surrounding spaces, contains NUL or a lone surrogate, or is `__proto__`, `constructor` or `prototype`. - [invalid_processing](https://developers.komplai.dk/errors/invalid_processing.md): processing is not local or eu-cloud. - [invalid_request_id](https://developers.komplai.dk/errors/invalid_request_id.md): X-Request-Id is missing or not a version 4 UUID. - [invalid_response](https://developers.komplai.dk/errors/invalid_response.md): The model's answer failed validation, so nothing was returned. - [invalid_restore_source](https://developers.komplai.dk/errors/invalid_restore_source.md): Send exactly one of mapping and job. - [invalid_sources](https://developers.komplai.dk/errors/invalid_sources.md): sources has an unknown or repeated value. - [invalid_text_encoding](https://developers.komplai.dk/errors/invalid_text_encoding.md): text contains NUL or a lone UTF-16 surrogate. - [invalid_token](https://developers.komplai.dk/errors/invalid_token.md): The key was revoked or expired, or its access ended, while the request was admitted or processed. - [job_not_finished](https://developers.komplai.dk/errors/job_not_finished.md): The job is still queued or running; state says which. Try again after Retry-After seconds. - [llm_model_not_applicable](https://developers.komplai.dk/errors/llm_model_not_applicable.md): model was sent, but llm is not in detectors, or engine is not pipeline. - [llm_model_not_validated](https://developers.komplai.dk/errors/llm_model_not_validated.md): The language model in model is not validated for Redact at the processing you chose. GET /v1/access lists the models you may name. - [local_model_unavailable](https://developers.komplai.dk/errors/local_model_unavailable.md): The local language model in model is validated for Redact, but local infrastructure does not offer it right now. The API never picks another model. - [mapping_not_available](https://developers.komplai.dk/errors/mapping_not_available.md): The job kept neither mapping nor changes; hint says how to submit it again. - [model_busy](https://developers.komplai.dk/errors/model_busy.md): The language model on local infrastructure cannot take this call right now: its shared queue is full, or no node can run the model (for example while it restarts). Wait Retry-After seconds; a text job waits by itself. - [model_not_enabled](https://developers.komplai.dk/errors/model_not_enabled.md): The model is not one you may use at this processing, or it is not offered there right now. - [model_queue_expired](https://developers.komplai.dk/errors/model_queue_expired.md): The language model's shared queue on local infrastructure did not reach this call before its deadline. Try again later, or send it as a text job, which waits for its turn. - [model_stalled](https://developers.komplai.dk/errors/model_stalled.md): The language model stopped answering: its connection was silent, or it ran past the time its answer needs at the model's measured speed. No partial result is returned. - [ner_deployment_without_ner](https://developers.komplai.dk/errors/ner_deployment_without_ner.md): nerDeployment was sent, but ner is not in detectors (or mode is regex). - [ner_location_unavailable](https://developers.komplai.dk/errors/ner_location_unavailable.md): The NER place cannot be used now: komplai has not switched it on for the API, or it did not answer. nerDeployment names the place. NER never moves to another place; GET /v1/access shows which places are available. - [ner_model_preview_required](https://developers.komplai.dk/errors/ner_model_preview_required.md): The NER model in nerModel is a preview. It needs your organisation's Redact preview, which an organisation integration key does not have. - [ner_model_unavailable](https://developers.komplai.dk/errors/ner_model_unavailable.md): The NER model in nerModel is retired or does not run at the chosen place. A model other than the default also needs detectors. - [ner_model_unconfigured](https://developers.komplai.dk/errors/ner_model_unconfigured.md): The NER model in nerModel is not set up at the default place on this server. - [ner_model_unknown](https://developers.komplai.dk/errors/ner_model_unknown.md): No NER model has the id in nerModel. GET /v1/access lists the models you may choose. - [ner_model_without_ner](https://developers.komplai.dk/errors/ner_model_without_ner.md): nerModel was sent, but ner is not in detectors (or mode is regex). - [no_text_found](https://developers.komplai.dk/errors/no_text_found.md): The file contains no text at all. - [Not Found](https://developers.komplai.dk/errors/not-found.md): Fastify's reason phrase: no operation has this method and path. - [not_found](https://developers.komplai.dk/errors/not_found.md): No job with this id for this key. A job is visible only to the key that created it, and it disappears when it expires. - [Payload Too Large](https://developers.komplai.dk/errors/payload-too-large.md): Fastify's reason phrase: the body is over the operation's byte limit. - [person_ai_credit_exhausted](https://developers.komplai.dk/errors/person_ai_credit_exhausted.md): Your personal AI limit is reached (personal keys only). - [processing_access_changed](https://developers.komplai.dk/errors/processing_access_changed.md): The organisation's processing setup changed while the request was handled. Send it again. - [processing_access_withdrawn](https://developers.komplai.dk/errors/processing_access_withdrawn.md): Access to the job was withdrawn after it was created: the agreement, the processing setup, the organisation's redaction rules or the storage policy for text jobs changed. The job is invalidated and its text and result are deleted. This is final: stop reading the job and do not reuse its Idempotency-Key; submit the text again as a new job when access allows it. - [processing_capacity_busy](https://developers.komplai.dk/errors/processing_capacity_busy.md): All organisation-rule workers in this API process are busy. There is no queue: try again after Retry-After. - [processing_choice_not_allowed](https://developers.komplai.dk/errors/processing_choice_not_allowed.md): The organisation does not allow this processing (local infrastructure or EU cloud) through the API, or the connection is not made available through the API. - [processing_complexity_exceeded](https://developers.komplai.dk/errors/processing_complexity_exceeded.md): The text needs more work than its length allows: more candidate matches or matched characters than the per-character bounds in /v1/access, coreference matching work beyond its per-character bound (for example one name nested inside itself thousands of times), or more time for the organisation rules than their limit, which grows with the text and the number of rules. The bounds grow with the text, so splitting it rarely helps. Nothing partial is returned. - [processing_not_approved](https://developers.komplai.dk/errors/processing_not_approved.md): The organisation's processing approval for the app is missing or was withdrawn. - [processing_not_enabled](https://developers.komplai.dk/errors/processing_not_enabled.md): The processing is not enabled for the app in the organisation: EU processing is not approved and enabled, or the agreement keeps processing on local infrastructure. - [processing_outcome_uncertain](https://developers.komplai.dk/errors/processing_outcome_uncertain.md): A text job submitted before 20 October 2026 was interrupted during work by the language model, so komplai cannot tell whether that step finished. A job now resumes from its checkpoint instead. - [processing_policy_changed](https://developers.komplai.dk/errors/processing_policy_changed.md): Your organisation's redaction rules changed while the request ran. Send it again. - [processing_timeout](https://developers.komplai.dk/errors/processing_timeout.md): The call took more than 300 seconds, or the client disconnected. Send long texts as text jobs. - [rate_limited](https://developers.komplai.dk/errors/rate_limited.md): Too many requests: the per-minute limit of the person behind a personal key (shared with that person's other keys and use of the hub) or of the integration behind an organisation integration key (shared by its keys), the organisation's (120), the API's (300) or the per-IP network limit. Wait Retry-After seconds. - [reasoning_effort_not_supported](https://developers.komplai.dk/errors/reasoning_effort_not_supported.md): The reasoning effort komplai set for this EU language model in Redact is not one the model accepts on your organisation's EU route. Nothing was sent to the model, and the API does not send another effort. - [reasoning_not_enabled](https://developers.komplai.dk/errors/reasoning_not_enabled.md): The model does not take this reasoning_effort, or one of the organisation's own connections was sent one other than none. - [reasoning_not_supported](https://developers.komplai.dk/errors/reasoning_not_supported.md): The coding model does not take this reasoning_effort. - [redact_capabilities_unavailable](https://developers.komplai.dk/errors/redact_capabilities_unavailable.md): Redact's processing details could not be read. - [redact_file_not_enabled](https://developers.komplai.dk/errors/redact_file_not_enabled.md): File input is switched off on this server. - [redact_job_attempts_exhausted](https://developers.komplai.dk/errors/redact_job_attempts_exhausted.md): The text job was interrupted three times, for example by restarts, and was stopped. No partial result is kept. - [redact_job_cancelled](https://developers.komplai.dk/errors/redact_job_cancelled.md): The job was deleted or cancelled. - [redact_job_failed](https://developers.komplai.dk/errors/redact_job_failed.md): The job failed for a reason that is not passed on, for example a reached monthly AI spending cap or a failing EU cloud model. - [redact_job_integrity_failed](https://developers.komplai.dk/errors/redact_job_integrity_failed.md): The job's encrypted data could not be read. - [redact_job_progress_failed](https://developers.komplai.dk/errors/redact_job_progress_failed.md): The worker could not record the job's progress, so it stopped the job instead of letting it run unrecorded. No partial result is kept. Submit it again. - [redact_job_service_unavailable](https://developers.komplai.dk/errors/redact_job_service_unavailable.md): The job store failed. - [redact_job_stalled](https://developers.komplai.dk/errors/redact_job_stalled.md): The job made no progress for 65 minutes, longer than any single step can take, and was stopped. Waiting for the language model on local infrastructure is not progress. No partial result is kept. - [redact_job_unavailable](https://developers.komplai.dk/errors/redact_job_unavailable.md): The job ended without a result and without a stored reason. - [redact_jobs_not_enabled](https://developers.komplai.dk/errors/redact_jobs_not_enabled.md): Text jobs are not accepted right now; GET /v1/access shows text_contract.jobs_accepting_submissions. - [redact_restore_unavailable](https://developers.komplai.dk/errors/redact_restore_unavailable.md): Unexpected failure while restoring. - [redact_runtime_unavailable](https://developers.komplai.dk/errors/redact_runtime_unavailable.md): A selected layer (NER or the language model) is not set up or not available right now. - [restore_too_large](https://developers.komplai.dk/errors/restore_too_large.md): The body, the mapping (more than 100,000 entries, more than 2,000,000 UTF-16 code units or more than 500 fixed tokens) or the restored text (over 8,000,000 UTF-16 code units) is too large. - [result_too_large](https://developers.komplai.dk/errors/result_too_large.md): The result would be over 32 MiB. Ask for fewer include reports or split the text. - [scanned_pages_not_supported](https://developers.komplai.dk/errors/scanned_pages_not_supported.md): A page has no text layer, for example a scan. No OCR runs. pages lists the pages; allowPagesWithoutText true processes the rest. - [semantic_runtime_not_configured](https://developers.komplai.dk/errors/semantic_runtime_not_configured.md): No local language model is set up for llm. - [service_unavailable](https://developers.komplai.dk/errors/service_unavailable.md): The model failed or could not be reached, or local infrastructure is not set up for this call right now. - [terms_changed](https://developers.komplai.dk/errors/terms_changed.md): X-Komplai-Contract is not the current contract: the provider, its terms, the data mode, the agreement or the coding models and their prices changed. - [text_too_large](https://developers.komplai.dk/errors/text_too_large.md): text is over the operation's limit in UTF-16 code units, or the body is over its byte limit. - [timeout](https://developers.komplai.dk/errors/timeout.md): The model did not answer in time. The call reached the model, so its outcome is unknown. - [too_many_pages](https://developers.komplai.dk/errors/too_many_pages.md): The PDF has more than 2,000 pages. - [unsafe_placeholder](https://developers.komplai.dk/errors/unsafe_placeholder.md): A fixed replacement token from your organisation's rules occurs in the text or collides with a label. - [Unsupported Media Type](https://developers.komplai.dk/errors/unsupported-media-type.md): Fastify's reason phrase: the body has no Content-Type, or one the API does not read, such as XML or form data. - [unsupported_engine_detectors](https://developers.komplai.dk/errors/unsupported_engine_detectors.md): The detectors do not fit engine agentic: it needs regex and llm, with optional ner. - [unsupported_engine_mode](https://developers.komplai.dk/errors/unsupported_engine_mode.md): mode disagrees with detectors. Leave mode out when you send detectors. - [unsupported_engine_sources](https://developers.komplai.dk/errors/unsupported_engine_sources.md): sources was sent without engine agentic. - [unsupported_file_type](https://developers.komplai.dk/errors/unsupported_file_type.md): The file is neither a PDF nor a Word .docx, by its content, its extension or its contentType. - [unsupported_pilot_mode](https://developers.komplai.dk/errors/unsupported_pilot_mode.md): mode is not regex or ner, or semantic is true. No language model runs on this operation. - [unsupported_processing](https://developers.komplai.dk/errors/unsupported_processing.md): processing eu-cloud needs llm in detectors (and engine pipeline). Add llm to detectors. - [unsupported_redact_engine](https://developers.komplai.dk/errors/unsupported_redact_engine.md): engine is not one of the documented values. - [unsupported_redact_mode](https://developers.komplai.dk/errors/unsupported_redact_mode.md): mode is not regex, ner or semantic. - [unsupported_redact_policy](https://developers.komplai.dk/errors/unsupported_redact_policy.md): policy is not all-detected. - [upstream_rate_limited](https://developers.komplai.dk/errors/upstream_rate_limited.md): The coding model's provider refused the call for now. - [use_job](https://developers.komplai.dk/errors/use_job.md): The run cannot finish within the 300 seconds a synchronous call may take. estimatedSeconds is komplai's estimate from its measured speeds, with an empty queue; holdSeconds is the limit. Nothing was processed or charged. Send the same body as a text job (POST /v1/redact/jobs), or this call with Prefer: respond-async.