Skip to content

capture

llms.txtAsk agent

Privacy-safe capture identities, admission decisions, and revocation.

Method Path Operation ID
POST /v1/capture-admission-challenges createCaptureAdmissionChallenge
GET /v1/capture-admissions listCaptureAdmissions
POST /v1/capture-admissions createCaptureAdmission
GET /v1/capture-admissions/{capture_admission_id} getCaptureAdmission
GET /v1/capture-identities listCaptureIdentities
POST /v1/capture-identities createCaptureIdentity
GET /v1/capture-identities/{capture_identity_id} getCaptureIdentity
POST /v1/capture-identities/{capture_identity_id}/revoke revokeCaptureIdentity
POST /v1/capture-identity-enrollments createCaptureIdentityEnrollment

Operation ID: createCaptureAdmissionChallenge

Create one purpose-bound capture-admission challenge.

Authentication: Authorization: Bearer <API key or console session> (Authentication).

Name In Type Required Description
Idempotency-Key header string yes Visible-ASCII tenant-and-operation idempotency key. Pattern: ^[!-~]+$. Max length 200.

application/json: CaptureAdmissionChallengeRequest (required)

Field Type Required Description
capture_identity_id string yes Pattern: ^cid_[a-z2-7]{16}$.
Status Description Body
201 Successful Response application/json CaptureAdmissionChallengeResponse
401 The bearer credential is missing, malformed, expired, revoked, or otherwise invalid. Clerk sessions and scoped API keys fail identically and the body never reveals which credential was presented or whether it exists. application/json HttpErrorResponse
403 The provider deleted this identity, or the account is deactivated. A valid session cannot authorize a tombstoned identity back into use; an API key must also grant the scope required by the operation, and an operation is not classified by the route/scope policy and is denied by default. An API key restricted to client networks is refused from any other network with the API_KEY_IP_NOT_ALLOWED envelope. application/json HttpErrorResponse or ErrorResponse
404 Not Found application/json CaptureManagementErrorResponse
409 Just-in-time provisioning conflicted: the verified email belongs to another provisioned account. application/json HttpErrorResponse or CaptureManagementErrorResponse
422 A verified email is unavailable for account provisioning. application/json HttpErrorResponse or CaptureManagementErrorResponse
429 The API key’s own request rate limit was exceeded (API_KEY_RATE_LIMITED). Only keys configured with a rate limit can receive this. Retryable after Retry-After seconds; the refused request consumed no capacity. application/json ErrorResponse
503 Credential verification is unavailable: Clerk session verification is not configured, no API-key pepper is enrolled, or bounded API-key verification is temporarily overloaded. Retryable. application/json HttpErrorResponse or CaptureManagementErrorResponse
Field Type Required Description
capture_identity_id string yes Pattern: ^cid_[a-z2-7]{16}$.
challenge_id string yes Pattern: ^cch_[a-z2-7]{16}$.
challenge_secret string yes Pattern: ^[A-Za-z0-9_-]{43}$. Max length 43.
expires_at string yes

Operation ID: listCaptureAdmissions

List bounded privacy-safe capture admissions.

Authentication: Authorization: Bearer <API key or console session> (Authentication).

Name In Type Required Description
decision query CaptureAdmissionDecision or null no
capture_identity_id query string or null no
decided_from query string or null no
decided_through query string or null no
cursor query string or null no
limit query integer or null no
Status Description Body
200 Successful Response application/json CaptureAdmissionListResponse
401 The bearer credential is missing, malformed, expired, revoked, or otherwise invalid. Clerk sessions and scoped API keys fail identically and the body never reveals which credential was presented or whether it exists. application/json HttpErrorResponse
403 The provider deleted this identity, or the account is deactivated. A valid session cannot authorize a tombstoned identity back into use; an API key must also grant the scope required by the operation, and an operation is not classified by the route/scope policy and is denied by default. An API key restricted to client networks is refused from any other network with the API_KEY_IP_NOT_ALLOWED envelope. application/json HttpErrorResponse or ErrorResponse
404 Not Found application/json CaptureManagementErrorResponse
409 Just-in-time provisioning conflicted: the verified email belongs to another provisioned account. application/json HttpErrorResponse or CaptureManagementErrorResponse
422 A verified email is unavailable for account provisioning. application/json HttpErrorResponse or CaptureManagementErrorResponse
429 The API key’s own request rate limit was exceeded (API_KEY_RATE_LIMITED). Only keys configured with a rate limit can receive this. Retryable after Retry-After seconds; the refused request consumed no capacity. application/json ErrorResponse
503 Credential verification is unavailable: Clerk session verification is not configured, no API-key pepper is enrolled, or bounded API-key verification is temporarily overloaded. Retryable. application/json HttpErrorResponse or CaptureManagementErrorResponse
Field Type Required Description
items array of CaptureAdmissionSummary yes
next_cursor string or null yes

