orkasa

Authentication

API keys

One credential per brokerage, with the permissions you ask for.

Authorization: Bearer ork_live_<40 characters>

A key belongs to one brokerage and carries its permission list. Orkasa issues it: write to us through the contact form saying what your integration needs to read or write.

The key is shown once. Only a SHA-256 digest is stored, so nobody — you included — can recover it afterwards. If it is lost, it is revoked and a new one is issued.

Permissions

<resource>:read and <resource>:write over eight resources: leads, operations, properties, viewings, offers, documents, signatures, agents. * grants everything. A missing permission is 403 forbidden.

documents, signatures and agents are list-only. Their :write half exists in the vocabulary — so the grammar stays uniform and a future endpoint needs no migration — but no route consumes it today: granting it buys nothing.

One vocabulary serves both credential types: a key stores these strings on its row, OAuth passes the same ones space-separated in its scope parameter.

A key only ever sees its own brokerage

An id from another brokerage is answered 404 not_found, never 403. And a key has no author: it stands for the whole brokerage, not for one agent. That is the difference with the MCP connector, where the assistant additionally inherits the scope of the person who authorized it — see Connector permissions.

Test the credential

curl "https://orkasa.app/api/v1/me" -H "Authorization: Bearer $ORKASA_KEY"
{
  "brokerage_id": "0d1f…",
  "brokerage_name": "Casa Móvil Panamá",
  "scopes": ["leads:read", "leads:write", "operations:read"]
}

Requires leads:read. It is what Zapier uses to verify and label the connection.