PATCH/v1/cards/{card_id}
Update a card
update_card
Authentication
Send an API key in the Authorization header: Authorization: Bearer <key>.
Path parameters
card_idstringrequired
Header parameters
Idempotency-KeystringKey for a safe retry of a write: 1 to 255 printable ASCII characters; a UUID v4 per logical operation is recommended. A retry with the same key within 24 hours does not run the operation again: it returns the saved response (status, headers and body) with the
Idempotency-Replayed: trueheader. The same key with a different method, path,Content-Typeor body returns409 api.idempotency_mismatch; while the first request is still running,409 api.idempotency_in_progresswithRetry-After: 1. After a 5xx or 429 response the key is released, and a retry runs the operation again. The key is scoped to the organization and the caller (API key, user, or custom source key).length ≥ 1, length ≤ 255
X-View-AsstringFor API keys with the
adminrole only. Makes the request as the data profile<profile>[:viewer|verifier|editor], for exampleemployee:viewer. The installation key cannot use this header (403).
Cookie parameters
kb_view_asstringCookie of the “View as” mode for a session.
POST /auth/view-assets it andDELETE /auth/view-asclears it.
Request body
application/json
external_idstring | nullSets or changes the
external_idof the card;""ornullremoves it. If another card of the organization uses it, the request returns409 cards.external_id_taken. Theexternal_idof a source card does not change (409 cards.managed_by_source).length ≤ 512
metadataMetadataPatchtitlestring | nullowner_idinteger | nullverifier_idsarray of integer | nullverify_interval_daysinteger | null≥ 1, ≤ 3650
tagsarray of string | nullstatusstring | nullsource_urlstring | nullcategorystring | nullsensitiveboolean | nulltable_categoriesmap of object | null
Responses
200OK
Response headers
RateLimit-PolicyLimits in effect, in the format of the IETF draft
draft-ietf-httpapi-ratelimit-headers: comma-separated items"<name>";q=<quota>;w=<window in seconds>.keyis the request rate of the API key (the quota is the burst, the window is the time to refill it fully; for a session it isuser, without credentialsip);minute,dayandmonthare the organization's quotas for the calendar minute, day and month in UTC.RateLimitWhat is left of each limit in
RateLimit-Policy:"<name>";r=<remaining>;t=<seconds until reset>.X-RateLimit-LimitLimit of the strictest entry in
RateLimit-Policy(the one with the fewest requests left).X-RateLimit-RemainingRequests left under the strictest limit.
X-RateLimit-ResetSeconds until the strictest limit resets.
Idempotency-Replayedtruemeans the response was replayed from the saved one for thisIdempotency-Key: the operation did not run again.
application/json
expandedCardExpandedpermissionsObjectPermissionListaccessstringAllowed values:
wholepartialaccess_contactstringWhom to contact for access (only when
access=partial).aclobjectFields
verifybooleanrequiredwritebooleanrequired
categorystringrequiredcategory_confidencenumber | nullrequiredcategory_lockedbooleanrequiredcategory_reviewbooleanrequiredcollectionstringrequiredcollection_idintegerrequiredcollection_titlestringcommentsarray of CardCommentcontent_jsonContentJSON | nullEditor content of the latest published version. The field can be absent; in that case, get the editor content from a draft (
POST /v1/draftswithcard_id).editing_lockEditingLock | nullActive editing lock. The field can be absent; in that case, the editor learns who holds the lock from
409 cards.lockedonPOST /v1/cards/{card_id}/lock.created_atstring (date-time)requireddays_since_verifiedintegerrequirederrorstring | nullrequiredeventsarray of CardEventfeedback_negintegerrequiredfeedback_posintegerrequiredfoldersarray of CardFolderRefCard list only: the folders that contain the card (those visible to the user), with their paths from the collection root. An empty list means the card is not in any folder.
has_tablesbooleanCard list only.
hidden_partsbooleanidstringrequiredjobJob | nullorg_idintegerrequiredowner_activeboolean | nullowner_idinteger | nullrequiredowner_namestring | nullrequiredpagesinteger | nullrequiredparserstring | nullrequiredDocument parser as a neutral code:
document(full structure: pages, headings, tables, scanned pages),pdf(the PDF text layer),docx,xlsx,csv,markdown,html,text. The list can grow.sensitivebooleanrequiredsha256string | nullrequiredsizeintegerrequiredsnoozed_atstring (date-time) | nullsnoozed_byinteger | nullsnoozed_untilstring | nullsource_changedbooleanrequiredsource_pathstring | nullrequiredsource_urlstring | nullrequiredstatusstringrequiredAllowed values:
processingreadyerrorarchivedtablesarray of CardTabletagsarray of stringrequiredtitlestringrequiredtrustnumberrequiredtrust_if_verifiednumberupdated_atstring (date-time)requiredverified_atstring (date-time) | nullrequiredverified_byinteger | nullrequiredverified_by_namestring | nullverifier_idsarray of integerrequiredverifiersarray of objectFields
activebooleanrequiredidintegerrequirednamestringrequired
verify_interval_daysintegerrequiredversionintegerrequiredversionsarray of CardVersionsource_archiveArchiveSourcecreated_byinteger | nullmanual_optionsobjectManual parsing settings (preview).
doc_kindDocKind | nullDocument type.
nullif the type is not determined (for example, for cards indexed before document types were introduced).doc_kind_confidencenumber | nullConfidence in the document type, from 0 to 1.
doc_kind_sourcestring | nullWhat determined the type: rules (
rules), a user (manual) or automatic classification. The list can grow: treat an unknown value as automatic classification.Allowed values:
rulesmanualnullinvoiceDocInvoiceExtraction | nullFields of an invoice, credit note or receipt (only for these types, and only in the card, not in the list).
nullif you do not have access to the whole document, because the fields are extracted from the whole document.warningsarray of ReviewWarningDocument parsing warnings (
ReviewWarning; only in the card, not in the list).enrichmentCardEnrichmentStatus | nullEnrichment status (only in the card, not in the list). The document type, invoice fields and financial records are added in the background after indexing and can be recalculated later; they appear in the card when they are ready.
nullmeans no status is available (the card was indexed without background enrichment).external_idstring | nullID of the card in the integrator's system. It is unique in the organization among cards that do not come from sources;
nullmeans it is not set./v1/cards-by-external-id/{external_id}reads and replaces the card by it.length ≤ 512
metadataMetadata
400The request is invalid: a parameter value or the state of the object does not allow the action (`detail` is a message).
Response headers
RateLimit-PolicyLimits in effect, in the format of the IETF draft
draft-ietf-httpapi-ratelimit-headers: comma-separated items"<name>";q=<quota>;w=<window in seconds>.keyis the request rate of the API key (the quota is the burst, the window is the time to refill it fully; for a session it isuser, without credentialsip);minute,dayandmonthare the organization's quotas for the calendar minute, day and month in UTC.RateLimitWhat is left of each limit in
RateLimit-Policy:"<name>";r=<remaining>;t=<seconds until reset>.X-RateLimit-LimitLimit of the strictest entry in
RateLimit-Policy(the one with the fewest requests left).X-RateLimit-RemainingRequests left under the strictest limit.
X-RateLimit-ResetSeconds until the strictest limit resets.
application/json
401No credentials were sent (neither a session cookie nor an API key), or the key was not found.
Response headers
RateLimit-PolicyLimits in effect, in the format of the IETF draft
draft-ietf-httpapi-ratelimit-headers: comma-separated items"<name>";q=<quota>;w=<window in seconds>.keyis the request rate of the API key (the quota is the burst, the window is the time to refill it fully; for a session it isuser, without credentialsip);minute,dayandmonthare the organization's quotas for the calendar minute, day and month in UTC.RateLimitWhat is left of each limit in
RateLimit-Policy:"<name>";r=<remaining>;t=<seconds until reset>.X-RateLimit-LimitLimit of the strictest entry in
RateLimit-Policy(the one with the fewest requests left).X-RateLimit-RemainingRequests left under the strictest limit.
X-RateLimit-ResetSeconds until the strictest limit resets.
application/json
403The action is not allowed: the role is insufficient, there is no access to the collection or card, the request runs in “View as” mode, or the organization is suspended or deleted (`detail` is an object with `code: org_suspended | org_deleted`).
Response headers
RateLimit-PolicyLimits in effect, in the format of the IETF draft
draft-ietf-httpapi-ratelimit-headers: comma-separated items"<name>";q=<quota>;w=<window in seconds>.keyis the request rate of the API key (the quota is the burst, the window is the time to refill it fully; for a session it isuser, without credentialsip);minute,dayandmonthare the organization's quotas for the calendar minute, day and month in UTC.RateLimitWhat is left of each limit in
RateLimit-Policy:"<name>";r=<remaining>;t=<seconds until reset>.X-RateLimit-LimitLimit of the strictest entry in
RateLimit-Policy(the one with the fewest requests left).X-RateLimit-RemainingRequests left under the strictest limit.
X-RateLimit-ResetSeconds until the strictest limit resets.
application/json
404The object does not exist or is not available to you. The API does not confirm that a restricted object exists.
Response headers
RateLimit-PolicyLimits in effect, in the format of the IETF draft
draft-ietf-httpapi-ratelimit-headers: comma-separated items"<name>";q=<quota>;w=<window in seconds>.keyis the request rate of the API key (the quota is the burst, the window is the time to refill it fully; for a session it isuser, without credentialsip);minute,dayandmonthare the organization's quotas for the calendar minute, day and month in UTC.RateLimitWhat is left of each limit in
RateLimit-Policy:"<name>";r=<remaining>;t=<seconds until reset>.X-RateLimit-LimitLimit of the strictest entry in
RateLimit-Policy(the one with the fewest requests left).X-RateLimit-RemainingRequests left under the strictest limit.
X-RateLimit-ResetSeconds until the strictest limit resets.
application/json
422Validation error: the body or parameters do not match the schema (`detail` is a list of validation errors), or a parameter value is out of range (`detail` is a message).
Response headers
RateLimit-PolicyLimits in effect, in the format of the IETF draft
draft-ietf-httpapi-ratelimit-headers: comma-separated items"<name>";q=<quota>;w=<window in seconds>.keyis the request rate of the API key (the quota is the burst, the window is the time to refill it fully; for a session it isuser, without credentialsip);minute,dayandmonthare the organization's quotas for the calendar minute, day and month in UTC.RateLimitWhat is left of each limit in
RateLimit-Policy:"<name>";r=<remaining>;t=<seconds until reset>.X-RateLimit-LimitLimit of the strictest entry in
RateLimit-Policy(the one with the fewest requests left).X-RateLimit-RemainingRequests left under the strictest limit.
X-RateLimit-ResetSeconds until the strictest limit resets.
application/json
429Too many requests (`api.rate_limited`), the organization's quota for the minute, day or month is used up (`api.quota_exceeded`; `error.details` holds `quota`, `limit` and `reset_at`), the organization's limit is reached, or the answer service is busy (`answers.engine_busy`). Wait for the time in the `Retry-After` header.
Response headers
Retry-AfterNumber of seconds to wait before you retry the request.
RateLimit-PolicyLimits in effect, in the format of the IETF draft
draft-ietf-httpapi-ratelimit-headers: comma-separated items"<name>";q=<quota>;w=<window in seconds>.keyis the request rate of the API key (the quota is the burst, the window is the time to refill it fully; for a session it isuser, without credentialsip);minute,dayandmonthare the organization's quotas for the calendar minute, day and month in UTC.RateLimitWhat is left of each limit in
RateLimit-Policy:"<name>";r=<remaining>;t=<seconds until reset>.X-RateLimit-LimitLimit of the strictest entry in
RateLimit-Policy(the one with the fewest requests left).X-RateLimit-RemainingRequests left under the strictest limit.
X-RateLimit-ResetSeconds until the strictest limit resets.
application/json
Error codes
Codes this endpoint can return in error.code, besides the general codes of every request.
- 400api.metadata_invalid
- 409api.idempotency_in_progress
- 400api.idempotency_key_invalid
- 409api.idempotency_mismatch
- 401auth.not_authenticated
- 403auth.system_scope
- 403cards.category_whole_access
- 409cards.external_id_taken
- 409cards.managed_by_source
- 403cards.no_access
- 404cards.not_found
- 403cards.sensitivity_admin_only
- 400cards.unknown_table_part
- 400categories.unknown
- 403org.deleted
- 403org.suspended
- 400users.inactive_assignment
- 400users.not_in_org
- 403view_as.read_only
Safe retries
Send an Idempotency-Key header (for example a UUID) with each POST and PATCH. A retry with the same key within 24 hours returns the saved response instead of running the request again.
Rate limits
Responses carry the RateLimit and RateLimit-Policy headers and the earlier X-RateLimit-Limit, X-RateLimit-Remaining and X-RateLimit-Reset. A 429 response has Retry-After in seconds: wait and retry.