Skip to content
TellMeHow Developers

API documentation

Errors

One shape { code, message, details } and stable codes, to test in your code rather than the messages.

Shape of an error

Every error returns the same object: a stable code, a message translated for a human, and details specific to the code (the invalid fields for a validation error).

JSON
{
    "code": "validation.failed",
    "message": "Some fields are invalid.",
    "details": {
        "errors": {
            "name": [
                "The name field is required."
            ]
        }
    }
}

HTTP statuses

StatusMeaning
401Missing, unknown, revoked or expired token, or an account that is no longer a member of the workspace (the WWW-Authenticate header restarts OAuth discovery).
403The role, a workspace rule or the token scope does not allow the operation.
404Unknown resource, or one from another workspace.
409The resource is not in a state that allows the operation (engagement already launched, published version…).
422Invalid data: details.errors lists the fields and their messages.
429Rate limit reached: retry after Retry-After.
500Unexpected platform error: retry later.

Error codes

The complete list, by module, with the English message. The parameters of a message (prefixed with a colon) are replaced with their value in the response.

Generic

CodeMessage
auth.unauthenticatedYou must be signed in.
auth.forbiddenYou are not allowed to do this.
auth.two_factor_requiredA two-factor code is required.
auth.csrf_mismatchThe page has expired. Please reload and try again.
resource.not_foundThe resource does not exist.
resource.conflictThe resource is in a conflicting state.
validation.failedSome fields are invalid.
rate.limitedToo many requests. Please try again later.
http.errorThe request could not be processed.
internal.errorAn unexpected error occurred.

AI

CodeMessage
ai.provider_errorThe AI provider returned an error. Try again in a moment.
ai.provider_quotaThe AI provider quota or credit is exhausted.
ai.budget_cap_reachedThe budget cap for this session or engagement has been reached.
ai.platform_credential_missingNo usable API key for this AI usage: add a key in AI connections or choose another profile.
ai.schema_violationThe AI answer did not follow the expected format.
ai.driver_unsupported_for_usageThis provider cannot be used for this usage.
ai.model_unsupported_for_usageThis model cannot be used for this usage.
ai.credential_invalidThe provider rejected this key.
ai.credential_in_useThis key is used by :count AI profile(s): change them first.
ai.credential_driver_mismatchThis key belongs to another provider.
ai.base_url_requiredThis provider needs a base URL.
ai.base_url_not_allowedThis base URL is not allowed: use https and a public address (only an OpenAI-compatible key or profile can carry one).
ai.base_url_mismatchA key is only sent to the address it was saved for: this base URL does not match the key.
ai.prompt_not_foundAn AI prompt is missing from this installation.
ai.voice_lab_engagement_not_readyThe voice lab plays the interview of an engagement that has at least one population. Create an engagement (or add a population to this one), then start the trial again.
ai.profile_scope_invalidThis method or engagement does not exist in the workspace.
ai.catalog_model_existsThis provider already lists a model with this identifier.
ai.catalog_provider_existsA provider with this identifier already exists.
ai.catalog_usage_not_supported_by_driverThis provider's driver cannot serve the usage “:usage”.
ai.catalog_realtime_requires_voiceA realtime model only serves the voice usage.
ai.catalog_dimensions_requiredAn embedding model needs its native dimension.
ai.catalog_native_provider_lockedA native provider has no base URL: add an OpenAI-compatible provider instead.
ai.catalog_compatible_requires_base_urlAn OpenAI-compatible provider needs a base URL.
ai.catalog_default_cannot_be_hiddenThis model is the default for “:usage”: choose another default first.
ai.catalog_provider_holds_defaultThis provider holds the default model of: :usages. Choose other defaults first.
ai.catalog_default_model_unavailableThis model cannot be the default for “:usage”: it must be visible and serve this usage.
ai.catalog_default_architecture_mismatchDirect voice needs a realtime model; cascade needs a text model.

Analysis

CodeMessage
analysis.run_in_progressAn analysis is already queued or running for this engagement.
analysis.run_not_cancellableThis analysis run is already finished.
analysis.evidence_requiredA finding needs at least one piece of evidence.
analysis.last_evidenceThis is the last evidence of a validated finding: it cannot be removed.
analysis.evidence_source_not_foundThe cited source does not exist in this engagement.
analysis.follow_up_not_editableA follow-up can only be edited while it is proposed.
analysis.follow_up_targets_requiredA follow-up targets at least one participant of the engagement.
analysis.change_proposal_decidedThis change proposal has already been decided.
analysis.contradiction_resolvedThis contradiction has already been settled.
analysis.merge_same_processA process cannot be merged into itself.
analysis.steps_not_in_processSome steps do not belong to this process.
analysis.category_unknownThis category is not in the deliverable schema of the method.
analysis.not_foundThis object does not belong to the engagement.
analysis.flow_steps_mismatchA flow links two steps of the same process.

Audit chat

