Skip to main content
The Avina Data API is a REST API. Requests and responses are JSON. You authenticate by sending an API key in the Authorization header, and every error has the same shape.

Base URL

https://api.avina.io/v1

Authentication

Authorization: Bearer <api key>

Make your first request

GET /me checks a key and returns its workspace. It is free.
New to the API? The quickstart takes you from a key to verified results.

Authentication

The Data API is in beta. Request access if your workspace does not have it yet. Every request needs a workspace API key in the Authorization header. Workspace admins create and revoke keys in the Avina dashboard under Settings → API Keys. A key is shown once, when it is created.
  • A key acts for its whole workspace. It can start searches that spend the workspace’s credits.
  • The key decides the workspace. No header or parameter can select a different one.
  • After a key is revoked, it can keep working for up to 60 seconds.
Keep API keys on your servers. Do not put them in browser code, mobile apps or public repositories. If a key leaks, revoke it in the dashboard and create a new one.

Endpoints

Companies

People

Parse

Monitor, Enrich and Ask are not available yet.

Conventions

Asynchronous searches

Searches run in the background. A POST that starts one returns 202 Accepted with the search’s id before any results exist.
1

Start

POST /companies/search or POST /people/search returns 202 and an id.
2

Poll

GET .../status until status is completed, failed or cancelled.
3

Read

GET .../results, following next_cursor, until has_more is false.
See Search lifecycle and Poll and paginate.

Pagination

Search results are returned in pages. Each page gives you a cursor, a marker for your position, which you send back to get the next page. A page has data, has_more and next_cursor. For search results, next_cursor is always returned, even on an empty page, so you can come back for results found later.

Idempotency

POST requests that create something (starting a search, creating a persona, and Parse) accept an Idempotency-Key header: any unique string of 1 to 255 characters. Retrying with the same key and the same body within 24 hours returns the original response, marked with Idempotent-Replayed: true, instead of doing the work again. Always send one when you start a search. Without it, a retried request starts, and charges for, a second search. See Errors and retries.

Rate limits

Each API key can make 120 requests per minute. Responses carry these headers: Over the limit, requests get 429 rate_limited with a Retry-After header. There is no limit on how many searches a workspace can run at the same time.

Request IDs

Every response has an X-Request-Id header, such as req_8f2a61c09d4e7b3a5f10c2d8. Error bodies repeat it as request_id. Include it when you contact support.

Errors

Errors use one shape, with a stable code to branch on:
The errors reference lists every code.

Credits

Starting a search spends credits as results are found. Everything else in this reference is free: reading status and results, parsing, cancelling, and managing personas. One credit is one US dollar. See Pricing.

OpenAPI

The full contract is available as an OpenAPI 3.1 specification.