API Documentation
Sessions
Use session APIs to list saved connections, inspect one connection, refresh status, and control start, stop, restart, or logout actions. The API key can only access sessions owned by the same customer account.
Common rules
Authentication
Send Authorization: Bearer YOUR_API_KEY with every request.
Session path
Use a dashboard session ID or session name such as {session}.
Response format
All endpoints return JSON with success, optional message, and data.
Endpoints
https://chatflow.zeltacode.com/api/v1/sessions
Create a new WAHA session for the authenticated customer and save it in the dashboard.
https://chatflow.zeltacode.com/api/v1/sessions
Return all sessions available for the authenticated API key.
https://chatflow.zeltacode.com/api/v1/sessions/summary
Return plan capacity, monthly message limit, created sessions, connected sessions, available slots, and totals grouped by status.
https://chatflow.zeltacode.com/api/v1/sessions/{session}
Return one session by dashboard session name or session ID.
https://chatflow.zeltacode.com/api/v1/sessions/{session}/status
Refresh and return the latest connection status for one session.
https://chatflow.zeltacode.com/api/v1/sessions/{session}/qr
Return the latest WAHA QR code payload for scanning. Add ?format=image to receive the QR image directly.
https://chatflow.zeltacode.com/api/v1/sessions/{session}/refresh
Request a status refresh for one session.
https://chatflow.zeltacode.com/api/v1/sessions/{session}/start
Start a stopped session.
https://chatflow.zeltacode.com/api/v1/sessions/{session}/stop
Stop a running session.
https://chatflow.zeltacode.com/api/v1/sessions/{session}/restart
Restart a connected session.
https://chatflow.zeltacode.com/api/v1/sessions/{session}/logout
Log out the connected WhatsApp account from one session.
Postman Setup
Create session
Use POST https://chatflow.zeltacode.com/api/v1/sessions with Authorization: Bearer YOUR_API_KEY and Content-Type: application/json.
{
"name": "Support Desk"
}
Get QR code
Use GET https://chatflow.zeltacode.com/api/v1/sessions/{session}/qr for JSON. For the image preview in Postman, use GET https://chatflow.zeltacode.com/api/v1/sessions/{session}/qr?format=image.
Get summary
Use GET https://chatflow.zeltacode.com/api/v1/sessions/summary to show the plan message limit, total sessions, connected sessions, available slots, and status totals in Postman.
1. Create session
Create a new WAHA session for the authenticated customer and save it in the dashboard.
API name
Create session
Purpose
Create a new WAHA session for the authenticated customer and save it in the dashboard. Use it when your application needs to keep session state in sync with the customer dashboard.
curl -X POST "https://chatflow.zeltacode.com/api/v1/sessions" \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-d '{"name":"Support Desk"}'
{
"name": "Support Desk"
}
{
"success": true,
"message": "Session created successfully.",
"data": {
"session": {
"id": 7,
"name": "Support Desk",
"session_id": "Support Desk",
"status": "STARTING",
"connected_at": null
}
}
}
2. Get all sessions
Return all sessions available for the authenticated API key.
API name
Get all sessions
Purpose
Return all sessions available for the authenticated API key. Use it when your application needs to keep session state in sync with the customer dashboard.
curl -X GET "https://chatflow.zeltacode.com/api/v1/sessions" \ -H "Authorization: Bearer YOUR_API_KEY" \ -H "Accept: application/json"
{
"success": true,
"data": {
"sessions": [
{
"id": 7,
"name": "{session}",
"session_id": "{session}",
"status": "WORKING",
"connected_at": "2026-07-20T06:00:00.000000Z"
}
]
}
}
3. Get session summary
Return plan capacity, monthly message limit, created sessions, connected sessions, available slots, and totals grouped by status.
API name
Get session summary
Purpose
Return plan capacity, monthly message limit, created sessions, connected sessions, available slots, and totals grouped by status. Use it when your application needs to keep session state in sync with the customer dashboard.
curl -X GET "https://chatflow.zeltacode.com/api/v1/sessions/summary" \ -H "Authorization: Bearer YOUR_API_KEY" \ -H "Accept: application/json"
{
"success": true,
"data": {
"user": {
"plan": {
"name": "Standard",
"message_limit": {
"monthly_allowed": 50000
}
}
},
"limits": {
"total_allowed": 20,
"total_created": 20,
"connected": 10,
"available": 0,
"message_limit": {
"monthly_allowed": 50000,
"monthly_used": null,
"monthly_available": null
}
},
"by_status": {
"failed": 2,
"scan_qr_code": 1,
"starting": 4,
"stopped": 3,
"working": 10
}
}
}
4. Get one session
Return one session by dashboard session name or session ID.
API name
Get one session
Purpose
Return one session by dashboard session name or session ID. Use it when your application needs to keep session state in sync with the customer dashboard.
Endpoint
GET https://chatflow.zeltacode.com/api/v1/sessions/{session}
Replace {session} with a session ID or session name.
curl -X GET "https://chatflow.zeltacode.com/api/v1/sessions/{session}" \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Accept: application/json"
{
"success": true,
"data": {
"session": {
"id": 7,
"name": "{session}",
"session_id": "{session}",
"status": "WORKING"
}
}
}
5. Get session status
Refresh and return the latest connection status for one session.
API name
Get session status
Purpose
Refresh and return the latest connection status for one session. Use it when your application needs to keep session state in sync with the customer dashboard.
Endpoint
GET https://chatflow.zeltacode.com/api/v1/sessions/{session}/status
Replace {session} with a session ID or session name.
curl -X GET "https://chatflow.zeltacode.com/api/v1/sessions/{session}/status" \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Accept: application/json"
{
"success": true,
"data": {
"session": {
"id": 7,
"name": "{session}",
"session_id": "{session}",
"status": "WORKING",
"connected": true,
"last_synced_at": "2026-07-20 11:55:00"
}
}
}
6. Get session QR code
Return the latest WAHA QR code payload for scanning. Add ?format=image to receive the QR image directly.
API name
Get session QR code
Purpose
Return the latest WAHA QR code payload for scanning. Add ?format=image to receive the QR image directly. Use it when your application needs to keep session state in sync with the customer dashboard.
Endpoint
GET https://chatflow.zeltacode.com/api/v1/sessions/{session}/qr
Replace {session} with a session ID or session name.
curl -X GET "https://chatflow.zeltacode.com/api/v1/sessions/{session}/qr" \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Accept: application/json"
{
"success": true,
"data": {
"session": {
"id": 7,
"name": "{session}",
"session_id": "{session}",
"status": "STARTING",
"connected": false
},
"qr": "data:image/png;base64,..."
}
}
7. Refresh session
Request a status refresh for one session.
API name
Refresh session
Purpose
Request a status refresh for one session. Use it when your application needs to keep session state in sync with the customer dashboard.
Endpoint
POST https://chatflow.zeltacode.com/api/v1/sessions/{session}/refresh
Replace {session} with a session ID or session name.
curl -X POST "https://chatflow.zeltacode.com/api/v1/sessions/{session}/refresh" \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Accept: application/json"
{
"success": true,
"message": "Session refresh requested.",
"data": {
"action": "refresh",
"session": {
"name": "{session}",
"status": "WORKING",
"connected": true
}
}
}
8. Start session
Start a stopped session.
API name
Start session
Purpose
Start a stopped session. Use it when your application needs to keep session state in sync with the customer dashboard.
Endpoint
POST https://chatflow.zeltacode.com/api/v1/sessions/{session}/start
Replace {session} with a session ID or session name.
curl -X POST "https://chatflow.zeltacode.com/api/v1/sessions/{session}/start" \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Accept: application/json"
{
"success": true,
"message": "Session start requested.",
"data": {
"action": "start",
"session": {
"name": "{session}",
"status": "starting",
"connected": false
}
}
}
9. Stop session
Stop a running session.
API name
Stop session
Purpose
Stop a running session. Use it when your application needs to keep session state in sync with the customer dashboard.
Endpoint
POST https://chatflow.zeltacode.com/api/v1/sessions/{session}/stop
Replace {session} with a session ID or session name.
curl -X POST "https://chatflow.zeltacode.com/api/v1/sessions/{session}/stop" \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Accept: application/json"
{
"success": true,
"message": "Session stop requested.",
"data": {
"action": "stop",
"session": {
"name": "{session}",
"status": "stopped",
"connected": false
}
}
}
10. Restart session
Restart a connected session.
API name
Restart session
Purpose
Restart a connected session. Use it when your application needs to keep session state in sync with the customer dashboard.
Endpoint
POST https://chatflow.zeltacode.com/api/v1/sessions/{session}/restart
Replace {session} with a session ID or session name.
curl -X POST "https://chatflow.zeltacode.com/api/v1/sessions/{session}/restart" \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Accept: application/json"
{
"success": true,
"message": "Session restart requested.",
"data": {
"action": "restart",
"session": {
"name": "{session}",
"status": "restarting",
"connected": false
}
}
}
11. Logout session
Log out the connected WhatsApp account from one session.
API name
Logout session
Purpose
Log out the connected WhatsApp account from one session. Use it when your application needs to keep session state in sync with the customer dashboard.
Endpoint
POST https://chatflow.zeltacode.com/api/v1/sessions/{session}/logout
Replace {session} with a session ID or session name.
curl -X POST "https://chatflow.zeltacode.com/api/v1/sessions/{session}/logout" \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Accept: application/json"
{
"success": true,
"message": "Session logout requested.",
"data": {
"action": "logout",
"session": {
"name": "{session}",
"status": "logged_out",
"connected": false
}
}
}