Skip to main content
This page builds the smallest possible conformant endpoint — GET /pipelines — so you can see the request HunterAI sends and the response it expects. Every other endpoint follows the same envelope and paging rules.

1. Pick a base URL

Host your API under a stable, versioned root. HunterAI stores it verbatim (a trailing slash is stripped) and prepends it to every endpoint path.
With that base URL, HunterAI calls https://crm.example.uz/api/hunterai/v1/pipelines, .../contacts, and so on.

2. Require a Bearer token

Every request arrives with two headers:
Reject anything else with 401. See Authentication for how the token is issued, stored, and rotated.

3. Serve the envelope

Return records under data, and set has_more to tell HunterAI whether to request the next page. HunterAI sends page (1-based) and limit (always 100).
has_more: false ends paging. HunterAI stops when has_more is falsy — not when data is empty. If you return has_more: true forever, the sync trips a safety limit and fails. See How sync works.

4. Test the connection

Once your /pipelines endpoint is live and the token works, your HunterAI business owner runs the built-in test call. It fetches the first page of /pipelines and reports whether the API was reachable, whether the token authenticated, and how many pipelines came back.
Test-connection result

5. Add the rest

/pipelines uses the simplest profile (no filter, full list every time). The four collection endpoints — /contacts, /leads, /tasks, /calls, /events — additionally receive an updated_since filter and must return records ordered by updated_at ascending.
1

Required

/users, /contacts, and /leads. A missing required endpoint fails that entity.
2

Optional

/events, /tasks, and /calls. Return 404 for any you do not implement — the sync skips it and still succeeds.
3

Pre-flight

Run through the Conformance checklist before you request a connection.