Operation ID: createCaptureAdmission

Create or exactly replay one terminal capture admission.

Authentication: Authorization: Bearer <API key or console session> (Authentication).

application/json: CaptureAdmissionSubmissionRequest (required)

Field Type Required Description
attestation_kind AttestationKind yes Closed vocabulary shared with the immutable governance policy body. One of: app_attest, play_integrity, hardware_key_attestation.
capture_identity_id string yes Pattern: ^cid_[a-z2-7]{16}$.
challenge_id string yes Pattern: ^cch_[a-z2-7]{16}$.
challenge_secret string yes Pattern: ^[A-Za-z0-9_-]{43}$. Max length 43.
installation_id_sha256 string yes Pattern: ^[0-9a-f]{64}$.
sensor_evidence object or null no
sensor_schema_version string or null no
statement string yes Max length 349528.
upload_object_id string yes Pattern: ^aob_[a-z2-7]{16}$.
Status Description Body
200 OK application/json CaptureAdmissionSubmissionResponse
201 Successful Response application/json CaptureAdmissionSubmissionResponse
401 The bearer credential is missing, malformed, expired, revoked, or otherwise invalid. Clerk sessions and scoped API keys fail identically and the body never reveals which credential was presented or whether it exists. application/json HttpErrorResponse
403 The provider deleted this identity, or the account is deactivated. A valid session cannot authorize a tombstoned identity back into use; an API key must also grant the scope required by the operation, and an operation is not classified by the route/scope policy and is denied by default. An API key restricted to client networks is refused from any other network with the API_KEY_IP_NOT_ALLOWED envelope. application/json HttpErrorResponse or ErrorResponse
404 Not Found application/json CaptureManagementErrorResponse
409 Just-in-time provisioning conflicted: the verified email belongs to another provisioned account. application/json HttpErrorResponse or CaptureManagementErrorResponse
422 A verified email is unavailable for account provisioning. application/json HttpErrorResponse or CaptureManagementErrorResponse
429 The API key’s own request rate limit was exceeded (API_KEY_RATE_LIMITED). Only keys configured with a rate limit can receive this. Retryable after Retry-After seconds; the refused request consumed no capacity. application/json ErrorResponse
503 Credential verification is unavailable: Clerk session verification is not configured, no API-key pepper is enrolled, or bounded API-key verification is temporarily overloaded. Retryable. application/json HttpErrorResponse or CaptureManagementErrorResponse
Field Type Required Description
capture_admission_id string yes Pattern: ^cad_[a-z2-7]{16}$.
decision CaptureAdmissionDecision yes One of: pass, reject.
failed_gates array of PublicCaptureAdmissionReason yes
job_id string or null yes
reason PublicCaptureAdmissionReason yes One of: passed, capture_identity_revoked, capture_identity_conflict, evidence_unavailable, evidence_invalid, app_identity_mismatch, app_downgrade, os_downgrade, security_level, boot_state, counter_replay, clock_rollback, reinstall_restore, request_mismatch, media_substitution, governance_rejected, asset_closed, commercial_rejected, capture_work_conflict, capture_work_unavailable.

GET /v1/capture-admissions/{capture_admission_id}

Section titled “GET /v1/capture-admissions/{capture_admission_id}”

Operation ID: getCaptureAdmission

Read one privacy-safe capture admission detail.

Authentication: Authorization: Bearer <API key or console session> (Authentication).

