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

# Read & search

> Read APIs for Accounts, Contacts, and Opportunities with filters, sorting, field selection, and cursor pagination.

Read access to your Octolane CRM. Each object (Accounts, Contacts, Opportunities) has two endpoints:

* A **simple list endpoint** (`GET`) with basic text search and cursor pagination.
* A **search endpoint** (`POST`) with full filtering, sorting, field selection, and cursor pagination.

## Base URL

```
https://api.octolane.com/v1
```

## Authentication

Every request must include the API key in the `x-api-key` header.

```
x-api-key: your-api-key
```

Find your API key in **Settings → Integrations → API**.

## Endpoints

| Object        | List                                                                              | Search                                                                               |
| ------------- | --------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------ |
| Accounts      | [`GET /v1/accounts`](/api-reference/endpoints/crm/cursor-list-accounts)           | [`POST /v1/accounts/search`](/api-reference/endpoints/crm/search-accounts)           |
| Contacts      | [`GET /v1/contacts`](/api-reference/endpoints/crm/cursor-list-contacts)           | [`POST /v1/contacts/search`](/api-reference/endpoints/crm/search-contacts)           |
| Opportunities | [`GET /v1/opportunities`](/api-reference/endpoints/crm/cursor-list-opportunities) | [`POST /v1/opportunities/search`](/api-reference/endpoints/crm/search-opportunities) |

## Shared concepts

<CardGroup cols={2}>
  <Card title="Filters" icon="filter" href="/api-reference/v2/filters">
    Operator reference and aliases used in every `POST .../search` endpoint.
  </Card>

  <Card title="Cursor pagination" icon="arrow-right" href="/api-reference/v2/pagination">
    How to paginate `GET` and `POST` endpoints safely.
  </Card>
</CardGroup>

## Field selection

Every list and search endpoint accepts a `fields` parameter to return only the fields you need. Pass a comma-separated string (for `GET`) or a JSON array (for `POST`).

```
GET  /v1/accounts?fields=id,name,domain,custom_fields
POST /v1/accounts/search   { "fields": ["id", "name", "domain", "custom_fields"] }
```

## Custom fields

Every response includes a `custom_fields` object on each record and a top-level `custom_field_definitions` object describing those fields.

```json theme={"system"}
{
  "custom_fields": {
    "customer_tier": "enterprise",
    "renewal_date": "2026-06-01T00:00:00.000Z"
  },
  "custom_field_definitions": {
    "customer_tier": {
      "current_name": "Customer Tier",
      "property_name": "select_530",
      "attribute_type": "select",
      "metadata": { "select_options": [] }
    }
  }
}
```

The keys in `custom_field_definitions` match the keys in `custom_fields`, so clients can resolve slug/value mappings dynamically.

## Need help?

Email [one@octolane.com](mailto:one@octolane.com). We ship custom endpoints when teams need something specific.
