*** title: Getting started subtitle: Make a first successful contacts request against the public `v2` API slug: 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 ``` ```bash Authorization: sk-apik_. ``` 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_.' \ --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)