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

# Get Started with OrbiSearch

> Verify your first email address with OrbiSearch in minutes. This guide covers getting an API key, making your first request, and acting on the result.

OrbiSearch validates email addresses through a simple REST API. This guide walks you through making your first verification request and understanding the response.

## Prerequisites

* An OrbiSearch account
* An API key from the [dashboard](https://orbisearch.com/dashboard/api-keys)

## Step 1: Get your API key

Sign in to [orbisearch.com](https://orbisearch.com) and navigate to **Dashboard → API**. Create a new key and copy it.

## Step 2: Verify an email address

Call `GET /v1/verify` with your email address and API key:

<CodeGroup>
  ```bash cURL theme={null}
  curl "https://api.orbisearch.com/v1/verify?email=jane.doe@acme.com" \
    -H "X-API-Key: YOUR_API_KEY"
  ```

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

  response = requests.get(
      "https://api.orbisearch.com/v1/verify",
      params={"email": "jane.doe@acme.com"},
      headers={"X-API-Key": "YOUR_API_KEY"}
  )

  result = response.json()
  print(result["status"])      # safe | risky | invalid | unknown
  print(result["substatus"])   # e.g. deliverable, catch_all, mailbox_not_found
  ```

  ```javascript JavaScript theme={null}
  const response = await fetch(
    "https://api.orbisearch.com/v1/verify?email=jane.doe%40acme.com",
    {
      headers: {
        "X-API-Key": "YOUR_API_KEY"
      }
    }
  );

  const result = await response.json();
  console.log(result.status);     // safe | risky | invalid | unknown
  console.log(result.substatus);  // e.g. deliverable, catch_all, mailbox_not_found
  ```
</CodeGroup>

## Step 3: Read the response

A successful response looks like this:

```json theme={null}
{
  "email": "jane.doe@acme.com",
  "status": "safe",
  "substatus": "deliverable",
  "explanation": "The mailbox exists and is accepting mail.",
  "email_provider": "Google Workspace",
  "mx_record": "aspmx.l.google.com",
  "is_domain_catch_all": false,
  "is_secure_email_gateway": false,
  "is_disposable": false,
  "is_role_account": false,
  "is_free": false
}
```

The two most important fields are:

* **`status`** — the overall verdict: `safe`, `risky`, `invalid`, or `unknown`
* **`substatus`** — the specific reason, such as `deliverable`, `catch_all`, or `mailbox_not_found`

## Step 4: Act on the result

Use the `status` field to decide what to do with the address:

| Status    | Recommended action                                                                    |
| --------- | ------------------------------------------------------------------------------------- |
| `safe`    | Include in your outreach or workflow                                                  |
| `risky`   | Decide based on your risk tolerance — exclude for cold outreach, retain for analytics |
| `invalid` | Remove from your list — this address will bounce                                      |
| `unknown` | Re-verify later — typically a transient server issue                                  |

## Next steps

<CardGroup cols={2}>
  <Card title="Verification statuses" icon="circle-check" href="/docs/concepts/verification-statuses">
    Understand every status and substatus in detail.
  </Card>

  <Card title="Bulk verification" icon="list-check" href="/docs/guides/bulk-verification">
    Verify thousands of addresses in a single job.
  </Card>

  <Card title="Handling results" icon="code-branch" href="/docs/guides/handling-results">
    Best practices for acting on verification results in your application.
  </Card>

  <Card title="API reference" icon="code" href="/docs/api-reference/verify-email">
    Full reference for GET /v1/verify.
  </Card>
</CardGroup>