Name In Type Required Description
capture_admission_id path string yes Pattern: ^cad_[a-z2-7]{16}$.
If-None-Match header string or null no
Status Description Body
200 Successful Response application/json CaptureAdmissionDetail
304 Not modified none
401 The bearer credential is missing, malformed, expired, revoked, or otherwise invalid. Clerk sessions and scoped API keys fail identically and the body never reveals which credential was presented or whether it exists. application/json HttpErrorResponse
403 The provider deleted this identity, or the account is deactivated. A valid session cannot authorize a tombstoned identity back into use; an API key must also grant the scope required by the operation, and an operation is not classified by the route/scope policy and is denied by default. An API key restricted to client networks is refused from any other network with the API_KEY_IP_NOT_ALLOWED envelope. application/json HttpErrorResponse or ErrorResponse
404 Not Found application/json CaptureManagementErrorResponse
409 Just-in-time provisioning conflicted: the verified email belongs to another provisioned account. application/json HttpErrorResponse or CaptureManagementErrorResponse
422 A verified email is unavailable for account provisioning. application/json HttpErrorResponse or CaptureManagementErrorResponse
429 The API key’s own request rate limit was exceeded (API_KEY_RATE_LIMITED). Only keys configured with a rate limit can receive this. Retryable after Retry-After seconds; the refused request consumed no capacity. application/json ErrorResponse
503 Credential verification is unavailable: Clerk session verification is not configured, no API-key pepper is enrolled, or bounded API-key verification is temporarily overloaded. Retryable. application/json HttpErrorResponse or CaptureManagementErrorResponse
Field Type Required Description
admission_policy_version string yes Max length 128.
asset_id string or null yes
capture_admission_id string yes Pattern: ^cad_[a-z2-7]{16}$.
capture_identity_id string yes Pattern: ^cid_[a-z2-7]{16}$.
capture_policy_id string yes Pattern: ^cpv_[a-z2-7]{16}$.
capture_policy_version string yes Max length 128.
decided_at string yes
decision CaptureAdmissionDecision yes One of: pass, reject.
evidence_schema_version string yes Max length 128.
failed_gates array of PublicCaptureAdmissionReason yes
governance_policy_version string yes Max length 128.
identity_version_id string yes Pattern: ^div_[a-z2-7]{16}$.
job_id string or null yes
provider_class CaptureProviderClass yes One of: apple_app_attest, google_play_integrity, android_key_attestation, other.
reason PublicCaptureAdmissionReason yes One of: passed, capture_identity_revoked, capture_identity_conflict, evidence_unavailable, evidence_invalid, app_identity_mismatch, app_downgrade, os_downgrade, security_level, boot_state, counter_replay, clock_rollback, reinstall_restore, request_mismatch, media_substitution, governance_rejected, asset_closed, commercial_rejected, capture_work_conflict, capture_work_unavailable.
revocation_snapshot_version string yes Max length 128.
trust_snapshot_version string yes Max length 128.
upload_object_id string yes Pattern: ^aob_[a-z2-7]{16}$.
verifier_version string yes Max length 128.

Operation ID: listCaptureIdentities

List bounded privacy-safe capture identities.

Authentication: Authorization: Bearer <API key or console session> (Authentication).

Name In Type Required Description
state query CaptureIdentityFilterState or null no
platform query CaptureIdentityPlatform or null no
provider_class query CaptureProviderClass or null no
cursor query string or null no
limit query integer or null no
Status Description Body
200 Successful Response application/json CaptureIdentityListResponse
401 The bearer credential is missing, malformed, expired, revoked, or otherwise invalid. Clerk sessions and scoped API keys fail identically and the body never reveals which credential was presented or whether it exists. application/json HttpErrorResponse
403 The provider deleted this identity, or the account is deactivated. A valid session cannot authorize a tombstoned identity back into use; an API key must also grant the scope required by the operation, and an operation is not classified by the route/scope policy and is denied by default. An API key restricted to client networks is refused from any other network with the API_KEY_IP_NOT_ALLOWED envelope. application/json HttpErrorResponse or ErrorResponse
404 Not Found application/json CaptureManagementErrorResponse
409 Just-in-time provisioning conflicted: the verified email belongs to another provisioned account. application/json HttpErrorResponse or CaptureManagementErrorResponse
422 A verified email is unavailable for account provisioning. application/json HttpErrorResponse or CaptureManagementErrorResponse
429 The API key’s own request rate limit was exceeded (API_KEY_RATE_LIMITED). Only keys configured with a rate limit can receive this. Retryable after Retry-After seconds; the refused request consumed no capacity. application/json ErrorResponse
503 Credential verification is unavailable: Clerk session verification is not configured, no API-key pepper is enrolled, or bounded API-key verification is temporarily overloaded. Retryable. application/json HttpErrorResponse or CaptureManagementErrorResponse
Field Type Required Description
items array of CaptureIdentitySummary yes
next_cursor string or null yes

Operation ID: createCaptureIdentity

Complete one capture-identity enrollment or replay its exact target.

Authentication: Authorization: Bearer <API key or console session> (Authentication).

application/json: CaptureIdentityCreationRequest (required)

