ScreenVeritAI · API Specv1 · GA · reference
    Developer API

    Put sanctions screening inside the workflow that needs it

    Use the API for sanctions, PEP and criminal-watchlist screening in onboarding, payments, procurement, or monitoring. Full Search can add adverse-media context; cases that require ownership or relationship research continue into the platform's deeper KYB and UBO workflow.

    The request

    p. 01 / 09

    One POST call, then your poll loop.

    Entity name, type, country, screening type. The call returns 202 with a search_id and an ETA, and the agent works in the background — you poll for the result rather than hold the connection open.

    entity_nameRequired, 1-500 characters. Alias-aware matching
    entity_type"person", "company" or "any" (default "any")
    countryOptional jurisdiction hint that sharpens identity resolution
    search_type"sanctions_check", "adverse_media" or "full_search"
    POST /api/v1/search
    bash
    1curl -X POST https://screenveritai.com/api/v1/search \
    2 -H 'X-API-Key: YOUR_API_KEY' \
    3 -H 'Content-Type: application/json' \
    4 -d '{
    5 "entity_name": "Acme Trading LLC",
    6 "entity_type": "company",
    7 "country": "AE",
    8 "search_type": "sanctions_check"
    9 }'
    10# 202 Accepted
    11# { "search_id": "SEARCH_ID", "status": "processing",
    12# "estimated_time_seconds": 15 }

    The response

    p. 02 / 09
    GET /api/v1/search/{search_id} — response
    200 OK
    1{
    2"id": "SEARCH_ID",
    3"entity_name": "Acme Trading LLC",
    4"entity_type": "company",
    5"status": "completed",
    6"search_type": "sanctions_check",
    7"ofac_sanctions": "## OFAC Sanctions Findings\n\n
    8**Status:** *Sanctioned*\n\n**Details:**\n
    9- **Matched entity:** ACME TRADING LLC\n
    10- **Authority:** US Treasury OFAC\n...",
    11"eu_sanctions": "## EU Sanctions Findings\n\n
    12**Status:** *No relevant listing found*\n...",
    13"sanctions_sources": [
    14{ "source_id": "ofac_sanctions", "title": "OFAC Sanctions",
    15"authority": "US Treasury OFAC", "hit_count": 1 },
    16{ "source_id": "eu_sanctions", "title": "EU Sanctions",
    17"authority": "", "hit_count": 0 }
    18],
    19"criminal_watchlists": null,
    20"pep": null,
    21"news_summary": null,
    22"final_report": null,
    23"created_at": "2026-09-04T09:20:03.771000+00:00",
    24"completed_at": "2026-09-04T09:20:19.088000+00:00"
    25}
    No relevant listing found / null
    Sanctioned / potential match
    Per-source hit_count
    Status and search_type

    Structured JSON. Findings, not a score.

    One field per sanctions source, plus criminal watchlists and PEP. Each finding is markdown carrying the status line, the matched entity, the authority and an evidence URL — there is no numeric score and no risk tier, because a number hides the line an auditor asks to see.

    "ofac_sanctions"One markdown field per jurisdiction; read the *Status:* line
    "sanctions_sources"source_id, title, authority, details, hit_count per source
    "criminal_watchlists"Markdown when matched, null when nothing matched
    "pep"Markdown when matched, null when nothing matched
    "news_summary"Adverse-media report on adverse_media and full_search
    "status"completed when done; error_* on failure

    API reference

    p. 03 / 09

    Three calls cover a screening integration: queue it, poll it, or hand over a file.

    API reference — endpoints
    v1 · rest
    POST
    /api/v1/search

    Queue a screening run. Returns immediately with a search_id; the work happens in the background.

    Request

    curl -X POST https://screenveritai.com/api/v1/search \
    -H 'X-API-Key: YOUR_API_KEY' \
    -H 'Content-Type: application/json' \
    -d '{"entity_name": "Acme Trading LLC", "entity_type": "company",
    "country": "AE", "search_type": "sanctions_check"}'

    Response

    202 Accepted
    { "search_id": "SEARCH_ID", "status": "processing",
    "message": "Search queued successfully. Poll the GET endpoint for results.",
    "estimated_time_seconds": 15 }

    Integration patterns

    p. 04 / 09

    The API sits between data entry and decision — wherever you need a risk signal.

    Customer onboarding
    Customer signupPOST /api/v1/searchPoll until completedApprove / hold
    Payment processing
    Transaction initPOST /api/v1/searchPoll until completedRelease / hold
    CRM re-screen
    Record updatedYour scheduler firesPOST /api/v1/searchWrite result back

    Build in-house vs. integrate ScreenVeritAI

    p. 05 / 09
    Time to production
    Build in-house
    6-12 months to source lists, build matching, handle edge cases
    ScreenVeritAI API
    Days to integrate — production-ready from first API call
    Sanctions list coverage
    Build in-house
    Manual ingestion of each list format; ongoing schema maintenance
    ScreenVeritAI API
    Every major source, maintained and updated continuously
    Matching accuracy
    Build in-house
    Custom fuzzy matching requires NLP expertise and constant tuning
    ScreenVeritAI API
    AI with fuzzy matching, transliteration, alias resolution, phonetic algorithms
    PEP and adverse media
    Build in-house
    Separate vendors, separate integrations, separate budgets
    ScreenVeritAI API
    Sanctions, PEP and criminal watchlists in one response; adverse media on a Full Search
    Ongoing maintenance
    Build in-house
    Dedicated team for list updates, schema changes, false-positive tuning
    ScreenVeritAI API
    Fully managed — updates, improvements, and infrastructure handled for you
    Audit trail
    Build in-house
    Build your own logging, evidence, and retention infrastructure
    ScreenVeritAI API
    Timestamped evidence bundles with source references included

    Four steps to embedded compliance

    p. 06 / 09
    1

    Get your API key

    Create a scoped key from your dashboard with least-privilege permissions: search:read, search:write, batch:read, batch:write.

    2

    Integrate the endpoint

    One POST call from your onboarding, payment, or CRM workflow. Send entity_name, entity_type and country; you get back a search_id and an estimated_time_seconds.

    3

    Process results

    Poll GET /api/v1/search/{search_id} until status is completed. The JSON carries one markdown finding per sanctions source, plus criminal_watchlists, pep and, on a Full Search, news_summary.

    4

    Re-screen on a cadence

    The v1 API has no webhooks, so schedule the repeat call yourself, or turn on monitoring in the platform for in-app alerts when a listing changes.

    Get started in minutes

    p. 07 / 09

    A single API call returns a complete screening result.

    Screen an entity
    bash
    curl -X POST https://screenveritai.com/api/v1/search \
      -H 'X-API-Key: YOUR_API_KEY' \
      -H 'Content-Type: application/json' \
      -d '{"entity_name": "Acme Trading LLC", "country": "AE", "search_type": "sanctions_check"}'
    
    # 202 Accepted
    # { "search_id": "SEARCH_ID", "status": "processing", "estimated_time_seconds": 15 }
    Check result
    bash
    curl https://screenveritai.com/api/v1/search/SEARCH_ID \
      -H 'X-API-Key: YOUR_API_KEY'
    
    # 200 OK
    # { "id": "SEARCH_ID", "status": "completed",
    #   "ofac_sanctions": "## OFAC Sanctions Findings ... *No relevant listing found* ...",
    #   "criminal_watchlists": null, "pep": null }

    API performance

    p. 08 / 09

    €0.39

    Quick Check per call, no platform fee

    202

    HTTP status when a search is accepted; you then poll the result

    EU

    Hosted in Finland; data at rest stays in the EU

    API integration FAQ

    p. 09 / 09
    01How do I authenticate API requests?
    Authenticate API requests with a secret key passed in the X-API-Key header. Keys are created from your dashboard with scoped, least-privilege permissions.
    02Is the API synchronous or asynchronous?
    Asynchronous. POST returns 202 with a search_id, and you retrieve the result by polling GET /api/v1/search/{search_id} until status is completed. Your pipeline never blocks.
    03What response format does the API return?
    Structured JSON. Every sanctions source has its own field carrying a markdown finding: the status line, the matched entity, the authority and an evidence URL. criminal_watchlists and pep are null when nothing matched. There is no numeric score and no risk tier.
    04What rate limits apply?
    Assigned by subscription tier per API key. Response headers include remaining quota and reset timestamp.
    05Can I screen entities in batch via the API?
    Yes. POST /api/v1/batch accepts one CSV or XLSX with a name column, up to 100 rows and 2 MB per file. Read results per row at /rows, or take the whole job as a CSV from /export once its status is completed.
    06How do I set up ongoing monitoring via the API?
    Configure monitoring after initial screening. When lists update or new adverse media surfaces, monitoring flags the change and alerts you in-app.
    07What compliance data is included in each screening result?
    A markdown finding for every sanctions source checked, plus criminal watchlists and PEP records, and on a Full Search an adverse-media summary in news_summary. Each finding names the matched entity, the authority and an evidence URL, and the completed search is stored as a point-in-time snapshot.
    08How long does a screening take?
    The 202 response carries estimated_time_seconds: 15 for a sanctions_check, 20 for adverse_media, 30 for a Full Search. Those are fixed constants in the code rather than measured latency, so use them to size a polling deadline, not to promise anyone a number.
    API terminology
    REST API
    Web API using standard HTTP methods — compatible with any language or framework that can make HTTP requests.
    Async processing
    The API accepts a job immediately and processes it in the background — retrieve results via polling.
    API key
    Secret token for authenticating API requests, scoped with specific permissions for least-privilege access.
    Rate limiting
    Restricts API requests per time window by subscription tier — remaining quota and reset timestamps in response headers.
    Structured response
    Machine-readable JSON with consistent field names and types, enabling automated parsing and decision logic.
    Industry sources
    1. 01
    2. 02
      Regulatory Technology for AML/CFT Compliance

      Bank for International Settlements — FSI Insights

    3. 03
      OFAC Compliance Commitments Framework

      U.S. Department of the Treasury

    4. 04
      EU Anti-Money Laundering Authority (AMLA) Regulation

      Official Journal of the European Union

    chk api-v1svai-api-specv1 · ga2 samples · reference

    End of API specification.

    Start screening in minutes.

    Choose a plan and start screening today.