Start with the APIFirst call
First call
Mint a key, confirm GET /me and create the first contact in the same workspace.
Four steps. If the last one returns 200, the integration is live — even when the workspace has no rows yet.
- In the product: Settings → Developer → Create API key.
- Grant REST, at least Contacts: Write (rest.crm.contacts.write). Write implies read on the same resource.
- Copy the aivk_… secret — it is shown once.
- 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
| HTTP | Path | Scope |
|---|---|---|
| GET | /api/v1/me | aivk_ |
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
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.