Skip to main content

Start with the APIFirst call

First call

Mint a key, confirm GET /me and create the first contact in the same workspace.

GET/api/v1/me

Four steps. If the last one returns 200, the integration is live — even when the workspace has no rows yet.

  1. In the product: Settings → Developer → Create API key.
  2. Grant REST, at least Contacts: Write (rest.crm.contacts.write). Write implies read on the same resource.
  3. Copy the aivk_… secret — it is shown once.
  4. Call the public host with Authorization: Bearer aivk_…

Host

One public host. Do not send integrator traffic to app.aivyro.io (UI) or api.internal.aivyro.io (private mesh).

Confirm the key

HTTPPathScope
GET/api/v1/meaivk_
GET /api/v1/me
export AIVYRO_API_KEY='aivk_YOUR_KEY'
export AIVYRO_API_BASE='https://api.aivyro.io'

curl -sS "$AIVYRO_API_BASE/api/v1/me" \
  -H "Authorization: Bearer $AIVYRO_API_KEY"

Create a contact, then list

POST + GET /api/v1/contacts
curl -sS -X POST "$AIVYRO_API_BASE/api/v1/contacts" \
  -H "Authorization: Bearer $AIVYRO_API_KEY" \
  -H 'Content-Type: application/json' \
  -d '{"display_name":"Ada Lovelace","email":"ada@example.com"}'

curl -sS "$AIVYRO_API_BASE/api/v1/contacts" \
  -H "Authorization: Bearer $AIVYRO_API_KEY"

An empty workspace returns { "data": [], "next_cursor": null, "has_more": false }. That is success. The created contact appears in Contacts for the same organization.

Machine contract

GET /api/v1/openapi.json is the contract for routes, pagination and errors. On some hosts the endpoint asks for the same Bearer key. If this site and OpenAPI disagree, OpenAPI and the host win — and the guide must be corrected.