The public API is live
One workspace key reaches your own records from code, hands goals to the AI workforce, and receives signed events when the business moves. For anything outward, the strongest permission it can hold is “propose”.
Amolfi answers at https://api.amolfi.com. One workspace key, minted in Settings and shown to you exactly once, reaches your own workspace from code: the deals, invoices, contracts, bookings, and runs you already keep, plus the governed specialists that do the work on them.
There are two ways to use it. Your own agent can drive, discovering Amolfi’s curated tools and calling one of them to read a pipeline or draft a post. Or you can skip the driving and hand over the goal, in which case Amolfi routes the work to the right specialists and follows it against your real records. Both paths run through one contract, and both stop at the same gate.
The key can propose. It cannot approve.
A machine caller can carry a piece of work right up to the edge of the business. It can propose an invoice going out, a contract going for signature, money moving, a post going live. What comes back is a 202, a decision id, and a sentence naming precisely what is waiting, in the shape of “Send invoice INV-1042 ($4,200.00) to acme@example.com”. An active owner of the workspace says yes in the app, or doesn’t.
The interesting part is where that rule is enforced. It isn’t a check bolted on at the end of the request; it lives in the permission vocabulary itself. Read scopes gate reads. Write scopes gate drafts. For anything that sends, spends, signs, or publishes, the strongest scope that exists is propose. No send, no pay, no post, and no approval verb appears anywhere in the catalog, so there is no permission to accidentally grant and nothing an attacker can talk your integration into handing over.
Read the whole contract before you write a line
Three routes answer with no credentials at all, so you can look at what you would be building against before you commit to any of it.
curl https://api.amolfi.com/v1/health
curl https://api.amolfi.com/v1/scopes
curl https://api.amolfi.com/v1/openapi.jsonThe scope catalog is public and machine-readable: every scope, the tools it covers, its risk tier, and who is allowed to grant it. The OpenAPI document is generated from that same catalog, which is why the spec cannot drift away from what the API actually does. Propose-only operations document a 202 and never a success 200, so the contract is explicit about what a machine can finish on its own.
Your systems hear it when the business moves
Twenty-seven signed events fire outward, across eleven families: deals, contacts, clients, projects, invoices, contracts, runs, bookings, membership, sending domains, and API keys. Every name in that catalog fires from real code, and registration rejects any name that doesn’t. Each delivery carries an HMAC computed over the raw request bytes, so a forged one fails a timing-safe comparison and never reaches your handler. Payloads outside the CRM families are explicit allow-lists, which is why a membership event tells you a person joined without ever carrying their email address.
The event worth wiring first is run.waiting_approval. It fires the moment work you started from code needs a human yes, so the decision arrives at your systems instead of sitting somewhere waiting to be discovered. Build on that and the governance stops being something your integration bumps into. It becomes the point where your software goes and finds the person who owns the call.