Documentation Index
Fetch the complete documentation index at: https://docs.tedro.io/llms.txt
Use this file to discover all available pages before exploring further.
Code Examples
Copy-paste examples for the most common API operations. All examples assume you have already authenticated and have your session token and workspace ID ready.
For cURL examples, we assume:
- Session cookie saved to
cookies.txt (via curl -c cookies.txt during sign-in)
- Workspace ID exported as
$WORKSPACE_ID
For Node.js examples, we assume:
sessionToken contains your better-auth.session_token value
workspaceId contains your workspace UUID
Workflows
List All Workflows
curl https://api.tedro.io/api/workflows \
-b cookies.txt \
-H "x-workspace-id: $WORKSPACE_ID"
const res = await fetch('https://api.tedro.io/api/workflows', {
headers: {
'Cookie': `better-auth.session_token=${sessionToken}`,
'x-workspace-id': workspaceId,
},
});
const { items } = await res.json();
Create a Workflow
curl -X POST https://api.tedro.io/api/workflows \
-b cookies.txt \
-H "x-workspace-id: $WORKSPACE_ID" \
-H "Content-Type: application/json" \
-d '{"name": "My New Workflow"}'
const res = await fetch('https://api.tedro.io/api/workflows', {
method: 'POST',
headers: {
'Cookie': `better-auth.session_token=${sessionToken}`,
'x-workspace-id': workspaceId,
'Content-Type': 'application/json',
},
body: JSON.stringify({ name: 'My New Workflow' }),
});
const workflow = await res.json();
Publish a Workflow
curl -X POST https://api.tedro.io/api/workflows/{workflowId}/publish \
-b cookies.txt \
-H "x-workspace-id: $WORKSPACE_ID" \
-H "Content-Type: application/json" \
-d '{}'
const res = await fetch(
`https://api.tedro.io/api/workflows/${workflowId}/publish`,
{
method: 'POST',
headers: {
'Cookie': `better-auth.session_token=${sessionToken}`,
'x-workspace-id': workspaceId,
'Content-Type': 'application/json',
},
body: '{}',
}
);
curl "https://api.tedro.io/api/contacts?limit=20&offset=0" \
-b cookies.txt \
-H "x-workspace-id: $WORKSPACE_ID"
const res = await fetch(
'https://api.tedro.io/api/contacts?limit=20&offset=0',
{
headers: {
'Cookie': `better-auth.session_token=${sessionToken}`,
'x-workspace-id': workspaceId,
},
}
);
const { items, total } = await res.json();
curl -X POST https://api.tedro.io/api/contacts \
-b cookies.txt \
-H "x-workspace-id: $WORKSPACE_ID" \
-H "Content-Type: application/json" \
-d '{
"name": "Jane Doe",
"phone": "+14155551234"
}'
const res = await fetch('https://api.tedro.io/api/contacts', {
method: 'POST',
headers: {
'Cookie': `better-auth.session_token=${sessionToken}`,
'x-workspace-id': workspaceId,
'Content-Type': 'application/json',
},
body: JSON.stringify({
name: 'Jane Doe',
phone: '+14155551234',
}),
});
const contact = await res.json();
curl -X PATCH https://api.tedro.io/api/contacts/{contactId} \
-b cookies.txt \
-H "x-workspace-id: $WORKSPACE_ID" \
-H "Content-Type: application/json" \
-d '{"name": "Jane Smith"}'
const res = await fetch(
`https://api.tedro.io/api/contacts/${contactId}`,
{
method: 'PATCH',
headers: {
'Cookie': `better-auth.session_token=${sessionToken}`,
'x-workspace-id': workspaceId,
'Content-Type': 'application/json',
},
body: JSON.stringify({ name: 'Jane Smith' }),
}
);
Conversations
List Conversations
curl "https://api.tedro.io/api/conversations?limit=10&offset=0" \
-b cookies.txt \
-H "x-workspace-id: $WORKSPACE_ID"
const res = await fetch(
'https://api.tedro.io/api/conversations?limit=10&offset=0',
{
headers: {
'Cookie': `better-auth.session_token=${sessionToken}`,
'x-workspace-id': workspaceId,
},
}
);
const { items, total } = await res.json();
Get Conversation Messages
curl https://api.tedro.io/api/conversations/{conversationId}/messages \
-b cookies.txt \
-H "x-workspace-id: $WORKSPACE_ID"
const res = await fetch(
`https://api.tedro.io/api/conversations/${conversationId}/messages`,
{
headers: {
'Cookie': `better-auth.session_token=${sessionToken}`,
'x-workspace-id': workspaceId,
},
}
);
const { messages } = await res.json();
Send a Message in a Conversation
curl -X POST https://api.tedro.io/api/conversations/{conversationId}/messages \
-b cookies.txt \
-H "x-workspace-id: $WORKSPACE_ID" \
-H "Content-Type: application/json" \
-d '{"body": "Hello! How can I help you today?"}'
const res = await fetch(
`https://api.tedro.io/api/conversations/${conversationId}/messages`,
{
method: 'POST',
headers: {
'Cookie': `better-auth.session_token=${sessionToken}`,
'x-workspace-id': workspaceId,
'Content-Type': 'application/json',
},
body: JSON.stringify({
body: 'Hello! How can I help you today?',
}),
}
);
For WhatsApp conversations, sending messages is subject to the 24-hour customer service window. Messages can only be sent within 24 hours of the customer’s last inbound message. Outside this window, use approved message templates via broadcasts. Other channels (Instagram, Messenger, Live Chat) have their own messaging policies.
Runs
List Recent Runs
curl "https://api.tedro.io/api/runs?limit=10&offset=0" \
-b cookies.txt \
-H "x-workspace-id: $WORKSPACE_ID"
const res = await fetch(
'https://api.tedro.io/api/runs?limit=10&offset=0',
{
headers: {
'Cookie': `better-auth.session_token=${sessionToken}`,
'x-workspace-id': workspaceId,
},
}
);
const { items, total } = await res.json();
Get Run Details and Steps
# Get run overview
curl https://api.tedro.io/api/runs/{runId} \
-b cookies.txt \
-H "x-workspace-id: $WORKSPACE_ID"
# Get execution steps
curl https://api.tedro.io/api/runs/{runId}/steps \
-b cookies.txt \
-H "x-workspace-id: $WORKSPACE_ID"
// Get run overview
const runRes = await fetch(
`https://api.tedro.io/api/runs/${runId}`,
{
headers: {
'Cookie': `better-auth.session_token=${sessionToken}`,
'x-workspace-id': workspaceId,
},
}
);
const run = await runRes.json();
// Get execution steps
const stepsRes = await fetch(
`https://api.tedro.io/api/runs/${runId}/steps`,
{
headers: {
'Cookie': `better-auth.session_token=${sessionToken}`,
'x-workspace-id': workspaceId,
},
}
);
const { steps } = await stepsRes.json();
Replay a Run
curl -X POST https://api.tedro.io/api/runs/{runId}/replay \
-b cookies.txt \
-H "x-workspace-id: $WORKSPACE_ID" \
-H "Content-Type: application/json" \
-d '{}'
const res = await fetch(
`https://api.tedro.io/api/runs/${runId}/replay`,
{
method: 'POST',
headers: {
'Cookie': `better-auth.session_token=${sessionToken}`,
'x-workspace-id': workspaceId,
'Content-Type': 'application/json',
},
body: '{}',
}
);