inkline/ docs

Approval API

For products that run agents on someone's behalf. Before the agent acts, a person sees the exact action and approves it; you get a receipt anyone can verify offline, and a webhook. Inkline composes nothing: the text your backend sends is the text the person sees and the text inside the receipt.

Status: pilot. Sign in to the console to create your company and API keys, or email us if you want help integrating.

Flow

1. Link a person once. You ask for a binding for your own account reference; the person confirms on their side.

2. Ask for an approval. Send the action as plain text or as a typed description with parameters. The service canonicalizes it and returns the exact form the person will see.

3. The person approves or declines. You receive a signed webhook and can poll for the status and the receipt.

4. Execute exactly the canonical action, and keep the receipt with your audit record.

Two ways to approve

Touch ID on a MacPasskey on any device
A small menu-bar app shows the exact action; one touch signs it with a Secure Enclave key that only unlocks on a live fingerprint.A page we host shows the exact action; the person approves with Touch ID, Face ID, Windows Hello, or a security key.
Requires a Mac with Touch ID on macOS 27 or later and the Inkline helper.Requires only a browser with passkey support.
Receipt label: hardware-attested. Apple certified the key at enrollment.Receipt label: verified with a passkey. Not hardware-attested.

Receipts state their tier inside the signed bytes, and the verify page shows each tier in fixed wording, so a passkey receipt can never be presented as a Touch ID one.

What a receipt proves

That a person approved exactly this text, at this time, witnessed by our notary. It does not prove who the person is beyond your own account reference, that they understood the text, or who composed it. When you describe it to your customers, say "approved by a person" and name the tier. Say "hardware-attested" only for the Touch ID tier. Do not say cryptographically proven human, or cannot be automated.

In your own code: npm install inkline-verify, then await verify(receipt). Same code as the verify page, offline, no dependencies.

Anyone can check a receipt at verify.inklineverify.com: nothing installed, runs in the browser, never contacts us.