> For clean Markdown of any page, append .md to the page URL.
> For a complete documentation index, see https://docs.askelephant.ai/llms.txt.
> For AI client integration (Claude Code, Cursor, etc.), connect to the MCP server at https://docs.askelephant.ai/_mcp/server.

# Getting started

## Base URLs

* Production: `https://app.askelephant.ai/api`
* Staging: `https://app-staging.askelephant.ai/api`

## Authentication header

Use one of these `Authorization` header styles:

```bash
Authorization: Bearer <access-token>
```

```bash
Authorization: sk-apik_<id>.<secret>
```

When using an API key, send the raw `sk-apik_...` value. Do not prepend `Bearer`.

## First request

```bash
curl --request GET \
  --url 'https://app.askelephant.ai/api/v2/contacts?limit=2&filter[updated_at][gt]=2026-03-01T00:00:00.000Z&order_by=updated_at:desc' \
  --header 'Authorization: sk-apik_<id>.<secret>' \
  --header 'Accept: application/json'
```

Expected response shape:

```json
{
  "object": "list",
  "data": [
    {
      "object": "contact",
      "id": "cnt_01ABC...",
      "first_name": "Ada",
      "last_name": "Lovelace",
      "description": "Primary customer contact for analytical projects.",
      "company": {
        "id": "cmp_01HQXVB4Y9Y0Q6P0QH5GX2CT7T",
        "object": "company"
      },
      "emails": [
        {
          "email": "ada@analytical.engine",
          "is_primary": true
        }
      ],
      "phone_numbers": [
        {
          "phone_number": "+1-555-0100",
          "is_primary": true
        }
      ],
      "time_zone": "America/Los_Angeles",
      "created_at": "2026-03-01T12:00:00Z",
      "updated_at": "2026-03-04T18:25:00Z"
    }
  ],
  "has_more": false,
  "next_cursor": null
}
```

## What to do next

1. Save a contact `id` from the response.
2. Fetch that contact directly with `GET /v2/contacts/{contact_id}`.
3. Explore the same pattern on companies, users, tags, or engagements.
4. Move to create, update, or delete workflows from the API Reference when your read path is working.
5. Follow `next_cursor` when `has_more` is `true` and keep your last `updated_at` checkpoint for the next incremental sync run.

## Useful next pages

* [Authentication and scopes](/authentication-and-scopes)
* [Pagination and filtering](/pagination)
* [API reference overview](/api-reference)