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

# API Introduction

> Learn the base URL, headers, authentication, versioning, and response patterns used across the Crustdata API.

Use this page to send your first request and understand the shared conventions across the Company, Person, and Web APIs.

## Base URL

All API requests are made to:

```
https://api.crustdata.com
```

## Authentication

Every request must include a Bearer token in the `authorization` header.

```bash theme={"theme":"vitesse-black"}
--header 'authorization: Bearer YOUR_API_KEY'
```

You can get your API key from the [Crustdata dashboard](https://crustdata.com).

<Warning>
  Keep your API key secret. Do not expose it in client-side code or public
  repositories.
</Warning>

<Note>
  Endpoint availability can vary by plan. Some live Company and Person
  endpoints are enterprise-only. Review [Pricing](/general/pricing) before you
  build a production workflow.
</Note>

## API versioning

Include the `x-api-version` header in every request. The current version is `2025-11-01`.

```bash theme={"theme":"vitesse-black"}
--header 'x-api-version: 2025-11-01'
```

Requests without a version header can default to the latest version, which may introduce breaking changes. Always pin to a specific version.

## Request format

All endpoints accept JSON request bodies with `content-type: application/json`.

```bash theme={"theme":"vitesse-black"}
curl --request POST \
  --url https://api.crustdata.com/company/identify \
  --header 'authorization: Bearer YOUR_API_KEY' \
  --header 'content-type: application/json' \
  --header 'x-api-version: 2025-11-01' \
  --data '{"domains": ["retool.com"]}'
```

## Response format

All responses return JSON. Successful requests typically return `200` with the endpoint-specific payload in the response body.

## Error responses

Error responses return JSON with an `error` field and a details field explaining the issue.

<Note>
  Most APIs use `description` for the details field. The Person API uses
  `reason` instead.
</Note>

```json theme={"theme":"vitesse-black"}
{
    "error": "Invalid Request",
    "description": "Exactly one identifier must be provided."
}
```

```json Person API theme={"theme":"vitesse-black"}
{
    "error": "Invalid Request",
    "reason": "Input should be a valid dictionary"
}
```

### HTTP status codes

| Status code | Meaning               | Description                                      |
| ----------- | --------------------- | ------------------------------------------------ |
| `200`       | Success               | Request completed successfully.                  |
| `400`       | Bad Request           | Invalid request parameters or malformed input.   |
| `401`       | Unauthorized          | Missing or invalid API key.                      |
| `403`       | Forbidden             | API key does not have access to this endpoint.   |
| `404`       | Not Found             | Requested resource not found.                    |
| `500`       | Internal Server Error | Unexpected server-side failure. Try again later. |

### Error response examples

<AccordionGroup>
  <Accordion title="400 — Bad Request">
    ```json theme={"theme":"vitesse-black"}
    {
      "error": "bad_request",
      "description": "Invalid request body."
    }
    ```
  </Accordion>

  <Accordion title="401 — Unauthorized">
    ```json theme={"theme":"vitesse-black"}
    {
      "error": "Unauthorized",
      "description": "Missing or invalid API key."
    }
    ```
  </Accordion>

  <Accordion title="403 — Forbidden">
    ```json theme={"theme":"vitesse-black"}
    {
      "error": "forbidden",
      "description": "API key does not have access to this endpoint."
    }
    ```
  </Accordion>

  <Accordion title="404 — Not Found">
    ```json theme={"theme":"vitesse-black"}
    {
      "error": "Not Found",
      "description": "Company not found."
    }
    ```
  </Accordion>

  <Accordion title="500 — Internal Server Error">
    ```json theme={"theme":"vitesse-black"}
    {
      "error": "Internal Server Error",
      "description": "An unexpected error occurred. Please try again later."
    }
    ```
  </Accordion>
</AccordionGroup>

## Rate limits

API requests are rate-limited per API key. See [Rate limits](/general/rate-limits) for details on limits and best practices.

## Endpoints

This reference currently documents 12 endpoints across three product areas.

<Note>
  Company and Person live endpoints are plan-specific. Use the Company,
  Person, and Web guide pages for workflow examples and endpoint-specific
  behavior.
</Note>

### Company API

| Method | Path                                        | Description                                 |
| ------ | ------------------------------------------- | ------------------------------------------- |
| POST   | `/company/search`                           | Search companies with filters               |
| POST   | `/company/identify`                         | Resolve a domain, URL, or name to a company |
| POST   | `/company/enrich`                           | Get a full company profile                  |
| POST   | `/company/search/autocomplete`              | Autocomplete company search fields          |
| POST   | `/company/professional_network/search/live` | Search companies in real time               |

### Person API

| Method | Path                                       | Description                                             |
| ------ | ------------------------------------------ | ------------------------------------------------------- |
| POST   | `/person/search`                           | Search people using filters and sorting                 |
| POST   | `/person/enrich`                           | Enrich person profiles from the cached dataset          |
| POST   | `/person/professional_network/enrich/live` | Fetch fresh profile data from the web                   |
| POST   | `/person/professional_network/search/live` | Search people in real time                              |
| POST   | `/person/search/autocomplete`              | Get field value suggestions for building search filters |

### Web API

| Method | Path               | Description        |
| ------ | ------------------ | ------------------ |
| POST   | `/web/search/live` | Perform web search |
| POST   | `/web/enrich/live` | Fetch web content  |

<CardGroup cols={3}>
  <Card title="Company API" icon="building" href="/company-docs/search/introduction">
    Search, identify, enrich, and autocomplete company data.
  </Card>

  <Card title="Person API" icon="user" href="/person-docs/search/introduction">
    Search, enrich, and autocomplete people data.
  </Card>

  <Card title="Web API" icon="globe" href="/web-docs/search/introduction">
    Search the web and fetch page content.
  </Card>
</CardGroup>