CodeMessage
chat.version_requiredThe deliverable is not published yet: the chat opens with the first version.
chat.answer_in_progressAn answer is being written: wait for it before asking another question.
chat.policy.not_ownerThis conversation is not yours.

Deliverable

CodeMessage
deliverable.documents_not_readyAn included document is not ready: generate it or remove it from the publication.
deliverable.nothing_to_publishNothing to publish yet: validate at least one process or one finding with a publishable evidence.
deliverable.publish_in_progressA publication is already in progress for this engagement.
deliverable.suggestion_in_progressA suggestion is already being written for this draft.
deliverable.version_not_publishedThis version has no published content.
deliverable.naming_not_allowedSome participants cannot be named: the engagement must allow it and each participant must have accepted it.
deliverable.policy.not_allowedYou cannot access this deliverable.
deliverable.policy.not_memberYou are not assigned to this engagement.
deliverable.policy.not_draftOnly the draft can be changed.
deliverable.policy.not_sponsorYou are not a sponsor of this engagement.
export.document_kind_requiredSay which document to export.
export.format_unsupportedThis format does not exist for this document.
export.kind_not_allowedThis format is not available in the client space: choose a document or the full report.
export.not_readyThis export is not available for download.
export.process_requiredA BPMN export targets one process: choose it.
export.version_requiredThis export reads a published version: publish the deliverable first.
sponsor_comment.closedThis comment is closed.
sponsor_comment.not_rootReply to the comment itself, not to a reply.
deliverable_document.generation_in_progressA generation is already in progress for this document.
deliverable_document.conflictThis document changed in the meantime: reload it before saving.
deliverable_document.not_enough_materialNot enough material yet: at least one validated chapter and :min findings with evidence are needed.
deliverable_document.ref_unknownA block cites an item that does not exist in the engagement.
deliverable_document.person_namedAn owner role cannot name a participant: give a role.
deliverable_document.data_ref_invalidThis block points to data that does not belong to this document.
deliverable_document.all_blocks_rejectedNo generated text passed the evidence checks: run the generation again or write the text yourself.
deliverable_document.job_failedThe generation failed.

Engagements

CodeMessage
engagement.not_launchableThis engagement cannot be launched yet: fix the blocking points of the launch checklist.
engagement.not_draftThis is only possible while the engagement is a draft.
engagement.locale_unavailableThis language is not enabled for the workspace, or the default language is not among the engagement languages.
engagement.method_version_not_publishedThis method version is not published.
engagement.method_not_publishedThis method has no published version yet. Publish it before starting an engagement.
engagement.archivedThis engagement is archived: reopen it to change its configuration.
engagement.member_invalidThis person is not a member of the workspace.
engagement.policy.not_memberYou are not assigned to this engagement.
engagement.policy.not_adminOnly an administrator can do this.
engagement.policy.not_sponsorYou are not a sponsor of this engagement.
state.invalid_transitionThis change of status is not possible from the current status.
client_company.in_useAn engagement audits this company: it cannot be deleted.
population.not_emptyThis population still has participants. Move or remove them first.
participant.email_takenA participant of this engagement already uses this email address.
participant.interview_startedThe interview has started: the participant cannot be deleted. Use a deletion request instead.
participant.revokedThis participant’s access is revoked.
participant.link_invalidThis link is not valid.
participant.link_expiredThis link has expired.
participant.link_revokedThis link has been revoked.
participant.email_code_requiredEnter the code sent to you by email to continue.
participant.email_code_invalidThis code is not valid. Check the last email you received.
participant.email_code_lockedToo many attempts. Ask for a new code.
participant.import_invalidThe file could not be read as CSV with the expected columns.
plan.topic_unknownThe plan refers to topics that are not in the guide.
plan.proposal_not_foundThis plan proposal does not exist or has expired.
message_template.variable_unknownThe message uses an unknown variable.
message_template.link_missingThis message must contain the {link} variable, or the participant cannot open the interview.
sponsor.is_memberThis person is a member of the firm and already sees the engagement.

Integrations

CodeMessage
integrations.token_invalidThis API token is invalid, revoked or expired, or its account is no longer a member of this workspace.
integrations.scope_insufficientThis token is read-only: it cannot modify anything.
integrations.session_requiredThis operation is only available from the web app, not with an API token.
integrations.token_limit_reachedYou already have :max active tokens in this workspace: revoke one first.
integrations.oauth_not_memberOnly a member of this workspace can authorize an application.
integrations.oauth_two_factor_requiredTurn on two-step verification on your account before authorizing an application.
integrations.operator_token_invalidThis token is invalid, revoked or expired, was issued for a workspace, or its account is no longer a platform operator.
integrations.operator_token_limit_reachedYou already have :max active back-office tokens: revoke one first.
integrations.oauth_not_operatorOnly a platform operator can authorize an application on the back-office.

Interviews

