Skip to content

API Integrations

Flow-Like provides comprehensive API integration capabilities—from raw HTTP requests to 300+ pre-built platform connectors for GitHub, Slack, Notion, Microsoft 365, Google Workspace, and more.

Make Request
├── URL: "https://api.example.com/users"
├── Method: GET
├── Headers: {"Authorization": "Bearer {token}"}
└── Body: (optional)
API Call (Fetch)
Response
├── Status: 200
├── Headers: {...}
└── Body: [{user data}]

Build requests step by step:

Make Request
Set URL ("https://api.example.com/orders")
Set Method (POST)
Set Header ("Content-Type", "application/json")
Set Bearer Auth (api_key)
Set Struct Body ({ customer_id: 123, items: [...] })
API Call ──▶ Response

Parse responses based on content type:

API Call Response
├──▶ To Struct (JSON) ──▶ Typed data object
├──▶ To Text ──▶ Raw string
├──▶ To Bytes ──▶ Binary data
├──▶ Get Status ──▶ 200
├──▶ Is Success ──▶ true
└──▶ Get Header ("Content-Type") ──▶ "application/json"

Handle large or streaming responses:

Streaming API Call
├── URL: "https://api.openai.com/v1/chat/completions"
├── stream: true
└── Handler: process each chunk

Download files from URLs:

HTTP Download
├── URL: "https://example.com/report.pdf"
└── Path: /downloads/report.pdf
File saved to path
Set Bearer Auth (token)
Header: "Authorization: Bearer {token}"
Set Header ("X-API-Key", api_key)
Set Header ("Authorization", "Basic " + base64(user:pass))

Pre-built OAuth flows for major platforms:

Google Provider (OAuth)
├── Scopes: ["drive.readonly", "gmail.send"]
└── Credentials from Secrets
Authenticated requests to Google APIs

Full GitHub API coverage with 35+ nodes:

CategoryNodes
ReposList, Get, Search, Clone, Fork
IssuesList, Get, Create, Update, Search, Comment
Pull RequestsList, Get, Create, Merge, Review, Files
FilesGet Contents, Create/Update, Delete, Download
BranchesList, Get, Create, Delete
CommitsList, Get, Compare
ActionsList Workflows, Trigger, Get Runs, Cancel
ReleasesList, Get, Create

Example: Create issue on error

Try
Your workflow
└── Catch
GitHub Create Issue
├── repo: "myorg/myrepo"
├── title: "Workflow Error: {error_type}"
└── body: "Error details: {error_message}"

50+ nodes for Microsoft Graph API:

ServiceCapabilities
OneDriveList, Upload, Download, Share, Copy, Move
SharePointSites, Libraries, Files, Folders
OutlookSend, List, Read, Reply, Forward, Folders
To DoLists, Tasks, Complete
PlannerPlans, Buckets, Tasks
Teams(via Graph API)

Example: Save report to SharePoint

Generate Report (data)
Microsoft Provider (OAuth)
SharePoint Upload File
├── site_id: "contoso.sharepoint.com"
├── library: "Documents"
├── path: "/Reports/monthly.pdf"
└── content: report_pdf

30+ nodes for Google APIs:

ServiceCapabilities
DriveList, Upload, Download, Delete, Share
GmailSend, Draft, List Labels
SheetsRead, Write, Append
SlidesCreate, Add Slides, Export
MeetCreate, Get Meetings
CalendarEvents management

Example: Upload to Drive and share

Google Provider (OAuth)
Drive Upload File
├── file: report.pdf
├── folder_id: "abc123"
└── name: "Q4 Report.pdf"
Get file_id
Drive Share
├── file_id: file_id
├── email: "team@company.com"
└── role: "reader"

Full Notion API integration:

FeatureNodes
DatabasesList, Get, Query
PagesGet, Create, Update
SearchSearch across workspace

Example: Sync data to Notion

SQL Query (get_customers)
For Each customer
Notion Create Page
├── database_id: "customers_db"
└── properties:
├── Name: customer.name
├── Email: customer.email
└── Status: customer.status

60+ nodes for Atlassian products:

Jira:

CategoryNodes
IssuesCreate, Get, Update, Delete, Search, Batch
CommentsAdd, List
TransitionsGet, Execute
SprintsList, Create, Start, Complete
BoardsList, Get, Config
AttachmentsGet, Download, Delete

Confluence:

CategoryNodes
SpacesList
PagesGet, Create, Update, Delete
SearchSearch content
CommentsGet, Add
LabelsGet, Add, Remove

Example: Auto-create Jira issues from form

HTTP Event (POST /submit-bug)
Jira Create Issue
├── project: "BUGS"
├── type: "Bug"
├── summary: request.title
├── description: request.description
└── priority: request.priority
Return { issue_key: "BUGS-123" }

