API

Build modular workflows on top of Vynflow using service-account authenticated JSON APIs. The primary public surface today is the User Tables row CRUD API.

Authentication

All requests require the following headers:

Authorization: Bearer sa-p-vynflow-SECRET
X-API-Key: sa-k-vynflow-KEY
X-Domain-ID: DOMAIN_UUID
Keep these credentials server-side. Treat them like passwords.

Endpoints (User Tables)

Table discovery and schema:

POST https://vynflow.cloud/api/user-tables
  GET  https://vynflow.cloud/api/user-tables
  GET  https://vynflow.cloud/api/user-tables/{TABLE_ID}/schema

Row CRUD:

POST   https://vynflow.cloud/api/user-tables/{TABLE_ID}/rows
  POST   https://vynflow.cloud/api/user-tables/{TABLE_ID}/rows/from-columns
  GET    https://vynflow.cloud/api/user-tables/{TABLE_ID}/rows
  GET    https://vynflow.cloud/api/user-tables/{TABLE_ID}/row/{ROW_ID}
  PUT    https://vynflow.cloud/api/user-tables/{TABLE_ID}/row/{ROW_ID}
  PATCH  https://vynflow.cloud/api/user-tables/{TABLE_ID}/row/{ROW_ID}
  DELETE https://vynflow.cloud/api/user-tables/{TABLE_ID}/row/{ROW_ID}

Examples

Create a table:

curl -X POST https://vynflow.cloud/api/user-tables \
  -H "Authorization: Bearer sa-p-vynflow-SECRET" \
  -H "X-API-Key: sa-k-vynflow-KEY" \
  -H "X-Domain-ID: DOMAIN_UUID" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "Vendors",
    "description": "All vendors and key contacts"
  }'

Get schema for a table:

curl -X GET https://vynflow.cloud/api/user-tables/TABLE_ID/schema \
  -H "Authorization: Bearer sa-p-vynflow-SECRET" \
  -H "X-API-Key: sa-k-vynflow-KEY" \
  -H "X-Domain-ID: DOMAIN_UUID"

Create a row:

curl -X POST https://vynflow.cloud/api/user-tables/TABLE_ID/rows \
  -H "Authorization: Bearer sa-p-vynflow-SECRET" \
  -H "X-API-Key: sa-k-vynflow-KEY" \
  -H "X-Domain-ID: DOMAIN_UUID" \
  -H "Content-Type: application/json" \
  -d '{
    "data": {
      "Name": "Acme",
      "Amount": 1200,
      "Active": true
    }
  }'

List rows (with filtering/sorting):

curl -X GET "https://vynflow.cloud/api/user-tables/TABLE_ID/rows?page=1&per_page=10&filter_col=Name&filter_value=Acme&sort_col=CreatedAt&sort_dir=desc" \
  -H "Authorization: Bearer sa-p-vynflow-SECRET" \
  -H "X-API-Key: sa-k-vynflow-KEY" \
  -H "X-Domain-ID: DOMAIN_UUID"
Need MCP instead of raw HTTP? See the MCP page for the official MCP endpoint.