{
  "info": {
    "name": "Voxai API",
    "description": "Complete API collection for Voxai — auto-generated with your credentials.",
    "schema": "https://schema.getpostman.com/json/collection/v2.1.0/collection.json"
  },
  "auth": {
    "type": "apikey",
    "apikey": [
      {
        "key": "key",
        "value": "X-API-Key",
        "type": "string"
      },
      {
        "key": "value",
        "value": "YOUR_API_KEY",
        "type": "string"
      },
      {
        "key": "in",
        "value": "header",
        "type": "string"
      }
    ]
  },
  "variable": [
    {
      "key": "baseUrl",
      "value": "https://voxai.ai0.dev"
    },
    {
      "key": "apiKey",
      "value": "YOUR_API_KEY"
    }
  ],
  "item": [
    {
      "name": "Tokens",
      "item": [
        {
          "name": "Generate Room Token",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "url": {
              "raw": "{{baseUrl}}/api/v1/token",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "token"
              ]
            },
            "body": {
              "mode": "raw",
              "raw": "{\n  \"identity\": \"user-123\",\n  \"room\": \"my-room\"\n}"
            },
            "description": "Generate a LiveKit token. Optionally dispatch agents."
          }
        }
      ]
    },
    {
      "name": "Agents",
      "item": [
        {
          "name": "List Agents",
          "request": {
            "method": "GET",
            "url": {
              "raw": "{{baseUrl}}/api/v1/agents",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "agents"
              ]
            },
            "description": "List all agent configurations for your project."
          }
        },
        {
          "name": "Get Agent Tools",
          "request": {
            "method": "GET",
            "url": {
              "raw": "{{baseUrl}}/api/v1/agents/1/tools",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "agents",
                "1",
                "tools"
              ]
            },
            "description": "Get tool/function definitions for a specific agent."
          }
        }
      ]
    },
    {
      "name": "Rooms",
      "item": [
        {
          "name": "List Active Rooms",
          "request": {
            "method": "GET",
            "url": {
              "raw": "{{baseUrl}}/api/v1/rooms",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "rooms"
              ]
            },
            "description": "List all currently active LiveKit rooms."
          }
        },
        {
          "name": "Create Room",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "url": {
              "raw": "{{baseUrl}}/api/v1/rooms",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "rooms"
              ]
            },
            "body": {
              "mode": "raw",
              "raw": "{\n  \"name\": \"my-room\",\n  \"empty_timeout\": 300,\n  \"max_participants\": 0\n}"
            },
            "description": "Create a new LiveKit room (auto-prefixed with project prefix)."
          }
        },
        {
          "name": "Get Room Details",
          "request": {
            "method": "GET",
            "url": {
              "raw": "{{baseUrl}}/api/v1/rooms/my-room",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "rooms",
                "my-room"
              ]
            },
            "description": "Get room info including live participant list."
          }
        },
        {
          "name": "Delete Room",
          "request": {
            "method": "DELETE",
            "url": {
              "raw": "{{baseUrl}}/api/v1/rooms/my-room",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "rooms",
                "my-room"
              ]
            },
            "description": "Close/delete a room and disconnect all participants."
          }
        },
        {
          "name": "List Room Participants",
          "request": {
            "method": "GET",
            "url": {
              "raw": "{{baseUrl}}/api/v1/rooms/my-room/participants",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "rooms",
                "my-room",
                "participants"
              ]
            },
            "description": "List participants in a specific room."
          }
        },
        {
          "name": "Kick Participant",
          "request": {
            "method": "POST",
            "url": {
              "raw": "{{baseUrl}}/api/v1/rooms/my-room/kick/user1",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "rooms",
                "my-room",
                "kick",
                "user1"
              ]
            },
            "description": "Remove a participant from a room by identity."
          }
        }
      ]
    },
    {
      "name": "Recordings",
      "item": [
        {
          "name": "Start Recording",
          "request": {
            "method": "POST",
            "url": {
              "raw": "{{baseUrl}}/api/v1/rooms/my-room/recordings/start",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "rooms",
                "my-room",
                "recordings",
                "start"
              ]
            },
            "description": "Start recording a room via LiveKit Egress."
          }
        },
        {
          "name": "Stop Recording",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "url": {
              "raw": "{{baseUrl}}/api/v1/rooms/my-room/recordings/stop",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "rooms",
                "my-room",
                "recordings",
                "stop"
              ]
            },
            "body": {
              "mode": "raw",
              "raw": "{\n  \"egress_id\": \"EG_abc123\"\n}"
            },
            "description": "Stop an active recording. Omit egress_id to stop all."
          }
        },
        {
          "name": "List Recordings",
          "request": {
            "method": "GET",
            "url": {
              "raw": "{{baseUrl}}/api/v1/recordings?page=1&per_page=25",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "recordings"
              ],
              "query": [
                {
                  "key": "page",
                  "value": "1"
                },
                {
                  "key": "per_page",
                  "value": "25"
                }
              ]
            },
            "description": "List recordings for your project with pagination and filters."
          }
        },
        {
          "name": "Get Recording Details",
          "request": {
            "method": "GET",
            "url": {
              "raw": "{{baseUrl}}/api/v1/recordings/1",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "recordings",
                "1"
              ]
            },
            "description": "Get metadata for a specific recording."
          }
        },
        {
          "name": "Download Recording",
          "request": {
            "method": "GET",
            "url": {
              "raw": "{{baseUrl}}/api/v1/recordings/1/download",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "recordings",
                "1",
                "download"
              ]
            },
            "description": "Download the recording audio file. Supports Range headers."
          }
        },
        {
          "name": "Delete Recording",
          "request": {
            "method": "DELETE",
            "url": {
              "raw": "{{baseUrl}}/api/v1/recordings/1",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "recordings",
                "1"
              ]
            },
            "description": "Delete a recording file and database record."
          }
        }
      ]
    },
    {
      "name": "Sessions",
      "item": [
        {
          "name": "Create Session",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "url": {
              "raw": "{{baseUrl}}/api/v1/sessions",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "sessions"
              ]
            },
            "body": {
              "mode": "raw",
              "raw": "{\n  \"room_name\": \"proj_my-room\",\n  \"caller_identity\": \"user1\"\n}"
            },
            "description": "Create a new session log."
          }
        },
        {
          "name": "Add Transcript",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "url": {
              "raw": "{{baseUrl}}/api/v1/sessions/proj_my-room/transcript",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "sessions",
                "proj_my-room",
                "transcript"
              ]
            },
            "body": {
              "mode": "raw",
              "raw": "{\n  \"speaker\": \"user\",\n  \"content\": \"Hello\"\n}"
            },
            "description": "Add a transcript entry to an active session."
          }
        },
        {
          "name": "End Session",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "url": {
              "raw": "{{baseUrl}}/api/v1/sessions/proj_my-room/end",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "sessions",
                "proj_my-room",
                "end"
              ]
            },
            "body": {
              "mode": "raw",
              "raw": "{\n  \"summary\": \"Session completed\"\n}"
            },
            "description": "End an active session."
          }
        },
        {
          "name": "List Sessions",
          "request": {
            "method": "GET",
            "url": {
              "raw": "{{baseUrl}}/api/v1/sessions?page=1&per_page=25",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "sessions"
              ],
              "query": [
                {
                  "key": "page",
                  "value": "1"
                },
                {
                  "key": "per_page",
                  "value": "25"
                }
              ]
            },
            "description": "List sessions with pagination and filters (status, agent, type, date range)."
          }
        },
        {
          "name": "Session Detail",
          "request": {
            "method": "GET",
            "url": {
              "raw": "{{baseUrl}}/api/v1/sessions/1/detail",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "sessions",
                "1",
                "detail"
              ]
            },
            "description": "Get full session metadata with cost breakdown."
          }
        },
        {
          "name": "Get Transcript (JSON)",
          "request": {
            "method": "GET",
            "url": {
              "raw": "{{baseUrl}}/api/v1/sessions/1/transcript",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "sessions",
                "1",
                "transcript"
              ]
            },
            "description": "Get the full transcript for a session as ordered JSON."
          }
        },
        {
          "name": "Get Transcript (Plain Text)",
          "request": {
            "method": "GET",
            "url": {
              "raw": "{{baseUrl}}/api/v1/sessions/1/transcript/text",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "sessions",
                "1",
                "transcript",
                "text"
              ]
            },
            "description": "Get the transcript as plain text with timestamps."
          }
        }
      ]
    },
    {
      "name": "Knowledge (RAG)",
      "item": [
        {
          "name": "Search Knowledge Base",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "url": {
              "raw": "{{baseUrl}}/api/v1/knowledge/search",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "knowledge",
                "search"
              ]
            },
            "body": {
              "mode": "raw",
              "raw": "{\n  \"knowledge_base_id\": 1,\n  \"query\": \"How to reset password?\",\n  \"top_k\": 5\n}"
            },
            "description": "Perform a semantic search on a knowledge base."
          }
        },
        {
          "name": "List Knowledge Bases",
          "request": {
            "method": "GET",
            "url": {
              "raw": "{{baseUrl}}/api/v1/knowledge-bases",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "knowledge-bases"
              ]
            },
            "description": "List all knowledge bases for the project."
          }
        },
        {
          "name": "Create Knowledge Base",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "url": {
              "raw": "{{baseUrl}}/api/v1/knowledge-bases",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "knowledge-bases"
              ]
            },
            "body": {
              "mode": "raw",
              "raw": "{\n  \"name\": \"FAQ\",\n  \"description\": \"Company FAQ docs\",\n  \"chunk_size\": 500,\n  \"chunk_overlap\": 50\n}"
            },
            "description": "Create a new knowledge base."
          }
        },
        {
          "name": "Knowledge Base Detail",
          "request": {
            "method": "GET",
            "url": {
              "raw": "{{baseUrl}}/api/v1/knowledge-bases/1",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "knowledge-bases",
                "1"
              ]
            },
            "description": "Get knowledge base metadata and stats."
          }
        },
        {
          "name": "Delete Knowledge Base",
          "request": {
            "method": "DELETE",
            "url": {
              "raw": "{{baseUrl}}/api/v1/knowledge-bases/1",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "knowledge-bases",
                "1"
              ]
            },
            "description": "Delete a knowledge base and all its chunks."
          }
        },
        {
          "name": "Upload Document",
          "request": {
            "method": "POST",
            "url": {
              "raw": "{{baseUrl}}/api/v1/knowledge-bases/1/documents",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "knowledge-bases",
                "1",
                "documents"
              ]
            },
            "body": {
              "mode": "formdata",
              "formdata": [
                {
                  "key": "file",
                  "type": "file",
                  "src": ""
                }
              ]
            },
            "description": "Upload a document (.txt, .md, .csv, .json) to ingest into a KB."
          }
        },
        {
          "name": "Ingest Raw Text",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "url": {
              "raw": "{{baseUrl}}/api/v1/knowledge-bases/1/ingest",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "knowledge-bases",
                "1",
                "ingest"
              ]
            },
            "body": {
              "mode": "raw",
              "raw": "{\n  \"content\": \"Your text content here...\",\n  \"source_name\": \"api_upload\"\n}"
            },
            "description": "Ingest raw text into a KB without file upload."
          }
        },
        {
          "name": "Re-index Knowledge Base",
          "request": {
            "method": "POST",
            "url": {
              "raw": "{{baseUrl}}/api/v1/knowledge-bases/1/reindex",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "knowledge-bases",
                "1",
                "reindex"
              ]
            },
            "description": "Re-generate embeddings for all chunks."
          }
        },
        {
          "name": "List Chunks",
          "request": {
            "method": "GET",
            "url": {
              "raw": "{{baseUrl}}/api/v1/knowledge-bases/1/chunks?page=1&per_page=20",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "knowledge-bases",
                "1",
                "chunks"
              ],
              "query": [
                {
                  "key": "page",
                  "value": "1"
                },
                {
                  "key": "per_page",
                  "value": "20"
                }
              ]
            },
            "description": "List paginated chunks for a knowledge base."
          }
        },
        {
          "name": "Update Chunk",
          "request": {
            "method": "PUT",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "url": {
              "raw": "{{baseUrl}}/api/v1/knowledge-bases/1/chunks/1",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "knowledge-bases",
                "1",
                "chunks",
                "1"
              ]
            },
            "body": {
              "mode": "raw",
              "raw": "{\n  \"content\": \"Updated chunk content...\"\n}"
            },
            "description": "Update a chunk content and re-embed."
          }
        },
        {
          "name": "Delete Chunk",
          "request": {
            "method": "DELETE",
            "url": {
              "raw": "{{baseUrl}}/api/v1/knowledge-bases/1/chunks/1",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "knowledge-bases",
                "1",
                "chunks",
                "1"
              ]
            },
            "description": "Permanently delete a chunk."
          }
        }
      ]
    },
    {
      "name": "Usage & Quota",
      "item": [
        {
          "name": "Get Usage Data",
          "request": {
            "method": "GET",
            "url": {
              "raw": "{{baseUrl}}/api/v1/usage?period=30d&group_by=day",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "usage"
              ],
              "query": [
                {
                  "key": "period",
                  "value": "30d"
                },
                {
                  "key": "group_by",
                  "value": "day"
                }
              ]
            },
            "description": "Get usage and cost data for your project."
          }
        },
        {
          "name": "Check Quota",
          "request": {
            "method": "GET",
            "url": {
              "raw": "{{baseUrl}}/api/v1/quota",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "quota"
              ]
            },
            "description": "Check remaining quota for all resource types on your plan."
          }
        }
      ]
    },
    {
      "name": "SIP / Telephony",
      "item": [
        {
          "name": "Initiate Outbound Call",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "url": {
              "raw": "{{baseUrl}}/api/v1/sip/dial",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "sip",
                "dial"
              ]
            },
            "body": {
              "mode": "raw",
              "raw": "{\n  \"phone_number\": \"+17751234567\",\n  \"agent_config_id\": 1\n}"
            },
            "description": "Initiate an outbound SIP call. Creates room, dispatches agent, dials phone number."
          }
        },
        {
          "name": "List SIP Trunks",
          "request": {
            "method": "GET",
            "url": {
              "raw": "{{baseUrl}}/api/v1/sip/trunks",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "sip",
                "trunks"
              ]
            },
            "description": "List SIP trunk IDs for the project."
          }
        },
        {
          "name": "List SIP Configs",
          "request": {
            "method": "GET",
            "url": {
              "raw": "{{baseUrl}}/api/v1/sip/configs",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "sip",
                "configs"
              ]
            },
            "description": "List full SIP configurations with agent assignments."
          }
        }
      ]
    },
    {
      "name": "Secrets",
      "item": [
        {
          "name": "Get Provider Secrets",
          "request": {
            "method": "GET",
            "url": {
              "raw": "{{baseUrl}}/api/v1/projects/1/secrets/openai",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "projects",
                "1",
                "secrets",
                "openai"
              ]
            },
            "description": "Get decrypted secrets for a provider. Project ID must match your API key."
          }
        }
      ]
    },
    {
      "name": "Webhooks",
      "item": [
        {
          "name": "Fire Test Event",
          "request": {
            "method": "POST",
            "url": {
              "raw": "{{baseUrl}}/api/v1/webhooks/test",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "webhooks",
                "test"
              ]
            },
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "body": {
              "mode": "raw",
              "raw": "{\"event_type\":\"test\",\"payload\":{\"message\":\"Test webhook event\"}}"
            },
            "description": "Fire a test event to all active webhook endpoints for this project."
          }
        }
      ]
    },
    {
      "name": "Call Control",
      "item": [
        {
          "name": "Send Data to Room",
          "request": {
            "method": "POST",
            "url": {
              "raw": "{{baseUrl}}/api/v1/rooms/myRoom/send-data",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "rooms",
                "myRoom",
                "send-data"
              ]
            },
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "body": {
              "mode": "raw",
              "raw": "{\"data\":\"Hello!\",\"destination_identities\":[\"user1\"],\"topic\":\"chat\"}"
            },
            "description": "Send data to all or specific participants (whisper/broadcast)."
          }
        },
        {
          "name": "Update Participant",
          "request": {
            "method": "POST",
            "url": {
              "raw": "{{baseUrl}}/api/v1/rooms/myRoom/participants/user1",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "rooms",
                "myRoom",
                "participants",
                "user1"
              ]
            },
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "body": {
              "mode": "raw",
              "raw": "{\"metadata\":\"{\\\"role\\\":\\\"supervisor\\\"}\",\"permission\":{\"canPublish\":true,\"canSubscribe\":true}}"
            },
            "description": "Update participant metadata and permissions."
          }
        },
        {
          "name": "Mute Participant",
          "request": {
            "method": "POST",
            "url": {
              "raw": "{{baseUrl}}/api/v1/rooms/myRoom/participants/user1/mute",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "rooms",
                "myRoom",
                "participants",
                "user1",
                "mute"
              ]
            },
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "body": {
              "mode": "raw",
              "raw": "{\"muted\":true}"
            },
            "description": "Mute or unmute a participant audio track."
          }
        }
      ]
    }
  ]
}