Skip to main content
POST
Run compliance check

Authorizations

Authorization
string
header
required

API key starting with zt_live_ (production) or zt_test_ (sandbox). Get your key at https://developers.zebratruth.ai

Headers

Idempotency-Key
string<uuid>
required

Unique request identifier to prevent duplicate execution and double-charging. Generate a new UUID for each distinct request. Reuse the same key to safely retry.

Body

jurisdictions
enum<string>[]
required

Which jurisdiction laws to check against

Available options:
us,
eu,
uk,
india,
china
Example:
platforms
enum<string>[]
required

Which platform policies to check

Available options:
youtube,
instagram,
facebook,
tiktok,
linkedin
Example:
content
object
required
mode
enum<string>
  • fast — All agents run in parallel
  • full — 4-phase pipeline with content enrichment
Available options:
fast,
full
Example:

"fast"

responseMode
enum<string>
default:sync
  • sync — Block until complete, return full report
  • stream — SSE events per agent (progressive results)
  • async — Return immediately, deliver result via webhook
Available options:
sync,
stream,
async
webhookUrl
string<uri>

Required for async mode — where to POST results

callbackId
string

Your correlation ID, echoed back in webhook payload

externalId
string

Your own reference ID, queryable in request logs

industryOverlays
enum<string>[]

Narrow the industry rule sets applied to this request to a subset of the workspace's industries. Omit to apply every industry the workspace has selected.

Available options:
financial_services,
pharma_healthcare
reviewScopes
enum<string>[]

Financial-services review scopes to run. Each scope maps to one specialist agent. Must be a subset of the scopes enabled on the workspace and covered for every requested jurisdiction. Omit to run the workspace's enabled scopes.

Maximum array length: 6

A financial-services review scope. Each maps to one specialist agent: financial promotions, disclosures and conduct; investment advice and suitability; credit origination, servicing and collections; order execution, transaction reporting and market abuse; KYC, AML/CFT, fraud and sanctions; AI governance, model risk and automated decisions. Coverage is US, EU and UK for every scope, plus China and India for financial_promotion.

Available options:
financial_promotion,
advisory_suitability,
credit_servicing,
markets_trading,
financial_crime,
ai_governance
Example:
contentKind
enum<string>

What kind of artifact the check is looking at. Adds applicability triggers and ranks the obligations the specialists cite. It never removes a selected review scope.

Available options:
marketing,
suitability_report,
advice_letter,
precontract_disclosure,
adverse_action_notice,
collections_communication,
arrears_notice,
fund_factsheet,
research_note,
trader_communication,
best_execution_disclosure,
kyc_onboarding,
scam_warning,
aml_policy,
ai_policy,
model_documentation,
other
regulatedActors
enum<string>[]

Narrow the regulated actors this check evaluates to a subset of the workspace's actor set. Rules that bind an incompatible actor cannot drive blocking findings. Must be a subset of the workspace set (400 regulated_actor_not_enabled).

Maximum array length: 17

The regulated party a check is evaluating. Corpus rules tagged with an incompatible actor are excluded from asserted citations and cannot drive blocking findings.

Available options:
advertiser,
manufacturer,
platform,
provider,
payer,
pharmacy,
HCP,
telehealth_provider,
adviser,
broker_dealer,
bank,
lender,
servicer,
debt_collector,
fund_manager,
payment_service_provider,
insurer
regulatedActor
enum<string>

Single-actor form of regulatedActors, kept for older clients. Prefer regulatedActors.

Available options:
advertiser,
manufacturer,
platform,
provider,
payer,
pharmacy,
HCP,
telehealth_provider,
adviser,
broker_dealer,
bank,
lender,
servicer,
debt_collector,
fund_manager,
payment_service_provider,
insurer

Response

Compliance report (sync mode). For stream mode, returns text/event-stream. For async mode, returns job info with poll URL.

requestId
string

Identifier of this check, usable with GET /compliance/checks/{requestId} and in request logs.

reportId
string
Example:

"rpt_abc123"

score
integer
Required range: 0 <= x <= 100
Example:

72

decision
enum<string>
  • PUBLISH — Score 80-100, safe to publish
  • HOLD — Score 60-79, or any high-severity flag
  • BLOCK — Score 0-59, or any critical-severity check
Available options:
PUBLISH,
HOLD,
BLOCK
checks
object[]

All compliance findings. Each check has structured classification metadata (id, jurisdictions, platforms, scope, primaryCategory, categories) added inline. Combine bySeverity + byJurisdiction etc. via the indexes field for filtered views.

checksById
object

O(1) lookup map keyed by stable id. Same data as checks[], indexed for direct access (e.g. when resolving an annotation's checkId to its parent check).

indexes
object

Pre-computed reference indexes — pure ID lists, no content duplication. Tenants pick whichever organization fits their UI. Combine via set intersection (e.g., critical EU findings = bySeverity.critical ∩ byJurisdiction.eu). All seven dimensions always present; empty buckets are included so client code can do indexes.byJurisdiction.us ?? [] without optional-chaining on the bucket itself.

annotations
object[]
profile
object
agentSummaries
object
versionInfo
object
costBreakdown
object
creditsCharged
number

Credits debited for this request. 0 on a cache hit.

cached
boolean

true when the result was served from the response cache or an idempotent replay.

coverageIncomplete
boolean

true when at least one agent could not consult its legal corpus. Always equals coverageGaps.length > 0.

coverageGaps
object[]
analysisDiagnostics
object[]

Pipeline diagnostics that are not compliance findings.

regulatedActors
enum<string>[]

Present when the check was evaluated for specific regulated actors.

The regulated party a check is evaluating. Corpus rules tagged with an incompatible actor are excluded from asserted citations and cannot drive blocking findings.

Available options:
advertiser,
manufacturer,
platform,
provider,
payer,
pharmacy,
HCP,
telehealth_provider,
adviser,
broker_dealer,
bank,
lender,
servicer,
debt_collector,
fund_manager,
payment_service_provider,
insurer
agentsRun
object[]

One record per financial-services specialist selected for this check, with how it finished. Absent on checks that ran no specialist and on cached results produced before this field existed.

decisionReasons
enum<string>[]

Every rule that contributed to decision, in evaluation order. Present on checks that ran a financial-services specialist.

Why the decision is what it is. blocking_check: a blocking finding forced BLOCK. required_review_incomplete: a required specialist did not complete, so the check is HOLD. legal_context_overflow: the applicable rule set exceeded what one run can evaluate. flagged_check: a flagged finding produced HOLD.

Available options:
blocking_check,
required_review_incomplete,
legal_context_overflow,
flagged_check
_meta
object

Present only for test mode (zt_test_ keys)