Field Type Required Description
attestation_kind AttestationKind yes Closed vocabulary shared with the immutable governance policy body. One of: app_attest, play_integrity, hardware_key_attestation.
capture_identity_enrollment_id string yes Pattern: ^cie_[a-z2-7]{16}$.
challenge_secret string yes Pattern: ^[A-Za-z0-9_-]{43}$. Max length 43.
statement string yes Max length 349528.
Status Description Body
200 OK application/json CaptureIdentityEnrollmentResult
201 Successful Response application/json CaptureIdentityEnrollmentResult
401 The bearer credential is missing, malformed, expired, revoked, or otherwise invalid. Clerk sessions and scoped API keys fail identically and the body never reveals which credential was presented or whether it exists. application/json HttpErrorResponse
403 The provider deleted this identity, or the account is deactivated. A valid session cannot authorize a tombstoned identity back into use; an API key must also grant the scope required by the operation, and an operation is not classified by the route/scope policy and is denied by default. An API key restricted to client networks is refused from any other network with the API_KEY_IP_NOT_ALLOWED envelope. application/json HttpErrorResponse or ErrorResponse
404 Not Found application/json CaptureManagementErrorResponse
409 Just-in-time provisioning conflicted: the verified email belongs to another provisioned account. application/json HttpErrorResponse or CaptureManagementErrorResponse
422 A verified email is unavailable for account provisioning. application/json HttpErrorResponse or CaptureManagementErrorResponse
429 The API key’s own request rate limit was exceeded (API_KEY_RATE_LIMITED). Only keys configured with a rate limit can receive this. Retryable after Retry-After seconds; the refused request consumed no capacity. application/json ErrorResponse
503 Credential verification is unavailable: Clerk session verification is not configured, no API-key pepper is enrolled, or bounded API-key verification is temporarily overloaded. Retryable. application/json HttpErrorResponse or CaptureManagementErrorResponse
Field Type Required Description
capture_identity_id string yes Pattern: ^cid_[a-z2-7]{16}$.
enrolled_at string yes
identity_version integer yes
identity_version_id string yes Pattern: ^div_[a-z2-7]{16}$.

GET /v1/capture-identities/{capture_identity_id}

Section titled “GET /v1/capture-identities/{capture_identity_id}”

Operation ID: getCaptureIdentity

Read one privacy-safe capture identity detail.

Authentication: Authorization: Bearer <API key or console session> (Authentication).

Name In Type Required Description
capture_identity_id path string yes Pattern: ^cid_[a-z2-7]{16}$.
If-None-Match header string or null no
Status Description Body
200 Successful Response application/json CaptureIdentityDetail
304 Not modified none
401 The bearer credential is missing, malformed, expired, revoked, or otherwise invalid. Clerk sessions and scoped API keys fail identically and the body never reveals which credential was presented or whether it exists. application/json HttpErrorResponse
403 The provider deleted this identity, or the account is deactivated. A valid session cannot authorize a tombstoned identity back into use; an API key must also grant the scope required by the operation, and an operation is not classified by the route/scope policy and is denied by default. An API key restricted to client networks is refused from any other network with the API_KEY_IP_NOT_ALLOWED envelope. application/json HttpErrorResponse or ErrorResponse
404 Not Found application/json CaptureManagementErrorResponse
409 Just-in-time provisioning conflicted: the verified email belongs to another provisioned account. application/json HttpErrorResponse or CaptureManagementErrorResponse
422 A verified email is unavailable for account provisioning. application/json HttpErrorResponse or CaptureManagementErrorResponse
429 The API key’s own request rate limit was exceeded (API_KEY_RATE_LIMITED). Only keys configured with a rate limit can receive this. Retryable after Retry-After seconds; the refused request consumed no capacity. application/json ErrorResponse
503 Credential verification is unavailable: Clerk session verification is not configured, no API-key pepper is enrolled, or bounded API-key verification is temporarily overloaded. Retryable. application/json HttpErrorResponse or CaptureManagementErrorResponse
Field Type Required Description
capture_identity_id string yes Pattern: ^cid_[a-z2-7]{16}$.
capture_policy_id string yes Pattern: ^cpv_[a-z2-7]{16}$.
capture_policy_version string yes Max length 128.
enrolled_at string yes
evidence_schema_version string yes Max length 128.
identity_version integer yes
identity_version_id string yes Pattern: ^div_[a-z2-7]{16}$.
last_capture_at string or null yes
last_verified_at string or null yes
platform CaptureIdentityPlatform yes One of: ios, android.
provider_class CaptureProviderClass yes One of: apple_app_attest, google_play_integrity, android_key_attestation, other.
revocation_snapshot_version string yes Max length 128.
revoked_at string or null yes
state CaptureIdentityState yes One of: active, revoked.
trust_snapshot_version string yes Max length 128.
verifier_version string yes Max length 128.

