Roll reusable bundles out to client workspaces, schedule client reports and let a client approve a rollout, all from automation. Bearer-auth and team-scoped. Agency endpoints need a Team or Scale plan and a token from the agency workspace: agency:read to read, agency:write to change anything. Writing is for owners and admins. A client workspace is reachable only for people who hold an explicit grant for it; another agency's ids answer 404, a client without a grant answers 403.
The client approval endpoints are the other side of a rollout. Use a token from the client workspace with approvals:read / approvals:write; only a client admin can decide.
Base URL: https://formspring.io/api/v1
Bundles and rollouts
| Method | Path | Ability |
|---|---|---|
| GET | /agency/bundles |
agency:read |
| POST | /agency/bundles |
agency:write |
| GET | /agency/bundles/{bundle} |
agency:read |
| POST | /agency/bundles/{bundle}/versions/{version}/review |
agency:write |
| POST | /agency/bundles/{bundle}/versions/{version}/draft |
agency:write |
| POST | /agency/bundles/{bundle}/versions/{version}/publish |
agency:write |
| POST | /agency/bundles/{bundle}/versions/{version}/preview |
agency:read |
| POST | /agency/bundles/{bundle}/versions/{version}/deployments |
agency:write |
| GET | /agency/deployments |
agency:read |
| GET | /agency/deployments/{deployment} |
agency:read |
| POST | /agency/deployments/{deployment}/rebind |
agency:write |
| POST | /agency/deployments/{deployment}/go-live |
agency:write |
| POST | /agency/deployments/{deployment}/rollback |
agency:write |
{version} is the version number. POST /agency/bundles takes a name, a selection (a type such as form, survey, funnel, booking_page, poll, bio_page, link, automation, knowledge_collection or knowledge_article mapped to a list of ids, plus theme: true) and optional replacements that turn literal text into a variable. It creates a draft version; a version must be reviewed and published before it can be deployed.
Deploying creates everything in the client workspace as drafts, all or nothing, and answers 202 while the rollout is prepared. Options:
requires_client_approvalholds the rollout until a client admin approves it.automationsisinactive(default) oractivate_ready;automation_keysswitches on chosen automations at go-live.rebindspoints domain and calendar slots at a destination that belongs to the agency or to the client. A destination owned by anyone else is rejected with422.
A preview writes nothing and returns the planned items, unresolved variables, what still needs setup, the slots that can be rebound and anything that blocks the rollout. A staged rollout can be rebound later with { "item": "...", "slot": "branded_domain", "value": "..." } until it goes live. Go live and rollback are queued and answer 202.
Client reports and overview
| Method | Path | Ability |
|---|---|---|
| GET | /agency/report-schedules |
agency:read |
| POST | /agency/report-schedules |
agency:write |
| POST | /agency/report-schedules/{schedule}/status |
agency:write |
| POST | /agency/report-schedules/{schedule}/send |
agency:write |
| POST | /agency/report-schedules/{schedule}/recipients |
agency:write |
| DELETE | /agency/report-schedules/{schedule}/recipients/{recipient} |
agency:write |
| POST | /agency/report-schedules/{schedule}/recipients/{recipient}/resend |
agency:write |
| GET | /agency/clients/{client}/report |
agency:read |
| GET | /agency/overview |
agency:read |
A schedule is weekly or monthly, as csv or pdf, and goes to workspace members (recipient_user_ids) and to outside addresses (recipient_emails, at most 10). An outside address receives a confirmation email and gets nothing until it confirms; every report carries a link to stop it. Access is checked again whenever a report is sent. {recipient} is the handle shown in external_recipients.
GET /agency/clients/{client}/report returns the key numbers and the AI generation use of one client for the last 30 days, or for from and to. GET /agency/overview lists only the clients you hold a grant for.
Client approvals
| Method | Path | Ability |
|---|---|---|
| GET | /client/approvals |
approvals:read |
| POST | /client/approvals/{deployment}/approve |
approvals:write |
| POST | /client/approvals/{deployment}/reject |
approvals:write |
Lists the rollouts staged in the token's own client workspace (?pending_only=1 for those waiting). Approving makes the rollout go live; rejecting discards the staged assets. Both are queued and answer 202.
