> ## Documentation Index
> Fetch the complete documentation index at: https://docs.zenoo.com/llms.txt
> Use this file to discover all available pages before exploring further.

# First API Call

> Get from zero to a working API call in under 2 minutes with your staging API key and project hash.

# First API Call

This page gets you from zero to a working API call in under 2 minutes. You need your staging API key and project hash.

<Info>
  **Prerequisites:** You need a staging API key and a project hash before proceeding. See [Authentication](/getting-started/authentication) for how to obtain these credentials.
</Info>

<Steps>
  <Step title="Screen an entity">
    AML screening is the simplest call. It takes a name, runs it against PEP/sanctions/adverse media databases, and returns structured match results synchronously.

    <CodeGroup>
      ```bash cURL theme={null}
      curl -X POST \
        "https://instance.staging.onboardapp.io/api/gateway/execute/{project_hash}/api" \
        -H "Content-Type: application/json" \
        -H "X-API-KEY: your-staging-api-key" \
        -H "X-SYNC-TIMEOUT: 15000" \
        -d '{
          "name": "Jane Smith",
          "date_of_birth": "1990-06-15",
          "country": "GB",
          "entity_type": "person",
          "categories": ["pep", "sanctions", "adverse_media"]
        }'
      ```

      ```javascript Node.js theme={null}
      const response = await fetch(
        `https://instance.staging.onboardapp.io/api/gateway/execute/${projectHash}/api`,
        {
          method: "POST",
          headers: {
            "Content-Type": "application/json",
            "X-API-KEY": process.env.ZENOO_API_KEY,
            "X-SYNC-TIMEOUT": "15000"
          },
          body: JSON.stringify({
            name: "Jane Smith",
            date_of_birth: "1990-06-15",
            country: "GB",
            entity_type: "person",
            categories: ["pep", "sanctions", "adverse_media"]
          })
        }
      );

      const result = await response.json();
      console.log(result);
      ```

      ```python Python theme={null}
      import os
      import requests

      response = requests.post(
          f"https://instance.staging.onboardapp.io/api/gateway/execute/{project_hash}/api",
          headers={
              "Content-Type": "application/json",
              "X-API-KEY": os.environ["ZENOO_API_KEY"],
              "X-SYNC-TIMEOUT": "15000",
          },
          json={
              "name": "Jane Smith",
              "date_of_birth": "1990-06-15",
              "country": "GB",
              "entity_type": "person",
              "categories": ["pep", "sanctions", "adverse_media"],
          },
      )

      print(response.json())
      ```
    </CodeGroup>
  </Step>

  <Step title="Check the response">
    A clean screening result looks like this:

    ```json {2-4} theme={null}
    {
      "pep_status": "No Hit",
      "sanctions_status": "No Hit",
      "adverse_media_status": "No Hit",
      "screening_provider": "WorldCheck",
      "screening_completed_at": "2026-01-15T14:30:00Z",
      "matches": []
    }
    ```

    All status fields show `"No Hit"` and the `matches` array is empty. The entity does not appear in any screening database.

    If there are matches, each entry in the `matches` array includes a `matchScore` (0-100), `primaryName`, `category`, and provider-specific detail fields.
  </Step>

  <Step title="Try a Company Verification">
    Submit a company for verification. This runs registry checks and screening in a single call.

    <CodeGroup>
      ```bash cURL theme={null}
      curl -X POST \
        "https://instance.staging.onboardapp.io/api/gateway/execute/{project_hash}/api" \
        -H "Content-Type: application/json" \
        -H "X-API-KEY: your-staging-api-key" \
        -H "X-SYNC-TIMEOUT: 30000" \
        -d '{
          "company_name": "Acme Holdings Ltd",
          "registration_number": "12345678",
          "country": "GB",
          "external_reference": "test-001"
        }'
      ```

      ```javascript Node.js theme={null}
      const response = await fetch(
        `https://instance.staging.onboardapp.io/api/gateway/execute/${projectHash}/api`,
        {
          method: "POST",
          headers: {
            "Content-Type": "application/json",
            "X-API-KEY": process.env.ZENOO_API_KEY,
            "X-SYNC-TIMEOUT": "30000"
          },
          body: JSON.stringify({
            company_name: "Acme Holdings Ltd",
            registration_number: "12345678",
            country: "GB",
            external_reference: "test-001"
          })
        }
      );

      const result = await response.json();
      console.log(result.overall_verdict); // "Pass", "Refer", or "Fail"
      console.log(result.risk_tier); // "Low", "Medium", or "High"
      ```

      ```python Python theme={null}
      response = requests.post(
          f"https://instance.staging.onboardapp.io/api/gateway/execute/{project_hash}/api",
          headers={
              "Content-Type": "application/json",
              "X-API-KEY": os.environ["ZENOO_API_KEY"],
              "X-SYNC-TIMEOUT": "30000",
          },
          json={
              "company_name": "Acme Holdings Ltd",
              "registration_number": "12345678",
              "country": "GB",
              "external_reference": "test-001",
          },
      )

      data = response.json()
      print(data["overall_verdict"])  # "Pass", "Refer", or "Fail"
      print(data["risk_tier"])        # "Low", "Medium", or "High"
      ```
    </CodeGroup>

    The response includes company verification data, screening results, risk assessment, and a checks summary. See the [Company Verification Quickstart](/use-cases/kyb-verification) for the full response structure.
  </Step>
</Steps>

## What's next

<Columns cols={2}>
  <Card title="Authentication" icon="key" href="/getting-started/authentication">
    API key management and webhook signatures
  </Card>

  <Card title="Company Verification Quickstart" icon="building" href="/use-cases/kyb-verification">
    Full company verification walkthrough
  </Card>

  <Card title="Person Verification Quickstart" icon="user" href="/use-cases/kyc-verification">
    Individual identity verification with document capture
  </Card>

  <Card title="Screening Quickstart" icon="magnifying-glass" href="/use-cases/screening">
    Standalone PEP/sanctions screening
  </Card>
</Columns>