POST /v1/capture-identities/{capture_identity_id}/revoke

Section titled “POST /v1/capture-identities/{capture_identity_id}/revoke”

Operation ID: revokeCaptureIdentity

Terminally revoke one owned capture identity.

Authentication: Authorization: Bearer <API key or console session> (Authentication).

Name In Type Required Description
capture_identity_id path string yes Pattern: ^cid_[a-z2-7]{16}$.
Status Description Body
200 Successful Response application/json CaptureIdentityRevocationResponse
401 The bearer credential is missing, malformed, expired, revoked, or otherwise invalid. Clerk sessions and scoped API keys fail identically and the body never reveals which credential was presented or whether it exists. application/json HttpErrorResponse
403 The provider deleted this identity, or the account is deactivated. A valid session cannot authorize a tombstoned identity back into use; an API key must also grant the scope required by the operation, and an operation is not classified by the route/scope policy and is denied by default. An API key restricted to client networks is refused from any other network with the API_KEY_IP_NOT_ALLOWED envelope. application/json HttpErrorResponse or ErrorResponse
404 Not Found application/json CaptureManagementErrorResponse
409 Just-in-time provisioning conflicted: the verified email belongs to another provisioned account. application/json HttpErrorResponse or CaptureManagementErrorResponse
422 A verified email is unavailable for account provisioning. application/json HttpErrorResponse or CaptureManagementErrorResponse
429 The API key’s own request rate limit was exceeded (API_KEY_RATE_LIMITED). Only keys configured with a rate limit can receive this. Retryable after Retry-After seconds; the refused request consumed no capacity. application/json ErrorResponse
503 Credential verification is unavailable: Clerk session verification is not configured, no API-key pepper is enrolled, or bounded API-key verification is temporarily overloaded. Retryable. application/json HttpErrorResponse or CaptureManagementErrorResponse
Field Type Required Description
capture_identity_id string yes Pattern: ^cid_[a-z2-7]{16}$.
revocation_id string yes Pattern: ^crv_[a-z2-7]{16}$.
revoked_at string yes
schema_version const “op.capture-identity-revocation.v1” no Default "op.capture-identity-revocation.v1".
state const “revoked” no Default "revoked".

Operation ID: createCaptureIdentityEnrollment

Create one purpose-bound capture-identity enrollment challenge.

Authentication: Authorization: Bearer <API key or console session> (Authentication).

Name In Type Required Description
Idempotency-Key header string yes Visible-ASCII tenant-and-operation idempotency key. Pattern: ^[!-~]+$. Max length 200.

application/json: CaptureIdentityEnrollmentRequest (required)

Field Type Required Description
platform CaptureIdentityPlatform yes One of: ios, android.
Status Description Body
201 Successful Response application/json CaptureIdentityEnrollmentResponse
401 The bearer credential is missing, malformed, expired, revoked, or otherwise invalid. Clerk sessions and scoped API keys fail identically and the body never reveals which credential was presented or whether it exists. application/json HttpErrorResponse
403 The provider deleted this identity, or the account is deactivated. A valid session cannot authorize a tombstoned identity back into use; an API key must also grant the scope required by the operation, and an operation is not classified by the route/scope policy and is denied by default. An API key restricted to client networks is refused from any other network with the API_KEY_IP_NOT_ALLOWED envelope. application/json HttpErrorResponse or ErrorResponse
404 Not Found application/json CaptureManagementErrorResponse
409 Just-in-time provisioning conflicted: the verified email belongs to another provisioned account. application/json HttpErrorResponse or CaptureManagementErrorResponse
422 A verified email is unavailable for account provisioning. application/json HttpErrorResponse or CaptureManagementErrorResponse
429 The API key’s own request rate limit was exceeded (API_KEY_RATE_LIMITED). Only keys configured with a rate limit can receive this. Retryable after Retry-After seconds; the refused request consumed no capacity. application/json ErrorResponse
503 Credential verification is unavailable: Clerk session verification is not configured, no API-key pepper is enrolled, or bounded API-key verification is temporarily overloaded. Retryable. application/json HttpErrorResponse or CaptureManagementErrorResponse
Field Type Required Description
capture_identity_enrollment_id string yes Pattern: ^cie_[a-z2-7]{16}$.
challenge_secret string yes Pattern: ^[A-Za-z0-9_-]{43}$. Max length 43.
expires_at string yes