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

Method Endpoint Purpose
POST https://chatflow.zeltacode.com/api/v1/sessions Create a new WAHA session for the authenticated customer and save it in the dashboard.
GET https://chatflow.zeltacode.com/api/v1/sessions Return all sessions available for the authenticated API key.
GET 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.
GET https://chatflow.zeltacode.com/api/v1/sessions/{session} Return one session by dashboard session name or session ID.
GET https://chatflow.zeltacode.com/api/v1/sessions/{session}/status Refresh and return the latest connection status for one session.
GET 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.
POST https://chatflow.zeltacode.com/api/v1/sessions/{session}/refresh Request a status refresh for one session.
POST https://chatflow.zeltacode.com/api/v1/sessions/{session}/start Start a stopped session.
POST https://chatflow.zeltacode.com/api/v1/sessions/{session}/stop Stop a running session.
POST https://chatflow.zeltacode.com/api/v1/sessions/{session}/restart Restart a connected session.
POST 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.

Body
{
    "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
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"}'
Request body
{
    "name": "Support Desk"
}
Example response
{
    "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
curl -X GET "https://chatflow.zeltacode.com/api/v1/sessions" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Accept: application/json"
Example response
{
    "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
curl -X GET "https://chatflow.zeltacode.com/api/v1/sessions/summary" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Accept: application/json"
Example response
{
    "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
curl -X GET "https://chatflow.zeltacode.com/api/v1/sessions/{session}" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Accept: application/json"
Example response
{
    "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
curl -X GET "https://chatflow.zeltacode.com/api/v1/sessions/{session}/status" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Accept: application/json"
Example response
{
    "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
curl -X GET "https://chatflow.zeltacode.com/api/v1/sessions/{session}/qr" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Accept: application/json"
Example response
{
    "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
curl -X POST "https://chatflow.zeltacode.com/api/v1/sessions/{session}/refresh" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Accept: application/json"
Example response
{
    "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
curl -X POST "https://chatflow.zeltacode.com/api/v1/sessions/{session}/start" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Accept: application/json"
Example response
{
    "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
curl -X POST "https://chatflow.zeltacode.com/api/v1/sessions/{session}/stop" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Accept: application/json"
Example response
{
    "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
curl -X POST "https://chatflow.zeltacode.com/api/v1/sessions/{session}/restart" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Accept: application/json"
Example response
{
    "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
curl -X POST "https://chatflow.zeltacode.com/api/v1/sessions/{session}/logout" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Accept: application/json"
Example response
{
    "success": true,
    "message": "Session logout requested.",
    "data": {
        "action": "logout",
        "session": {
            "name": "{session}",
            "status": "logged_out",
            "connected": false
        }
    }
}