Flowidly Public API (v1)
The Flowidly API lets you create proposals programmatically from templates, using tokens (substitutions) and a limited set of safe block operations. This mirrors the core model popularized by tools like Qwilr: templates + blocks + tokens.
- List templates
- Create a proposal from a template
- Pass substitutions to fill tokens
- Apply limited block operations (insert/remove/replace/reorder)
Authentication
API requests are authenticated using a bearer API key:
Authorization: Bearer flow_live_************.****************API keys are managed in the app at Settings → Integrations → Developer API. Access is gated per account by an entitlement.
Templates
Templates are the starting point for proposal creation.
GET /api/v1/templates
GET /api/v1/templates/:templateIdTokens (Substitutions)
Tokens are placeholders in template content. In v1, tokens use a mustache-style syntax:
{{company_name}}
{{client_name}}
{{contacts[0].name}}
{{contacts[].name}}Substitution values are strings. Missing values resolve to an empty string.
Repeating Tokens
Repeating tokens are arrays of objects, useful for lists and repeating rows.
{
"substitutions": {
"contacts": [
{ "name": "Allison Reynolds", "location": "Chicago, IL" },
{ "name": "Boba Fett", "location": "Kamino" }
]
}
}Create Proposal
Create a proposal from a template. Use the Idempotency-Key header if you want retries to return the same response.
POST /api/v1/proposals
Idempotency-Key: 2d31a5f4-0c2d-4a8c-9a1f-0a4c8c3f2a10curl -X POST "https://YOUR_DOMAIN/api/v1/proposals" \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: 2d31a5f4-0c2d-4a8c-9a1f-0a4c8c3f2a10" \
-d '{
"templateId": "google-ads-proposal",
"substitutions": {
"client_name": "Acme Inc",
"company_name": "Flowidly"
}
}'Block Operations
Apply safe block operations to an existing proposal.
PATCH /api/v1/proposals/:proposalId/blocks{
"operations": [
{ "op": "reorder", "sectionIds": ["uuid-1", "uuid-2", "uuid-3"] }
]
}Errors & Status Codes
OpenAPI
The OpenAPI specification describes the API in a machine-readable format for documentation and SDK generation.
GET /api/v1/openapi