BetaApprovals,
Approvals,
from your own code.
The REST API and webhooks are live in beta: your systems can open requests, read exactly where they stand, and act the moment a decision lands — without anyone opening ApproveHub.
- REST over JSON
- Webhooks for every decision
- Keys scoped to one organization
REST & JSON Predictable resources, plain JSON bodies, no SDK required.
Webhooks Your endpoint hears about a decision before the email does.
Scoped API keys Issued per organization, revocable, never tied to a person.
No-code friendly Anything that can call a URL can open a request.
API
Open a request in one call.
Post the workflow and its form fields; get back the request with the stage it is waiting on. Details can still move while the beta settles — we'll warn you before anything breaks.
Request
curl -X POST https://approvehub.app/api/v1/requests/ \
-H "Authorization: Bearer ah_live_…" \
-H "Content-Type: application/json" \
-d '{"workflow": "vendor-contract",
"fields": {"vendor": "Acme Ltd", "amount": 4200}}'
200 OK
{
"id": "8a6c4f1e-…",
"workflow": "vendor-contract",
"status": "new",
"stage": {"id": "d81f…", "name": "Finance"},
"created_at": "2026-07-22T09:14:02Z"
}
POST/api/v1/requests/ Submit a request into any workflow
GET/api/v1/requests/ List and filter requests by workflow, status or requester
GET/api/v1/requests/{id}/ Read the fields, current stage and full decision history
POST/api/v1/requests/{id}/decisions/ Approve or reject as an approver
GET/api/v1/workflows/ Discover workflows and the fields their forms expect
Webhooks
Hear it the moment it happens.
Point us at an endpoint and every step of a request lands there as a signed JSON payload — so the contract gets filed, the ticket gets closed and the invoice gets paid without anyone copying a status by hand.
request.submittedrequest.stage_completedrequest.approvedrequest.rejected
POST https://your-app.example/hooks/approvehub
{
"event": "request.approved",
"request_id": "8a6c4f1e-…",
"workflow": "vendor-contract",
"status": "completed",
"decided_by": {"id": "27b0…", "name": "Marina K."},
"occurred_at": "2026-07-22T10:02:41Z"
}
The beta is open.
Issue an API key in your organization settings, point a webhook at your endpoint, and tell us what to improve — beta feedback is what shapes the API.