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

# Quickstart

> Make your first Dojah API call in minutes — get your keys, hit a sandbox endpoint with test data, or drop in the hosted widget.

Make your first Dojah verification in a few minutes. Grab your keys, call a sandbox endpoint with test data, then swap in your live keys when you’re ready to go live.

## 1. Get your API keys

Every request is authenticated with two values from your dashboard under [Developers → Configuration](/dashboard-guide/integrations/developers#configuration):

| Credential | Header          | Where to use it                                                                                        |
| ---------- | --------------- | ------------------------------------------------------------------------------------------------------ |
| App ID     | `AppId`         | Identifies your app on every request.                                                                  |
| Secret key | `Authorization` | Server-side only. Sent **raw** — *not* as `Bearer`.                                                    |
| Public key | —               | Client-side / widget only (see [hosted flows](/api-reference/hosted-flows-easyonboard/launch-a-flow)). |

<Warning>
  **Keep your secret key server-side.** Never ship it in web or mobile code — use the public key with the widget for anything client-facing.
</Warning>

## 2. Make your first call

Sandbox is free and returns predictable mock data, so you can build end-to-end without spending credits. This looks up a Nigerian NIN using the sandbox test value `70123456789`:

```bash cURL theme={null}
curl "https://sandbox.dojah.io/api/v1/kyc/nin?nin=70123456789" \
  -H "AppId: {{app_id}}" \
  -H "Authorization: {{secret_key}}"
```

A successful response wraps the result in an `entity` object:

```json JSON theme={null}
{
  "entity": {
    "first_name": "JOHN",
    "last_name": "DOE",
    "gender": "m",
    "date_of_birth": "1990-01-01"
  }
}
```

<Tip>
  See [Sandbox & test data](/api-reference/get-started/sandbox-test-data) for every test value (BVN, OTP, bank account and more), and [Browse the API](/api-reference/get-started/introduction) for the full endpoint list.
</Tip>

## 3. Prefer no code? Use the widget

If you’d rather not build request flows yourself, drop in the hosted widget and let Dojah handle the UI, capture and verification steps:

```html HTML theme={null}
<script src="https://widget.dojah.io/widget.js"></script>
<script>
  const connect = new Connect({
    app_id: "{{app_id}}",
    p_key: "{{public_key}}",
    type: "verification",
    config: { widget_id: "{{widget_id}}" },
    onSuccess: (data) => console.log(data),
  });
  connect.setup();
  connect.open();
</script>
```

The script tag takes no `async`/`defer`. Full options and callbacks are on [Launch a flow](/api-reference/hosted-flows-easyonboard/launch-a-flow).

## Next steps

* [Environments](/api-reference/get-started/environments) — sandbox vs production and the go-live checklist.
* [Authentication](/api-reference/get-started/authentication) — headers, keys and common `401`s.
* [Sandbox & test data](/api-reference/get-started/sandbox-test-data) — every value you can test with.
* [Errors & status codes](/api-reference/core-concepts/errors-status-codes) — including `402` and `424`.
