Partner API

    Build with
    the Sahl Partner API

    Read client documents, verify a profile, assess risk and run eID checks over one REST API. Test in sandbox with your key, then switch the environment field to production.

    Quick Start

    Go live in 4 steps

    From access request to your first call. The partner API is switched on per workspace.

    1

    Ask for access

    Request sandbox access. We switch the partner API on for your workspace.

    2

    Create an API key

    In the console, create a key with the scopes you need: kyc:extract, kyc:verify, kyc:eid.

    3

    Call it in sandbox

    Send environment=sandbox with test data. There is no separate sandbox host.

    4

    Go live

    Send environment=production with the same kind of request when your workspace is ready.

    Base URL

    One host for every call. The environment field in each request selects test or real data: sandbox is the default, production goes live.

    https://app.sahlfinancial.com/api
    Coverage

    What the API covers today

    Four capabilities are open to partner API keys. The rest of the platform lives in the console.

    CapabilityWhat it doesEndpointsScope
    Document readingReads 1 to 5 files per call (JPEG, PNG, WebP, TIFF or PDF, up to 30 MB each) into structured fields.POST /v1/kyc/extractkyc:extract
    VerificationChecks a client profile and its documents and returns a verdict with the checks behind it.POST /v1/kyc/verifykyc:verify
    Risk assessmentThe same body as verification, plus a risk assessment built on the verdict.POST /v1/kyc/assesskyc:verify
    eIDStarts an eID check, returns where it stands and downloads the report.POST /v1/kyc/eid, GET /v1/kyc/eid/{key}, GET /v1/kyc/eid/{key}/reportkyc:eid
    In the consoleBank connections, cases, scoring policies. Not available through partner API keys.Console only
    Code Examples

    Read a document, then verify it

    Two real calls. Set SAHL_API_KEY to a sandbox key and point the file at a test document.

    # 1. Read a document (multipart). environment defaults to sandbox.
    curl -X POST https://app.sahlfinancial.com/api/v1/kyc/extract \
      -H "Authorization: Bearer $SAHL_API_KEY" \
      -F "files=@passport-test.jpg" \
      -F "doc_type=passport" \
      -F "reference=client-0001" \
      -F "environment=sandbox"
    
    # 2. Verify the profile (send back the documents the first call returned).
    curl -X POST https://app.sahlfinancial.com/api/v1/kyc/verify \
      -H "Authorization: Bearer $SAHL_API_KEY" \
      -H "Content-Type: application/json" \
      -d '{"reference":"client-0001","environment":"sandbox","subject":"Test Client","kind":"individual","values":{"first_name":"Test","last_name":"Client"},"documents":[]}'
    API Reference

    Endpoints

    Six endpoints on one host. The full request and response schemas are in the OpenAPI file and the docs.

    Authentication

    Send your API key as a Bearer token. Keys are created in the console with the scopes kyc:extract, kyc:verify and kyc:eid. A key without the scope for a call gets 403. Keep keys on your server, never in a browser or mobile app.

    Authorization: Bearer <API key>
    MethodPathWhat it doesScope
    POST/v1/kyc/extractRead documents (multipart: files, doc_type, reference, environment)kyc:extract
    POST/v1/kyc/verifyVerify a profilekyc:verify
    POST/v1/kyc/assessVerify and assess riskkyc:verify
    POST/v1/kyc/eidStart an eID checkkyc:eid
    GET/v1/kyc/eid/{key}Get an eID checkkyc:eid
    GET/v1/kyc/eid/{key}/reportDownload an eID reportkyc:eid
    Good to know

    Scoped keys

    Each key carries only the scopes you give it: document reading, verification, eID.

    One host, two environments

    Sandbox and production share the host and differ by the environment field.

    Filed for you

    Send a reference and the case, its documents and the verdict are filed in your workspace, where your staff see them.

    Start building today

    Request sandbox access and make your first call.

    We value your privacy

    We use cookies to enhance your browsing experience, analyze site traffic, and personalize content. By clicking 'Accept All', you consent to our use of cookies. Learn more