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

# Quickstart

> Run your first lead check in under 3 minutes

<Steps>
  <Step title="Get an API Key">
    Create a free API key with a single request: no account or credit card needed.

    <CodeGroup>
      ```bash curl theme={null}
      curl -X POST https://api.limitguard.ai/v1/keys/create \
        -H "Content-Type: application/json" \
        -d '{"email": "you@example.com", "tier": "free"}'
      ```

      ```python Python theme={null}
      import httpx

      response = httpx.post(
          "https://api.limitguard.ai/v1/keys/create",
          json={"email": "you@example.com", "tier": "free"},
      )
      key = response.json()
      print(key["api_key"])  # lg_live_xxxxxxxxxxxxxxxxxxxx
      ```

      ```javascript JavaScript theme={null}
      const response = await fetch("https://api.limitguard.ai/v1/keys/create", {
        method: "POST",
        headers: { "Content-Type": "application/json" },
        body: JSON.stringify({ email: "you@example.com", tier: "free" }),
      });
      const { api_key } = await response.json();
      console.log(api_key); // lg_live_xxxxxxxxxxxxxxxxxxxx
      ```
    </CodeGroup>

    ```json Response theme={null}
    {
      "api_key": "lg_live_xxxxxxxxxxxxxxxxxxxx",
      "key_id": "key_abc123",
      "tier": "free",
      "monthly_limit": 500
    }
    ```

    <Warning>
      Save the `api_key` immediately: it is shown **once only**. The plaintext key is never stored server-side.
    </Warning>
  </Step>

  <Step title="Try Sandbox Mode (Free)">
    Test the API without calling real data sources or paying for calls with a free sandbox key. Sandbox mode is decided by the key (`lg_sandbox_...`), not by a header:

    <CodeGroup>
      ```bash curl theme={null}
      # 1. A free sandbox key: no wallet, no payment
      curl -X POST https://api.limitguard.ai/v1/keys/create \
        -H "Content-Type: application/json" \
        -d '{"email": "you@example.com", "tier": "sandbox"}'

      # 2. Any call with it returns mock data
      curl -X POST https://api.limitguard.ai/v1/entity/check \
        -H "X-API-Key: lg_sandbox_xxxxxxxxxxxxxxxxxxxx" \
        -H "Content-Type: application/json" \
        -d '{
          "entity_name": "Acme Corp BV",
          "country": "NL",
          "kvk_number": "12345678"
        }'
      ```

      ```python Python theme={null}
      import httpx

      key = httpx.post(
          "https://api.limitguard.ai/v1/keys/create",
          json={"email": "you@example.com", "tier": "sandbox"},
      ).json()["api_key"]  # lg_sandbox_...

      response = httpx.post(
          "https://api.limitguard.ai/v1/entity/check",
          headers={"X-API-Key": key},
          json={
              "entity_name": "Acme Corp BV",
              "country": "NL",
              "kvk_number": "12345678",
          },
      )
      print(response.json())
      ```

      ```javascript JavaScript theme={null}
      const { api_key } = await (await fetch("https://api.limitguard.ai/v1/keys/create", {
        method: "POST",
        headers: { "Content-Type": "application/json" },
        body: JSON.stringify({ email: "you@example.com", tier: "sandbox" }),
      })).json(); // lg_sandbox_...

      const response = await fetch("https://api.limitguard.ai/v1/entity/check", {
        method: "POST",
        headers: {
          "X-API-Key": api_key,
          "Content-Type": "application/json",
        },
        body: JSON.stringify({
          entity_name: "Acme Corp BV",
          country: "NL",
          kvk_number: "12345678",
        }),
      });
      const result = await response.json();
      console.log(result);
      ```
    </CodeGroup>

    Sandbox returns deterministic mock data: the same input always gives the same output. No real data sources are called and nothing is charged.
  </Step>

  <Step title="Check a Lead">
    Lead Verify checks one Dutch or Belgian lead against the live KVK or KBO register, VIES, the OFAC, EU and UN sanctions lists and its email domain. It runs on the live registers only, so it needs an `lg_live_` key with a prepaid balance or an x402 payment (a free key pays per call over x402, and a sandbox key gets `403`). To try it without paying, [sign up in the dashboard](https://dashboard.limitguard.ai/sign-up) for 5 free lead checks, no card.

    <CodeGroup>
      ```bash curl theme={null}
      curl -X POST https://api.limitguard.ai/v1/leads/verify \
        -H "X-API-Key: lg_live_xxxxxxxxxxxxxxxxxxxx" \
        -H "Content-Type: application/json" \
        -d '{
          "country": "NL",
          "company_number": "12345678",
          "name": "Acme Corp BV",
          "vat_number": "NL123456789B01",
          "email": "sales@acme-corp.nl"
        }'
      ```

      ```python Python theme={null}
      import httpx

      response = httpx.post(
          "https://api.limitguard.ai/v1/leads/verify",
          headers={"X-API-Key": "lg_live_xxxxxxxxxxxxxxxxxxxx"},
          json={
              "country": "NL",
              "company_number": "12345678",
              "name": "Acme Corp BV",
              "vat_number": "NL123456789B01",
              "email": "sales@acme-corp.nl",
          },
      )
      result = response.json()
      print(result["verdict"], result["lead_score"], result["flags"])
      ```

      ```javascript JavaScript theme={null}
      const response = await fetch("https://api.limitguard.ai/v1/leads/verify", {
        method: "POST",
        headers: {
          "X-API-Key": "lg_live_xxxxxxxxxxxxxxxxxxxx",
          "Content-Type": "application/json",
        },
        body: JSON.stringify({
          country: "NL",
          company_number: "12345678",
          name: "Acme Corp BV",
          vat_number: "NL123456789B01",
          email: "sales@acme-corp.nl",
        }),
      });
      const result = await response.json();
      console.log(result.verdict, result.lead_score, result.flags);
      ```
    </CodeGroup>

    A Belgian lead needs its 10-digit KBO number in `company_number`: Belgian companies cannot be looked up by name. The answer carries a `verdict` (for example `real_active` or `not_found`), a 0-100 `lead_score`, `flags` such as `vat_owner_mismatch` or `disposable_email`, and the `findings` behind them. An input you leave out is not checked and never counts against the lead. See the [Lead Verify reference](/api-reference/leads/lead-verify) for every field and [Pricing](/pricing#flat-priced-endpoints) for the price.
  </Step>

  <Step title="Make a Live Entity Check">
    Use your `lg_live_` key (or pay per call with x402) for real results from every source your identifiers allow: the business register, sanctions, country risk, domain, IBAN and VAT.

    <CodeGroup>
      ```bash curl theme={null}
      curl -X POST https://api.limitguard.ai/v1/entity/check \
        -H "X-API-Key: lg_live_xxxxxxxxxxxxxxxxxxxx" \
        -H "Content-Type: application/json" \
        -d '{
          "entity_name": "Acme Corp BV",
          "country": "NL",
          "kvk_number": "12345678"
        }'
      ```

      ```python Python theme={null}
      import httpx

      response = httpx.post(
          "https://api.limitguard.ai/v1/entity/check",
          headers={"X-API-Key": "lg_live_xxxxxxxxxxxxxxxxxxxx"},
          json={
              "entity_name": "Acme Corp BV",
              "country": "NL",
              "kvk_number": "12345678",
          },
      )
      result = response.json()
      print(f"Trust Score: {result['trust_score']}/100")
      print(f"Level: {result['trust_level']}")
      print(f"Action: {result['recommendation']}")
      ```

      ```javascript JavaScript theme={null}
      const response = await fetch("https://api.limitguard.ai/v1/entity/check", {
        method: "POST",
        headers: {
          "X-API-Key": "lg_live_xxxxxxxxxxxxxxxxxxxx",
          "Content-Type": "application/json",
        },
        body: JSON.stringify({
          entity_name: "Acme Corp BV",
          country: "NL",
          kvk_number: "12345678",
        }),
      });
      const result = await response.json();
      console.log(`Trust Score: ${result.trust_score}/100`);
      ```
    </CodeGroup>

    ```json Response theme={null}
    {
      "trust_score": 87,
      "trust_level": "high",
      "cluster": "established_eu_sme",
      "recommendation": "proceed",
      "confidence": 0.94,
      "top_factors": [
        {"source": "kvk", "signal": "Active registration, 8+ years", "impact": "positive", "weight": 0.35},
        {"source": "vat", "signal": "VIES verified EU VAT", "impact": "positive", "weight": 0.20},
        {"source": "sanctions", "signal": "No sanctions match", "impact": "positive", "weight": 0.25}
      ],
      "sources_checked": ["kvk", "sanctions", "country_risk", "domain", "vat"],
      "processing_time_ms": 342
    }
    ```
  </Step>

  <Step title="Try a Quick Risk Score">
    For fast risk-only assessment (2 sources, cheaper):

    <CodeGroup>
      ```bash curl theme={null}
      curl -X POST https://api.limitguard.ai/v1/risk/score \
        -H "X-API-Key: lg_live_xxxxxxxxxxxxxxxxxxxx" \
        -H "Content-Type: application/json" \
        -d '{"entity_name": "Acme Corp BV", "country": "NL"}'
      ```

      ```python Python theme={null}
      response = httpx.post(
          "https://api.limitguard.ai/v1/risk/score",
          headers={"X-API-Key": "lg_live_xxxxxxxxxxxxxxxxxxxx"},
          json={"entity_name": "Acme Corp BV", "country": "NL"},
      )
      print(response.json())
      ```

      ```javascript JavaScript theme={null}
      const response = await fetch("https://api.limitguard.ai/v1/risk/score", {
        method: "POST",
        headers: {
          "X-API-Key": "lg_live_xxxxxxxxxxxxxxxxxxxx",
          "Content-Type": "application/json",
        },
        body: JSON.stringify({ entity_name: "Acme Corp BV", country: "NL" }),
      });
      console.log(await response.json());
      ```
    </CodeGroup>
  </Step>
</Steps>

## Response Quality Tiers

Control cost vs. freshness with the `X-Response-Quality` header:

| Tier | Header Value | Cost (entity/check) | Description |
| - | - | - | - |
| **Cached** | `cached` | \$0.11 | Serve from Redis cache if available |
| **Fresh** | `fresh` | \$1.05 | Always run full fan-out (default) |

```bash theme={null}
curl -X POST https://api.limitguard.ai/v1/entity/check \
  -H "X-API-Key: lg_live_xxxxxxxxxxxxxxxxxxxx" \
  -H "X-Response-Quality: cached" \
  -H "Content-Type: application/json" \
  -d '{"entity_name": "Acme Corp BV", "country": "NL"}'
```

## Next Steps

<CardGroup cols={2}>
  <Card title="Authentication" icon="key" href="/authentication">
    API keys, x402 USDC payments, and sandbox mode
  </Card>

  <Card title="Pricing" icon="tag" href="/pricing">
    Full pricing table for all endpoints and tiers
  </Card>

  <Card title="Error Handling" icon="triangle-exclamation" href="/guides/errors">
    Complete error catalog with causes and fixes
  </Card>

  <Card title="AI Agent Integration" icon="robot" href="/guides/ai-agent-integration">
    How AI agents discover and use Limitguard
  </Card>
</CardGroup>


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.