Back to Home
Developer Documentation

Build on Flowidly.

Integrate proposal generation, signing, and payments directly into your application. REST API, Webhooks, and SDKs.

Overview

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: templates + blocks + tokens.

Capabilities (v1)
  • List available templates
  • Create a proposal from a template
  • Pass substitutions to fill tokens
  • Apply limited block operations

Authentication

API requests are authenticated using a bearer API key in the header.

Authorization: Bearer flow_live_************.****************

API keys are managed in your dashboard settings. Keep your keys secure and never share them in client-side code.

Templates

Templates are the blueprints for your proposals. You can fetch a list of all templates or get details for a specific one.

GET /api/v1/templates
GET /api/v1/templates/:templateId

Tokens (Substitutions)

Tokens are placeholders in your template content. We use mustache-style syntax for variable substitution:

{{company_name}}
{{client_name}}
{{contacts[0].name}}
{{contacts[].name}}

Repeating Tokens

Repeating tokens allow you to populate lists or tables dynamically by passing an array of objects.

{
  "substitutions": {
    "contacts": [
      { "name": "Allison Reynolds", "location": "Chicago, IL" },
      { "name": "Boba Fett", "location": "Kamino" }
    ]
  }
}

Create Proposal

Create a new proposal from a template. Use the Idempotency-Key header to safely retry requests.

curl -X POST "https://api.flowidly.com/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

Modify existing proposals by applying block operations to insert, remove, or update content blocks.

PATCH /api/v1/proposals/:proposalId/blocks