20+ nodes for data platform integration:

CategoryNodes
ClustersList, Get, Start, Stop
JobsList, Get, Run, Status
SQLExecute queries
DBFSList, Read, Write
Unity CatalogCatalogs, Schemas, Tables

Messaging platform integrations:

Discord (25+ nodes):

  • Send/edit/delete messages
  • Channel management
  • DMs, reactions, polls
  • Interactive components (buttons, menus)

Telegram (60+ nodes):

  • Messages, media, files
  • Chats, forums, topics
  • Payments, games
  • Inline mode, commands

Example: Discord notification bot

Scheduled Event (every hour)
Check system metrics
├── Alert condition? ──▶ Discord Send Message
│ ├── channel_id: "alerts"
│ └── content: "⚠️ High CPU: {value}%"
└── Normal ──▶ Done

Post updates and share content:

LinkedIn Provider (OAuth)
Share Text Post
├── text: "Excited to announce our Q4 results!"
└── visibility: "PUBLIC"

Receive incoming webhooks:

HTTP Event
├── Method: POST
├── Path: /webhooks/stripe
└── Outputs: body, headers
Verify Signature (headers.stripe-signature)
Branch: event.type
├── "payment_succeeded" ──▶ Process payment
├── "subscription_created" ──▶ Provision access
└── "invoice.paid" ──▶ Send receipt
SMTP Connection
├── host: "smtp.example.com"
├── port: 587
├── username: {from secrets}
└── password: {from secrets}
Send Mail
├── to: "customer@example.com"
├── subject: "Your order has shipped"
├── body: email_content
└── attachments: [tracking_pdf]
IMAP Connection
├── host: "imap.example.com"
└── credentials: {from secrets}
List Messages (folder: "INBOX", unread: true)
For Each message
├── Extract data
└── Process

Pre-built integrations for 18+ AI providers:

ProviderCapabilities
OpenAIGPT-4, Embeddings, Vision
AnthropicClaude models
GoogleGemini models
GroqFast inference
OllamaLocal models
CohereEmbeddings, Rerank
MistralOpen models
Together AIOpen models
PerplexitySearch + AI
HuggingFaceModel hub
VoyageAIEmbeddings
xAIGrok models

Connect to MCP servers for AI tools:

MCP Local Server
├── command: "npx"
├── args: ["-y", "@modelcontextprotocol/server-filesystem"]
└── env: { "ROOT_PATH": "/data" }
MCP HTTP Server
├── url: "https://mcp.example.com"
└── auth: Bearer token

Query external databases via SQL:

Create DataFusion Session
Register PostgreSQL ("prod_db", connection_string)
Register MySQL ("legacy_db", connection_string)
SQL Query:
"SELECT p.*, l.customer_name
FROM prod_db.orders p
JOIN legacy_db.customers l ON p.customer_id = l.id"

Supported sources:

  • PostgreSQL, MySQL, SQLite
  • ClickHouse, DuckDB, Oracle
  • Delta Lake, Iceberg
  • S3, Azure Blob, GCS

Create a dedicated board for each service:

Board: GitHubService
├── Variables:
│ └── provider: GitHubProvider (initialized once)
└── Quick Actions:
├── CreateIssue (title, body)
├── GetPullRequests (repo)
└── TriggerWorkflow (workflow_id)
Retry
├── max_attempts: 3
├── delay: 1000ms
├── backoff: exponential
└── retry_on: [429, 503]
API Call
API Call
Is Success?
├── Yes ──▶ To Struct ──▶ Process
└── No ──▶ Get Status ──▶ Handle error

Instead of:

❌ Every 5 minutes: Check for new orders

Use:

✅ HTTP Event: Receive order webhook
Get Secret ("GITHUB_PAT")
GitHub Provider (token)

Never hardcode tokens in workflows.

Console Log: "Calling {api_name} with {params}"
API Call
Console Log: "Response: {status} in {duration}ms"

Sync data across platforms:

HTTP Event (POST /customer-created)
├──▶ Notion Create Page (customers database)
├──▶ Jira Create Issue (onboarding task)
├──▶ Slack Send Message (sales channel)
└──▶ HubSpot Create Contact (CRM)

Generate and distribute reports:

Scheduled Event (Monday 9am)
DataFusion Query (weekly metrics)
Generate Charts (Nivo)
Render Template (report.md)
Convert to PDF
├──▶ SharePoint Upload
├──▶ Slack Post (with PDF)
└──▶ Email to stakeholders

Use the HTTP Request nodes for any REST API. Build request, set auth, call, parse response.

Yes—use HTTP Request with POST method, set body to your GraphQL query.

Use HTTP Request with appropriate XML body and headers.

Loop with While node, updating page/cursor until no more results.

Store results in Variables or Database, check before calling API.