CodeMessage
interview.guide_not_frozenThe interview has not started yet: the participant has not accepted the welcome screen.
interview.consent_already_givenConsent was already recorded for this interview.
interview.not_readyThe interview cannot start a session before consent is given.
interview.completedThis interview is complete: no new session can start.
interview.voice_sample_unavailableThe interviewer's voice cannot be played right now.
interview.preview_requires_engagementAn interview preview is played inside an engagement: choose one.
session.invalid_transitionThis session cannot change to that state.
session.not_liveThis action needs a live session.
session.mode_unavailableThis session mode is not available here.
session.limit_reachedThe engagement budget is reached: no new session can start.
tool.unknownThis interviewer tool does not exist.
tool.arguments_invalidThe tool arguments do not match the expected schema.
vision.rate_limitedToo many screen images per minute.
chapter.not_in_progressThis chapter is not in progress.
chapter.not_coveredThis chapter has not been covered yet: nothing to validate.
chapter.reopen_not_allowedThis chapter cannot be reopened.
recap.already_validatedThis recap is validated and can no longer be edited.
recap.not_foundThere is no recap for this chapter yet.
redaction.invalid_rangeThe time range to remove is invalid.
recording.not_readyThis recording is not ready to be played.
simulation.persona_not_foundThis simulation persona does not exist.
simulation.failedThe simulation stopped on a model error.

Methods

CodeMessage
method.consultant_cannot_editOnly an administrator can change a method.
method.version_publishedThis version is published and can no longer change. Create a new draft to edit it.
method.welcome_block_missingThe welcome screen is missing a mandatory block.
method.welcome_variable_unknownThe welcome screen uses an unknown variable.
method.draft_existsA draft version already exists for this method.
method.in_useAn engagement uses this method: it cannot be deleted.
method.template_not_foundThis method template does not exist.
method.priority_rule_invalidA priority rule is not written correctly.
guide.category_unknownThis deliverable category does not exist in the method.
guide.level_unavailableThis guide level is not available yet.
guide.override_not_allowedOnly an inherited topic can be overridden, from an engagement, a population or a participant.
guide.topic_key_takenAnother topic already uses this key.
guide.topic_limit_reachedThis level has reached the maximum number of topics.
guide.reorder_mismatchThe new order must list exactly the topics of this level.
guide.proposal_not_foundThis proposal does not exist or has expired.
method_template.key_takenAnother method template already uses the key “:key”.
method_template.key_lockedThis template has been published: its key can no longer change, firms’ methods refer to it.
method_template.version_frozenThis template version is published and can no longer change. Open a new draft to edit it.
method_template.draft_existsThis template already has a draft version.
method_template.not_publishableThis version cannot be published yet: fix the points listed.
method_template.locale_existsThis language already exists in this version.
method_template.locale_missingThis version has no content in this language.
method_template.last_localeA template keeps at least one language.

Platform

CodeMessage
platform.already_operatorThis account is already a platform operator.
platform.last_ownerThe platform must keep at least one owner.
platform.grant_too_longA support access lasts at most :hours hours.

Privacy

CodeMessage
privacy.invalid_custom_patternThe custom pattern ":label" is invalid: it must be a valid expression of at most 200 characters, with a label, that never matches empty text.
privacy.image_unreadableThe image could not be read. Nothing was stored.
privacy.video_processing_failedBlurring the recording failed. The recording stays unavailable until it is processed again.
privacy.engagement_not_foundThis engagement does not exist in this workspace.
privacy.engagement_forbiddenYou are not assigned to this engagement.
privacy.deletion_request_not_openThis request has already been handled or is being handled.
privacy.deletion_request_existsA request is already open for this participant.
privacy.participant_not_foundThis participant does not exist in this engagement.
privacy.compliance_document_missingThe file of this document no longer exists: generate it again.
privacy.support_operator_not_foundThis operator does not exist or is no longer an operator.

Sources

CodeMessage
artifact.unsupported_typeThis file type is not accepted.
artifact.not_readyThis document has not been extracted yet.
source.schema_invalidThe file does not follow the external source exchange format.
source.version_unsupportedThis exchange format version is not supported.
source.file_unreadableThe file is neither a JSON export nor a readable text.

Workspace and account

CodeMessage
workspace.context_missingNo workspace context for this operation.
workspace.not_foundThis workspace does not exist.
workspace.suspendedThis workspace is suspended.
workspace.last_adminA workspace must keep at least one administrator.
workspace.invitation_invalidThis invitation is invalid or has expired.
workspace.invitation_email_mismatchThis invitation was sent to another email address.
workspace.already_memberThis person is already a member of the workspace.
workspace.slug_reservedThe subdomain ":slug" is not allowed.
workspace.slug_takenThe subdomain ":slug" is already used.
workspace.locale_not_enabledThe language ":locale" is not available.
auth.magic_link_invalidThis sign-in link is invalid or has expired.
auth.two_factor_setup_requiredTwo-factor authentication must be enabled on your account.