---
title: "Screen one phone number for DNC + litigator status"
method: POST
path: "/v2/compliance/screen"
tags: ["compliance-v2"]
---

# Screen one phone number for DNC + litigator status

`POST /v2/compliance/screen`

## Request

- Base URL: `https://api.tracklysms.com/api`
- URL: `https://api.tracklysms.com/api/v2/compliance/screen`
- Auth: API key in header `X-Api-Key`

DNC is free; a non-cached litigator lookup bills at \$0.015. Requires an
active payment method (HTTP 402 if not enabled). The screen NEVER rejects
on a hit — the verdict is returned and the litigator/DNC badge is written
to the contact profile; suppress flagged numbers downstream via the
is_litigator audience filter. A recently-screened number returns the cached
verdict (cached=true, no charge) unless force=true. A provider outage
returns 503 with nothing billed — retry later. Sustained bursts beyond
the per-account rate limit return 429 with a Retry-After header.

The Contact row is get-or-created (primary-acked) before screening —
screen_litigator's caller contract — so the async consumer can persist
the badge + usage row for numbers not yet on any list.

## Request body

- ComplianceScreenRequest
  - `force` boolean: Bypass the 30-day staleness cache and force a fresh (billable) screen.
  - `phone_number` string, required: E.164 phone number to screen (e.g. +14155551234).

## Response `200`

Success

---

[API](https://skmtc.dev/tracklysms/apis/trackly-sms-api.md) · [All operations](https://skmtc.dev/tracklysms/apis/trackly-sms-api/llms.txt) · [OpenAPI document](https://skmtc.dev/tracklysms/apis/trackly-sms-api/revisions/ac1ad22cb2a9?raw)
