{
  "info": {
    "name": "Lojiq Public API",
    "description": "The Lojiq Public API is the programmable side of the Lojiq platform. With one API key you can:\n\n* **Push leads in** — one at a time or in bulk from CSV, with consent fields, deduplicated per organization.\n* **Get outcomes out** — subscribe to signed webhooks for lead, call, appointment, deal and billing events.\n* **Run voice agents** — create provider-neutral voice agents, start phone or browser (WebRTC) calls, read transcripts and recordings.\n* **Read and steer campaigns, calls, appointments and deals** from your own software.\n\nEvery endpoint is **organization-scoped**: the API key decides which organization's data you see. There is no\n`organization_id` parameter anywhere.\n\n**Two APIs, two hosts.** This is the public API at `https://api.lojiq.ai/v1`. The Lojiq web and mobile apps use a\nseparate private API (`https://app.lojiq.ai/api/v1`) that is not documented, not versioned for outside use, and not\nserved on `api.lojiq.ai`. Build only against `api.lojiq.ai`.\n\n**Conventions**\n\n* JSON in, JSON out (`Content-Type: application/json`), except the CSV export and the voice preview.\n* Lists return `{ \"data\": [...], \"limit\": n, \"offset\": n }`. There is no total count; page until `data` is shorter than `limit`.\n* Errors return one envelope, `{ \"error\": \"<code>\", \"message\": \"<optional human text>\", \"request_id\": \"<uuid>\" }`,\n  with a conventional HTTP status. `error` is a stable snake_case code; `request_id` equals the `X-Request-Id` header.\n* Every response carries `X-Request-Id` (401s and 429s included). Quote it when you contact support.\n* Writes take an allow-list of fields; any other key answers `400 unknown_field:<name>` rather than being written.\n* `POST /leads`, `POST /calls` and `POST /agents/{id}/calls` honour an `Idempotency-Key` header: a retried request\n  never creates a second lead or places a second paid call.\n* Timestamps are ISO-8601 UTC. Phone numbers are stored as E.164 (`+15551234567`); 10-digit US numbers get `+1`.\n\n\nSet `apiKey` in the environment. Base URL: `{{baseUrl}}`.",
    "schema": "https://schema.getpostman.com/json/collection/v2.1.0/collection.json",
    "version": "1.2.0"
  },
  "auth": {
    "type": "bearer",
    "bearer": [
      {
        "key": "token",
        "value": "{{apiKey}}",
        "type": "string"
      }
    ]
  },
  "variable": [
    {
      "key": "baseUrl",
      "value": "https://api.lojiq.ai/v1",
      "type": "string"
    },
    {
      "key": "apiKey",
      "value": "",
      "type": "string"
    }
  ],
  "item": [
    {
      "name": "Meta",
      "description": "Version and health-style information about the API itself.",
      "item": [
        {
          "name": "API metadata  ·  GET /",
          "request": {
            "method": "GET",
            "header": [
              {
                "key": "Accept",
                "value": "application/json"
              }
            ],
            "url": {
              "raw": "{{baseUrl}}/",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                ""
              ]
            },
            "description": "**Scope:** `none`\n\nReturns the API name, version and the docs URL. Useful as a connectivity check after you configure a key.\nRequires a valid key but no particular scope.\n"
          },
          "response": [
            {
              "name": "200 — OK",
              "originalRequest": {
                "method": "GET",
                "header": [
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "raw": "{{baseUrl}}/",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    ""
                  ]
                }
              },
              "status": "OK",
              "code": 200,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                },
                {
                  "key": "X-Request-Id",
                  "value": "00000000-0000-4000-8000-000000000000"
                }
              ],
              "body": "{\n  \"api\": \"lojiq-public-api\",\n  \"version\": \"v1\",\n  \"docs\": \"https://docs.lojiq.ai\"\n}"
            },
            {
              "name": "401 — No key, or a key that is unknown, revoked or expired. `error` is one of",
              "originalRequest": {
                "method": "GET",
                "header": [
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "raw": "{{baseUrl}}/",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    ""
                  ]
                }
              },
              "status": "No key, or a key that is unknown, revoke",
              "code": 401,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                },
                {
                  "key": "X-Request-Id",
                  "value": "00000000-0000-4000-8000-000000000000"
                }
              ],
              "body": "{\n  \"error\": \"invalid_api_key\",\n  \"request_id\": \"0f3b9c1e-6d2a-4b7f-8e1c-5a9d2b4c6e80\"\n}"
            },
            {
              "name": "429 — Too many requests for this key in the current minute. Wait `Retry-After` seconds",
              "originalRequest": {
                "method": "GET",
                "header": [
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "raw": "{{baseUrl}}/",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    ""
                  ]
                }
              },
              "status": "Too many requests for this key in the cu",
              "code": 429,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                },
                {
                  "key": "X-Request-Id",
                  "value": "00000000-0000-4000-8000-000000000000"
                }
              ],
              "body": "{\n  \"error\": \"rate_limited\",\n  \"message\": \"This key is limited to 60 requests per minute. Retry in 3s.\",\n  \"retry_after_seconds\": 3,\n  \"request_id\": \"0f3b9c1e-6d2a-4b7f-8e1c-5a9d2b4c6e80\"\n}"
            }
          ]
        },
        {
          "name": "List webhook event types  ·  GET /event-catalog",
          "request": {
            "method": "GET",
            "header": [
              {
                "key": "Accept",
                "value": "application/json"
              }
            ],
            "url": {
              "raw": "{{baseUrl}}/event-catalog",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "event-catalog"
              ]
            },
            "description": "**Scope:** `webhooks:manage`\n\nEvery event type you can subscribe to, with a one-line description. Scope: `webhooks:manage`.\nThe Webhooks guide documents each event's `data` payload and which ones fire today.\n"
          },
          "response": [
            {
              "name": "200 — OK",
              "originalRequest": {
                "method": "GET",
                "header": [
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "raw": "{{baseUrl}}/event-catalog",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "event-catalog"
                  ]
                }
              },
              "status": "OK",
              "code": 200,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                },
                {
                  "key": "X-Request-Id",
                  "value": "00000000-0000-4000-8000-000000000000"
                }
              ],
              "body": "{\n  \"events\": [\n    {\n      \"type\": \"lead.created\",\n      \"description\": \"A new lead was created.\"\n    },\n    {\n      \"type\": \"lead.updated\",\n      \"description\": \"A lead was updated (any field except disposition).\"\n    },\n    {\n      \"type\": \"lead.disposition_changed\",\n      \"description\": \"A lead disposition / status changed.\"\n    },\n    {\n      \"type\": \"call.started\",\n      \"description\": \"An outbound or inbound call started.\"\n    },\n    {\n      \"type\": \"call.ended\",\n      \"description\": \"A call ended (any reason).\"\n    },\n    {\n      \"type\": \"call.transferred\",\n      \"description\": \"A call was warm-transferred.\"\n    },\n    {\n      \"type\": \"call.completed\",\n      \"description\": \"A call completed normally.\"\n    },\n    {\n      \"type\": \"call.transcript_ready\",\n      \"description\": \"A call transcript (and summary) finished processing and is available.\"\n    },\n    {\n      \"type\": \"deal.status_changed\",\n      \"description\": \"A deal moved between pipeline stages.\"\n    },\n    {\n      \"type\": \"appointment.booked\",\n      \"description\": \"An appointment was booked (AI or human).\"\n    },\n    {\n      \"type\": \"appointment.cancelled\",\n      \"description\": \"An appointment was cancelled.\"\n    },\n    {\n      \"type\": \"appointment.rescheduled\",\n      \"description\": \"An appointment was rescheduled.\"\n    },\n    {\n      \"type\": \"ai_engineer.onboarding_completed\",\n      \"description\": \"An AI Engineer finished onboarding.\"\n    },\n    {\n      \"type\": \"billing.low_balance\",\n      \"description\": \"Account balance crossed the low-balance threshold.\"\n    }\n  ]\n}"
            },
            {
              "name": "401 — No key, or a key that is unknown, revoked or expired. `error` is one of",
              "originalRequest": {
                "method": "GET",
                "header": [
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "raw": "{{baseUrl}}/event-catalog",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "event-catalog"
                  ]
                }
              },
              "status": "No key, or a key that is unknown, revoke",
              "code": 401,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                },
                {
                  "key": "X-Request-Id",
                  "value": "00000000-0000-4000-8000-000000000000"
                }
              ],
              "body": "{\n  \"error\": \"invalid_api_key\",\n  \"request_id\": \"0f3b9c1e-6d2a-4b7f-8e1c-5a9d2b4c6e80\"\n}"
            },
            {
              "name": "403 — The key does not carry the scope this operation needs. `required` names the miss",
              "originalRequest": {
                "method": "GET",
                "header": [
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "raw": "{{baseUrl}}/event-catalog",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "event-catalog"
                  ]
                }
              },
              "status": "The key does not carry the scope this op",
              "code": 403,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                },
                {
                  "key": "X-Request-Id",
                  "value": "00000000-0000-4000-8000-000000000000"
                }
              ],
              "body": "{\n  \"error\": \"insufficient_scope\",\n  \"message\": \"This key does not have the leads:write scope.\",\n  \"required\": \"leads:write\",\n  \"request_id\": \"0f3b9c1e-6d2a-4b7f-8e1c-5a9d2b4c6e80\"\n}"
            },
            {
              "name": "429 — Too many requests for this key in the current minute. Wait `Retry-After` seconds",
              "originalRequest": {
                "method": "GET",
                "header": [
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "raw": "{{baseUrl}}/event-catalog",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "event-catalog"
                  ]
                }
              },
              "status": "Too many requests for this key in the cu",
              "code": 429,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                },
                {
                  "key": "X-Request-Id",
                  "value": "00000000-0000-4000-8000-000000000000"
                }
              ],
              "body": "{\n  \"error\": \"rate_limited\",\n  \"message\": \"This key is limited to 60 requests per minute. Retry in 3s.\",\n  \"retry_after_seconds\": 3,\n  \"request_id\": \"0f3b9c1e-6d2a-4b7f-8e1c-5a9d2b4c6e80\"\n}"
            }
          ]
        }
      ]
    },
    {
      "name": "Account",
      "description": "Your organization as the API sees it, including whether voice calls are currently allowed.",
      "item": [
        {
          "name": "Get your organization  ·  GET /account",
          "request": {
            "method": "GET",
            "header": [
              {
                "key": "Accept",
                "value": "application/json"
              }
            ],
            "url": {
              "raw": "{{baseUrl}}/account",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "account"
              ]
            },
            "description": "**Scope:** `account:read`\n\nYour organization's id, name and status, plus `voice_calls_allowed` — the single flag to check before starting\ncalls through the API. Scope: `account:read`.\n"
          },
          "response": [
            {
              "name": "200 — OK",
              "originalRequest": {
                "method": "GET",
                "header": [
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "raw": "{{baseUrl}}/account",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "account"
                  ]
                }
              },
              "status": "OK",
              "code": 200,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                },
                {
                  "key": "X-Request-Id",
                  "value": "00000000-0000-4000-8000-000000000000"
                }
              ],
              "body": "{\n  \"organization_id\": \"7f6e5d4c-3b2a-4190-8877-665544332211\",\n  \"name\": \"Acme Dental\",\n  \"status\": \"active\",\n  \"sandbox\": false,\n  \"key_mode\": \"live\",\n  \"voice_calls_allowed\": true\n}"
            },
            {
              "name": "401 — No key, or a key that is unknown, revoked or expired. `error` is one of",
              "originalRequest": {
                "method": "GET",
                "header": [
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "raw": "{{baseUrl}}/account",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "account"
                  ]
                }
              },
              "status": "No key, or a key that is unknown, revoke",
              "code": 401,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                },
                {
                  "key": "X-Request-Id",
                  "value": "00000000-0000-4000-8000-000000000000"
                }
              ],
              "body": "{\n  \"error\": \"invalid_api_key\",\n  \"request_id\": \"0f3b9c1e-6d2a-4b7f-8e1c-5a9d2b4c6e80\"\n}"
            },
            {
              "name": "403 — The key does not carry the scope this operation needs. `required` names the miss",
              "originalRequest": {
                "method": "GET",
                "header": [
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "raw": "{{baseUrl}}/account",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "account"
                  ]
                }
              },
              "status": "The key does not carry the scope this op",
              "code": 403,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                },
                {
                  "key": "X-Request-Id",
                  "value": "00000000-0000-4000-8000-000000000000"
                }
              ],
              "body": "{\n  \"error\": \"insufficient_scope\",\n  \"message\": \"This key does not have the leads:write scope.\",\n  \"required\": \"leads:write\",\n  \"request_id\": \"0f3b9c1e-6d2a-4b7f-8e1c-5a9d2b4c6e80\"\n}"
            },
            {
              "name": "404 — No such resource in your organization (ids from other organizations also answer ",
              "originalRequest": {
                "method": "GET",
                "header": [
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "raw": "{{baseUrl}}/account",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "account"
                  ]
                }
              },
              "status": "No such resource in your organization (i",
              "code": 404,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                },
                {
                  "key": "X-Request-Id",
                  "value": "00000000-0000-4000-8000-000000000000"
                }
              ],
              "body": "{\n  \"error\": \"not_found\",\n  \"request_id\": \"0f3b9c1e-6d2a-4b7f-8e1c-5a9d2b4c6e80\"\n}"
            },
            {
              "name": "429 — Too many requests for this key in the current minute. Wait `Retry-After` seconds",
              "originalRequest": {
                "method": "GET",
                "header": [
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "raw": "{{baseUrl}}/account",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "account"
                  ]
                }
              },
              "status": "Too many requests for this key in the cu",
              "code": 429,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                },
                {
                  "key": "X-Request-Id",
                  "value": "00000000-0000-4000-8000-000000000000"
                }
              ],
              "body": "{\n  \"error\": \"rate_limited\",\n  \"message\": \"This key is limited to 60 requests per minute. Retry in 3s.\",\n  \"retry_after_seconds\": 3,\n  \"request_id\": \"0f3b9c1e-6d2a-4b7f-8e1c-5a9d2b4c6e80\"\n}"
            },
            {
              "name": "500 — `internal_error` — something failed on Lojiq's side. The detail is in Lojiq's lo",
              "originalRequest": {
                "method": "GET",
                "header": [
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "raw": "{{baseUrl}}/account",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "account"
                  ]
                }
              },
              "status": "`internal_error` — something failed on L",
              "code": 500,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                },
                {
                  "key": "X-Request-Id",
                  "value": "00000000-0000-4000-8000-000000000000"
                }
              ],
              "body": "{\n  \"error\": \"internal_error\",\n  \"message\": \"Something went wrong on our side. Retry\",\n  \"or contact support with the request_id.\": null,\n  \"request_id\": \"0f3b9c1e-6d2a-4b7f-8e1c-5a9d2b4c6e80\"\n}"
            }
          ]
        }
      ]
    },
    {
      "name": "Leads",
      "description": "Leads are the people Lojiq calls and texts. Create them one at a time (deduplicated by phone number inside your\norganization), import them in bulk from CSV, read them back, update their status, or export everything as CSV.\n\nConsent matters: `consent_source` and `consented_at` are stored with every lead and are the record you will\nneed if a lead ever asks why they were contacted. See the Leads guide.\n",
      "item": [
        {
          "name": "List leads  ·  GET /leads",
          "request": {
            "method": "GET",
            "header": [
              {
                "key": "Accept",
                "value": "application/json"
              }
            ],
            "url": {
              "raw": "{{baseUrl}}/leads?limit=&offset=&campaign_id=&phone_number=&status=",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "leads"
              ],
              "query": [
                {
                  "key": "limit",
                  "value": "50",
                  "description": "Page size. Default 50, maximum 200 (larger values are clamped to 200).",
                  "disabled": false
                },
                {
                  "key": "offset",
                  "value": "0",
                  "description": "Number of rows to skip. Default 0. Page by increasing `offset` by `limit` until `data` comes back shorter than `limit`.",
                  "disabled": false
                },
                {
                  "key": "campaign_id",
                  "value": "",
                  "description": "Only leads attached to this campaign.",
                  "disabled": true
                },
                {
                  "key": "phone_number",
                  "value": "",
                  "description": "One lead by phone number, in any format (it is canonicalised to E.164 before matching). The quickest way to look a lead up before creating one.",
                  "disabled": true
                },
                {
                  "key": "status",
                  "value": "",
                  "description": "Only leads with exactly this status (`new`, `contacted`, `do_not_call`…).",
                  "disabled": true
                }
              ]
            },
            "description": "**Scope:** `leads:read`\n\nNewest first. Filter by campaign, status or phone number. Scope: `leads:read`."
          },
          "response": [
            {
              "name": "200 — OK",
              "originalRequest": {
                "method": "GET",
                "header": [
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "raw": "{{baseUrl}}/leads?limit=&offset=&campaign_id=&phone_number=&status=",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "leads"
                  ],
                  "query": [
                    {
                      "key": "limit",
                      "value": "50",
                      "description": "Page size. Default 50, maximum 200 (larger values are clamped to 200).",
                      "disabled": false
                    },
                    {
                      "key": "offset",
                      "value": "0",
                      "description": "Number of rows to skip. Default 0. Page by increasing `offset` by `limit` until `data` comes back shorter than `limit`.",
                      "disabled": false
                    },
                    {
                      "key": "campaign_id",
                      "value": "",
                      "description": "Only leads attached to this campaign.",
                      "disabled": true
                    },
                    {
                      "key": "phone_number",
                      "value": "",
                      "description": "One lead by phone number, in any format (it is canonicalised to E.164 before matching). The quickest way to look a lead up before creating one.",
                      "disabled": true
                    },
                    {
                      "key": "status",
                      "value": "",
                      "description": "Only leads with exactly this status (`new`, `contacted`, `do_not_call`…).",
                      "disabled": true
                    }
                  ]
                }
              },
              "status": "OK",
              "code": 200,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                },
                {
                  "key": "X-Request-Id",
                  "value": "00000000-0000-4000-8000-000000000000"
                }
              ],
              "body": "{\n  \"data\": [\n    {\n      \"id\": \"4b1e0d1a-3c4e-4d0a-9f2b-7e1a2b3c4d5e\",\n      \"first_name\": \"Avery\",\n      \"last_name\": \"Rivera\",\n      \"full_name\": \"Avery Rivera\",\n      \"phone_number\": \"+15551234567\",\n      \"email_address\": \"avery@example.com\",\n      \"status\": \"contacted\",\n      \"campaign_id\": \"0d2f6b1e-4a7c-4e8d-9b1a-2c3d4e5f6a7b\",\n      \"consent_source\": \"web_form\",\n      \"consented_at\": \"2026-10-02T16:58:00Z\",\n      \"created_at\": \"2026-10-02T17:03:11Z\",\n      \"updated_at\": \"2026-10-02T19:40:02Z\"\n    }\n  ],\n  \"limit\": 50,\n  \"offset\": 0\n}"
            },
            {
              "name": "401 — No key, or a key that is unknown, revoked or expired. `error` is one of",
              "originalRequest": {
                "method": "GET",
                "header": [
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "raw": "{{baseUrl}}/leads?limit=&offset=&campaign_id=&phone_number=&status=",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "leads"
                  ],
                  "query": [
                    {
                      "key": "limit",
                      "value": "50",
                      "description": "Page size. Default 50, maximum 200 (larger values are clamped to 200).",
                      "disabled": false
                    },
                    {
                      "key": "offset",
                      "value": "0",
                      "description": "Number of rows to skip. Default 0. Page by increasing `offset` by `limit` until `data` comes back shorter than `limit`.",
                      "disabled": false
                    },
                    {
                      "key": "campaign_id",
                      "value": "",
                      "description": "Only leads attached to this campaign.",
                      "disabled": true
                    },
                    {
                      "key": "phone_number",
                      "value": "",
                      "description": "One lead by phone number, in any format (it is canonicalised to E.164 before matching). The quickest way to look a lead up before creating one.",
                      "disabled": true
                    },
                    {
                      "key": "status",
                      "value": "",
                      "description": "Only leads with exactly this status (`new`, `contacted`, `do_not_call`…).",
                      "disabled": true
                    }
                  ]
                }
              },
              "status": "No key, or a key that is unknown, revoke",
              "code": 401,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                },
                {
                  "key": "X-Request-Id",
                  "value": "00000000-0000-4000-8000-000000000000"
                }
              ],
              "body": "{\n  \"error\": \"invalid_api_key\",\n  \"request_id\": \"0f3b9c1e-6d2a-4b7f-8e1c-5a9d2b4c6e80\"\n}"
            },
            {
              "name": "403 — The key does not carry the scope this operation needs. `required` names the miss",
              "originalRequest": {
                "method": "GET",
                "header": [
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "raw": "{{baseUrl}}/leads?limit=&offset=&campaign_id=&phone_number=&status=",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "leads"
                  ],
                  "query": [
                    {
                      "key": "limit",
                      "value": "50",
                      "description": "Page size. Default 50, maximum 200 (larger values are clamped to 200).",
                      "disabled": false
                    },
                    {
                      "key": "offset",
                      "value": "0",
                      "description": "Number of rows to skip. Default 0. Page by increasing `offset` by `limit` until `data` comes back shorter than `limit`.",
                      "disabled": false
                    },
                    {
                      "key": "campaign_id",
                      "value": "",
                      "description": "Only leads attached to this campaign.",
                      "disabled": true
                    },
                    {
                      "key": "phone_number",
                      "value": "",
                      "description": "One lead by phone number, in any format (it is canonicalised to E.164 before matching). The quickest way to look a lead up before creating one.",
                      "disabled": true
                    },
                    {
                      "key": "status",
                      "value": "",
                      "description": "Only leads with exactly this status (`new`, `contacted`, `do_not_call`…).",
                      "disabled": true
                    }
                  ]
                }
              },
              "status": "The key does not carry the scope this op",
              "code": 403,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                },
                {
                  "key": "X-Request-Id",
                  "value": "00000000-0000-4000-8000-000000000000"
                }
              ],
              "body": "{\n  \"error\": \"insufficient_scope\",\n  \"message\": \"This key does not have the leads:write scope.\",\n  \"required\": \"leads:write\",\n  \"request_id\": \"0f3b9c1e-6d2a-4b7f-8e1c-5a9d2b4c6e80\"\n}"
            },
            {
              "name": "429 — Too many requests for this key in the current minute. Wait `Retry-After` seconds",
              "originalRequest": {
                "method": "GET",
                "header": [
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "raw": "{{baseUrl}}/leads?limit=&offset=&campaign_id=&phone_number=&status=",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "leads"
                  ],
                  "query": [
                    {
                      "key": "limit",
                      "value": "50",
                      "description": "Page size. Default 50, maximum 200 (larger values are clamped to 200).",
                      "disabled": false
                    },
                    {
                      "key": "offset",
                      "value": "0",
                      "description": "Number of rows to skip. Default 0. Page by increasing `offset` by `limit` until `data` comes back shorter than `limit`.",
                      "disabled": false
                    },
                    {
                      "key": "campaign_id",
                      "value": "",
                      "description": "Only leads attached to this campaign.",
                      "disabled": true
                    },
                    {
                      "key": "phone_number",
                      "value": "",
                      "description": "One lead by phone number, in any format (it is canonicalised to E.164 before matching). The quickest way to look a lead up before creating one.",
                      "disabled": true
                    },
                    {
                      "key": "status",
                      "value": "",
                      "description": "Only leads with exactly this status (`new`, `contacted`, `do_not_call`…).",
                      "disabled": true
                    }
                  ]
                }
              },
              "status": "Too many requests for this key in the cu",
              "code": 429,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                },
                {
                  "key": "X-Request-Id",
                  "value": "00000000-0000-4000-8000-000000000000"
                }
              ],
              "body": "{\n  \"error\": \"rate_limited\",\n  \"message\": \"This key is limited to 60 requests per minute. Retry in 3s.\",\n  \"retry_after_seconds\": 3,\n  \"request_id\": \"0f3b9c1e-6d2a-4b7f-8e1c-5a9d2b4c6e80\"\n}"
            },
            {
              "name": "500 — `internal_error` — something failed on Lojiq's side. The detail is in Lojiq's lo",
              "originalRequest": {
                "method": "GET",
                "header": [
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "raw": "{{baseUrl}}/leads?limit=&offset=&campaign_id=&phone_number=&status=",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "leads"
                  ],
                  "query": [
                    {
                      "key": "limit",
                      "value": "50",
                      "description": "Page size. Default 50, maximum 200 (larger values are clamped to 200).",
                      "disabled": false
                    },
                    {
                      "key": "offset",
                      "value": "0",
                      "description": "Number of rows to skip. Default 0. Page by increasing `offset` by `limit` until `data` comes back shorter than `limit`.",
                      "disabled": false
                    },
                    {
                      "key": "campaign_id",
                      "value": "",
                      "description": "Only leads attached to this campaign.",
                      "disabled": true
                    },
                    {
                      "key": "phone_number",
                      "value": "",
                      "description": "One lead by phone number, in any format (it is canonicalised to E.164 before matching). The quickest way to look a lead up before creating one.",
                      "disabled": true
                    },
                    {
                      "key": "status",
                      "value": "",
                      "description": "Only leads with exactly this status (`new`, `contacted`, `do_not_call`…).",
                      "disabled": true
                    }
                  ]
                }
              },
              "status": "`internal_error` — something failed on L",
              "code": 500,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                },
                {
                  "key": "X-Request-Id",
                  "value": "00000000-0000-4000-8000-000000000000"
                }
              ],
              "body": "{\n  \"error\": \"internal_error\",\n  \"message\": \"Something went wrong on our side. Retry\",\n  \"or contact support with the request_id.\": null,\n  \"request_id\": \"0f3b9c1e-6d2a-4b7f-8e1c-5a9d2b4c6e80\"\n}"
            }
          ]
        },
        {
          "name": "Create a lead  ·  POST /leads",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Accept",
                "value": "application/json"
              },
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "url": {
              "raw": "{{baseUrl}}/leads",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "leads"
              ]
            },
            "description": "**Scope:** `leads:write`\n\nCreates a lead, or updates the existing lead with the same `phone_number` in your organization.\nScope: `leads:write`.\n\n**Deduplication.** The phone number is canonicalised to E.164 (`5551234567` → `+15551234567`) and compared with\nyour organization's leads. A match updates that lead with the fields you sent and answers **`200`**; no match\ninserts and answers **`201`**. On a match, fields you omit are kept — except `status` and `consent_source`, which\ntake their defaults (`new`, `public_api`) on every create call. To change one field of an existing lead without\ntouching the rest, use `PATCH /leads/{id}`.\n\n**Retries.** Send an `Idempotency-Key` and a retried request returns the first answer instead of running again.\nWithout one, retrying is still safe: the second call deduplicates and answers `200`.\n\n**Events.** `lead.created` on insert, `lead.updated` on dedupe, both with `{ lead_id, deduped, source: \"public_api\" }`.\n\n**Consent.** `consent_source` defaults to `public_api`. Send `consented_at` whenever you have it; AI and\nautodialed outreach needs prior express written consent in the US (see the Leads guide).\n",
            "body": {
              "mode": "raw",
              "raw": "{\n  \"phone_number\": \"+15551234567\",\n  \"first_name\": \"Avery\",\n  \"last_name\": \"Rivera\",\n  \"email_address\": \"avery@example.com\",\n  \"consent_source\": \"web_form\",\n  \"consented_at\": \"2026-10-02T16:58:00Z\"\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            }
          },
          "response": [
            {
              "name": "201 — Created. The full lead record.",
              "originalRequest": {
                "method": "POST",
                "header": [
                  {
                    "key": "Accept",
                    "value": "application/json"
                  },
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "raw": "{{baseUrl}}/leads",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "leads"
                  ]
                },
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"phone_number\": \"+15551234567\",\n  \"first_name\": \"Avery\",\n  \"last_name\": \"Rivera\",\n  \"email_address\": \"avery@example.com\",\n  \"consent_source\": \"web_form\",\n  \"consented_at\": \"2026-10-02T16:58:00Z\"\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "status": "Created. The full lead record.",
              "code": 201,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                },
                {
                  "key": "X-Request-Id",
                  "value": "00000000-0000-4000-8000-000000000000"
                }
              ],
              "body": "{\n  \"id\": \"4b1e0d1a-3c4e-4d0a-9f2b-7e1a2b3c4d5e\",\n  \"first_name\": \"Avery\",\n  \"last_name\": \"Rivera\",\n  \"full_name\": \"Avery Rivera\",\n  \"phone_number\": \"+15551234567\",\n  \"email_address\": \"avery@example.com\",\n  \"status\": \"new\",\n  \"campaign_id\": null,\n  \"consent_source\": \"web_form\",\n  \"consented_at\": \"2026-10-02T16:58:00Z\",\n  \"credit_score\": null,\n  \"annual_income\": null,\n  \"notes\": null,\n  \"source_tag\": \"api:standalone\",\n  \"created_at\": \"2026-10-02T17:03:11Z\",\n  \"updated_at\": null\n}"
            },
            {
              "name": "200 — An existing lead with this phone number was updated instead. The full lead recor",
              "originalRequest": {
                "method": "POST",
                "header": [
                  {
                    "key": "Accept",
                    "value": "application/json"
                  },
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "raw": "{{baseUrl}}/leads",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "leads"
                  ]
                },
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"phone_number\": \"+15551234567\",\n  \"first_name\": \"Avery\",\n  \"last_name\": \"Rivera\",\n  \"email_address\": \"avery@example.com\",\n  \"consent_source\": \"web_form\",\n  \"consented_at\": \"2026-10-02T16:58:00Z\"\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "status": "An existing lead with this phone number ",
              "code": 200,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                },
                {
                  "key": "X-Request-Id",
                  "value": "00000000-0000-4000-8000-000000000000"
                }
              ],
              "body": "{\n  \"id\": \"4b1e0d1a-3c4e-4d0a-9f2b-7e1a2b3c4d5e\",\n  \"first_name\": \"Avery\",\n  \"last_name\": \"Rivera\",\n  \"full_name\": \"Avery Rivera\",\n  \"phone_number\": \"+15551234567\",\n  \"email_address\": \"avery@example.com\",\n  \"status\": \"new\",\n  \"campaign_id\": null,\n  \"consent_source\": \"web_form\",\n  \"consented_at\": \"2026-10-02T16:58:00Z\",\n  \"credit_score\": null,\n  \"annual_income\": null,\n  \"notes\": null,\n  \"source_tag\": \"api:standalone\",\n  \"created_at\": \"2026-10-02T17:03:11Z\",\n  \"updated_at\": null\n}"
            },
            {
              "name": "400 — `invalid_phone_number`, `unknown_field:<name>`, `invalid_request` (a field has t",
              "originalRequest": {
                "method": "POST",
                "header": [
                  {
                    "key": "Accept",
                    "value": "application/json"
                  },
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "raw": "{{baseUrl}}/leads",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "leads"
                  ]
                },
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"phone_number\": \"+15551234567\",\n  \"first_name\": \"Avery\",\n  \"last_name\": \"Rivera\",\n  \"email_address\": \"avery@example.com\",\n  \"consent_source\": \"web_form\",\n  \"consented_at\": \"2026-10-02T16:58:00Z\"\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "status": "`invalid_phone_number`, `unknown_field:<",
              "code": 400,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                },
                {
                  "key": "X-Request-Id",
                  "value": "00000000-0000-4000-8000-000000000000"
                }
              ],
              "body": "{\n  \"error\": \"invalid_phone_number\",\n  \"message\": \"phone_number is required: 10-15 digits, E.164 preferred (+15551234567).\",\n  \"request_id\": \"0f3b9c1e-6d2a-4b7f-8e1c-5a9d2b4c6e80\"\n}"
            },
            {
              "name": "401 — No key, or a key that is unknown, revoked or expired. `error` is one of",
              "originalRequest": {
                "method": "POST",
                "header": [
                  {
                    "key": "Accept",
                    "value": "application/json"
                  },
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "raw": "{{baseUrl}}/leads",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "leads"
                  ]
                },
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"phone_number\": \"+15551234567\",\n  \"first_name\": \"Avery\",\n  \"last_name\": \"Rivera\",\n  \"email_address\": \"avery@example.com\",\n  \"consent_source\": \"web_form\",\n  \"consented_at\": \"2026-10-02T16:58:00Z\"\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "status": "No key, or a key that is unknown, revoke",
              "code": 401,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                },
                {
                  "key": "X-Request-Id",
                  "value": "00000000-0000-4000-8000-000000000000"
                }
              ],
              "body": "{\n  \"error\": \"invalid_api_key\",\n  \"request_id\": \"0f3b9c1e-6d2a-4b7f-8e1c-5a9d2b4c6e80\"\n}"
            },
            {
              "name": "403 — The key does not carry the scope this operation needs. `required` names the miss",
              "originalRequest": {
                "method": "POST",
                "header": [
                  {
                    "key": "Accept",
                    "value": "application/json"
                  },
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "raw": "{{baseUrl}}/leads",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "leads"
                  ]
                },
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"phone_number\": \"+15551234567\",\n  \"first_name\": \"Avery\",\n  \"last_name\": \"Rivera\",\n  \"email_address\": \"avery@example.com\",\n  \"consent_source\": \"web_form\",\n  \"consented_at\": \"2026-10-02T16:58:00Z\"\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "status": "The key does not carry the scope this op",
              "code": 403,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                },
                {
                  "key": "X-Request-Id",
                  "value": "00000000-0000-4000-8000-000000000000"
                }
              ],
              "body": "{\n  \"error\": \"insufficient_scope\",\n  \"message\": \"This key does not have the leads:write scope.\",\n  \"required\": \"leads:write\",\n  \"request_id\": \"0f3b9c1e-6d2a-4b7f-8e1c-5a9d2b4c6e80\"\n}"
            },
            {
              "name": "404 — `campaign_not_found` — the `campaign_id` is not one of your campaigns.",
              "originalRequest": {
                "method": "POST",
                "header": [
                  {
                    "key": "Accept",
                    "value": "application/json"
                  },
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "raw": "{{baseUrl}}/leads",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "leads"
                  ]
                },
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"phone_number\": \"+15551234567\",\n  \"first_name\": \"Avery\",\n  \"last_name\": \"Rivera\",\n  \"email_address\": \"avery@example.com\",\n  \"consent_source\": \"web_form\",\n  \"consented_at\": \"2026-10-02T16:58:00Z\"\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "status": "`campaign_not_found` — the `campaign_id`",
              "code": 404,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                },
                {
                  "key": "X-Request-Id",
                  "value": "00000000-0000-4000-8000-000000000000"
                }
              ],
              "body": "{\n  \"error\": \"campaign_not_found\",\n  \"message\": \"No campaign with that id in your organization.\",\n  \"request_id\": \"0f3b9c1e-6d2a-4b7f-8e1c-5a9d2b4c6e80\"\n}"
            },
            {
              "name": "409 — `idempotency_in_progress` — a request with this `Idempotency-Key` is still runni",
              "originalRequest": {
                "method": "POST",
                "header": [
                  {
                    "key": "Accept",
                    "value": "application/json"
                  },
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "raw": "{{baseUrl}}/leads",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "leads"
                  ]
                },
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"phone_number\": \"+15551234567\",\n  \"first_name\": \"Avery\",\n  \"last_name\": \"Rivera\",\n  \"email_address\": \"avery@example.com\",\n  \"consent_source\": \"web_form\",\n  \"consented_at\": \"2026-10-02T16:58:00Z\"\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "status": "`idempotency_in_progress` — a request wi",
              "code": 409,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                },
                {
                  "key": "X-Request-Id",
                  "value": "00000000-0000-4000-8000-000000000000"
                }
              ],
              "body": "{\n  \"error\": \"idempotency_in_progress\",\n  \"message\": \"A request with this Idempotency-Key is still being processed. Retry in a moment.\",\n  \"request_id\": \"0f3b9c1e-6d2a-4b7f-8e1c-5a9d2b4c6e80\"\n}"
            },
            {
              "name": "422 — `idempotency_key_reused` — this `Idempotency-Key` was already used with a differ",
              "originalRequest": {
                "method": "POST",
                "header": [
                  {
                    "key": "Accept",
                    "value": "application/json"
                  },
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "raw": "{{baseUrl}}/leads",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "leads"
                  ]
                },
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"phone_number\": \"+15551234567\",\n  \"first_name\": \"Avery\",\n  \"last_name\": \"Rivera\",\n  \"email_address\": \"avery@example.com\",\n  \"consent_source\": \"web_form\",\n  \"consented_at\": \"2026-10-02T16:58:00Z\"\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "status": "`idempotency_key_reused` — this `Idempot",
              "code": 422,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                },
                {
                  "key": "X-Request-Id",
                  "value": "00000000-0000-4000-8000-000000000000"
                }
              ],
              "body": "{\n  \"error\": \"idempotency_key_reused\",\n  \"request_id\": \"0f3b9c1e-6d2a-4b7f-8e1c-5a9d2b4c6e80\"\n}"
            },
            {
              "name": "429 — Too many requests for this key in the current minute. Wait `Retry-After` seconds",
              "originalRequest": {
                "method": "POST",
                "header": [
                  {
                    "key": "Accept",
                    "value": "application/json"
                  },
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "raw": "{{baseUrl}}/leads",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "leads"
                  ]
                },
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"phone_number\": \"+15551234567\",\n  \"first_name\": \"Avery\",\n  \"last_name\": \"Rivera\",\n  \"email_address\": \"avery@example.com\",\n  \"consent_source\": \"web_form\",\n  \"consented_at\": \"2026-10-02T16:58:00Z\"\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "status": "Too many requests for this key in the cu",
              "code": 429,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                },
                {
                  "key": "X-Request-Id",
                  "value": "00000000-0000-4000-8000-000000000000"
                }
              ],
              "body": "{\n  \"error\": \"rate_limited\",\n  \"message\": \"This key is limited to 60 requests per minute. Retry in 3s.\",\n  \"retry_after_seconds\": 3,\n  \"request_id\": \"0f3b9c1e-6d2a-4b7f-8e1c-5a9d2b4c6e80\"\n}"
            },
            {
              "name": "500 — `internal_error` — something failed on Lojiq's side. The detail is in Lojiq's lo",
              "originalRequest": {
                "method": "POST",
                "header": [
                  {
                    "key": "Accept",
                    "value": "application/json"
                  },
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "raw": "{{baseUrl}}/leads",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "leads"
                  ]
                },
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"phone_number\": \"+15551234567\",\n  \"first_name\": \"Avery\",\n  \"last_name\": \"Rivera\",\n  \"email_address\": \"avery@example.com\",\n  \"consent_source\": \"web_form\",\n  \"consented_at\": \"2026-10-02T16:58:00Z\"\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "status": "`internal_error` — something failed on L",
              "code": 500,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                },
                {
                  "key": "X-Request-Id",
                  "value": "00000000-0000-4000-8000-000000000000"
                }
              ],
              "body": "{\n  \"error\": \"internal_error\",\n  \"message\": \"Something went wrong on our side. Retry\",\n  \"or contact support with the request_id.\": null,\n  \"request_id\": \"0f3b9c1e-6d2a-4b7f-8e1c-5a9d2b4c6e80\"\n}"
            }
          ]
        },
        {
          "name": "Get a lead  ·  GET /leads/{id}",
          "request": {
            "method": "GET",
            "header": [
              {
                "key": "Accept",
                "value": "application/json"
              }
            ],
            "url": {
              "raw": "{{baseUrl}}/leads/:id",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "leads",
                ":id"
              ],
              "variable": [
                {
                  "key": "id",
                  "value": "4b1e0d1a-3c4e-4d0a-9f2b-7e1a2b3c4d5e",
                  "description": "Resource id (UUID)."
                }
              ]
            },
            "description": "**Scope:** `leads:read`\n\nThe full stored lead record. Scope: `leads:read`."
          },
          "response": [
            {
              "name": "200 — OK",
              "originalRequest": {
                "method": "GET",
                "header": [
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "raw": "{{baseUrl}}/leads/:id",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "leads",
                    ":id"
                  ],
                  "variable": [
                    {
                      "key": "id",
                      "value": "4b1e0d1a-3c4e-4d0a-9f2b-7e1a2b3c4d5e",
                      "description": "Resource id (UUID)."
                    }
                  ]
                }
              },
              "status": "OK",
              "code": 200,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                },
                {
                  "key": "X-Request-Id",
                  "value": "00000000-0000-4000-8000-000000000000"
                }
              ],
              "body": "{\n  \"id\": \"4b1e0d1a-3c4e-4d0a-9f2b-7e1a2b3c4d5e\",\n  \"first_name\": \"Avery\",\n  \"last_name\": \"Rivera\",\n  \"full_name\": \"Avery Rivera\",\n  \"phone_number\": \"+15551234567\",\n  \"email_address\": \"avery@example.com\",\n  \"status\": \"new\",\n  \"campaign_id\": null,\n  \"consent_source\": \"web_form\",\n  \"consented_at\": \"2026-10-02T16:58:00Z\",\n  \"credit_score\": null,\n  \"annual_income\": null,\n  \"notes\": null,\n  \"source_tag\": \"api:standalone\",\n  \"created_at\": \"2026-10-02T17:03:11Z\",\n  \"updated_at\": null\n}"
            },
            {
              "name": "401 — No key, or a key that is unknown, revoked or expired. `error` is one of",
              "originalRequest": {
                "method": "GET",
                "header": [
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "raw": "{{baseUrl}}/leads/:id",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "leads",
                    ":id"
                  ],
                  "variable": [
                    {
                      "key": "id",
                      "value": "4b1e0d1a-3c4e-4d0a-9f2b-7e1a2b3c4d5e",
                      "description": "Resource id (UUID)."
                    }
                  ]
                }
              },
              "status": "No key, or a key that is unknown, revoke",
              "code": 401,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                },
                {
                  "key": "X-Request-Id",
                  "value": "00000000-0000-4000-8000-000000000000"
                }
              ],
              "body": "{\n  \"error\": \"invalid_api_key\",\n  \"request_id\": \"0f3b9c1e-6d2a-4b7f-8e1c-5a9d2b4c6e80\"\n}"
            },
            {
              "name": "403 — The key does not carry the scope this operation needs. `required` names the miss",
              "originalRequest": {
                "method": "GET",
                "header": [
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "raw": "{{baseUrl}}/leads/:id",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "leads",
                    ":id"
                  ],
                  "variable": [
                    {
                      "key": "id",
                      "value": "4b1e0d1a-3c4e-4d0a-9f2b-7e1a2b3c4d5e",
                      "description": "Resource id (UUID)."
                    }
                  ]
                }
              },
              "status": "The key does not carry the scope this op",
              "code": 403,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                },
                {
                  "key": "X-Request-Id",
                  "value": "00000000-0000-4000-8000-000000000000"
                }
              ],
              "body": "{\n  \"error\": \"insufficient_scope\",\n  \"message\": \"This key does not have the leads:write scope.\",\n  \"required\": \"leads:write\",\n  \"request_id\": \"0f3b9c1e-6d2a-4b7f-8e1c-5a9d2b4c6e80\"\n}"
            },
            {
              "name": "404 — No such resource in your organization (ids from other organizations also answer ",
              "originalRequest": {
                "method": "GET",
                "header": [
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "raw": "{{baseUrl}}/leads/:id",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "leads",
                    ":id"
                  ],
                  "variable": [
                    {
                      "key": "id",
                      "value": "4b1e0d1a-3c4e-4d0a-9f2b-7e1a2b3c4d5e",
                      "description": "Resource id (UUID)."
                    }
                  ]
                }
              },
              "status": "No such resource in your organization (i",
              "code": 404,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                },
                {
                  "key": "X-Request-Id",
                  "value": "00000000-0000-4000-8000-000000000000"
                }
              ],
              "body": "{\n  \"error\": \"not_found\",\n  \"request_id\": \"0f3b9c1e-6d2a-4b7f-8e1c-5a9d2b4c6e80\"\n}"
            },
            {
              "name": "429 — Too many requests for this key in the current minute. Wait `Retry-After` seconds",
              "originalRequest": {
                "method": "GET",
                "header": [
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "raw": "{{baseUrl}}/leads/:id",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "leads",
                    ":id"
                  ],
                  "variable": [
                    {
                      "key": "id",
                      "value": "4b1e0d1a-3c4e-4d0a-9f2b-7e1a2b3c4d5e",
                      "description": "Resource id (UUID)."
                    }
                  ]
                }
              },
              "status": "Too many requests for this key in the cu",
              "code": 429,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                },
                {
                  "key": "X-Request-Id",
                  "value": "00000000-0000-4000-8000-000000000000"
                }
              ],
              "body": "{\n  \"error\": \"rate_limited\",\n  \"message\": \"This key is limited to 60 requests per minute. Retry in 3s.\",\n  \"retry_after_seconds\": 3,\n  \"request_id\": \"0f3b9c1e-6d2a-4b7f-8e1c-5a9d2b4c6e80\"\n}"
            },
            {
              "name": "500 — `internal_error` — something failed on Lojiq's side. The detail is in Lojiq's lo",
              "originalRequest": {
                "method": "GET",
                "header": [
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "raw": "{{baseUrl}}/leads/:id",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "leads",
                    ":id"
                  ],
                  "variable": [
                    {
                      "key": "id",
                      "value": "4b1e0d1a-3c4e-4d0a-9f2b-7e1a2b3c4d5e",
                      "description": "Resource id (UUID)."
                    }
                  ]
                }
              },
              "status": "`internal_error` — something failed on L",
              "code": 500,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                },
                {
                  "key": "X-Request-Id",
                  "value": "00000000-0000-4000-8000-000000000000"
                }
              ],
              "body": "{\n  \"error\": \"internal_error\",\n  \"message\": \"Something went wrong on our side. Retry\",\n  \"or contact support with the request_id.\": null,\n  \"request_id\": \"0f3b9c1e-6d2a-4b7f-8e1c-5a9d2b4c6e80\"\n}"
            }
          ]
        },
        {
          "name": "Update a lead  ·  PATCH /leads/{id}",
          "request": {
            "method": "PATCH",
            "header": [
              {
                "key": "Accept",
                "value": "application/json"
              },
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "url": {
              "raw": "{{baseUrl}}/leads/:id",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "leads",
                ":id"
              ],
              "variable": [
                {
                  "key": "id",
                  "value": "4b1e0d1a-3c4e-4d0a-9f2b-7e1a2b3c4d5e",
                  "description": "Resource id (UUID)."
                }
              ]
            },
            "description": "**Scope:** `leads:write`\n\nPartial update. Scope: `leads:write`.\n\nChanging `status` emits `lead.disposition_changed`; any other change emits `lead.updated` — both with\n`{ lead_id, changes: [the field names you sent], source: \"public_api\" }`. Only the listed fields are accepted\n(`400 unknown_field:<name>`); `phone_number` cannot be changed (`400 phone_number_immutable`); an empty body is\n`400 nothing_to_update`. A lead that is not in your organization answers `404 not_found`.\n",
            "body": {
              "mode": "raw",
              "raw": "{\n  \"status\": \"do_not_call\"\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            }
          },
          "response": [
            {
              "name": "200 — The updated lead record.",
              "originalRequest": {
                "method": "PATCH",
                "header": [
                  {
                    "key": "Accept",
                    "value": "application/json"
                  },
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "raw": "{{baseUrl}}/leads/:id",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "leads",
                    ":id"
                  ],
                  "variable": [
                    {
                      "key": "id",
                      "value": "4b1e0d1a-3c4e-4d0a-9f2b-7e1a2b3c4d5e",
                      "description": "Resource id (UUID)."
                    }
                  ]
                },
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"status\": \"do_not_call\"\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "status": "The updated lead record.",
              "code": 200,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                },
                {
                  "key": "X-Request-Id",
                  "value": "00000000-0000-4000-8000-000000000000"
                }
              ],
              "body": "{\n  \"id\": \"4b1e0d1a-3c4e-4d0a-9f2b-7e1a2b3c4d5e\",\n  \"first_name\": \"Avery\",\n  \"last_name\": \"Rivera\",\n  \"full_name\": \"Avery Rivera\",\n  \"phone_number\": \"+15551234567\",\n  \"email_address\": \"avery@example.com\",\n  \"status\": \"new\",\n  \"campaign_id\": null,\n  \"consent_source\": \"web_form\",\n  \"consented_at\": \"2026-10-02T16:58:00Z\",\n  \"credit_score\": null,\n  \"annual_income\": null,\n  \"notes\": null,\n  \"source_tag\": \"api:standalone\",\n  \"created_at\": \"2026-10-02T17:03:11Z\",\n  \"updated_at\": null\n}"
            },
            {
              "name": "400 — `unknown_field:<name>`, `phone_number_immutable`, `nothing_to_update`, `invalid_",
              "originalRequest": {
                "method": "PATCH",
                "header": [
                  {
                    "key": "Accept",
                    "value": "application/json"
                  },
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "raw": "{{baseUrl}}/leads/:id",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "leads",
                    ":id"
                  ],
                  "variable": [
                    {
                      "key": "id",
                      "value": "4b1e0d1a-3c4e-4d0a-9f2b-7e1a2b3c4d5e",
                      "description": "Resource id (UUID)."
                    }
                  ]
                },
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"status\": \"do_not_call\"\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "status": "`unknown_field:<name>`, `phone_number_im",
              "code": 400,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                },
                {
                  "key": "X-Request-Id",
                  "value": "00000000-0000-4000-8000-000000000000"
                }
              ],
              "body": "{\n  \"error\": \"unknown_field:nickname\",\n  \"message\": \"Unknown field \\\"nickname\\\". Allowed: first_name, last_name, email_address, status, campaign_id, consent_source, consented_at, credit_score, annual_income, notes.\",\n  \"request_id\": \"0f3b9c1e-6d2a-4b7f-8e1c-5a9d2b4c6e80\"\n}"
            },
            {
              "name": "401 — No key, or a key that is unknown, revoked or expired. `error` is one of",
              "originalRequest": {
                "method": "PATCH",
                "header": [
                  {
                    "key": "Accept",
                    "value": "application/json"
                  },
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "raw": "{{baseUrl}}/leads/:id",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "leads",
                    ":id"
                  ],
                  "variable": [
                    {
                      "key": "id",
                      "value": "4b1e0d1a-3c4e-4d0a-9f2b-7e1a2b3c4d5e",
                      "description": "Resource id (UUID)."
                    }
                  ]
                },
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"status\": \"do_not_call\"\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "status": "No key, or a key that is unknown, revoke",
              "code": 401,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                },
                {
                  "key": "X-Request-Id",
                  "value": "00000000-0000-4000-8000-000000000000"
                }
              ],
              "body": "{\n  \"error\": \"invalid_api_key\",\n  \"request_id\": \"0f3b9c1e-6d2a-4b7f-8e1c-5a9d2b4c6e80\"\n}"
            },
            {
              "name": "403 — The key does not carry the scope this operation needs. `required` names the miss",
              "originalRequest": {
                "method": "PATCH",
                "header": [
                  {
                    "key": "Accept",
                    "value": "application/json"
                  },
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "raw": "{{baseUrl}}/leads/:id",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "leads",
                    ":id"
                  ],
                  "variable": [
                    {
                      "key": "id",
                      "value": "4b1e0d1a-3c4e-4d0a-9f2b-7e1a2b3c4d5e",
                      "description": "Resource id (UUID)."
                    }
                  ]
                },
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"status\": \"do_not_call\"\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "status": "The key does not carry the scope this op",
              "code": 403,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                },
                {
                  "key": "X-Request-Id",
                  "value": "00000000-0000-4000-8000-000000000000"
                }
              ],
              "body": "{\n  \"error\": \"insufficient_scope\",\n  \"message\": \"This key does not have the leads:write scope.\",\n  \"required\": \"leads:write\",\n  \"request_id\": \"0f3b9c1e-6d2a-4b7f-8e1c-5a9d2b4c6e80\"\n}"
            },
            {
              "name": "404 — `not_found` (no such lead in your organization) or `campaign_not_found` (the `ca",
              "originalRequest": {
                "method": "PATCH",
                "header": [
                  {
                    "key": "Accept",
                    "value": "application/json"
                  },
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "raw": "{{baseUrl}}/leads/:id",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "leads",
                    ":id"
                  ],
                  "variable": [
                    {
                      "key": "id",
                      "value": "4b1e0d1a-3c4e-4d0a-9f2b-7e1a2b3c4d5e",
                      "description": "Resource id (UUID)."
                    }
                  ]
                },
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"status\": \"do_not_call\"\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "status": "`not_found` (no such lead in your organi",
              "code": 404,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                },
                {
                  "key": "X-Request-Id",
                  "value": "00000000-0000-4000-8000-000000000000"
                }
              ],
              "body": "{\n  \"error\": \"not_found\",\n  \"request_id\": \"0f3b9c1e-6d2a-4b7f-8e1c-5a9d2b4c6e80\"\n}"
            },
            {
              "name": "429 — Too many requests for this key in the current minute. Wait `Retry-After` seconds",
              "originalRequest": {
                "method": "PATCH",
                "header": [
                  {
                    "key": "Accept",
                    "value": "application/json"
                  },
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "raw": "{{baseUrl}}/leads/:id",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "leads",
                    ":id"
                  ],
                  "variable": [
                    {
                      "key": "id",
                      "value": "4b1e0d1a-3c4e-4d0a-9f2b-7e1a2b3c4d5e",
                      "description": "Resource id (UUID)."
                    }
                  ]
                },
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"status\": \"do_not_call\"\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "status": "Too many requests for this key in the cu",
              "code": 429,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                },
                {
                  "key": "X-Request-Id",
                  "value": "00000000-0000-4000-8000-000000000000"
                }
              ],
              "body": "{\n  \"error\": \"rate_limited\",\n  \"message\": \"This key is limited to 60 requests per minute. Retry in 3s.\",\n  \"retry_after_seconds\": 3,\n  \"request_id\": \"0f3b9c1e-6d2a-4b7f-8e1c-5a9d2b4c6e80\"\n}"
            },
            {
              "name": "500 — `internal_error` — something failed on Lojiq's side. The detail is in Lojiq's lo",
              "originalRequest": {
                "method": "PATCH",
                "header": [
                  {
                    "key": "Accept",
                    "value": "application/json"
                  },
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "raw": "{{baseUrl}}/leads/:id",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "leads",
                    ":id"
                  ],
                  "variable": [
                    {
                      "key": "id",
                      "value": "4b1e0d1a-3c4e-4d0a-9f2b-7e1a2b3c4d5e",
                      "description": "Resource id (UUID)."
                    }
                  ]
                },
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"status\": \"do_not_call\"\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "status": "`internal_error` — something failed on L",
              "code": 500,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                },
                {
                  "key": "X-Request-Id",
                  "value": "00000000-0000-4000-8000-000000000000"
                }
              ],
              "body": "{\n  \"error\": \"internal_error\",\n  \"message\": \"Something went wrong on our side. Retry\",\n  \"or contact support with the request_id.\": null,\n  \"request_id\": \"0f3b9c1e-6d2a-4b7f-8e1c-5a9d2b4c6e80\"\n}"
            }
          ]
        },
        {
          "name": "Bulk import leads from CSV  ·  POST /leads/bulk",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Accept",
                "value": "application/json"
              },
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "url": {
              "raw": "{{baseUrl}}/leads/bulk",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "leads",
                "bulk"
              ]
            },
            "description": "**Scope:** `leads:write`\n\nImports a CSV in one request and answers `202` with a summary once every row has been processed\n(the import is synchronous; keep requests under roughly 5,000 rows and under 5,000,000 bytes of CSV —\nlarger bodies answer `413 payload_too_large`). Scope: `leads:write`.\n\n**Recommended flow:** `POST /leads/inspect-csv` first, then pass its `suggested_mapping` as `mapping`.\nWithout `mapping`, headers must already be the canonical column names.\n\nPer row: the phone number is normalized (10-digit US numbers get `+1`), deduplicated against your organization\nby phone, and inserted or updated. Rows without a usable phone number count as `failed`. `consent_source`\ndefaults to `csv_import` for rows without one. Each inserted row emits `lead.created`, each updated row\n`lead.updated`, with `{ lead_id, source: \"csv_import\", job_id }`.\n",
            "body": {
              "mode": "raw",
              "raw": "{\n  \"csv\": \"first_name,last_name,phone,email,opt_in_date\\nAvery,Rivera,(555) 123-4567,avery@example.com,2026-09-30\\n\",\n  \"mapping\": {\n    \"first_name\": \"first_name\",\n    \"last_name\": \"last_name\",\n    \"phone_number\": \"phone\",\n    \"email_address\": \"email\",\n    \"consented_at\": \"opt_in_date\"\n  },\n  \"campaign_id\": \"0d2f6b1e-4a7c-4e8d-9b1a-2c3d4e5f6a7b\"\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            }
          },
          "response": [
            {
              "name": "202 — Processed. Counts per outcome.",
              "originalRequest": {
                "method": "POST",
                "header": [
                  {
                    "key": "Accept",
                    "value": "application/json"
                  },
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "raw": "{{baseUrl}}/leads/bulk",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "leads",
                    "bulk"
                  ]
                },
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"csv\": \"first_name,last_name,phone,email,opt_in_date\\nAvery,Rivera,(555) 123-4567,avery@example.com,2026-09-30\\n\",\n  \"mapping\": {\n    \"first_name\": \"first_name\",\n    \"last_name\": \"last_name\",\n    \"phone_number\": \"phone\",\n    \"email_address\": \"email\",\n    \"consented_at\": \"opt_in_date\"\n  },\n  \"campaign_id\": \"0d2f6b1e-4a7c-4e8d-9b1a-2c3d4e5f6a7b\"\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "status": "Processed. Counts per outcome.",
              "code": 202,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                },
                {
                  "key": "X-Request-Id",
                  "value": "00000000-0000-4000-8000-000000000000"
                }
              ],
              "body": "{\n  \"job_id\": \"7b8c9d0e-1f2a-4b3c-8d4e-5f6a7b8c9d0e\",\n  \"total\": 120,\n  \"inserted\": 117,\n  \"updated\": 2,\n  \"skipped\": 0,\n  \"failed\": 1\n}"
            },
            {
              "name": "400 — `csv_required`, `unknown_field:<name>` (only `csv`, `mapping`, `campaign_id` are",
              "originalRequest": {
                "method": "POST",
                "header": [
                  {
                    "key": "Accept",
                    "value": "application/json"
                  },
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "raw": "{{baseUrl}}/leads/bulk",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "leads",
                    "bulk"
                  ]
                },
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"csv\": \"first_name,last_name,phone,email,opt_in_date\\nAvery,Rivera,(555) 123-4567,avery@example.com,2026-09-30\\n\",\n  \"mapping\": {\n    \"first_name\": \"first_name\",\n    \"last_name\": \"last_name\",\n    \"phone_number\": \"phone\",\n    \"email_address\": \"email\",\n    \"consented_at\": \"opt_in_date\"\n  },\n  \"campaign_id\": \"0d2f6b1e-4a7c-4e8d-9b1a-2c3d4e5f6a7b\"\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "status": "`csv_required`, `unknown_field:<name>` (",
              "code": 400,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                },
                {
                  "key": "X-Request-Id",
                  "value": "00000000-0000-4000-8000-000000000000"
                }
              ],
              "body": "{\n  \"error\": \"csv_required\",\n  \"message\": \"Send the file contents as a string in \\\"csv\\\".\",\n  \"request_id\": \"0f3b9c1e-6d2a-4b7f-8e1c-5a9d2b4c6e80\"\n}"
            },
            {
              "name": "401 — No key, or a key that is unknown, revoked or expired. `error` is one of",
              "originalRequest": {
                "method": "POST",
                "header": [
                  {
                    "key": "Accept",
                    "value": "application/json"
                  },
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "raw": "{{baseUrl}}/leads/bulk",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "leads",
                    "bulk"
                  ]
                },
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"csv\": \"first_name,last_name,phone,email,opt_in_date\\nAvery,Rivera,(555) 123-4567,avery@example.com,2026-09-30\\n\",\n  \"mapping\": {\n    \"first_name\": \"first_name\",\n    \"last_name\": \"last_name\",\n    \"phone_number\": \"phone\",\n    \"email_address\": \"email\",\n    \"consented_at\": \"opt_in_date\"\n  },\n  \"campaign_id\": \"0d2f6b1e-4a7c-4e8d-9b1a-2c3d4e5f6a7b\"\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "status": "No key, or a key that is unknown, revoke",
              "code": 401,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                },
                {
                  "key": "X-Request-Id",
                  "value": "00000000-0000-4000-8000-000000000000"
                }
              ],
              "body": "{\n  \"error\": \"invalid_api_key\",\n  \"request_id\": \"0f3b9c1e-6d2a-4b7f-8e1c-5a9d2b4c6e80\"\n}"
            },
            {
              "name": "403 — The key does not carry the scope this operation needs. `required` names the miss",
              "originalRequest": {
                "method": "POST",
                "header": [
                  {
                    "key": "Accept",
                    "value": "application/json"
                  },
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "raw": "{{baseUrl}}/leads/bulk",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "leads",
                    "bulk"
                  ]
                },
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"csv\": \"first_name,last_name,phone,email,opt_in_date\\nAvery,Rivera,(555) 123-4567,avery@example.com,2026-09-30\\n\",\n  \"mapping\": {\n    \"first_name\": \"first_name\",\n    \"last_name\": \"last_name\",\n    \"phone_number\": \"phone\",\n    \"email_address\": \"email\",\n    \"consented_at\": \"opt_in_date\"\n  },\n  \"campaign_id\": \"0d2f6b1e-4a7c-4e8d-9b1a-2c3d4e5f6a7b\"\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "status": "The key does not carry the scope this op",
              "code": 403,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                },
                {
                  "key": "X-Request-Id",
                  "value": "00000000-0000-4000-8000-000000000000"
                }
              ],
              "body": "{\n  \"error\": \"insufficient_scope\",\n  \"message\": \"This key does not have the leads:write scope.\",\n  \"required\": \"leads:write\",\n  \"request_id\": \"0f3b9c1e-6d2a-4b7f-8e1c-5a9d2b4c6e80\"\n}"
            },
            {
              "name": "404 — `campaign_not_found` — the `campaign_id` is not one of your campaigns.",
              "originalRequest": {
                "method": "POST",
                "header": [
                  {
                    "key": "Accept",
                    "value": "application/json"
                  },
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "raw": "{{baseUrl}}/leads/bulk",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "leads",
                    "bulk"
                  ]
                },
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"csv\": \"first_name,last_name,phone,email,opt_in_date\\nAvery,Rivera,(555) 123-4567,avery@example.com,2026-09-30\\n\",\n  \"mapping\": {\n    \"first_name\": \"first_name\",\n    \"last_name\": \"last_name\",\n    \"phone_number\": \"phone\",\n    \"email_address\": \"email\",\n    \"consented_at\": \"opt_in_date\"\n  },\n  \"campaign_id\": \"0d2f6b1e-4a7c-4e8d-9b1a-2c3d4e5f6a7b\"\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "status": "`campaign_not_found` — the `campaign_id`",
              "code": 404,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                },
                {
                  "key": "X-Request-Id",
                  "value": "00000000-0000-4000-8000-000000000000"
                }
              ],
              "body": "{\n  \"error\": \"campaign_not_found\",\n  \"request_id\": \"0f3b9c1e-6d2a-4b7f-8e1c-5a9d2b4c6e80\"\n}"
            },
            {
              "name": "413 — `payload_too_large` — `csv` is over 5,000,000 bytes. Split the file.",
              "originalRequest": {
                "method": "POST",
                "header": [
                  {
                    "key": "Accept",
                    "value": "application/json"
                  },
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "raw": "{{baseUrl}}/leads/bulk",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "leads",
                    "bulk"
                  ]
                },
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"csv\": \"first_name,last_name,phone,email,opt_in_date\\nAvery,Rivera,(555) 123-4567,avery@example.com,2026-09-30\\n\",\n  \"mapping\": {\n    \"first_name\": \"first_name\",\n    \"last_name\": \"last_name\",\n    \"phone_number\": \"phone\",\n    \"email_address\": \"email\",\n    \"consented_at\": \"opt_in_date\"\n  },\n  \"campaign_id\": \"0d2f6b1e-4a7c-4e8d-9b1a-2c3d4e5f6a7b\"\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "status": "`payload_too_large` — `csv` is over 5,00",
              "code": 413,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                },
                {
                  "key": "X-Request-Id",
                  "value": "00000000-0000-4000-8000-000000000000"
                }
              ],
              "body": "{\n  \"error\": \"payload_too_large\",\n  \"message\": \"csv is limited to 5000000 bytes per request. Split the file.\",\n  \"request_id\": \"0f3b9c1e-6d2a-4b7f-8e1c-5a9d2b4c6e80\"\n}"
            },
            {
              "name": "429 — Too many requests for this key in the current minute. Wait `Retry-After` seconds",
              "originalRequest": {
                "method": "POST",
                "header": [
                  {
                    "key": "Accept",
                    "value": "application/json"
                  },
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "raw": "{{baseUrl}}/leads/bulk",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "leads",
                    "bulk"
                  ]
                },
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"csv\": \"first_name,last_name,phone,email,opt_in_date\\nAvery,Rivera,(555) 123-4567,avery@example.com,2026-09-30\\n\",\n  \"mapping\": {\n    \"first_name\": \"first_name\",\n    \"last_name\": \"last_name\",\n    \"phone_number\": \"phone\",\n    \"email_address\": \"email\",\n    \"consented_at\": \"opt_in_date\"\n  },\n  \"campaign_id\": \"0d2f6b1e-4a7c-4e8d-9b1a-2c3d4e5f6a7b\"\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "status": "Too many requests for this key in the cu",
              "code": 429,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                },
                {
                  "key": "X-Request-Id",
                  "value": "00000000-0000-4000-8000-000000000000"
                }
              ],
              "body": "{\n  \"error\": \"rate_limited\",\n  \"message\": \"This key is limited to 60 requests per minute. Retry in 3s.\",\n  \"retry_after_seconds\": 3,\n  \"request_id\": \"0f3b9c1e-6d2a-4b7f-8e1c-5a9d2b4c6e80\"\n}"
            },
            {
              "name": "500 — `import_failed` — the import could not be started. Retry, or contact support wit",
              "originalRequest": {
                "method": "POST",
                "header": [
                  {
                    "key": "Accept",
                    "value": "application/json"
                  },
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "raw": "{{baseUrl}}/leads/bulk",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "leads",
                    "bulk"
                  ]
                },
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"csv\": \"first_name,last_name,phone,email,opt_in_date\\nAvery,Rivera,(555) 123-4567,avery@example.com,2026-09-30\\n\",\n  \"mapping\": {\n    \"first_name\": \"first_name\",\n    \"last_name\": \"last_name\",\n    \"phone_number\": \"phone\",\n    \"email_address\": \"email\",\n    \"consented_at\": \"opt_in_date\"\n  },\n  \"campaign_id\": \"0d2f6b1e-4a7c-4e8d-9b1a-2c3d4e5f6a7b\"\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "status": "`import_failed` — the import could not b",
              "code": 500,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                },
                {
                  "key": "X-Request-Id",
                  "value": "00000000-0000-4000-8000-000000000000"
                }
              ],
              "body": "{\n  \"error\": \"import_failed\",\n  \"request_id\": \"0f3b9c1e-6d2a-4b7f-8e1c-5a9d2b4c6e80\"\n}"
            }
          ]
        },
        {
          "name": "Preflight a CSV  ·  POST /leads/inspect-csv",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Accept",
                "value": "application/json"
              },
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "url": {
              "raw": "{{baseUrl}}/leads/inspect-csv",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "leads",
                "inspect-csv"
              ]
            },
            "description": "**Scope:** `leads:write`\n\nParses the CSV, auto-maps your headers onto Lojiq's lead columns using a built-in alias list, and reports what\nis unmapped or missing. Nothing is stored. Scope: `leads:write`.\n",
            "body": {
              "mode": "raw",
              "raw": "{\n  \"csv\": \"First,Last,Phone,Email\\nAvery,Rivera,5551234567,avery@example.com\\n\"\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            }
          },
          "response": [
            {
              "name": "200 — OK",
              "originalRequest": {
                "method": "POST",
                "header": [
                  {
                    "key": "Accept",
                    "value": "application/json"
                  },
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "raw": "{{baseUrl}}/leads/inspect-csv",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "leads",
                    "inspect-csv"
                  ]
                },
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"csv\": \"First,Last,Phone,Email\\nAvery,Rivera,5551234567,avery@example.com\\n\"\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "status": "OK",
              "code": 200,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                },
                {
                  "key": "X-Request-Id",
                  "value": "00000000-0000-4000-8000-000000000000"
                }
              ],
              "body": "{\n  \"total_rows\": 1,\n  \"headers\": [\n    \"First\",\n    \"Last\",\n    \"Phone\",\n    \"Email\"\n  ],\n  \"suggested_mapping\": {\n    \"first_name\": \"First\",\n    \"last_name\": \"Last\",\n    \"phone_number\": \"Phone\",\n    \"email_address\": \"Email\"\n  },\n  \"unmapped\": [],\n  \"missing_required\": [],\n  \"sample_rows\": [\n    {\n      \"First\": \"Avery\",\n      \"Last\": \"Rivera\",\n      \"Phone\": \"5551234567\",\n      \"Email\": \"avery@example.com\"\n    }\n  ]\n}"
            },
            {
              "name": "400 — `csv_required` (no `csv` string) or `invalid_csv` (the text could not be parsed)",
              "originalRequest": {
                "method": "POST",
                "header": [
                  {
                    "key": "Accept",
                    "value": "application/json"
                  },
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "raw": "{{baseUrl}}/leads/inspect-csv",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "leads",
                    "inspect-csv"
                  ]
                },
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"csv\": \"First,Last,Phone,Email\\nAvery,Rivera,5551234567,avery@example.com\\n\"\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "status": "`csv_required` (no `csv` string) or `inv",
              "code": 400,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                },
                {
                  "key": "X-Request-Id",
                  "value": "00000000-0000-4000-8000-000000000000"
                }
              ],
              "body": "{\n  \"error\": \"invalid_csv\",\n  \"message\": \"Unexpected quote at row 3.\",\n  \"request_id\": \"0f3b9c1e-6d2a-4b7f-8e1c-5a9d2b4c6e80\"\n}"
            },
            {
              "name": "401 — No key, or a key that is unknown, revoked or expired. `error` is one of",
              "originalRequest": {
                "method": "POST",
                "header": [
                  {
                    "key": "Accept",
                    "value": "application/json"
                  },
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "raw": "{{baseUrl}}/leads/inspect-csv",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "leads",
                    "inspect-csv"
                  ]
                },
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"csv\": \"First,Last,Phone,Email\\nAvery,Rivera,5551234567,avery@example.com\\n\"\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "status": "No key, or a key that is unknown, revoke",
              "code": 401,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                },
                {
                  "key": "X-Request-Id",
                  "value": "00000000-0000-4000-8000-000000000000"
                }
              ],
              "body": "{\n  \"error\": \"invalid_api_key\",\n  \"request_id\": \"0f3b9c1e-6d2a-4b7f-8e1c-5a9d2b4c6e80\"\n}"
            },
            {
              "name": "403 — The key does not carry the scope this operation needs. `required` names the miss",
              "originalRequest": {
                "method": "POST",
                "header": [
                  {
                    "key": "Accept",
                    "value": "application/json"
                  },
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "raw": "{{baseUrl}}/leads/inspect-csv",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "leads",
                    "inspect-csv"
                  ]
                },
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"csv\": \"First,Last,Phone,Email\\nAvery,Rivera,5551234567,avery@example.com\\n\"\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "status": "The key does not carry the scope this op",
              "code": 403,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                },
                {
                  "key": "X-Request-Id",
                  "value": "00000000-0000-4000-8000-000000000000"
                }
              ],
              "body": "{\n  \"error\": \"insufficient_scope\",\n  \"message\": \"This key does not have the leads:write scope.\",\n  \"required\": \"leads:write\",\n  \"request_id\": \"0f3b9c1e-6d2a-4b7f-8e1c-5a9d2b4c6e80\"\n}"
            },
            {
              "name": "413 — `payload_too_large` — `csv` is over 5,000,000 bytes.",
              "originalRequest": {
                "method": "POST",
                "header": [
                  {
                    "key": "Accept",
                    "value": "application/json"
                  },
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "raw": "{{baseUrl}}/leads/inspect-csv",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "leads",
                    "inspect-csv"
                  ]
                },
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"csv\": \"First,Last,Phone,Email\\nAvery,Rivera,5551234567,avery@example.com\\n\"\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "status": "`payload_too_large` — `csv` is over 5,00",
              "code": 413,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                },
                {
                  "key": "X-Request-Id",
                  "value": "00000000-0000-4000-8000-000000000000"
                }
              ],
              "body": "{\n  \"error\": \"invalid_phone_number\",\n  \"message\": \"phone_number is required: 10-15 digits, E.164 preferred (+15551234567).\",\n  \"request_id\": \"0f3b9c1e-6d2a-4b7f-8e1c-5a9d2b4c6e80\"\n}"
            },
            {
              "name": "429 — Too many requests for this key in the current minute. Wait `Retry-After` seconds",
              "originalRequest": {
                "method": "POST",
                "header": [
                  {
                    "key": "Accept",
                    "value": "application/json"
                  },
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "raw": "{{baseUrl}}/leads/inspect-csv",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "leads",
                    "inspect-csv"
                  ]
                },
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"csv\": \"First,Last,Phone,Email\\nAvery,Rivera,5551234567,avery@example.com\\n\"\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "status": "Too many requests for this key in the cu",
              "code": 429,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                },
                {
                  "key": "X-Request-Id",
                  "value": "00000000-0000-4000-8000-000000000000"
                }
              ],
              "body": "{\n  \"error\": \"rate_limited\",\n  \"message\": \"This key is limited to 60 requests per minute. Retry in 3s.\",\n  \"retry_after_seconds\": 3,\n  \"request_id\": \"0f3b9c1e-6d2a-4b7f-8e1c-5a9d2b4c6e80\"\n}"
            }
          ]
        },
        {
          "name": "Export leads as CSV  ·  GET /leads.csv",
          "request": {
            "method": "GET",
            "header": [
              {
                "key": "Accept",
                "value": "application/json"
              }
            ],
            "url": {
              "raw": "{{baseUrl}}/leads.csv?campaign_id=",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "leads.csv"
              ],
              "query": [
                {
                  "key": "campaign_id",
                  "value": "",
                  "description": "Only leads attached to this campaign.",
                  "disabled": true
                }
              ]
            },
            "description": "**Scope:** `leads:read`\n\nStreams every lead in your organization (or one campaign's) as a CSV attachment, oldest first.\nColumns: `first_name, last_name, phone_number, email_address, status, credit_score, annual_income,\nconsent_source, consented_at, created_at, lead_id`. Scope: `leads:read`.\n"
          },
          "response": [
            {
              "name": "200 — `text/csv; charset=utf-8`, `Content-Disposition: attachment; filename=\"lead-bank",
              "originalRequest": {
                "method": "GET",
                "header": [
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "raw": "{{baseUrl}}/leads.csv?campaign_id=",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "leads.csv"
                  ],
                  "query": [
                    {
                      "key": "campaign_id",
                      "value": "",
                      "description": "Only leads attached to this campaign.",
                      "disabled": true
                    }
                  ]
                }
              },
              "status": "`text/csv; charset=utf-8`, `Content-Disp",
              "code": 200,
              "_postman_previewlanguage": "text",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "text/csv"
                },
                {
                  "key": "X-Request-Id",
                  "value": "00000000-0000-4000-8000-000000000000"
                }
              ],
              "body": "first_name,last_name,phone_number,email_address,status,credit_score,annual_income,consent_source,consented_at,created_at,lead_id\nAvery,Rivera,+15551234567,avery@example.com,contacted,,,web_form,2026-10-02T16:58:00Z,2026-10-02T17:03:11Z,4b1e0d1a-3c4e-4d0a-9f2b-7e1a2b3c4d5e\n"
            },
            {
              "name": "401 — No key, or a key that is unknown, revoked or expired. `error` is one of",
              "originalRequest": {
                "method": "GET",
                "header": [
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "raw": "{{baseUrl}}/leads.csv?campaign_id=",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "leads.csv"
                  ],
                  "query": [
                    {
                      "key": "campaign_id",
                      "value": "",
                      "description": "Only leads attached to this campaign.",
                      "disabled": true
                    }
                  ]
                }
              },
              "status": "No key, or a key that is unknown, revoke",
              "code": 401,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                },
                {
                  "key": "X-Request-Id",
                  "value": "00000000-0000-4000-8000-000000000000"
                }
              ],
              "body": "{\n  \"error\": \"invalid_api_key\",\n  \"request_id\": \"0f3b9c1e-6d2a-4b7f-8e1c-5a9d2b4c6e80\"\n}"
            },
            {
              "name": "403 — The key does not carry the scope this operation needs. `required` names the miss",
              "originalRequest": {
                "method": "GET",
                "header": [
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "raw": "{{baseUrl}}/leads.csv?campaign_id=",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "leads.csv"
                  ],
                  "query": [
                    {
                      "key": "campaign_id",
                      "value": "",
                      "description": "Only leads attached to this campaign.",
                      "disabled": true
                    }
                  ]
                }
              },
              "status": "The key does not carry the scope this op",
              "code": 403,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                },
                {
                  "key": "X-Request-Id",
                  "value": "00000000-0000-4000-8000-000000000000"
                }
              ],
              "body": "{\n  \"error\": \"insufficient_scope\",\n  \"message\": \"This key does not have the leads:write scope.\",\n  \"required\": \"leads:write\",\n  \"request_id\": \"0f3b9c1e-6d2a-4b7f-8e1c-5a9d2b4c6e80\"\n}"
            },
            {
              "name": "404 — `campaign_not_found` — the `campaign_id` is not one of your campaigns.",
              "originalRequest": {
                "method": "GET",
                "header": [
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "raw": "{{baseUrl}}/leads.csv?campaign_id=",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "leads.csv"
                  ],
                  "query": [
                    {
                      "key": "campaign_id",
                      "value": "",
                      "description": "Only leads attached to this campaign.",
                      "disabled": true
                    }
                  ]
                }
              },
              "status": "`campaign_not_found` — the `campaign_id`",
              "code": 404,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                },
                {
                  "key": "X-Request-Id",
                  "value": "00000000-0000-4000-8000-000000000000"
                }
              ],
              "body": "{\n  \"error\": \"invalid_phone_number\",\n  \"message\": \"phone_number is required: 10-15 digits, E.164 preferred (+15551234567).\",\n  \"request_id\": \"0f3b9c1e-6d2a-4b7f-8e1c-5a9d2b4c6e80\"\n}"
            },
            {
              "name": "429 — Too many requests for this key in the current minute. Wait `Retry-After` seconds",
              "originalRequest": {
                "method": "GET",
                "header": [
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "raw": "{{baseUrl}}/leads.csv?campaign_id=",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "leads.csv"
                  ],
                  "query": [
                    {
                      "key": "campaign_id",
                      "value": "",
                      "description": "Only leads attached to this campaign.",
                      "disabled": true
                    }
                  ]
                }
              },
              "status": "Too many requests for this key in the cu",
              "code": 429,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                },
                {
                  "key": "X-Request-Id",
                  "value": "00000000-0000-4000-8000-000000000000"
                }
              ],
              "body": "{\n  \"error\": \"rate_limited\",\n  \"message\": \"This key is limited to 60 requests per minute. Retry in 3s.\",\n  \"retry_after_seconds\": 3,\n  \"request_id\": \"0f3b9c1e-6d2a-4b7f-8e1c-5a9d2b4c6e80\"\n}"
            },
            {
              "name": "500 — `export_failed`. Retry, or contact support with the `request_id`.",
              "originalRequest": {
                "method": "GET",
                "header": [
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "raw": "{{baseUrl}}/leads.csv?campaign_id=",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "leads.csv"
                  ],
                  "query": [
                    {
                      "key": "campaign_id",
                      "value": "",
                      "description": "Only leads attached to this campaign.",
                      "disabled": true
                    }
                  ]
                }
              },
              "status": "`export_failed`. Retry, or contact suppo",
              "code": 500,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                },
                {
                  "key": "X-Request-Id",
                  "value": "00000000-0000-4000-8000-000000000000"
                }
              ],
              "body": "{\n  \"error\": \"invalid_phone_number\",\n  \"message\": \"phone_number is required: 10-15 digits, E.164 preferred (+15551234567).\",\n  \"request_id\": \"0f3b9c1e-6d2a-4b7f-8e1c-5a9d2b4c6e80\"\n}"
            }
          ]
        }
      ]
    },
    {
      "name": "Contacts",
      "description": "Contacts are business contacts (people at a company) rather than dial-list leads.\n**Not yet available** on production — see each operation.\n",
      "item": [
        {
          "name": "List contacts  ·  GET /contacts",
          "request": {
            "method": "GET",
            "header": [
              {
                "key": "Accept",
                "value": "application/json"
              }
            ],
            "url": {
              "raw": "{{baseUrl}}/contacts?limit=&offset=",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "contacts"
              ],
              "query": [
                {
                  "key": "limit",
                  "value": "50",
                  "description": "Page size. Default 50, maximum 200 (larger values are clamped to 200).",
                  "disabled": false
                },
                {
                  "key": "offset",
                  "value": "0",
                  "description": "Number of rows to skip. Default 0. Page by increasing `offset` by `limit` until `data` comes back shorter than `limit`.",
                  "disabled": false
                }
              ]
            },
            "description": "**Scope:** `contacts:read`\n\n**Not yet available.** This endpoint answers `501 feature_unavailable` until the contacts store is\nprovisioned; use `/leads` meanwhile. Intended behaviour: newest first. Scope: `contacts:read`.\n"
          },
          "response": [
            {
              "name": "200 — OK (once available)",
              "originalRequest": {
                "method": "GET",
                "header": [
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "raw": "{{baseUrl}}/contacts?limit=&offset=",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "contacts"
                  ],
                  "query": [
                    {
                      "key": "limit",
                      "value": "50",
                      "description": "Page size. Default 50, maximum 200 (larger values are clamped to 200).",
                      "disabled": false
                    },
                    {
                      "key": "offset",
                      "value": "0",
                      "description": "Number of rows to skip. Default 0. Page by increasing `offset` by `limit` until `data` comes back shorter than `limit`.",
                      "disabled": false
                    }
                  ]
                }
              },
              "status": "OK (once available)",
              "code": 200,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                },
                {
                  "key": "X-Request-Id",
                  "value": "00000000-0000-4000-8000-000000000000"
                }
              ],
              "body": "{\n  \"data\": [\n    {\n      \"id\": \"9c8b7a6d-5e4f-4a3b-8c2d-1e0f9a8b7c6d\",\n      \"first_name\": \"Jordan\",\n      \"last_name\": \"Lee\",\n      \"phone_number\": \"+15557654321\",\n      \"email_address\": \"jordan@acme.example\",\n      \"company\": \"Acme Dental\",\n      \"role\": \"Office manager\",\n      \"created_at\": \"2026-10-02T17:03:11Z\"\n    }\n  ],\n  \"limit\": 50,\n  \"offset\": 0\n}"
            },
            {
              "name": "401 — No key, or a key that is unknown, revoked or expired. `error` is one of",
              "originalRequest": {
                "method": "GET",
                "header": [
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "raw": "{{baseUrl}}/contacts?limit=&offset=",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "contacts"
                  ],
                  "query": [
                    {
                      "key": "limit",
                      "value": "50",
                      "description": "Page size. Default 50, maximum 200 (larger values are clamped to 200).",
                      "disabled": false
                    },
                    {
                      "key": "offset",
                      "value": "0",
                      "description": "Number of rows to skip. Default 0. Page by increasing `offset` by `limit` until `data` comes back shorter than `limit`.",
                      "disabled": false
                    }
                  ]
                }
              },
              "status": "No key, or a key that is unknown, revoke",
              "code": 401,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                },
                {
                  "key": "X-Request-Id",
                  "value": "00000000-0000-4000-8000-000000000000"
                }
              ],
              "body": "{\n  \"error\": \"invalid_api_key\",\n  \"request_id\": \"0f3b9c1e-6d2a-4b7f-8e1c-5a9d2b4c6e80\"\n}"
            },
            {
              "name": "403 — The key does not carry the scope this operation needs. `required` names the miss",
              "originalRequest": {
                "method": "GET",
                "header": [
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "raw": "{{baseUrl}}/contacts?limit=&offset=",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "contacts"
                  ],
                  "query": [
                    {
                      "key": "limit",
                      "value": "50",
                      "description": "Page size. Default 50, maximum 200 (larger values are clamped to 200).",
                      "disabled": false
                    },
                    {
                      "key": "offset",
                      "value": "0",
                      "description": "Number of rows to skip. Default 0. Page by increasing `offset` by `limit` until `data` comes back shorter than `limit`.",
                      "disabled": false
                    }
                  ]
                }
              },
              "status": "The key does not carry the scope this op",
              "code": 403,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                },
                {
                  "key": "X-Request-Id",
                  "value": "00000000-0000-4000-8000-000000000000"
                }
              ],
              "body": "{\n  \"error\": \"insufficient_scope\",\n  \"message\": \"This key does not have the leads:write scope.\",\n  \"required\": \"leads:write\",\n  \"request_id\": \"0f3b9c1e-6d2a-4b7f-8e1c-5a9d2b4c6e80\"\n}"
            },
            {
              "name": "429 — Too many requests for this key in the current minute. Wait `Retry-After` seconds",
              "originalRequest": {
                "method": "GET",
                "header": [
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "raw": "{{baseUrl}}/contacts?limit=&offset=",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "contacts"
                  ],
                  "query": [
                    {
                      "key": "limit",
                      "value": "50",
                      "description": "Page size. Default 50, maximum 200 (larger values are clamped to 200).",
                      "disabled": false
                    },
                    {
                      "key": "offset",
                      "value": "0",
                      "description": "Number of rows to skip. Default 0. Page by increasing `offset` by `limit` until `data` comes back shorter than `limit`.",
                      "disabled": false
                    }
                  ]
                }
              },
              "status": "Too many requests for this key in the cu",
              "code": 429,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                },
                {
                  "key": "X-Request-Id",
                  "value": "00000000-0000-4000-8000-000000000000"
                }
              ],
              "body": "{\n  \"error\": \"rate_limited\",\n  \"message\": \"This key is limited to 60 requests per minute. Retry in 3s.\",\n  \"retry_after_seconds\": 3,\n  \"request_id\": \"0f3b9c1e-6d2a-4b7f-8e1c-5a9d2b4c6e80\"\n}"
            },
            {
              "name": "501 — `feature_unavailable` — this endpoint is not available on your account yet.",
              "originalRequest": {
                "method": "GET",
                "header": [
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "raw": "{{baseUrl}}/contacts?limit=&offset=",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "contacts"
                  ],
                  "query": [
                    {
                      "key": "limit",
                      "value": "50",
                      "description": "Page size. Default 50, maximum 200 (larger values are clamped to 200).",
                      "disabled": false
                    },
                    {
                      "key": "offset",
                      "value": "0",
                      "description": "Number of rows to skip. Default 0. Page by increasing `offset` by `limit` until `data` comes back shorter than `limit`.",
                      "disabled": false
                    }
                  ]
                }
              },
              "status": "`feature_unavailable` — this endpoint is",
              "code": 501,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                },
                {
                  "key": "X-Request-Id",
                  "value": "00000000-0000-4000-8000-000000000000"
                }
              ],
              "body": "{\n  \"error\": \"feature_unavailable\",\n  \"message\": \"Contacts are not available on this account. Use /leads.\",\n  \"request_id\": \"0f3b9c1e-6d2a-4b7f-8e1c-5a9d2b4c6e80\"\n}"
            }
          ]
        },
        {
          "name": "Create a contact  ·  POST /contacts",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Accept",
                "value": "application/json"
              },
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "url": {
              "raw": "{{baseUrl}}/contacts",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "contacts"
              ]
            },
            "description": "**Scope:** `contacts:write`\n\n**Not yet available.** Answers `501 feature_unavailable` until the contacts store is provisioned; use\n`POST /leads` meanwhile. Intended behaviour: inserts a contact as sent (no deduplication). Scope: `contacts:write`.\n",
            "body": {
              "mode": "raw",
              "raw": "{\n  \"phone_number\": \"+15557654321\",\n  \"first_name\": \"Jordan\",\n  \"last_name\": \"Lee\",\n  \"company\": \"Acme Dental\",\n  \"role\": \"Office manager\"\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            }
          },
          "response": [
            {
              "name": "201 — Created (once available)",
              "originalRequest": {
                "method": "POST",
                "header": [
                  {
                    "key": "Accept",
                    "value": "application/json"
                  },
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "raw": "{{baseUrl}}/contacts",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "contacts"
                  ]
                },
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"phone_number\": \"+15557654321\",\n  \"first_name\": \"Jordan\",\n  \"last_name\": \"Lee\",\n  \"company\": \"Acme Dental\",\n  \"role\": \"Office manager\"\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "status": "Created (once available)",
              "code": 201,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                },
                {
                  "key": "X-Request-Id",
                  "value": "00000000-0000-4000-8000-000000000000"
                }
              ],
              "body": "{\n  \"id\": \"9c8b7a6d-5e4f-4a3b-8c2d-1e0f9a8b7c6d\",\n  \"first_name\": \"Jordan\",\n  \"last_name\": \"Lee\",\n  \"phone_number\": \"+15557654321\",\n  \"email_address\": \"jordan@acme.example\",\n  \"company\": \"Acme Dental\",\n  \"role\": \"Office manager\",\n  \"created_at\": \"2026-10-02T17:03:11Z\"\n}"
            },
            {
              "name": "401 — No key, or a key that is unknown, revoked or expired. `error` is one of",
              "originalRequest": {
                "method": "POST",
                "header": [
                  {
                    "key": "Accept",
                    "value": "application/json"
                  },
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "raw": "{{baseUrl}}/contacts",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "contacts"
                  ]
                },
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"phone_number\": \"+15557654321\",\n  \"first_name\": \"Jordan\",\n  \"last_name\": \"Lee\",\n  \"company\": \"Acme Dental\",\n  \"role\": \"Office manager\"\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "status": "No key, or a key that is unknown, revoke",
              "code": 401,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                },
                {
                  "key": "X-Request-Id",
                  "value": "00000000-0000-4000-8000-000000000000"
                }
              ],
              "body": "{\n  \"error\": \"invalid_api_key\",\n  \"request_id\": \"0f3b9c1e-6d2a-4b7f-8e1c-5a9d2b4c6e80\"\n}"
            },
            {
              "name": "403 — The key does not carry the scope this operation needs. `required` names the miss",
              "originalRequest": {
                "method": "POST",
                "header": [
                  {
                    "key": "Accept",
                    "value": "application/json"
                  },
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "raw": "{{baseUrl}}/contacts",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "contacts"
                  ]
                },
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"phone_number\": \"+15557654321\",\n  \"first_name\": \"Jordan\",\n  \"last_name\": \"Lee\",\n  \"company\": \"Acme Dental\",\n  \"role\": \"Office manager\"\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "status": "The key does not carry the scope this op",
              "code": 403,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                },
                {
                  "key": "X-Request-Id",
                  "value": "00000000-0000-4000-8000-000000000000"
                }
              ],
              "body": "{\n  \"error\": \"insufficient_scope\",\n  \"message\": \"This key does not have the leads:write scope.\",\n  \"required\": \"leads:write\",\n  \"request_id\": \"0f3b9c1e-6d2a-4b7f-8e1c-5a9d2b4c6e80\"\n}"
            },
            {
              "name": "429 — Too many requests for this key in the current minute. Wait `Retry-After` seconds",
              "originalRequest": {
                "method": "POST",
                "header": [
                  {
                    "key": "Accept",
                    "value": "application/json"
                  },
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "raw": "{{baseUrl}}/contacts",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "contacts"
                  ]
                },
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"phone_number\": \"+15557654321\",\n  \"first_name\": \"Jordan\",\n  \"last_name\": \"Lee\",\n  \"company\": \"Acme Dental\",\n  \"role\": \"Office manager\"\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "status": "Too many requests for this key in the cu",
              "code": 429,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                },
                {
                  "key": "X-Request-Id",
                  "value": "00000000-0000-4000-8000-000000000000"
                }
              ],
              "body": "{\n  \"error\": \"rate_limited\",\n  \"message\": \"This key is limited to 60 requests per minute. Retry in 3s.\",\n  \"retry_after_seconds\": 3,\n  \"request_id\": \"0f3b9c1e-6d2a-4b7f-8e1c-5a9d2b4c6e80\"\n}"
            },
            {
              "name": "501 — `feature_unavailable` — this endpoint is not available on your account yet.",
              "originalRequest": {
                "method": "POST",
                "header": [
                  {
                    "key": "Accept",
                    "value": "application/json"
                  },
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "raw": "{{baseUrl}}/contacts",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "contacts"
                  ]
                },
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"phone_number\": \"+15557654321\",\n  \"first_name\": \"Jordan\",\n  \"last_name\": \"Lee\",\n  \"company\": \"Acme Dental\",\n  \"role\": \"Office manager\"\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "status": "`feature_unavailable` — this endpoint is",
              "code": 501,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                },
                {
                  "key": "X-Request-Id",
                  "value": "00000000-0000-4000-8000-000000000000"
                }
              ],
              "body": "{\n  \"error\": \"feature_unavailable\",\n  \"message\": \"Contacts are not available on this account. Use /leads.\",\n  \"request_id\": \"0f3b9c1e-6d2a-4b7f-8e1c-5a9d2b4c6e80\"\n}"
            }
          ]
        }
      ]
    },
    {
      "name": "Campaigns",
      "description": "Read your campaigns and start or pause them. Campaigns are built in the Lojiq app; the API steers them.",
      "item": [
        {
          "name": "List campaigns  ·  GET /campaigns",
          "request": {
            "method": "GET",
            "header": [
              {
                "key": "Accept",
                "value": "application/json"
              }
            ],
            "url": {
              "raw": "{{baseUrl}}/campaigns?limit=&offset=&status=",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "campaigns"
              ],
              "query": [
                {
                  "key": "limit",
                  "value": "50",
                  "description": "Page size. Default 50, maximum 200 (larger values are clamped to 200).",
                  "disabled": false
                },
                {
                  "key": "offset",
                  "value": "0",
                  "description": "Number of rows to skip. Default 0. Page by increasing `offset` by `limit` until `data` comes back shorter than `limit`.",
                  "disabled": false
                },
                {
                  "key": "status",
                  "value": "",
                  "description": "Only campaigns in this state.",
                  "disabled": true
                }
              ]
            },
            "description": "**Scope:** `campaigns:read`\n\nYour campaigns, newest first, with their status and dialing mode. Filter by `status`. Campaigns are built in\nthe Lojiq app; the API reads them and starts or pauses them. Scope: `campaigns:read`.\n"
          },
          "response": [
            {
              "name": "200 — OK",
              "originalRequest": {
                "method": "GET",
                "header": [
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "raw": "{{baseUrl}}/campaigns?limit=&offset=&status=",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "campaigns"
                  ],
                  "query": [
                    {
                      "key": "limit",
                      "value": "50",
                      "description": "Page size. Default 50, maximum 200 (larger values are clamped to 200).",
                      "disabled": false
                    },
                    {
                      "key": "offset",
                      "value": "0",
                      "description": "Number of rows to skip. Default 0. Page by increasing `offset` by `limit` until `data` comes back shorter than `limit`.",
                      "disabled": false
                    },
                    {
                      "key": "status",
                      "value": "",
                      "description": "Only campaigns in this state.",
                      "disabled": true
                    }
                  ]
                }
              },
              "status": "OK",
              "code": 200,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                },
                {
                  "key": "X-Request-Id",
                  "value": "00000000-0000-4000-8000-000000000000"
                }
              ],
              "body": "{\n  \"data\": [\n    {\n      \"id\": \"0d2f6b1e-4a7c-4e8d-9b1a-2c3d4e5f6a7b\",\n      \"name\": \"October refinance outreach\",\n      \"status\": \"active\",\n      \"dialer_mode\": \"ai\",\n      \"assigned_ai_agent_id\": \"2a3b4c5d-6e7f-4a8b-9c0d-1e2f3a4b5c6d\",\n      \"launched_at\": \"2026-09-29T15:00:00Z\",\n      \"paused_at\": null,\n      \"created_at\": \"2026-09-28T14:00:00Z\",\n      \"updated_at\": \"2026-10-02T17:03:11Z\"\n    }\n  ],\n  \"limit\": 50,\n  \"offset\": 0\n}"
            },
            {
              "name": "401 — No key, or a key that is unknown, revoked or expired. `error` is one of",
              "originalRequest": {
                "method": "GET",
                "header": [
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "raw": "{{baseUrl}}/campaigns?limit=&offset=&status=",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "campaigns"
                  ],
                  "query": [
                    {
                      "key": "limit",
                      "value": "50",
                      "description": "Page size. Default 50, maximum 200 (larger values are clamped to 200).",
                      "disabled": false
                    },
                    {
                      "key": "offset",
                      "value": "0",
                      "description": "Number of rows to skip. Default 0. Page by increasing `offset` by `limit` until `data` comes back shorter than `limit`.",
                      "disabled": false
                    },
                    {
                      "key": "status",
                      "value": "",
                      "description": "Only campaigns in this state.",
                      "disabled": true
                    }
                  ]
                }
              },
              "status": "No key, or a key that is unknown, revoke",
              "code": 401,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                },
                {
                  "key": "X-Request-Id",
                  "value": "00000000-0000-4000-8000-000000000000"
                }
              ],
              "body": "{\n  \"error\": \"invalid_api_key\",\n  \"request_id\": \"0f3b9c1e-6d2a-4b7f-8e1c-5a9d2b4c6e80\"\n}"
            },
            {
              "name": "403 — The key does not carry the scope this operation needs. `required` names the miss",
              "originalRequest": {
                "method": "GET",
                "header": [
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "raw": "{{baseUrl}}/campaigns?limit=&offset=&status=",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "campaigns"
                  ],
                  "query": [
                    {
                      "key": "limit",
                      "value": "50",
                      "description": "Page size. Default 50, maximum 200 (larger values are clamped to 200).",
                      "disabled": false
                    },
                    {
                      "key": "offset",
                      "value": "0",
                      "description": "Number of rows to skip. Default 0. Page by increasing `offset` by `limit` until `data` comes back shorter than `limit`.",
                      "disabled": false
                    },
                    {
                      "key": "status",
                      "value": "",
                      "description": "Only campaigns in this state.",
                      "disabled": true
                    }
                  ]
                }
              },
              "status": "The key does not carry the scope this op",
              "code": 403,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                },
                {
                  "key": "X-Request-Id",
                  "value": "00000000-0000-4000-8000-000000000000"
                }
              ],
              "body": "{\n  \"error\": \"insufficient_scope\",\n  \"message\": \"This key does not have the leads:write scope.\",\n  \"required\": \"leads:write\",\n  \"request_id\": \"0f3b9c1e-6d2a-4b7f-8e1c-5a9d2b4c6e80\"\n}"
            },
            {
              "name": "429 — Too many requests for this key in the current minute. Wait `Retry-After` seconds",
              "originalRequest": {
                "method": "GET",
                "header": [
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "raw": "{{baseUrl}}/campaigns?limit=&offset=&status=",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "campaigns"
                  ],
                  "query": [
                    {
                      "key": "limit",
                      "value": "50",
                      "description": "Page size. Default 50, maximum 200 (larger values are clamped to 200).",
                      "disabled": false
                    },
                    {
                      "key": "offset",
                      "value": "0",
                      "description": "Number of rows to skip. Default 0. Page by increasing `offset` by `limit` until `data` comes back shorter than `limit`.",
                      "disabled": false
                    },
                    {
                      "key": "status",
                      "value": "",
                      "description": "Only campaigns in this state.",
                      "disabled": true
                    }
                  ]
                }
              },
              "status": "Too many requests for this key in the cu",
              "code": 429,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                },
                {
                  "key": "X-Request-Id",
                  "value": "00000000-0000-4000-8000-000000000000"
                }
              ],
              "body": "{\n  \"error\": \"rate_limited\",\n  \"message\": \"This key is limited to 60 requests per minute. Retry in 3s.\",\n  \"retry_after_seconds\": 3,\n  \"request_id\": \"0f3b9c1e-6d2a-4b7f-8e1c-5a9d2b4c6e80\"\n}"
            },
            {
              "name": "500 — `internal_error` — something failed on Lojiq's side. The detail is in Lojiq's lo",
              "originalRequest": {
                "method": "GET",
                "header": [
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "raw": "{{baseUrl}}/campaigns?limit=&offset=&status=",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "campaigns"
                  ],
                  "query": [
                    {
                      "key": "limit",
                      "value": "50",
                      "description": "Page size. Default 50, maximum 200 (larger values are clamped to 200).",
                      "disabled": false
                    },
                    {
                      "key": "offset",
                      "value": "0",
                      "description": "Number of rows to skip. Default 0. Page by increasing `offset` by `limit` until `data` comes back shorter than `limit`.",
                      "disabled": false
                    },
                    {
                      "key": "status",
                      "value": "",
                      "description": "Only campaigns in this state.",
                      "disabled": true
                    }
                  ]
                }
              },
              "status": "`internal_error` — something failed on L",
              "code": 500,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                },
                {
                  "key": "X-Request-Id",
                  "value": "00000000-0000-4000-8000-000000000000"
                }
              ],
              "body": "{\n  \"error\": \"internal_error\",\n  \"message\": \"Something went wrong on our side. Retry\",\n  \"or contact support with the request_id.\": null,\n  \"request_id\": \"0f3b9c1e-6d2a-4b7f-8e1c-5a9d2b4c6e80\"\n}"
            }
          ]
        },
        {
          "name": "Get a campaign  ·  GET /campaigns/{id}",
          "request": {
            "method": "GET",
            "header": [
              {
                "key": "Accept",
                "value": "application/json"
              }
            ],
            "url": {
              "raw": "{{baseUrl}}/campaigns/:id",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "campaigns",
                ":id"
              ],
              "variable": [
                {
                  "key": "id",
                  "value": "4b1e0d1a-3c4e-4d0a-9f2b-7e1a2b3c4d5e",
                  "description": "Resource id (UUID)."
                }
              ]
            },
            "description": "**Scope:** `campaigns:read`\n\nThe full stored campaign record. Scope: `campaigns:read`."
          },
          "response": [
            {
              "name": "200 — OK",
              "originalRequest": {
                "method": "GET",
                "header": [
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "raw": "{{baseUrl}}/campaigns/:id",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "campaigns",
                    ":id"
                  ],
                  "variable": [
                    {
                      "key": "id",
                      "value": "4b1e0d1a-3c4e-4d0a-9f2b-7e1a2b3c4d5e",
                      "description": "Resource id (UUID)."
                    }
                  ]
                }
              },
              "status": "OK",
              "code": 200,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                },
                {
                  "key": "X-Request-Id",
                  "value": "00000000-0000-4000-8000-000000000000"
                }
              ],
              "body": "{\n  \"id\": \"0d2f6b1e-4a7c-4e8d-9b1a-2c3d4e5f6a7b\",\n  \"name\": \"October refinance outreach\",\n  \"status\": \"active\",\n  \"dialer_mode\": \"ai\",\n  \"assigned_ai_agent_id\": \"2a3b4c5d-6e7f-4a8b-9c0d-1e2f3a4b5c6d\",\n  \"launched_at\": \"2026-09-29T15:00:00Z\",\n  \"paused_at\": null,\n  \"created_at\": \"2026-09-28T14:00:00Z\",\n  \"updated_at\": \"2026-10-02T17:03:11Z\"\n}"
            },
            {
              "name": "401 — No key, or a key that is unknown, revoked or expired. `error` is one of",
              "originalRequest": {
                "method": "GET",
                "header": [
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "raw": "{{baseUrl}}/campaigns/:id",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "campaigns",
                    ":id"
                  ],
                  "variable": [
                    {
                      "key": "id",
                      "value": "4b1e0d1a-3c4e-4d0a-9f2b-7e1a2b3c4d5e",
                      "description": "Resource id (UUID)."
                    }
                  ]
                }
              },
              "status": "No key, or a key that is unknown, revoke",
              "code": 401,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                },
                {
                  "key": "X-Request-Id",
                  "value": "00000000-0000-4000-8000-000000000000"
                }
              ],
              "body": "{\n  \"error\": \"invalid_api_key\",\n  \"request_id\": \"0f3b9c1e-6d2a-4b7f-8e1c-5a9d2b4c6e80\"\n}"
            },
            {
              "name": "403 — The key does not carry the scope this operation needs. `required` names the miss",
              "originalRequest": {
                "method": "GET",
                "header": [
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "raw": "{{baseUrl}}/campaigns/:id",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "campaigns",
                    ":id"
                  ],
                  "variable": [
                    {
                      "key": "id",
                      "value": "4b1e0d1a-3c4e-4d0a-9f2b-7e1a2b3c4d5e",
                      "description": "Resource id (UUID)."
                    }
                  ]
                }
              },
              "status": "The key does not carry the scope this op",
              "code": 403,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                },
                {
                  "key": "X-Request-Id",
                  "value": "00000000-0000-4000-8000-000000000000"
                }
              ],
              "body": "{\n  \"error\": \"insufficient_scope\",\n  \"message\": \"This key does not have the leads:write scope.\",\n  \"required\": \"leads:write\",\n  \"request_id\": \"0f3b9c1e-6d2a-4b7f-8e1c-5a9d2b4c6e80\"\n}"
            },
            {
              "name": "404 — No such resource in your organization (ids from other organizations also answer ",
              "originalRequest": {
                "method": "GET",
                "header": [
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "raw": "{{baseUrl}}/campaigns/:id",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "campaigns",
                    ":id"
                  ],
                  "variable": [
                    {
                      "key": "id",
                      "value": "4b1e0d1a-3c4e-4d0a-9f2b-7e1a2b3c4d5e",
                      "description": "Resource id (UUID)."
                    }
                  ]
                }
              },
              "status": "No such resource in your organization (i",
              "code": 404,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                },
                {
                  "key": "X-Request-Id",
                  "value": "00000000-0000-4000-8000-000000000000"
                }
              ],
              "body": "{\n  \"error\": \"not_found\",\n  \"request_id\": \"0f3b9c1e-6d2a-4b7f-8e1c-5a9d2b4c6e80\"\n}"
            },
            {
              "name": "429 — Too many requests for this key in the current minute. Wait `Retry-After` seconds",
              "originalRequest": {
                "method": "GET",
                "header": [
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "raw": "{{baseUrl}}/campaigns/:id",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "campaigns",
                    ":id"
                  ],
                  "variable": [
                    {
                      "key": "id",
                      "value": "4b1e0d1a-3c4e-4d0a-9f2b-7e1a2b3c4d5e",
                      "description": "Resource id (UUID)."
                    }
                  ]
                }
              },
              "status": "Too many requests for this key in the cu",
              "code": 429,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                },
                {
                  "key": "X-Request-Id",
                  "value": "00000000-0000-4000-8000-000000000000"
                }
              ],
              "body": "{\n  \"error\": \"rate_limited\",\n  \"message\": \"This key is limited to 60 requests per minute. Retry in 3s.\",\n  \"retry_after_seconds\": 3,\n  \"request_id\": \"0f3b9c1e-6d2a-4b7f-8e1c-5a9d2b4c6e80\"\n}"
            },
            {
              "name": "500 — `internal_error` — something failed on Lojiq's side. The detail is in Lojiq's lo",
              "originalRequest": {
                "method": "GET",
                "header": [
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "raw": "{{baseUrl}}/campaigns/:id",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "campaigns",
                    ":id"
                  ],
                  "variable": [
                    {
                      "key": "id",
                      "value": "4b1e0d1a-3c4e-4d0a-9f2b-7e1a2b3c4d5e",
                      "description": "Resource id (UUID)."
                    }
                  ]
                }
              },
              "status": "`internal_error` — something failed on L",
              "code": 500,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                },
                {
                  "key": "X-Request-Id",
                  "value": "00000000-0000-4000-8000-000000000000"
                }
              ],
              "body": "{\n  \"error\": \"internal_error\",\n  \"message\": \"Something went wrong on our side. Retry\",\n  \"or contact support with the request_id.\": null,\n  \"request_id\": \"0f3b9c1e-6d2a-4b7f-8e1c-5a9d2b4c6e80\"\n}"
            }
          ]
        },
        {
          "name": "Start (or resume) a campaign  ·  POST /campaigns/{id}/start",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Accept",
                "value": "application/json"
              }
            ],
            "url": {
              "raw": "{{baseUrl}}/campaigns/:id/start",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "campaigns",
                ":id",
                "start"
              ],
              "variable": [
                {
                  "key": "id",
                  "value": "4b1e0d1a-3c4e-4d0a-9f2b-7e1a2b3c4d5e",
                  "description": "Resource id (UUID)."
                }
              ]
            },
            "description": "**Scope:** `campaigns:write`\n\nResumes a **paused** campaign: the same path the app's Resume button takes (balance check, actor stamp,\ndialer restart), so the dialer picks it up right away. Scope: `campaigns:write`.\n\nOnly `paused` → `active` is possible here. A campaign that is `draft`, `completed` or `cancelled` answers\n`409 campaign_not_resumable`: launch it once from the Lojiq app, where the launch checks (agent, numbers,\ncalling hours, consent attestation) live. An already active campaign answers `200` with `changed: false`.\n"
          },
          "response": [
            {
              "name": "200 — OK — `changed` says whether anything happened.",
              "originalRequest": {
                "method": "POST",
                "header": [
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "raw": "{{baseUrl}}/campaigns/:id/start",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "campaigns",
                    ":id",
                    "start"
                  ],
                  "variable": [
                    {
                      "key": "id",
                      "value": "4b1e0d1a-3c4e-4d0a-9f2b-7e1a2b3c4d5e",
                      "description": "Resource id (UUID)."
                    }
                  ]
                }
              },
              "status": "OK — `changed` says whether anything hap",
              "code": 200,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                },
                {
                  "key": "X-Request-Id",
                  "value": "00000000-0000-4000-8000-000000000000"
                }
              ],
              "body": "{\n  \"id\": \"0d2f6b1e-4a7c-4e8d-9b1a-2c3d4e5f6a7b\",\n  \"status\": \"active\",\n  \"changed\": true\n}"
            },
            {
              "name": "401 — No key, or a key that is unknown, revoked or expired. `error` is one of",
              "originalRequest": {
                "method": "POST",
                "header": [
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "raw": "{{baseUrl}}/campaigns/:id/start",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "campaigns",
                    ":id",
                    "start"
                  ],
                  "variable": [
                    {
                      "key": "id",
                      "value": "4b1e0d1a-3c4e-4d0a-9f2b-7e1a2b3c4d5e",
                      "description": "Resource id (UUID)."
                    }
                  ]
                }
              },
              "status": "No key, or a key that is unknown, revoke",
              "code": 401,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                },
                {
                  "key": "X-Request-Id",
                  "value": "00000000-0000-4000-8000-000000000000"
                }
              ],
              "body": "{\n  \"error\": \"invalid_api_key\",\n  \"request_id\": \"0f3b9c1e-6d2a-4b7f-8e1c-5a9d2b4c6e80\"\n}"
            },
            {
              "name": "402 — `insufficient_balance` — the token wallet is below the minimum to dial. Top up i",
              "originalRequest": {
                "method": "POST",
                "header": [
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "raw": "{{baseUrl}}/campaigns/:id/start",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "campaigns",
                    ":id",
                    "start"
                  ],
                  "variable": [
                    {
                      "key": "id",
                      "value": "4b1e0d1a-3c4e-4d0a-9f2b-7e1a2b3c4d5e",
                      "description": "Resource id (UUID)."
                    }
                  ]
                }
              },
              "status": "`insufficient_balance` — the token walle",
              "code": 402,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                },
                {
                  "key": "X-Request-Id",
                  "value": "00000000-0000-4000-8000-000000000000"
                }
              ],
              "body": "{\n  \"error\": \"insufficient_balance\",\n  \"request_id\": \"0f3b9c1e-6d2a-4b7f-8e1c-5a9d2b4c6e80\"\n}"
            },
            {
              "name": "403 — The key does not carry the scope this operation needs. `required` names the miss",
              "originalRequest": {
                "method": "POST",
                "header": [
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "raw": "{{baseUrl}}/campaigns/:id/start",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "campaigns",
                    ":id",
                    "start"
                  ],
                  "variable": [
                    {
                      "key": "id",
                      "value": "4b1e0d1a-3c4e-4d0a-9f2b-7e1a2b3c4d5e",
                      "description": "Resource id (UUID)."
                    }
                  ]
                }
              },
              "status": "The key does not carry the scope this op",
              "code": 403,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                },
                {
                  "key": "X-Request-Id",
                  "value": "00000000-0000-4000-8000-000000000000"
                }
              ],
              "body": "{\n  \"error\": \"insufficient_scope\",\n  \"message\": \"This key does not have the leads:write scope.\",\n  \"required\": \"leads:write\",\n  \"request_id\": \"0f3b9c1e-6d2a-4b7f-8e1c-5a9d2b4c6e80\"\n}"
            },
            {
              "name": "404 — No such resource in your organization (ids from other organizations also answer ",
              "originalRequest": {
                "method": "POST",
                "header": [
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "raw": "{{baseUrl}}/campaigns/:id/start",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "campaigns",
                    ":id",
                    "start"
                  ],
                  "variable": [
                    {
                      "key": "id",
                      "value": "4b1e0d1a-3c4e-4d0a-9f2b-7e1a2b3c4d5e",
                      "description": "Resource id (UUID)."
                    }
                  ]
                }
              },
              "status": "No such resource in your organization (i",
              "code": 404,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                },
                {
                  "key": "X-Request-Id",
                  "value": "00000000-0000-4000-8000-000000000000"
                }
              ],
              "body": "{\n  \"error\": \"not_found\",\n  \"request_id\": \"0f3b9c1e-6d2a-4b7f-8e1c-5a9d2b4c6e80\"\n}"
            },
            {
              "name": "409 — `campaign_not_resumable` — the campaign is not paused (`message` names its state",
              "originalRequest": {
                "method": "POST",
                "header": [
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "raw": "{{baseUrl}}/campaigns/:id/start",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "campaigns",
                    ":id",
                    "start"
                  ],
                  "variable": [
                    {
                      "key": "id",
                      "value": "4b1e0d1a-3c4e-4d0a-9f2b-7e1a2b3c4d5e",
                      "description": "Resource id (UUID)."
                    }
                  ]
                }
              },
              "status": "`campaign_not_resumable` — the campaign ",
              "code": 409,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                },
                {
                  "key": "X-Request-Id",
                  "value": "00000000-0000-4000-8000-000000000000"
                }
              ],
              "body": "{\n  \"error\": \"campaign_not_resumable\",\n  \"message\": \"Only a paused campaign can be started from the API (this one is draft). Launch it once from the Lojiq app, where the launch checks live.\",\n  \"request_id\": \"0f3b9c1e-6d2a-4b7f-8e1c-5a9d2b4c6e80\"\n}"
            },
            {
              "name": "429 — Too many requests for this key in the current minute. Wait `Retry-After` seconds",
              "originalRequest": {
                "method": "POST",
                "header": [
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "raw": "{{baseUrl}}/campaigns/:id/start",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "campaigns",
                    ":id",
                    "start"
                  ],
                  "variable": [
                    {
                      "key": "id",
                      "value": "4b1e0d1a-3c4e-4d0a-9f2b-7e1a2b3c4d5e",
                      "description": "Resource id (UUID)."
                    }
                  ]
                }
              },
              "status": "Too many requests for this key in the cu",
              "code": 429,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                },
                {
                  "key": "X-Request-Id",
                  "value": "00000000-0000-4000-8000-000000000000"
                }
              ],
              "body": "{\n  \"error\": \"rate_limited\",\n  \"message\": \"This key is limited to 60 requests per minute. Retry in 3s.\",\n  \"retry_after_seconds\": 3,\n  \"request_id\": \"0f3b9c1e-6d2a-4b7f-8e1c-5a9d2b4c6e80\"\n}"
            },
            {
              "name": "500 — `internal_error` — something failed on Lojiq's side. The detail is in Lojiq's lo",
              "originalRequest": {
                "method": "POST",
                "header": [
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "raw": "{{baseUrl}}/campaigns/:id/start",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "campaigns",
                    ":id",
                    "start"
                  ],
                  "variable": [
                    {
                      "key": "id",
                      "value": "4b1e0d1a-3c4e-4d0a-9f2b-7e1a2b3c4d5e",
                      "description": "Resource id (UUID)."
                    }
                  ]
                }
              },
              "status": "`internal_error` — something failed on L",
              "code": 500,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                },
                {
                  "key": "X-Request-Id",
                  "value": "00000000-0000-4000-8000-000000000000"
                }
              ],
              "body": "{\n  \"error\": \"internal_error\",\n  \"message\": \"Something went wrong on our side. Retry\",\n  \"or contact support with the request_id.\": null,\n  \"request_id\": \"0f3b9c1e-6d2a-4b7f-8e1c-5a9d2b4c6e80\"\n}"
            }
          ]
        },
        {
          "name": "Pause a campaign  ·  POST /campaigns/{id}/stop",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Accept",
                "value": "application/json"
              }
            ],
            "url": {
              "raw": "{{baseUrl}}/campaigns/:id/stop",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "campaigns",
                ":id",
                "stop"
              ],
              "variable": [
                {
                  "key": "id",
                  "value": "4b1e0d1a-3c4e-4d0a-9f2b-7e1a2b3c4d5e",
                  "description": "Resource id (UUID)."
                }
              ]
            },
            "description": "**Scope:** `campaigns:write`\n\nPauses an **active** campaign through the same path as the app's Pause button: the status becomes `paused`\nand the dial queue is cleared; calls already in progress finish. An already paused campaign answers `200`\nwith `changed: false`; any other state answers `409 campaign_not_active`. Scope: `campaigns:write`.\n"
          },
          "response": [
            {
              "name": "200 — OK — `changed` says whether anything happened.",
              "originalRequest": {
                "method": "POST",
                "header": [
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "raw": "{{baseUrl}}/campaigns/:id/stop",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "campaigns",
                    ":id",
                    "stop"
                  ],
                  "variable": [
                    {
                      "key": "id",
                      "value": "4b1e0d1a-3c4e-4d0a-9f2b-7e1a2b3c4d5e",
                      "description": "Resource id (UUID)."
                    }
                  ]
                }
              },
              "status": "OK — `changed` says whether anything hap",
              "code": 200,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                },
                {
                  "key": "X-Request-Id",
                  "value": "00000000-0000-4000-8000-000000000000"
                }
              ],
              "body": "{\n  \"id\": \"0d2f6b1e-4a7c-4e8d-9b1a-2c3d4e5f6a7b\",\n  \"status\": \"paused\",\n  \"changed\": true\n}"
            },
            {
              "name": "401 — No key, or a key that is unknown, revoked or expired. `error` is one of",
              "originalRequest": {
                "method": "POST",
                "header": [
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "raw": "{{baseUrl}}/campaigns/:id/stop",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "campaigns",
                    ":id",
                    "stop"
                  ],
                  "variable": [
                    {
                      "key": "id",
                      "value": "4b1e0d1a-3c4e-4d0a-9f2b-7e1a2b3c4d5e",
                      "description": "Resource id (UUID)."
                    }
                  ]
                }
              },
              "status": "No key, or a key that is unknown, revoke",
              "code": 401,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                },
                {
                  "key": "X-Request-Id",
                  "value": "00000000-0000-4000-8000-000000000000"
                }
              ],
              "body": "{\n  \"error\": \"invalid_api_key\",\n  \"request_id\": \"0f3b9c1e-6d2a-4b7f-8e1c-5a9d2b4c6e80\"\n}"
            },
            {
              "name": "403 — The key does not carry the scope this operation needs. `required` names the miss",
              "originalRequest": {
                "method": "POST",
                "header": [
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "raw": "{{baseUrl}}/campaigns/:id/stop",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "campaigns",
                    ":id",
                    "stop"
                  ],
                  "variable": [
                    {
                      "key": "id",
                      "value": "4b1e0d1a-3c4e-4d0a-9f2b-7e1a2b3c4d5e",
                      "description": "Resource id (UUID)."
                    }
                  ]
                }
              },
              "status": "The key does not carry the scope this op",
              "code": 403,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                },
                {
                  "key": "X-Request-Id",
                  "value": "00000000-0000-4000-8000-000000000000"
                }
              ],
              "body": "{\n  \"error\": \"insufficient_scope\",\n  \"message\": \"This key does not have the leads:write scope.\",\n  \"required\": \"leads:write\",\n  \"request_id\": \"0f3b9c1e-6d2a-4b7f-8e1c-5a9d2b4c6e80\"\n}"
            },
            {
              "name": "404 — No such resource in your organization (ids from other organizations also answer ",
              "originalRequest": {
                "method": "POST",
                "header": [
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "raw": "{{baseUrl}}/campaigns/:id/stop",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "campaigns",
                    ":id",
                    "stop"
                  ],
                  "variable": [
                    {
                      "key": "id",
                      "value": "4b1e0d1a-3c4e-4d0a-9f2b-7e1a2b3c4d5e",
                      "description": "Resource id (UUID)."
                    }
                  ]
                }
              },
              "status": "No such resource in your organization (i",
              "code": 404,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                },
                {
                  "key": "X-Request-Id",
                  "value": "00000000-0000-4000-8000-000000000000"
                }
              ],
              "body": "{\n  \"error\": \"not_found\",\n  \"request_id\": \"0f3b9c1e-6d2a-4b7f-8e1c-5a9d2b4c6e80\"\n}"
            },
            {
              "name": "409 — `campaign_not_active` — only an active campaign can be paused.",
              "originalRequest": {
                "method": "POST",
                "header": [
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "raw": "{{baseUrl}}/campaigns/:id/stop",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "campaigns",
                    ":id",
                    "stop"
                  ],
                  "variable": [
                    {
                      "key": "id",
                      "value": "4b1e0d1a-3c4e-4d0a-9f2b-7e1a2b3c4d5e",
                      "description": "Resource id (UUID)."
                    }
                  ]
                }
              },
              "status": "`campaign_not_active` — only an active c",
              "code": 409,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                },
                {
                  "key": "X-Request-Id",
                  "value": "00000000-0000-4000-8000-000000000000"
                }
              ],
              "body": "{\n  \"error\": \"campaign_not_active\",\n  \"message\": \"Only an active campaign can be stopped (this one is completed).\",\n  \"request_id\": \"0f3b9c1e-6d2a-4b7f-8e1c-5a9d2b4c6e80\"\n}"
            },
            {
              "name": "429 — Too many requests for this key in the current minute. Wait `Retry-After` seconds",
              "originalRequest": {
                "method": "POST",
                "header": [
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "raw": "{{baseUrl}}/campaigns/:id/stop",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "campaigns",
                    ":id",
                    "stop"
                  ],
                  "variable": [
                    {
                      "key": "id",
                      "value": "4b1e0d1a-3c4e-4d0a-9f2b-7e1a2b3c4d5e",
                      "description": "Resource id (UUID)."
                    }
                  ]
                }
              },
              "status": "Too many requests for this key in the cu",
              "code": 429,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                },
                {
                  "key": "X-Request-Id",
                  "value": "00000000-0000-4000-8000-000000000000"
                }
              ],
              "body": "{\n  \"error\": \"rate_limited\",\n  \"message\": \"This key is limited to 60 requests per minute. Retry in 3s.\",\n  \"retry_after_seconds\": 3,\n  \"request_id\": \"0f3b9c1e-6d2a-4b7f-8e1c-5a9d2b4c6e80\"\n}"
            },
            {
              "name": "500 — `internal_error` — something failed on Lojiq's side. The detail is in Lojiq's lo",
              "originalRequest": {
                "method": "POST",
                "header": [
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "raw": "{{baseUrl}}/campaigns/:id/stop",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "campaigns",
                    ":id",
                    "stop"
                  ],
                  "variable": [
                    {
                      "key": "id",
                      "value": "4b1e0d1a-3c4e-4d0a-9f2b-7e1a2b3c4d5e",
                      "description": "Resource id (UUID)."
                    }
                  ]
                }
              },
              "status": "`internal_error` — something failed on L",
              "code": 500,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                },
                {
                  "key": "X-Request-Id",
                  "value": "00000000-0000-4000-8000-000000000000"
                }
              ],
              "body": "{\n  \"error\": \"internal_error\",\n  \"message\": \"Something went wrong on our side. Retry\",\n  \"or contact support with the request_id.\": null,\n  \"request_id\": \"0f3b9c1e-6d2a-4b7f-8e1c-5a9d2b4c6e80\"\n}"
            }
          ]
        }
      ]
    },
    {
      "name": "Voice agents",
      "description": "A voice agent is a reusable call template: a system prompt, a voice and a few behavior knobs. Agents created\nthrough the API are fully managed here; agents created in the Lojiq app are listed read-only.\n",
      "item": [
        {
          "name": "List voice agents  ·  GET /agents",
          "request": {
            "method": "GET",
            "header": [
              {
                "key": "Accept",
                "value": "application/json"
              }
            ],
            "url": {
              "raw": "{{baseUrl}}/agents?limit=&offset=&created_via=",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "agents"
              ],
              "query": [
                {
                  "key": "limit",
                  "value": "50",
                  "description": "Page size. Default 50, maximum 200 (larger values are clamped to 200).",
                  "disabled": false
                },
                {
                  "key": "offset",
                  "value": "0",
                  "description": "Number of rows to skip. Default 0. Page by increasing `offset` by `limit` until `data` comes back shorter than `limit`.",
                  "disabled": false
                },
                {
                  "key": "created_via",
                  "value": "",
                  "description": "Only agents created in the app, or only agents created through this API.",
                  "disabled": true
                }
              ]
            },
            "description": "**Scope:** `agents:read`\n\nEvery voice agent in your organization, app- and API-created, newest first. Scope: `agents:read`."
          },
          "response": [
            {
              "name": "200 — OK",
              "originalRequest": {
                "method": "GET",
                "header": [
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "raw": "{{baseUrl}}/agents?limit=&offset=&created_via=",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "agents"
                  ],
                  "query": [
                    {
                      "key": "limit",
                      "value": "50",
                      "description": "Page size. Default 50, maximum 200 (larger values are clamped to 200).",
                      "disabled": false
                    },
                    {
                      "key": "offset",
                      "value": "0",
                      "description": "Number of rows to skip. Default 0. Page by increasing `offset` by `limit` until `data` comes back shorter than `limit`.",
                      "disabled": false
                    },
                    {
                      "key": "created_via",
                      "value": "",
                      "description": "Only agents created in the app, or only agents created through this API.",
                      "disabled": true
                    }
                  ]
                }
              },
              "status": "OK",
              "code": 200,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                },
                {
                  "key": "X-Request-Id",
                  "value": "00000000-0000-4000-8000-000000000000"
                }
              ],
              "body": "{\n  \"data\": [\n    {\n      \"id\": \"2a3b4c5d-6e7f-4a8b-9c0d-1e2f3a4b5c6d\",\n      \"name\": \"Appointment Setter\",\n      \"type\": \"standard\",\n      \"created_via\": \"public_api\",\n      \"call_template\": {\n        \"system_prompt\": \"You are {{agent_name}}, a friendly scheduler for {{business_name}}.\",\n        \"voice\": \"Kyle\",\n        \"voice_id\": \"0b1c2d3e-voice\",\n        \"voice_name\": \"Kyle\",\n        \"temperature\": 0.3,\n        \"recording_enabled\": true\n      },\n      \"phone_number\": null,\n      \"created_at\": \"2026-10-02T17:03:11Z\",\n      \"updated_at\": \"2026-10-02T17:03:11Z\"\n    }\n  ],\n  \"limit\": 50,\n  \"offset\": 0\n}"
            },
            {
              "name": "401 — No key, or a key that is unknown, revoked or expired. `error` is one of",
              "originalRequest": {
                "method": "GET",
                "header": [
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "raw": "{{baseUrl}}/agents?limit=&offset=&created_via=",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "agents"
                  ],
                  "query": [
                    {
                      "key": "limit",
                      "value": "50",
                      "description": "Page size. Default 50, maximum 200 (larger values are clamped to 200).",
                      "disabled": false
                    },
                    {
                      "key": "offset",
                      "value": "0",
                      "description": "Number of rows to skip. Default 0. Page by increasing `offset` by `limit` until `data` comes back shorter than `limit`.",
                      "disabled": false
                    },
                    {
                      "key": "created_via",
                      "value": "",
                      "description": "Only agents created in the app, or only agents created through this API.",
                      "disabled": true
                    }
                  ]
                }
              },
              "status": "No key, or a key that is unknown, revoke",
              "code": 401,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                },
                {
                  "key": "X-Request-Id",
                  "value": "00000000-0000-4000-8000-000000000000"
                }
              ],
              "body": "{\n  \"error\": \"invalid_api_key\",\n  \"request_id\": \"0f3b9c1e-6d2a-4b7f-8e1c-5a9d2b4c6e80\"\n}"
            },
            {
              "name": "403 — The key does not carry the scope this operation needs. `required` names the miss",
              "originalRequest": {
                "method": "GET",
                "header": [
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "raw": "{{baseUrl}}/agents?limit=&offset=&created_via=",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "agents"
                  ],
                  "query": [
                    {
                      "key": "limit",
                      "value": "50",
                      "description": "Page size. Default 50, maximum 200 (larger values are clamped to 200).",
                      "disabled": false
                    },
                    {
                      "key": "offset",
                      "value": "0",
                      "description": "Number of rows to skip. Default 0. Page by increasing `offset` by `limit` until `data` comes back shorter than `limit`.",
                      "disabled": false
                    },
                    {
                      "key": "created_via",
                      "value": "",
                      "description": "Only agents created in the app, or only agents created through this API.",
                      "disabled": true
                    }
                  ]
                }
              },
              "status": "The key does not carry the scope this op",
              "code": 403,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                },
                {
                  "key": "X-Request-Id",
                  "value": "00000000-0000-4000-8000-000000000000"
                }
              ],
              "body": "{\n  \"error\": \"insufficient_scope\",\n  \"message\": \"This key does not have the leads:write scope.\",\n  \"required\": \"leads:write\",\n  \"request_id\": \"0f3b9c1e-6d2a-4b7f-8e1c-5a9d2b4c6e80\"\n}"
            },
            {
              "name": "429 — Too many requests for this key in the current minute. Wait `Retry-After` seconds",
              "originalRequest": {
                "method": "GET",
                "header": [
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "raw": "{{baseUrl}}/agents?limit=&offset=&created_via=",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "agents"
                  ],
                  "query": [
                    {
                      "key": "limit",
                      "value": "50",
                      "description": "Page size. Default 50, maximum 200 (larger values are clamped to 200).",
                      "disabled": false
                    },
                    {
                      "key": "offset",
                      "value": "0",
                      "description": "Number of rows to skip. Default 0. Page by increasing `offset` by `limit` until `data` comes back shorter than `limit`.",
                      "disabled": false
                    },
                    {
                      "key": "created_via",
                      "value": "",
                      "description": "Only agents created in the app, or only agents created through this API.",
                      "disabled": true
                    }
                  ]
                }
              },
              "status": "Too many requests for this key in the cu",
              "code": 429,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                },
                {
                  "key": "X-Request-Id",
                  "value": "00000000-0000-4000-8000-000000000000"
                }
              ],
              "body": "{\n  \"error\": \"rate_limited\",\n  \"message\": \"This key is limited to 60 requests per minute. Retry in 3s.\",\n  \"retry_after_seconds\": 3,\n  \"request_id\": \"0f3b9c1e-6d2a-4b7f-8e1c-5a9d2b4c6e80\"\n}"
            },
            {
              "name": "500 — `internal_error` — something failed on Lojiq's side. The detail is in Lojiq's lo",
              "originalRequest": {
                "method": "GET",
                "header": [
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "raw": "{{baseUrl}}/agents?limit=&offset=&created_via=",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "agents"
                  ],
                  "query": [
                    {
                      "key": "limit",
                      "value": "50",
                      "description": "Page size. Default 50, maximum 200 (larger values are clamped to 200).",
                      "disabled": false
                    },
                    {
                      "key": "offset",
                      "value": "0",
                      "description": "Number of rows to skip. Default 0. Page by increasing `offset` by `limit` until `data` comes back shorter than `limit`.",
                      "disabled": false
                    },
                    {
                      "key": "created_via",
                      "value": "",
                      "description": "Only agents created in the app, or only agents created through this API.",
                      "disabled": true
                    }
                  ]
                }
              },
              "status": "`internal_error` — something failed on L",
              "code": 500,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                },
                {
                  "key": "X-Request-Id",
                  "value": "00000000-0000-4000-8000-000000000000"
                }
              ],
              "body": "{\n  \"error\": \"internal_error\",\n  \"message\": \"Something went wrong on our side. Retry\",\n  \"or contact support with the request_id.\": null,\n  \"request_id\": \"0f3b9c1e-6d2a-4b7f-8e1c-5a9d2b4c6e80\"\n}"
            }
          ]
        },
        {
          "name": "Create a voice agent  ·  POST /agents",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Accept",
                "value": "application/json"
              },
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "url": {
              "raw": "{{baseUrl}}/agents",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "agents"
              ]
            },
            "description": "**Scope:** `agents:write`\n\nCreates an API-managed agent from a `call_template`. The voice is validated against `GET /voices`.\nScope: `agents:write`.\n",
            "body": {
              "mode": "raw",
              "raw": "{\n  \"name\": \"Appointment Setter\",\n  \"call_template\": {\n    \"system_prompt\": \"You are {{agent_name}}, a friendly scheduler for {{business_name}}. Book the caller a 30-minute consultation.\",\n    \"voice\": \"Kyle\",\n    \"temperature\": 0.3,\n    \"greeting\": \"Hi, this is {{agent_name}} from {{business_name}} — do you have a quick minute?\"\n  }\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            }
          },
          "response": [
            {
              "name": "201 — Created — the full agent.",
              "originalRequest": {
                "method": "POST",
                "header": [
                  {
                    "key": "Accept",
                    "value": "application/json"
                  },
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "raw": "{{baseUrl}}/agents",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "agents"
                  ]
                },
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"name\": \"Appointment Setter\",\n  \"call_template\": {\n    \"system_prompt\": \"You are {{agent_name}}, a friendly scheduler for {{business_name}}. Book the caller a 30-minute consultation.\",\n    \"voice\": \"Kyle\",\n    \"temperature\": 0.3,\n    \"greeting\": \"Hi, this is {{agent_name}} from {{business_name}} — do you have a quick minute?\"\n  }\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "status": "Created — the full agent.",
              "code": 201,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                },
                {
                  "key": "X-Request-Id",
                  "value": "00000000-0000-4000-8000-000000000000"
                }
              ],
              "body": "{\n  \"id\": \"2a3b4c5d-6e7f-4a8b-9c0d-1e2f3a4b5c6d\",\n  \"name\": \"Appointment Setter\",\n  \"type\": \"standard\",\n  \"created_via\": \"public_api\",\n  \"call_template\": {\n    \"system_prompt\": \"You are {{agent_name}}, a friendly scheduler for {{business_name}}.\",\n    \"voice\": \"Kyle\",\n    \"voice_id\": \"0b1c2d3e-voice\",\n    \"voice_name\": \"Kyle\",\n    \"temperature\": 0.3,\n    \"recording_enabled\": true\n  },\n  \"phone_number\": null,\n  \"created_at\": \"2026-10-02T17:03:11Z\",\n  \"updated_at\": \"2026-10-02T17:03:11Z\"\n}"
            },
            {
              "name": "400 — `name_required`, `name_too_long`, `call_template_must_be_object`, `unknown_templ",
              "originalRequest": {
                "method": "POST",
                "header": [
                  {
                    "key": "Accept",
                    "value": "application/json"
                  },
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "raw": "{{baseUrl}}/agents",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "agents"
                  ]
                },
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"name\": \"Appointment Setter\",\n  \"call_template\": {\n    \"system_prompt\": \"You are {{agent_name}}, a friendly scheduler for {{business_name}}. Book the caller a 30-minute consultation.\",\n    \"voice\": \"Kyle\",\n    \"temperature\": 0.3,\n    \"greeting\": \"Hi, this is {{agent_name}} from {{business_name}} — do you have a quick minute?\"\n  }\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "status": "`name_required`, `name_too_long`, `call_",
              "code": 400,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                },
                {
                  "key": "X-Request-Id",
                  "value": "00000000-0000-4000-8000-000000000000"
                }
              ],
              "body": "{\n  \"error\": \"system_prompt_required\"\n}"
            },
            {
              "name": "401 — No key, or a key that is unknown, revoked or expired. `error` is one of",
              "originalRequest": {
                "method": "POST",
                "header": [
                  {
                    "key": "Accept",
                    "value": "application/json"
                  },
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "raw": "{{baseUrl}}/agents",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "agents"
                  ]
                },
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"name\": \"Appointment Setter\",\n  \"call_template\": {\n    \"system_prompt\": \"You are {{agent_name}}, a friendly scheduler for {{business_name}}. Book the caller a 30-minute consultation.\",\n    \"voice\": \"Kyle\",\n    \"temperature\": 0.3,\n    \"greeting\": \"Hi, this is {{agent_name}} from {{business_name}} — do you have a quick minute?\"\n  }\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "status": "No key, or a key that is unknown, revoke",
              "code": 401,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                },
                {
                  "key": "X-Request-Id",
                  "value": "00000000-0000-4000-8000-000000000000"
                }
              ],
              "body": "{\n  \"error\": \"invalid_api_key\",\n  \"request_id\": \"0f3b9c1e-6d2a-4b7f-8e1c-5a9d2b4c6e80\"\n}"
            },
            {
              "name": "403 — The key does not carry the scope this operation needs. `required` names the miss",
              "originalRequest": {
                "method": "POST",
                "header": [
                  {
                    "key": "Accept",
                    "value": "application/json"
                  },
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "raw": "{{baseUrl}}/agents",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "agents"
                  ]
                },
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"name\": \"Appointment Setter\",\n  \"call_template\": {\n    \"system_prompt\": \"You are {{agent_name}}, a friendly scheduler for {{business_name}}. Book the caller a 30-minute consultation.\",\n    \"voice\": \"Kyle\",\n    \"temperature\": 0.3,\n    \"greeting\": \"Hi, this is {{agent_name}} from {{business_name}} — do you have a quick minute?\"\n  }\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "status": "The key does not carry the scope this op",
              "code": 403,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                },
                {
                  "key": "X-Request-Id",
                  "value": "00000000-0000-4000-8000-000000000000"
                }
              ],
              "body": "{\n  \"error\": \"insufficient_scope\",\n  \"message\": \"This key does not have the leads:write scope.\",\n  \"required\": \"leads:write\",\n  \"request_id\": \"0f3b9c1e-6d2a-4b7f-8e1c-5a9d2b4c6e80\"\n}"
            },
            {
              "name": "429 — Too many requests for this key in the current minute. Wait `Retry-After` seconds",
              "originalRequest": {
                "method": "POST",
                "header": [
                  {
                    "key": "Accept",
                    "value": "application/json"
                  },
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "raw": "{{baseUrl}}/agents",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "agents"
                  ]
                },
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"name\": \"Appointment Setter\",\n  \"call_template\": {\n    \"system_prompt\": \"You are {{agent_name}}, a friendly scheduler for {{business_name}}. Book the caller a 30-minute consultation.\",\n    \"voice\": \"Kyle\",\n    \"temperature\": 0.3,\n    \"greeting\": \"Hi, this is {{agent_name}} from {{business_name}} — do you have a quick minute?\"\n  }\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "status": "Too many requests for this key in the cu",
              "code": 429,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                },
                {
                  "key": "X-Request-Id",
                  "value": "00000000-0000-4000-8000-000000000000"
                }
              ],
              "body": "{\n  \"error\": \"rate_limited\",\n  \"message\": \"This key is limited to 60 requests per minute. Retry in 3s.\",\n  \"retry_after_seconds\": 3,\n  \"request_id\": \"0f3b9c1e-6d2a-4b7f-8e1c-5a9d2b4c6e80\"\n}"
            },
            {
              "name": "503 — `not_provisioned` — the voice-agent columns are missing (should not occur on pro",
              "originalRequest": {
                "method": "POST",
                "header": [
                  {
                    "key": "Accept",
                    "value": "application/json"
                  },
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "raw": "{{baseUrl}}/agents",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "agents"
                  ]
                },
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"name\": \"Appointment Setter\",\n  \"call_template\": {\n    \"system_prompt\": \"You are {{agent_name}}, a friendly scheduler for {{business_name}}. Book the caller a 30-minute consultation.\",\n    \"voice\": \"Kyle\",\n    \"temperature\": 0.3,\n    \"greeting\": \"Hi, this is {{agent_name}} from {{business_name}} — do you have a quick minute?\"\n  }\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "status": "`not_provisioned` — the voice-agent colu",
              "code": 503,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                },
                {
                  "key": "X-Request-Id",
                  "value": "00000000-0000-4000-8000-000000000000"
                }
              ],
              "body": "{\n  \"error\": \"invalid_phone_number\",\n  \"message\": \"phone_number is required: 10-15 digits, E.164 preferred (+15551234567).\",\n  \"request_id\": \"0f3b9c1e-6d2a-4b7f-8e1c-5a9d2b4c6e80\"\n}"
            }
          ]
        },
        {
          "name": "Get a voice agent  ·  GET /agents/{id}",
          "request": {
            "method": "GET",
            "header": [
              {
                "key": "Accept",
                "value": "application/json"
              }
            ],
            "url": {
              "raw": "{{baseUrl}}/agents/:id",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "agents",
                ":id"
              ],
              "variable": [
                {
                  "key": "id",
                  "value": "4b1e0d1a-3c4e-4d0a-9f2b-7e1a2b3c4d5e",
                  "description": "Resource id (UUID)."
                }
              ]
            },
            "description": "**Scope:** `agents:read`\n\nScope: `agents:read`."
          },
          "response": [
            {
              "name": "200 — OK",
              "originalRequest": {
                "method": "GET",
                "header": [
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "raw": "{{baseUrl}}/agents/:id",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "agents",
                    ":id"
                  ],
                  "variable": [
                    {
                      "key": "id",
                      "value": "4b1e0d1a-3c4e-4d0a-9f2b-7e1a2b3c4d5e",
                      "description": "Resource id (UUID)."
                    }
                  ]
                }
              },
              "status": "OK",
              "code": 200,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                },
                {
                  "key": "X-Request-Id",
                  "value": "00000000-0000-4000-8000-000000000000"
                }
              ],
              "body": "{\n  \"id\": \"2a3b4c5d-6e7f-4a8b-9c0d-1e2f3a4b5c6d\",\n  \"name\": \"Appointment Setter\",\n  \"type\": \"standard\",\n  \"created_via\": \"public_api\",\n  \"call_template\": {\n    \"system_prompt\": \"You are {{agent_name}}, a friendly scheduler for {{business_name}}.\",\n    \"voice\": \"Kyle\",\n    \"voice_id\": \"0b1c2d3e-voice\",\n    \"voice_name\": \"Kyle\",\n    \"temperature\": 0.3,\n    \"recording_enabled\": true\n  },\n  \"phone_number\": null,\n  \"created_at\": \"2026-10-02T17:03:11Z\",\n  \"updated_at\": \"2026-10-02T17:03:11Z\"\n}"
            },
            {
              "name": "401 — No key, or a key that is unknown, revoked or expired. `error` is one of",
              "originalRequest": {
                "method": "GET",
                "header": [
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "raw": "{{baseUrl}}/agents/:id",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "agents",
                    ":id"
                  ],
                  "variable": [
                    {
                      "key": "id",
                      "value": "4b1e0d1a-3c4e-4d0a-9f2b-7e1a2b3c4d5e",
                      "description": "Resource id (UUID)."
                    }
                  ]
                }
              },
              "status": "No key, or a key that is unknown, revoke",
              "code": 401,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                },
                {
                  "key": "X-Request-Id",
                  "value": "00000000-0000-4000-8000-000000000000"
                }
              ],
              "body": "{\n  \"error\": \"invalid_api_key\",\n  \"request_id\": \"0f3b9c1e-6d2a-4b7f-8e1c-5a9d2b4c6e80\"\n}"
            },
            {
              "name": "403 — The key does not carry the scope this operation needs. `required` names the miss",
              "originalRequest": {
                "method": "GET",
                "header": [
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "raw": "{{baseUrl}}/agents/:id",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "agents",
                    ":id"
                  ],
                  "variable": [
                    {
                      "key": "id",
                      "value": "4b1e0d1a-3c4e-4d0a-9f2b-7e1a2b3c4d5e",
                      "description": "Resource id (UUID)."
                    }
                  ]
                }
              },
              "status": "The key does not carry the scope this op",
              "code": 403,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                },
                {
                  "key": "X-Request-Id",
                  "value": "00000000-0000-4000-8000-000000000000"
                }
              ],
              "body": "{\n  \"error\": \"insufficient_scope\",\n  \"message\": \"This key does not have the leads:write scope.\",\n  \"required\": \"leads:write\",\n  \"request_id\": \"0f3b9c1e-6d2a-4b7f-8e1c-5a9d2b4c6e80\"\n}"
            },
            {
              "name": "404 — No such resource in your organization (ids from other organizations also answer ",
              "originalRequest": {
                "method": "GET",
                "header": [
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "raw": "{{baseUrl}}/agents/:id",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "agents",
                    ":id"
                  ],
                  "variable": [
                    {
                      "key": "id",
                      "value": "4b1e0d1a-3c4e-4d0a-9f2b-7e1a2b3c4d5e",
                      "description": "Resource id (UUID)."
                    }
                  ]
                }
              },
              "status": "No such resource in your organization (i",
              "code": 404,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                },
                {
                  "key": "X-Request-Id",
                  "value": "00000000-0000-4000-8000-000000000000"
                }
              ],
              "body": "{\n  \"error\": \"not_found\",\n  \"request_id\": \"0f3b9c1e-6d2a-4b7f-8e1c-5a9d2b4c6e80\"\n}"
            },
            {
              "name": "429 — Too many requests for this key in the current minute. Wait `Retry-After` seconds",
              "originalRequest": {
                "method": "GET",
                "header": [
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "raw": "{{baseUrl}}/agents/:id",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "agents",
                    ":id"
                  ],
                  "variable": [
                    {
                      "key": "id",
                      "value": "4b1e0d1a-3c4e-4d0a-9f2b-7e1a2b3c4d5e",
                      "description": "Resource id (UUID)."
                    }
                  ]
                }
              },
              "status": "Too many requests for this key in the cu",
              "code": 429,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                },
                {
                  "key": "X-Request-Id",
                  "value": "00000000-0000-4000-8000-000000000000"
                }
              ],
              "body": "{\n  \"error\": \"rate_limited\",\n  \"message\": \"This key is limited to 60 requests per minute. Retry in 3s.\",\n  \"retry_after_seconds\": 3,\n  \"request_id\": \"0f3b9c1e-6d2a-4b7f-8e1c-5a9d2b4c6e80\"\n}"
            },
            {
              "name": "500 — `internal_error` — something failed on Lojiq's side. The detail is in Lojiq's lo",
              "originalRequest": {
                "method": "GET",
                "header": [
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "raw": "{{baseUrl}}/agents/:id",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "agents",
                    ":id"
                  ],
                  "variable": [
                    {
                      "key": "id",
                      "value": "4b1e0d1a-3c4e-4d0a-9f2b-7e1a2b3c4d5e",
                      "description": "Resource id (UUID)."
                    }
                  ]
                }
              },
              "status": "`internal_error` — something failed on L",
              "code": 500,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                },
                {
                  "key": "X-Request-Id",
                  "value": "00000000-0000-4000-8000-000000000000"
                }
              ],
              "body": "{\n  \"error\": \"internal_error\",\n  \"message\": \"Something went wrong on our side. Retry\",\n  \"or contact support with the request_id.\": null,\n  \"request_id\": \"0f3b9c1e-6d2a-4b7f-8e1c-5a9d2b4c6e80\"\n}"
            }
          ]
        },
        {
          "name": "Update a voice agent  ·  PATCH /agents/{id}",
          "request": {
            "method": "PATCH",
            "header": [
              {
                "key": "Accept",
                "value": "application/json"
              },
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "url": {
              "raw": "{{baseUrl}}/agents/:id",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "agents",
                ":id"
              ],
              "variable": [
                {
                  "key": "id",
                  "value": "4b1e0d1a-3c4e-4d0a-9f2b-7e1a2b3c4d5e",
                  "description": "Resource id (UUID)."
                }
              ]
            },
            "description": "**Scope:** `agents:write`\n\nRename and/or replace the `call_template` (wholesale, no deep merge) of an **API-created** agent.\nApp-created agents answer `409 agent_managed_in_app`. Scope: `agents:write`.\n",
            "body": {
              "mode": "raw",
              "raw": "{\n  \"call_template\": {\n    \"system_prompt\": \"You are Riley, a scheduler for Acme Dental. Book a 30-minute consultation.\",\n    \"voice\": \"Kyle\"\n  }\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            }
          },
          "response": [
            {
              "name": "200 — The updated agent.",
              "originalRequest": {
                "method": "PATCH",
                "header": [
                  {
                    "key": "Accept",
                    "value": "application/json"
                  },
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "raw": "{{baseUrl}}/agents/:id",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "agents",
                    ":id"
                  ],
                  "variable": [
                    {
                      "key": "id",
                      "value": "4b1e0d1a-3c4e-4d0a-9f2b-7e1a2b3c4d5e",
                      "description": "Resource id (UUID)."
                    }
                  ]
                },
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"call_template\": {\n    \"system_prompt\": \"You are Riley, a scheduler for Acme Dental. Book a 30-minute consultation.\",\n    \"voice\": \"Kyle\"\n  }\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "status": "The updated agent.",
              "code": 200,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                },
                {
                  "key": "X-Request-Id",
                  "value": "00000000-0000-4000-8000-000000000000"
                }
              ],
              "body": "{\n  \"id\": \"2a3b4c5d-6e7f-4a8b-9c0d-1e2f3a4b5c6d\",\n  \"name\": \"Appointment Setter\",\n  \"type\": \"standard\",\n  \"created_via\": \"public_api\",\n  \"call_template\": {\n    \"system_prompt\": \"You are {{agent_name}}, a friendly scheduler for {{business_name}}.\",\n    \"voice\": \"Kyle\",\n    \"voice_id\": \"0b1c2d3e-voice\",\n    \"voice_name\": \"Kyle\",\n    \"temperature\": 0.3,\n    \"recording_enabled\": true\n  },\n  \"phone_number\": null,\n  \"created_at\": \"2026-10-02T17:03:11Z\",\n  \"updated_at\": \"2026-10-02T17:03:11Z\"\n}"
            },
            {
              "name": "400 — `nothing_to_update`, or any `createAgent` validation code.",
              "originalRequest": {
                "method": "PATCH",
                "header": [
                  {
                    "key": "Accept",
                    "value": "application/json"
                  },
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "raw": "{{baseUrl}}/agents/:id",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "agents",
                    ":id"
                  ],
                  "variable": [
                    {
                      "key": "id",
                      "value": "4b1e0d1a-3c4e-4d0a-9f2b-7e1a2b3c4d5e",
                      "description": "Resource id (UUID)."
                    }
                  ]
                },
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"call_template\": {\n    \"system_prompt\": \"You are Riley, a scheduler for Acme Dental. Book a 30-minute consultation.\",\n    \"voice\": \"Kyle\"\n  }\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "status": "`nothing_to_update`, or any `createAgent",
              "code": 400,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                },
                {
                  "key": "X-Request-Id",
                  "value": "00000000-0000-4000-8000-000000000000"
                }
              ],
              "body": "{\n  \"error\": \"nothing_to_update\",\n  \"message\": \"Provide name and/or call_template.\"\n}"
            },
            {
              "name": "401 — No key, or a key that is unknown, revoked or expired. `error` is one of",
              "originalRequest": {
                "method": "PATCH",
                "header": [
                  {
                    "key": "Accept",
                    "value": "application/json"
                  },
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "raw": "{{baseUrl}}/agents/:id",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "agents",
                    ":id"
                  ],
                  "variable": [
                    {
                      "key": "id",
                      "value": "4b1e0d1a-3c4e-4d0a-9f2b-7e1a2b3c4d5e",
                      "description": "Resource id (UUID)."
                    }
                  ]
                },
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"call_template\": {\n    \"system_prompt\": \"You are Riley, a scheduler for Acme Dental. Book a 30-minute consultation.\",\n    \"voice\": \"Kyle\"\n  }\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "status": "No key, or a key that is unknown, revoke",
              "code": 401,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                },
                {
                  "key": "X-Request-Id",
                  "value": "00000000-0000-4000-8000-000000000000"
                }
              ],
              "body": "{\n  \"error\": \"invalid_api_key\",\n  \"request_id\": \"0f3b9c1e-6d2a-4b7f-8e1c-5a9d2b4c6e80\"\n}"
            },
            {
              "name": "403 — The key does not carry the scope this operation needs. `required` names the miss",
              "originalRequest": {
                "method": "PATCH",
                "header": [
                  {
                    "key": "Accept",
                    "value": "application/json"
                  },
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "raw": "{{baseUrl}}/agents/:id",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "agents",
                    ":id"
                  ],
                  "variable": [
                    {
                      "key": "id",
                      "value": "4b1e0d1a-3c4e-4d0a-9f2b-7e1a2b3c4d5e",
                      "description": "Resource id (UUID)."
                    }
                  ]
                },
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"call_template\": {\n    \"system_prompt\": \"You are Riley, a scheduler for Acme Dental. Book a 30-minute consultation.\",\n    \"voice\": \"Kyle\"\n  }\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "status": "The key does not carry the scope this op",
              "code": 403,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                },
                {
                  "key": "X-Request-Id",
                  "value": "00000000-0000-4000-8000-000000000000"
                }
              ],
              "body": "{\n  \"error\": \"insufficient_scope\",\n  \"message\": \"This key does not have the leads:write scope.\",\n  \"required\": \"leads:write\",\n  \"request_id\": \"0f3b9c1e-6d2a-4b7f-8e1c-5a9d2b4c6e80\"\n}"
            },
            {
              "name": "404 — No such resource in your organization (ids from other organizations also answer ",
              "originalRequest": {
                "method": "PATCH",
                "header": [
                  {
                    "key": "Accept",
                    "value": "application/json"
                  },
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "raw": "{{baseUrl}}/agents/:id",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "agents",
                    ":id"
                  ],
                  "variable": [
                    {
                      "key": "id",
                      "value": "4b1e0d1a-3c4e-4d0a-9f2b-7e1a2b3c4d5e",
                      "description": "Resource id (UUID)."
                    }
                  ]
                },
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"call_template\": {\n    \"system_prompt\": \"You are Riley, a scheduler for Acme Dental. Book a 30-minute consultation.\",\n    \"voice\": \"Kyle\"\n  }\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "status": "No such resource in your organization (i",
              "code": 404,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                },
                {
                  "key": "X-Request-Id",
                  "value": "00000000-0000-4000-8000-000000000000"
                }
              ],
              "body": "{\n  \"error\": \"not_found\",\n  \"request_id\": \"0f3b9c1e-6d2a-4b7f-8e1c-5a9d2b4c6e80\"\n}"
            },
            {
              "name": "409 — `agent_managed_in_app`.",
              "originalRequest": {
                "method": "PATCH",
                "header": [
                  {
                    "key": "Accept",
                    "value": "application/json"
                  },
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "raw": "{{baseUrl}}/agents/:id",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "agents",
                    ":id"
                  ],
                  "variable": [
                    {
                      "key": "id",
                      "value": "4b1e0d1a-3c4e-4d0a-9f2b-7e1a2b3c4d5e",
                      "description": "Resource id (UUID)."
                    }
                  ]
                },
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"call_template\": {\n    \"system_prompt\": \"You are Riley, a scheduler for Acme Dental. Book a 30-minute consultation.\",\n    \"voice\": \"Kyle\"\n  }\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "status": "`agent_managed_in_app`.",
              "code": 409,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                },
                {
                  "key": "X-Request-Id",
                  "value": "00000000-0000-4000-8000-000000000000"
                }
              ],
              "body": "{\n  \"error\": \"agent_managed_in_app\",\n  \"message\": \"Only agents created via the public API can be updated here.\"\n}"
            },
            {
              "name": "429 — Too many requests for this key in the current minute. Wait `Retry-After` seconds",
              "originalRequest": {
                "method": "PATCH",
                "header": [
                  {
                    "key": "Accept",
                    "value": "application/json"
                  },
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "raw": "{{baseUrl}}/agents/:id",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "agents",
                    ":id"
                  ],
                  "variable": [
                    {
                      "key": "id",
                      "value": "4b1e0d1a-3c4e-4d0a-9f2b-7e1a2b3c4d5e",
                      "description": "Resource id (UUID)."
                    }
                  ]
                },
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"call_template\": {\n    \"system_prompt\": \"You are Riley, a scheduler for Acme Dental. Book a 30-minute consultation.\",\n    \"voice\": \"Kyle\"\n  }\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "status": "Too many requests for this key in the cu",
              "code": 429,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                },
                {
                  "key": "X-Request-Id",
                  "value": "00000000-0000-4000-8000-000000000000"
                }
              ],
              "body": "{\n  \"error\": \"rate_limited\",\n  \"message\": \"This key is limited to 60 requests per minute. Retry in 3s.\",\n  \"retry_after_seconds\": 3,\n  \"request_id\": \"0f3b9c1e-6d2a-4b7f-8e1c-5a9d2b4c6e80\"\n}"
            },
            {
              "name": "503 — `not_provisioned`.",
              "originalRequest": {
                "method": "PATCH",
                "header": [
                  {
                    "key": "Accept",
                    "value": "application/json"
                  },
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "raw": "{{baseUrl}}/agents/:id",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "agents",
                    ":id"
                  ],
                  "variable": [
                    {
                      "key": "id",
                      "value": "4b1e0d1a-3c4e-4d0a-9f2b-7e1a2b3c4d5e",
                      "description": "Resource id (UUID)."
                    }
                  ]
                },
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"call_template\": {\n    \"system_prompt\": \"You are Riley, a scheduler for Acme Dental. Book a 30-minute consultation.\",\n    \"voice\": \"Kyle\"\n  }\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "status": "`not_provisioned`.",
              "code": 503,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                },
                {
                  "key": "X-Request-Id",
                  "value": "00000000-0000-4000-8000-000000000000"
                }
              ],
              "body": "{\n  \"error\": \"invalid_phone_number\",\n  \"message\": \"phone_number is required: 10-15 digits, E.164 preferred (+15551234567).\",\n  \"request_id\": \"0f3b9c1e-6d2a-4b7f-8e1c-5a9d2b4c6e80\"\n}"
            }
          ]
        },
        {
          "name": "Delete a voice agent  ·  DELETE /agents/{id}",
          "request": {
            "method": "DELETE",
            "header": [
              {
                "key": "Accept",
                "value": "application/json"
              }
            ],
            "url": {
              "raw": "{{baseUrl}}/agents/:id",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "agents",
                ":id"
              ],
              "variable": [
                {
                  "key": "id",
                  "value": "4b1e0d1a-3c4e-4d0a-9f2b-7e1a2b3c4d5e",
                  "description": "Resource id (UUID)."
                }
              ]
            },
            "description": "**Scope:** `agents:write`\n\nDeletes an **API-created** agent that no campaign uses. Scope: `agents:write`."
          },
          "response": [
            {
              "name": "200 — Deleted",
              "originalRequest": {
                "method": "DELETE",
                "header": [
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "raw": "{{baseUrl}}/agents/:id",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "agents",
                    ":id"
                  ],
                  "variable": [
                    {
                      "key": "id",
                      "value": "4b1e0d1a-3c4e-4d0a-9f2b-7e1a2b3c4d5e",
                      "description": "Resource id (UUID)."
                    }
                  ]
                }
              },
              "status": "Deleted",
              "code": 200,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                },
                {
                  "key": "X-Request-Id",
                  "value": "00000000-0000-4000-8000-000000000000"
                }
              ],
              "body": "{\n  \"ok\": true\n}"
            },
            {
              "name": "401 — No key, or a key that is unknown, revoked or expired. `error` is one of",
              "originalRequest": {
                "method": "DELETE",
                "header": [
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "raw": "{{baseUrl}}/agents/:id",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "agents",
                    ":id"
                  ],
                  "variable": [
                    {
                      "key": "id",
                      "value": "4b1e0d1a-3c4e-4d0a-9f2b-7e1a2b3c4d5e",
                      "description": "Resource id (UUID)."
                    }
                  ]
                }
              },
              "status": "No key, or a key that is unknown, revoke",
              "code": 401,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                },
                {
                  "key": "X-Request-Id",
                  "value": "00000000-0000-4000-8000-000000000000"
                }
              ],
              "body": "{\n  \"error\": \"invalid_api_key\",\n  \"request_id\": \"0f3b9c1e-6d2a-4b7f-8e1c-5a9d2b4c6e80\"\n}"
            },
            {
              "name": "403 — The key does not carry the scope this operation needs. `required` names the miss",
              "originalRequest": {
                "method": "DELETE",
                "header": [
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "raw": "{{baseUrl}}/agents/:id",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "agents",
                    ":id"
                  ],
                  "variable": [
                    {
                      "key": "id",
                      "value": "4b1e0d1a-3c4e-4d0a-9f2b-7e1a2b3c4d5e",
                      "description": "Resource id (UUID)."
                    }
                  ]
                }
              },
              "status": "The key does not carry the scope this op",
              "code": 403,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                },
                {
                  "key": "X-Request-Id",
                  "value": "00000000-0000-4000-8000-000000000000"
                }
              ],
              "body": "{\n  \"error\": \"insufficient_scope\",\n  \"message\": \"This key does not have the leads:write scope.\",\n  \"required\": \"leads:write\",\n  \"request_id\": \"0f3b9c1e-6d2a-4b7f-8e1c-5a9d2b4c6e80\"\n}"
            },
            {
              "name": "404 — No such resource in your organization (ids from other organizations also answer ",
              "originalRequest": {
                "method": "DELETE",
                "header": [
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "raw": "{{baseUrl}}/agents/:id",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "agents",
                    ":id"
                  ],
                  "variable": [
                    {
                      "key": "id",
                      "value": "4b1e0d1a-3c4e-4d0a-9f2b-7e1a2b3c4d5e",
                      "description": "Resource id (UUID)."
                    }
                  ]
                }
              },
              "status": "No such resource in your organization (i",
              "code": 404,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                },
                {
                  "key": "X-Request-Id",
                  "value": "00000000-0000-4000-8000-000000000000"
                }
              ],
              "body": "{\n  \"error\": \"not_found\",\n  \"request_id\": \"0f3b9c1e-6d2a-4b7f-8e1c-5a9d2b4c6e80\"\n}"
            },
            {
              "name": "409 — `agent_managed_in_app`, or `agent_in_use` (assigned to one or more campaigns — u",
              "originalRequest": {
                "method": "DELETE",
                "header": [
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "raw": "{{baseUrl}}/agents/:id",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "agents",
                    ":id"
                  ],
                  "variable": [
                    {
                      "key": "id",
                      "value": "4b1e0d1a-3c4e-4d0a-9f2b-7e1a2b3c4d5e",
                      "description": "Resource id (UUID)."
                    }
                  ]
                }
              },
              "status": "`agent_managed_in_app`, or `agent_in_use",
              "code": 409,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                },
                {
                  "key": "X-Request-Id",
                  "value": "00000000-0000-4000-8000-000000000000"
                }
              ],
              "body": "{\n  \"error\": \"agent_in_use\",\n  \"message\": \"Agent is assigned to one or more campaigns. Unassign it first.\"\n}"
            },
            {
              "name": "429 — Too many requests for this key in the current minute. Wait `Retry-After` seconds",
              "originalRequest": {
                "method": "DELETE",
                "header": [
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "raw": "{{baseUrl}}/agents/:id",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "agents",
                    ":id"
                  ],
                  "variable": [
                    {
                      "key": "id",
                      "value": "4b1e0d1a-3c4e-4d0a-9f2b-7e1a2b3c4d5e",
                      "description": "Resource id (UUID)."
                    }
                  ]
                }
              },
              "status": "Too many requests for this key in the cu",
              "code": 429,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                },
                {
                  "key": "X-Request-Id",
                  "value": "00000000-0000-4000-8000-000000000000"
                }
              ],
              "body": "{\n  \"error\": \"rate_limited\",\n  \"message\": \"This key is limited to 60 requests per minute. Retry in 3s.\",\n  \"retry_after_seconds\": 3,\n  \"request_id\": \"0f3b9c1e-6d2a-4b7f-8e1c-5a9d2b4c6e80\"\n}"
            },
            {
              "name": "500 — `internal_error` — something failed on Lojiq's side. The detail is in Lojiq's lo",
              "originalRequest": {
                "method": "DELETE",
                "header": [
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "raw": "{{baseUrl}}/agents/:id",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "agents",
                    ":id"
                  ],
                  "variable": [
                    {
                      "key": "id",
                      "value": "4b1e0d1a-3c4e-4d0a-9f2b-7e1a2b3c4d5e",
                      "description": "Resource id (UUID)."
                    }
                  ]
                }
              },
              "status": "`internal_error` — something failed on L",
              "code": 500,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                },
                {
                  "key": "X-Request-Id",
                  "value": "00000000-0000-4000-8000-000000000000"
                }
              ],
              "body": "{\n  \"error\": \"internal_error\",\n  \"message\": \"Something went wrong on our side. Retry\",\n  \"or contact support with the request_id.\": null,\n  \"request_id\": \"0f3b9c1e-6d2a-4b7f-8e1c-5a9d2b4c6e80\"\n}"
            }
          ]
        },
        {
          "name": "Assign an inbound number  ·  POST /agents/{id}/phone-number",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Accept",
                "value": "application/json"
              },
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "url": {
              "raw": "{{baseUrl}}/agents/:id/phone-number",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "agents",
                ":id",
                "phone-number"
              ],
              "variable": [
                {
                  "key": "id",
                  "value": "4b1e0d1a-3c4e-4d0a-9f2b-7e1a2b3c4d5e",
                  "description": "Resource id (UUID)."
                }
              ]
            },
            "description": "**Scope:** `agents:write`\n\nPoints a number your organization owns at this API-created agent, so the agent answers inbound calls to that\nnumber with its `call_template`. The response adds `inbound_webhook_configured`; when `false`, check the\nnumber's routing in the Lojiq app. Scope: `agents:write`.\n",
            "body": {
              "mode": "raw",
              "raw": "{\n  \"phone_number\": \"+15559876543\"\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            }
          },
          "response": [
            {
              "name": "200 — The agent, now answering the number.",
              "originalRequest": {
                "method": "POST",
                "header": [
                  {
                    "key": "Accept",
                    "value": "application/json"
                  },
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "raw": "{{baseUrl}}/agents/:id/phone-number",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "agents",
                    ":id",
                    "phone-number"
                  ],
                  "variable": [
                    {
                      "key": "id",
                      "value": "4b1e0d1a-3c4e-4d0a-9f2b-7e1a2b3c4d5e",
                      "description": "Resource id (UUID)."
                    }
                  ]
                },
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"phone_number\": \"+15559876543\"\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "status": "The agent, now answering the number.",
              "code": 200,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                },
                {
                  "key": "X-Request-Id",
                  "value": "00000000-0000-4000-8000-000000000000"
                }
              ],
              "body": "{\n  \"id\": \"2a3b4c5d-6e7f-4a8b-9c0d-1e2f3a4b5c6d\",\n  \"name\": \"Appointment Setter\",\n  \"type\": \"standard\",\n  \"created_via\": \"public_api\",\n  \"call_template\": {\n    \"system_prompt\": \"You are {{agent_name}}, a friendly scheduler for {{business_name}}.\",\n    \"voice\": \"Kyle\",\n    \"voice_id\": \"0b1c2d3e-voice\",\n    \"voice_name\": \"Kyle\",\n    \"temperature\": 0.3,\n    \"recording_enabled\": true\n  },\n  \"phone_number\": null,\n  \"created_at\": \"2026-10-02T17:03:11Z\",\n  \"updated_at\": \"2026-10-02T17:03:11Z\",\n  \"inbound_webhook_configured\": true\n}"
            },
            {
              "name": "400 — `phone_number_required` or `phone_number_not_owned`.",
              "originalRequest": {
                "method": "POST",
                "header": [
                  {
                    "key": "Accept",
                    "value": "application/json"
                  },
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "raw": "{{baseUrl}}/agents/:id/phone-number",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "agents",
                    ":id",
                    "phone-number"
                  ],
                  "variable": [
                    {
                      "key": "id",
                      "value": "4b1e0d1a-3c4e-4d0a-9f2b-7e1a2b3c4d5e",
                      "description": "Resource id (UUID)."
                    }
                  ]
                },
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"phone_number\": \"+15559876543\"\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "status": "`phone_number_required` or `phone_number",
              "code": 400,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                },
                {
                  "key": "X-Request-Id",
                  "value": "00000000-0000-4000-8000-000000000000"
                }
              ],
              "body": "{\n  \"error\": \"phone_number_not_owned\",\n  \"message\": \"The number must belong to your organization (see your numbers in the Lojiq app).\"\n}"
            },
            {
              "name": "401 — No key, or a key that is unknown, revoked or expired. `error` is one of",
              "originalRequest": {
                "method": "POST",
                "header": [
                  {
                    "key": "Accept",
                    "value": "application/json"
                  },
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "raw": "{{baseUrl}}/agents/:id/phone-number",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "agents",
                    ":id",
                    "phone-number"
                  ],
                  "variable": [
                    {
                      "key": "id",
                      "value": "4b1e0d1a-3c4e-4d0a-9f2b-7e1a2b3c4d5e",
                      "description": "Resource id (UUID)."
                    }
                  ]
                },
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"phone_number\": \"+15559876543\"\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "status": "No key, or a key that is unknown, revoke",
              "code": 401,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                },
                {
                  "key": "X-Request-Id",
                  "value": "00000000-0000-4000-8000-000000000000"
                }
              ],
              "body": "{\n  \"error\": \"invalid_api_key\",\n  \"request_id\": \"0f3b9c1e-6d2a-4b7f-8e1c-5a9d2b4c6e80\"\n}"
            },
            {
              "name": "403 — The key does not carry the scope this operation needs. `required` names the miss",
              "originalRequest": {
                "method": "POST",
                "header": [
                  {
                    "key": "Accept",
                    "value": "application/json"
                  },
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "raw": "{{baseUrl}}/agents/:id/phone-number",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "agents",
                    ":id",
                    "phone-number"
                  ],
                  "variable": [
                    {
                      "key": "id",
                      "value": "4b1e0d1a-3c4e-4d0a-9f2b-7e1a2b3c4d5e",
                      "description": "Resource id (UUID)."
                    }
                  ]
                },
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"phone_number\": \"+15559876543\"\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "status": "The key does not carry the scope this op",
              "code": 403,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                },
                {
                  "key": "X-Request-Id",
                  "value": "00000000-0000-4000-8000-000000000000"
                }
              ],
              "body": "{\n  \"error\": \"insufficient_scope\",\n  \"message\": \"This key does not have the leads:write scope.\",\n  \"required\": \"leads:write\",\n  \"request_id\": \"0f3b9c1e-6d2a-4b7f-8e1c-5a9d2b4c6e80\"\n}"
            },
            {
              "name": "404 — No such resource in your organization (ids from other organizations also answer ",
              "originalRequest": {
                "method": "POST",
                "header": [
                  {
                    "key": "Accept",
                    "value": "application/json"
                  },
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "raw": "{{baseUrl}}/agents/:id/phone-number",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "agents",
                    ":id",
                    "phone-number"
                  ],
                  "variable": [
                    {
                      "key": "id",
                      "value": "4b1e0d1a-3c4e-4d0a-9f2b-7e1a2b3c4d5e",
                      "description": "Resource id (UUID)."
                    }
                  ]
                },
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"phone_number\": \"+15559876543\"\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "status": "No such resource in your organization (i",
              "code": 404,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                },
                {
                  "key": "X-Request-Id",
                  "value": "00000000-0000-4000-8000-000000000000"
                }
              ],
              "body": "{\n  \"error\": \"not_found\",\n  \"request_id\": \"0f3b9c1e-6d2a-4b7f-8e1c-5a9d2b4c6e80\"\n}"
            },
            {
              "name": "409 — `agent_managed_in_app` or `phone_number_in_use` (another agent already answers i",
              "originalRequest": {
                "method": "POST",
                "header": [
                  {
                    "key": "Accept",
                    "value": "application/json"
                  },
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "raw": "{{baseUrl}}/agents/:id/phone-number",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "agents",
                    ":id",
                    "phone-number"
                  ],
                  "variable": [
                    {
                      "key": "id",
                      "value": "4b1e0d1a-3c4e-4d0a-9f2b-7e1a2b3c4d5e",
                      "description": "Resource id (UUID)."
                    }
                  ]
                },
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"phone_number\": \"+15559876543\"\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "status": "`agent_managed_in_app` or `phone_number_",
              "code": 409,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                },
                {
                  "key": "X-Request-Id",
                  "value": "00000000-0000-4000-8000-000000000000"
                }
              ],
              "body": "{\n  \"error\": \"phone_number_in_use\",\n  \"message\": \"Another agent already answers this number.\"\n}"
            },
            {
              "name": "429 — Too many requests for this key in the current minute. Wait `Retry-After` seconds",
              "originalRequest": {
                "method": "POST",
                "header": [
                  {
                    "key": "Accept",
                    "value": "application/json"
                  },
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "raw": "{{baseUrl}}/agents/:id/phone-number",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "agents",
                    ":id",
                    "phone-number"
                  ],
                  "variable": [
                    {
                      "key": "id",
                      "value": "4b1e0d1a-3c4e-4d0a-9f2b-7e1a2b3c4d5e",
                      "description": "Resource id (UUID)."
                    }
                  ]
                },
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"phone_number\": \"+15559876543\"\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "status": "Too many requests for this key in the cu",
              "code": 429,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                },
                {
                  "key": "X-Request-Id",
                  "value": "00000000-0000-4000-8000-000000000000"
                }
              ],
              "body": "{\n  \"error\": \"rate_limited\",\n  \"message\": \"This key is limited to 60 requests per minute. Retry in 3s.\",\n  \"retry_after_seconds\": 3,\n  \"request_id\": \"0f3b9c1e-6d2a-4b7f-8e1c-5a9d2b4c6e80\"\n}"
            },
            {
              "name": "500 — `internal_error` — something failed on Lojiq's side. The detail is in Lojiq's lo",
              "originalRequest": {
                "method": "POST",
                "header": [
                  {
                    "key": "Accept",
                    "value": "application/json"
                  },
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "raw": "{{baseUrl}}/agents/:id/phone-number",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "agents",
                    ":id",
                    "phone-number"
                  ],
                  "variable": [
                    {
                      "key": "id",
                      "value": "4b1e0d1a-3c4e-4d0a-9f2b-7e1a2b3c4d5e",
                      "description": "Resource id (UUID)."
                    }
                  ]
                },
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"phone_number\": \"+15559876543\"\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "status": "`internal_error` — something failed on L",
              "code": 500,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                },
                {
                  "key": "X-Request-Id",
                  "value": "00000000-0000-4000-8000-000000000000"
                }
              ],
              "body": "{\n  \"error\": \"internal_error\",\n  \"message\": \"Something went wrong on our side. Retry\",\n  \"or contact support with the request_id.\": null,\n  \"request_id\": \"0f3b9c1e-6d2a-4b7f-8e1c-5a9d2b4c6e80\"\n}"
            }
          ]
        },
        {
          "name": "Unassign the inbound number  ·  DELETE /agents/{id}/phone-number",
          "request": {
            "method": "DELETE",
            "header": [
              {
                "key": "Accept",
                "value": "application/json"
              }
            ],
            "url": {
              "raw": "{{baseUrl}}/agents/:id/phone-number",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "agents",
                ":id",
                "phone-number"
              ],
              "variable": [
                {
                  "key": "id",
                  "value": "4b1e0d1a-3c4e-4d0a-9f2b-7e1a2b3c4d5e",
                  "description": "Resource id (UUID)."
                }
              ]
            },
            "description": "**Scope:** `agents:write`\n\nStops inbound routing to this API-created agent. The number stays in your organization. Scope: `agents:write`."
          },
          "response": [
            {
              "name": "200 — The agent, with `phone_number: null`.",
              "originalRequest": {
                "method": "DELETE",
                "header": [
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "raw": "{{baseUrl}}/agents/:id/phone-number",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "agents",
                    ":id",
                    "phone-number"
                  ],
                  "variable": [
                    {
                      "key": "id",
                      "value": "4b1e0d1a-3c4e-4d0a-9f2b-7e1a2b3c4d5e",
                      "description": "Resource id (UUID)."
                    }
                  ]
                }
              },
              "status": "The agent, with `phone_number: null`.",
              "code": 200,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                },
                {
                  "key": "X-Request-Id",
                  "value": "00000000-0000-4000-8000-000000000000"
                }
              ],
              "body": "{\n  \"id\": \"2a3b4c5d-6e7f-4a8b-9c0d-1e2f3a4b5c6d\",\n  \"name\": \"Appointment Setter\",\n  \"type\": \"standard\",\n  \"created_via\": \"public_api\",\n  \"call_template\": {\n    \"system_prompt\": \"You are {{agent_name}}, a friendly scheduler for {{business_name}}.\",\n    \"voice\": \"Kyle\",\n    \"voice_id\": \"0b1c2d3e-voice\",\n    \"voice_name\": \"Kyle\",\n    \"temperature\": 0.3,\n    \"recording_enabled\": true\n  },\n  \"phone_number\": null,\n  \"created_at\": \"2026-10-02T17:03:11Z\",\n  \"updated_at\": \"2026-10-02T17:03:11Z\"\n}"
            },
            {
              "name": "401 — No key, or a key that is unknown, revoked or expired. `error` is one of",
              "originalRequest": {
                "method": "DELETE",
                "header": [
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "raw": "{{baseUrl}}/agents/:id/phone-number",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "agents",
                    ":id",
                    "phone-number"
                  ],
                  "variable": [
                    {
                      "key": "id",
                      "value": "4b1e0d1a-3c4e-4d0a-9f2b-7e1a2b3c4d5e",
                      "description": "Resource id (UUID)."
                    }
                  ]
                }
              },
              "status": "No key, or a key that is unknown, revoke",
              "code": 401,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                },
                {
                  "key": "X-Request-Id",
                  "value": "00000000-0000-4000-8000-000000000000"
                }
              ],
              "body": "{\n  \"error\": \"invalid_api_key\",\n  \"request_id\": \"0f3b9c1e-6d2a-4b7f-8e1c-5a9d2b4c6e80\"\n}"
            },
            {
              "name": "403 — The key does not carry the scope this operation needs. `required` names the miss",
              "originalRequest": {
                "method": "DELETE",
                "header": [
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "raw": "{{baseUrl}}/agents/:id/phone-number",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "agents",
                    ":id",
                    "phone-number"
                  ],
                  "variable": [
                    {
                      "key": "id",
                      "value": "4b1e0d1a-3c4e-4d0a-9f2b-7e1a2b3c4d5e",
                      "description": "Resource id (UUID)."
                    }
                  ]
                }
              },
              "status": "The key does not carry the scope this op",
              "code": 403,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                },
                {
                  "key": "X-Request-Id",
                  "value": "00000000-0000-4000-8000-000000000000"
                }
              ],
              "body": "{\n  \"error\": \"insufficient_scope\",\n  \"message\": \"This key does not have the leads:write scope.\",\n  \"required\": \"leads:write\",\n  \"request_id\": \"0f3b9c1e-6d2a-4b7f-8e1c-5a9d2b4c6e80\"\n}"
            },
            {
              "name": "404 — No such resource in your organization (ids from other organizations also answer ",
              "originalRequest": {
                "method": "DELETE",
                "header": [
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "raw": "{{baseUrl}}/agents/:id/phone-number",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "agents",
                    ":id",
                    "phone-number"
                  ],
                  "variable": [
                    {
                      "key": "id",
                      "value": "4b1e0d1a-3c4e-4d0a-9f2b-7e1a2b3c4d5e",
                      "description": "Resource id (UUID)."
                    }
                  ]
                }
              },
              "status": "No such resource in your organization (i",
              "code": 404,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                },
                {
                  "key": "X-Request-Id",
                  "value": "00000000-0000-4000-8000-000000000000"
                }
              ],
              "body": "{\n  \"error\": \"not_found\",\n  \"request_id\": \"0f3b9c1e-6d2a-4b7f-8e1c-5a9d2b4c6e80\"\n}"
            },
            {
              "name": "409 — `agent_managed_in_app`.",
              "originalRequest": {
                "method": "DELETE",
                "header": [
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "raw": "{{baseUrl}}/agents/:id/phone-number",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "agents",
                    ":id",
                    "phone-number"
                  ],
                  "variable": [
                    {
                      "key": "id",
                      "value": "4b1e0d1a-3c4e-4d0a-9f2b-7e1a2b3c4d5e",
                      "description": "Resource id (UUID)."
                    }
                  ]
                }
              },
              "status": "`agent_managed_in_app`.",
              "code": 409,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                },
                {
                  "key": "X-Request-Id",
                  "value": "00000000-0000-4000-8000-000000000000"
                }
              ],
              "body": "{\n  \"error\": \"invalid_phone_number\",\n  \"message\": \"phone_number is required: 10-15 digits, E.164 preferred (+15551234567).\",\n  \"request_id\": \"0f3b9c1e-6d2a-4b7f-8e1c-5a9d2b4c6e80\"\n}"
            },
            {
              "name": "429 — Too many requests for this key in the current minute. Wait `Retry-After` seconds",
              "originalRequest": {
                "method": "DELETE",
                "header": [
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "raw": "{{baseUrl}}/agents/:id/phone-number",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "agents",
                    ":id",
                    "phone-number"
                  ],
                  "variable": [
                    {
                      "key": "id",
                      "value": "4b1e0d1a-3c4e-4d0a-9f2b-7e1a2b3c4d5e",
                      "description": "Resource id (UUID)."
                    }
                  ]
                }
              },
              "status": "Too many requests for this key in the cu",
              "code": 429,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                },
                {
                  "key": "X-Request-Id",
                  "value": "00000000-0000-4000-8000-000000000000"
                }
              ],
              "body": "{\n  \"error\": \"rate_limited\",\n  \"message\": \"This key is limited to 60 requests per minute. Retry in 3s.\",\n  \"retry_after_seconds\": 3,\n  \"request_id\": \"0f3b9c1e-6d2a-4b7f-8e1c-5a9d2b4c6e80\"\n}"
            },
            {
              "name": "500 — `internal_error` — something failed on Lojiq's side. The detail is in Lojiq's lo",
              "originalRequest": {
                "method": "DELETE",
                "header": [
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "raw": "{{baseUrl}}/agents/:id/phone-number",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "agents",
                    ":id",
                    "phone-number"
                  ],
                  "variable": [
                    {
                      "key": "id",
                      "value": "4b1e0d1a-3c4e-4d0a-9f2b-7e1a2b3c4d5e",
                      "description": "Resource id (UUID)."
                    }
                  ]
                }
              },
              "status": "`internal_error` — something failed on L",
              "code": 500,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                },
                {
                  "key": "X-Request-Id",
                  "value": "00000000-0000-4000-8000-000000000000"
                }
              ],
              "body": "{\n  \"error\": \"internal_error\",\n  \"message\": \"Something went wrong on our side. Retry\",\n  \"or contact support with the request_id.\": null,\n  \"request_id\": \"0f3b9c1e-6d2a-4b7f-8e1c-5a9d2b4c6e80\"\n}"
            }
          ]
        },
        {
          "name": "List an agent's calls  ·  GET /agents/{id}/calls",
          "request": {
            "method": "GET",
            "header": [
              {
                "key": "Accept",
                "value": "application/json"
              }
            ],
            "url": {
              "raw": "{{baseUrl}}/agents/:id/calls?limit=&offset=",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "agents",
                ":id",
                "calls"
              ],
              "query": [
                {
                  "key": "limit",
                  "value": "50",
                  "description": "Page size. Default 50, maximum 200 (larger values are clamped to 200).",
                  "disabled": false
                },
                {
                  "key": "offset",
                  "value": "0",
                  "description": "Number of rows to skip. Default 0. Page by increasing `offset` by `limit` until `data` comes back shorter than `limit`.",
                  "disabled": false
                }
              ],
              "variable": [
                {
                  "key": "id",
                  "value": "4b1e0d1a-3c4e-4d0a-9f2b-7e1a2b3c4d5e",
                  "description": "Resource id (UUID)."
                }
              ]
            },
            "description": "**Scope:** `calls:read`\n\nCalls attributed to this agent (started through the API with this agent), newest first. Scope: `calls:read`."
          },
          "response": [
            {
              "name": "200 — OK",
              "originalRequest": {
                "method": "GET",
                "header": [
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "raw": "{{baseUrl}}/agents/:id/calls?limit=&offset=",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "agents",
                    ":id",
                    "calls"
                  ],
                  "query": [
                    {
                      "key": "limit",
                      "value": "50",
                      "description": "Page size. Default 50, maximum 200 (larger values are clamped to 200).",
                      "disabled": false
                    },
                    {
                      "key": "offset",
                      "value": "0",
                      "description": "Number of rows to skip. Default 0. Page by increasing `offset` by `limit` until `data` comes back shorter than `limit`.",
                      "disabled": false
                    }
                  ],
                  "variable": [
                    {
                      "key": "id",
                      "value": "4b1e0d1a-3c4e-4d0a-9f2b-7e1a2b3c4d5e",
                      "description": "Resource id (UUID)."
                    }
                  ]
                }
              },
              "status": "OK",
              "code": 200,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                },
                {
                  "key": "X-Request-Id",
                  "value": "00000000-0000-4000-8000-000000000000"
                }
              ],
              "body": "{\n  \"data\": [\n    {\n      \"id\": \"5e6f7a8b-9c0d-4e1f-8a2b-3c4d5e6f7a8b\",\n      \"call_sid\": \"a1b2c3d4e5f6\",\n      \"lead_id\": \"4b1e0d1a-3c4e-4d0a-9f2b-7e1a2b3c4d5e\",\n      \"campaign_id\": \"0d2f6b1e-4a7c-4e8d-9b1a-2c3d4e5f6a7b\",\n      \"to_number\": \"+15551234567\",\n      \"from_number\": \"+15550001111\",\n      \"status\": \"completed\",\n      \"call_outcome\": \"appointment_set\",\n      \"disposition\": null,\n      \"duration\": 184,\n      \"duration_seconds\": 184,\n      \"created_at\": \"2026-10-02T17:03:11Z\",\n      \"ended_at\": \"2026-10-02T17:06:15Z\",\n      \"recording_url\": null\n    }\n  ],\n  \"limit\": 50,\n  \"offset\": 0\n}"
            },
            {
              "name": "401 — No key, or a key that is unknown, revoked or expired. `error` is one of",
              "originalRequest": {
                "method": "GET",
                "header": [
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "raw": "{{baseUrl}}/agents/:id/calls?limit=&offset=",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "agents",
                    ":id",
                    "calls"
                  ],
                  "query": [
                    {
                      "key": "limit",
                      "value": "50",
                      "description": "Page size. Default 50, maximum 200 (larger values are clamped to 200).",
                      "disabled": false
                    },
                    {
                      "key": "offset",
                      "value": "0",
                      "description": "Number of rows to skip. Default 0. Page by increasing `offset` by `limit` until `data` comes back shorter than `limit`.",
                      "disabled": false
                    }
                  ],
                  "variable": [
                    {
                      "key": "id",
                      "value": "4b1e0d1a-3c4e-4d0a-9f2b-7e1a2b3c4d5e",
                      "description": "Resource id (UUID)."
                    }
                  ]
                }
              },
              "status": "No key, or a key that is unknown, revoke",
              "code": 401,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                },
                {
                  "key": "X-Request-Id",
                  "value": "00000000-0000-4000-8000-000000000000"
                }
              ],
              "body": "{\n  \"error\": \"invalid_api_key\",\n  \"request_id\": \"0f3b9c1e-6d2a-4b7f-8e1c-5a9d2b4c6e80\"\n}"
            },
            {
              "name": "403 — The key does not carry the scope this operation needs. `required` names the miss",
              "originalRequest": {
                "method": "GET",
                "header": [
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "raw": "{{baseUrl}}/agents/:id/calls?limit=&offset=",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "agents",
                    ":id",
                    "calls"
                  ],
                  "query": [
                    {
                      "key": "limit",
                      "value": "50",
                      "description": "Page size. Default 50, maximum 200 (larger values are clamped to 200).",
                      "disabled": false
                    },
                    {
                      "key": "offset",
                      "value": "0",
                      "description": "Number of rows to skip. Default 0. Page by increasing `offset` by `limit` until `data` comes back shorter than `limit`.",
                      "disabled": false
                    }
                  ],
                  "variable": [
                    {
                      "key": "id",
                      "value": "4b1e0d1a-3c4e-4d0a-9f2b-7e1a2b3c4d5e",
                      "description": "Resource id (UUID)."
                    }
                  ]
                }
              },
              "status": "The key does not carry the scope this op",
              "code": 403,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                },
                {
                  "key": "X-Request-Id",
                  "value": "00000000-0000-4000-8000-000000000000"
                }
              ],
              "body": "{\n  \"error\": \"insufficient_scope\",\n  \"message\": \"This key does not have the leads:write scope.\",\n  \"required\": \"leads:write\",\n  \"request_id\": \"0f3b9c1e-6d2a-4b7f-8e1c-5a9d2b4c6e80\"\n}"
            },
            {
              "name": "429 — Too many requests for this key in the current minute. Wait `Retry-After` seconds",
              "originalRequest": {
                "method": "GET",
                "header": [
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "raw": "{{baseUrl}}/agents/:id/calls?limit=&offset=",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "agents",
                    ":id",
                    "calls"
                  ],
                  "query": [
                    {
                      "key": "limit",
                      "value": "50",
                      "description": "Page size. Default 50, maximum 200 (larger values are clamped to 200).",
                      "disabled": false
                    },
                    {
                      "key": "offset",
                      "value": "0",
                      "description": "Number of rows to skip. Default 0. Page by increasing `offset` by `limit` until `data` comes back shorter than `limit`.",
                      "disabled": false
                    }
                  ],
                  "variable": [
                    {
                      "key": "id",
                      "value": "4b1e0d1a-3c4e-4d0a-9f2b-7e1a2b3c4d5e",
                      "description": "Resource id (UUID)."
                    }
                  ]
                }
              },
              "status": "Too many requests for this key in the cu",
              "code": 429,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                },
                {
                  "key": "X-Request-Id",
                  "value": "00000000-0000-4000-8000-000000000000"
                }
              ],
              "body": "{\n  \"error\": \"rate_limited\",\n  \"message\": \"This key is limited to 60 requests per minute. Retry in 3s.\",\n  \"retry_after_seconds\": 3,\n  \"request_id\": \"0f3b9c1e-6d2a-4b7f-8e1c-5a9d2b4c6e80\"\n}"
            },
            {
              "name": "500 — `internal_error` — something failed on Lojiq's side. The detail is in Lojiq's lo",
              "originalRequest": {
                "method": "GET",
                "header": [
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "raw": "{{baseUrl}}/agents/:id/calls?limit=&offset=",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "agents",
                    ":id",
                    "calls"
                  ],
                  "query": [
                    {
                      "key": "limit",
                      "value": "50",
                      "description": "Page size. Default 50, maximum 200 (larger values are clamped to 200).",
                      "disabled": false
                    },
                    {
                      "key": "offset",
                      "value": "0",
                      "description": "Number of rows to skip. Default 0. Page by increasing `offset` by `limit` until `data` comes back shorter than `limit`.",
                      "disabled": false
                    }
                  ],
                  "variable": [
                    {
                      "key": "id",
                      "value": "4b1e0d1a-3c4e-4d0a-9f2b-7e1a2b3c4d5e",
                      "description": "Resource id (UUID)."
                    }
                  ]
                }
              },
              "status": "`internal_error` — something failed on L",
              "code": 500,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                },
                {
                  "key": "X-Request-Id",
                  "value": "00000000-0000-4000-8000-000000000000"
                }
              ],
              "body": "{\n  \"error\": \"internal_error\",\n  \"message\": \"Something went wrong on our side. Retry\",\n  \"or contact support with the request_id.\": null,\n  \"request_id\": \"0f3b9c1e-6d2a-4b7f-8e1c-5a9d2b4c6e80\"\n}"
            }
          ]
        },
        {
          "name": "Start a call with an agent  ·  POST /agents/{id}/calls",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Accept",
                "value": "application/json"
              },
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "url": {
              "raw": "{{baseUrl}}/agents/:id/calls",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "agents",
                ":id",
                "calls"
              ],
              "variable": [
                {
                  "key": "id",
                  "value": "4b1e0d1a-3c4e-4d0a-9f2b-7e1a2b3c4d5e",
                  "description": "Resource id (UUID)."
                }
              ]
            },
            "description": "**Scope:** `calls:write`\n\nStarts a phone or browser call using the agent's `call_template`, with optional per-call overrides.\nScope: `calls:write`.\n\n* `{\"medium\": {\"web\": {}}}` creates a live browser session and returns a `join_url`.\n* `{\"medium\": {\"phone\": {\"to\": \"+1...\"}}}` dials through Lojiq's carrier stack with answering-machine detection; the AI connects when a human answers.\n\nBilling happens on completion at your organization's standard voice rates (nothing at creation).\nApp-created agents can be called only if you pass `system_prompt` inline, since their prompt is not exposed\nhere (`409 agent_has_no_call_template` otherwise). Orchestrated (multi-sub-agent) app agents cannot be called\nthrough the API (`409 orchestrated_agent_not_supported`).\n\n**Retries.** Always send an `Idempotency-Key`. A retried request with the same key returns the first answer\n(`Idempotency-Replayed: true`) and never places a second paid call.\n",
            "body": {
              "mode": "raw",
              "raw": "{\n  \"medium\": {\n    \"phone\": {\n      \"to\": \"+15551234567\"\n    }\n  },\n  \"template_context\": {\n    \"agent_name\": \"Riley\",\n    \"business_name\": \"Acme Dental\"\n  },\n  \"lead_id\": \"4b1e0d1a-3c4e-4d0a-9f2b-7e1a2b3c4d5e\",\n  \"metadata\": {\n    \"source\": \"nightly-follow-up\"\n  }\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            }
          },
          "response": [
            {
              "name": "201 — Created",
              "originalRequest": {
                "method": "POST",
                "header": [
                  {
                    "key": "Accept",
                    "value": "application/json"
                  },
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "raw": "{{baseUrl}}/agents/:id/calls",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "agents",
                    ":id",
                    "calls"
                  ],
                  "variable": [
                    {
                      "key": "id",
                      "value": "4b1e0d1a-3c4e-4d0a-9f2b-7e1a2b3c4d5e",
                      "description": "Resource id (UUID)."
                    }
                  ]
                },
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"medium\": {\n    \"phone\": {\n      \"to\": \"+15551234567\"\n    }\n  },\n  \"template_context\": {\n    \"agent_name\": \"Riley\",\n    \"business_name\": \"Acme Dental\"\n  },\n  \"lead_id\": \"4b1e0d1a-3c4e-4d0a-9f2b-7e1a2b3c4d5e\",\n  \"metadata\": {\n    \"source\": \"nightly-follow-up\"\n  }\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "status": "Created",
              "code": 201,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                },
                {
                  "key": "X-Request-Id",
                  "value": "00000000-0000-4000-8000-000000000000"
                }
              ],
              "body": "{\n  \"id\": \"5e6f7a8b-9c0d-4e1f-8a2b-3c4d5e6f7a8b\",\n  \"status\": \"initiated\",\n  \"medium\": \"phone\",\n  \"join_url\": null,\n  \"agent_id\": \"2a3b4c5d-6e7f-4a8b-9c0d-1e2f3a4b5c6d\",\n  \"lead_id\": \"4b1e0d1a-3c4e-4d0a-9f2b-7e1a2b3c4d5e\",\n  \"to_number\": \"+15551234567\",\n  \"from_number\": \"+15550001111\",\n  \"created_at\": \"2026-10-02T17:03:11Z\"\n}"
            },
            {
              "name": "400 — Validation — same codes as `POST /calls`.",
              "originalRequest": {
                "method": "POST",
                "header": [
                  {
                    "key": "Accept",
                    "value": "application/json"
                  },
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "raw": "{{baseUrl}}/agents/:id/calls",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "agents",
                    ":id",
                    "calls"
                  ],
                  "variable": [
                    {
                      "key": "id",
                      "value": "4b1e0d1a-3c4e-4d0a-9f2b-7e1a2b3c4d5e",
                      "description": "Resource id (UUID)."
                    }
                  ]
                },
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"medium\": {\n    \"phone\": {\n      \"to\": \"+15551234567\"\n    }\n  },\n  \"template_context\": {\n    \"agent_name\": \"Riley\",\n    \"business_name\": \"Acme Dental\"\n  },\n  \"lead_id\": \"4b1e0d1a-3c4e-4d0a-9f2b-7e1a2b3c4d5e\",\n  \"metadata\": {\n    \"source\": \"nightly-follow-up\"\n  }\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "status": "Validation — same codes as `POST /calls`",
              "code": 400,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                },
                {
                  "key": "X-Request-Id",
                  "value": "00000000-0000-4000-8000-000000000000"
                }
              ],
              "body": "{\n  \"error\": \"invalid_medium\",\n  \"message\": \"medium must contain exactly one of \\\"web\\\" or \\\"phone\\\".\"\n}"
            },
            {
              "name": "401 — No key, or a key that is unknown, revoked or expired. `error` is one of",
              "originalRequest": {
                "method": "POST",
                "header": [
                  {
                    "key": "Accept",
                    "value": "application/json"
                  },
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "raw": "{{baseUrl}}/agents/:id/calls",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "agents",
                    ":id",
                    "calls"
                  ],
                  "variable": [
                    {
                      "key": "id",
                      "value": "4b1e0d1a-3c4e-4d0a-9f2b-7e1a2b3c4d5e",
                      "description": "Resource id (UUID)."
                    }
                  ]
                },
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"medium\": {\n    \"phone\": {\n      \"to\": \"+15551234567\"\n    }\n  },\n  \"template_context\": {\n    \"agent_name\": \"Riley\",\n    \"business_name\": \"Acme Dental\"\n  },\n  \"lead_id\": \"4b1e0d1a-3c4e-4d0a-9f2b-7e1a2b3c4d5e\",\n  \"metadata\": {\n    \"source\": \"nightly-follow-up\"\n  }\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "status": "No key, or a key that is unknown, revoke",
              "code": 401,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                },
                {
                  "key": "X-Request-Id",
                  "value": "00000000-0000-4000-8000-000000000000"
                }
              ],
              "body": "{\n  \"error\": \"invalid_api_key\",\n  \"request_id\": \"0f3b9c1e-6d2a-4b7f-8e1c-5a9d2b4c6e80\"\n}"
            },
            {
              "name": "402 — `insufficient_balance`.",
              "originalRequest": {
                "method": "POST",
                "header": [
                  {
                    "key": "Accept",
                    "value": "application/json"
                  },
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "raw": "{{baseUrl}}/agents/:id/calls",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "agents",
                    ":id",
                    "calls"
                  ],
                  "variable": [
                    {
                      "key": "id",
                      "value": "4b1e0d1a-3c4e-4d0a-9f2b-7e1a2b3c4d5e",
                      "description": "Resource id (UUID)."
                    }
                  ]
                },
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"medium\": {\n    \"phone\": {\n      \"to\": \"+15551234567\"\n    }\n  },\n  \"template_context\": {\n    \"agent_name\": \"Riley\",\n    \"business_name\": \"Acme Dental\"\n  },\n  \"lead_id\": \"4b1e0d1a-3c4e-4d0a-9f2b-7e1a2b3c4d5e\",\n  \"metadata\": {\n    \"source\": \"nightly-follow-up\"\n  }\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "status": "`insufficient_balance`.",
              "code": 402,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                },
                {
                  "key": "X-Request-Id",
                  "value": "00000000-0000-4000-8000-000000000000"
                }
              ],
              "body": "{\n  \"error\": \"invalid_phone_number\",\n  \"message\": \"phone_number is required: 10-15 digits, E.164 preferred (+15551234567).\",\n  \"request_id\": \"0f3b9c1e-6d2a-4b7f-8e1c-5a9d2b4c6e80\"\n}"
            },
            {
              "name": "403 — `insufficient_scope`, `organization_not_active`, `voice_suspended`, or `destinat",
              "originalRequest": {
                "method": "POST",
                "header": [
                  {
                    "key": "Accept",
                    "value": "application/json"
                  },
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "raw": "{{baseUrl}}/agents/:id/calls",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "agents",
                    ":id",
                    "calls"
                  ],
                  "variable": [
                    {
                      "key": "id",
                      "value": "4b1e0d1a-3c4e-4d0a-9f2b-7e1a2b3c4d5e",
                      "description": "Resource id (UUID)."
                    }
                  ]
                },
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"medium\": {\n    \"phone\": {\n      \"to\": \"+15551234567\"\n    }\n  },\n  \"template_context\": {\n    \"agent_name\": \"Riley\",\n    \"business_name\": \"Acme Dental\"\n  },\n  \"lead_id\": \"4b1e0d1a-3c4e-4d0a-9f2b-7e1a2b3c4d5e\",\n  \"metadata\": {\n    \"source\": \"nightly-follow-up\"\n  }\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "status": "`insufficient_scope`, `organization_not_",
              "code": 403,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                },
                {
                  "key": "X-Request-Id",
                  "value": "00000000-0000-4000-8000-000000000000"
                }
              ],
              "body": "{\n  \"error\": \"invalid_phone_number\",\n  \"message\": \"phone_number is required: 10-15 digits, E.164 preferred (+15551234567).\",\n  \"request_id\": \"0f3b9c1e-6d2a-4b7f-8e1c-5a9d2b4c6e80\"\n}"
            },
            {
              "name": "404 — `not_found` (agent), `lead_not_found`, `organization_not_found`.",
              "originalRequest": {
                "method": "POST",
                "header": [
                  {
                    "key": "Accept",
                    "value": "application/json"
                  },
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "raw": "{{baseUrl}}/agents/:id/calls",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "agents",
                    ":id",
                    "calls"
                  ],
                  "variable": [
                    {
                      "key": "id",
                      "value": "4b1e0d1a-3c4e-4d0a-9f2b-7e1a2b3c4d5e",
                      "description": "Resource id (UUID)."
                    }
                  ]
                },
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"medium\": {\n    \"phone\": {\n      \"to\": \"+15551234567\"\n    }\n  },\n  \"template_context\": {\n    \"agent_name\": \"Riley\",\n    \"business_name\": \"Acme Dental\"\n  },\n  \"lead_id\": \"4b1e0d1a-3c4e-4d0a-9f2b-7e1a2b3c4d5e\",\n  \"metadata\": {\n    \"source\": \"nightly-follow-up\"\n  }\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "status": "`not_found` (agent), `lead_not_found`, `",
              "code": 404,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                },
                {
                  "key": "X-Request-Id",
                  "value": "00000000-0000-4000-8000-000000000000"
                }
              ],
              "body": "{\n  \"error\": \"invalid_phone_number\",\n  \"message\": \"phone_number is required: 10-15 digits, E.164 preferred (+15551234567).\",\n  \"request_id\": \"0f3b9c1e-6d2a-4b7f-8e1c-5a9d2b4c6e80\"\n}"
            },
            {
              "name": "409 — `agent_has_no_call_template`, `orchestrated_agent_not_supported`, `no_did_availa",
              "originalRequest": {
                "method": "POST",
                "header": [
                  {
                    "key": "Accept",
                    "value": "application/json"
                  },
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "raw": "{{baseUrl}}/agents/:id/calls",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "agents",
                    ":id",
                    "calls"
                  ],
                  "variable": [
                    {
                      "key": "id",
                      "value": "4b1e0d1a-3c4e-4d0a-9f2b-7e1a2b3c4d5e",
                      "description": "Resource id (UUID)."
                    }
                  ]
                },
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"medium\": {\n    \"phone\": {\n      \"to\": \"+15551234567\"\n    }\n  },\n  \"template_context\": {\n    \"agent_name\": \"Riley\",\n    \"business_name\": \"Acme Dental\"\n  },\n  \"lead_id\": \"4b1e0d1a-3c4e-4d0a-9f2b-7e1a2b3c4d5e\",\n  \"metadata\": {\n    \"source\": \"nightly-follow-up\"\n  }\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "status": "`agent_has_no_call_template`, `orchestra",
              "code": 409,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                },
                {
                  "key": "X-Request-Id",
                  "value": "00000000-0000-4000-8000-000000000000"
                }
              ],
              "body": "{\n  \"error\": \"agent_has_no_call_template\",\n  \"message\": \"This agent has no public call_template. Pass system_prompt inline or manage the agent via the public API.\",\n  \"request_id\": \"0f3b9c1e-6d2a-4b7f-8e1c-5a9d2b4c6e80\"\n}"
            },
            {
              "name": "422 — `idempotency_key_reused` — this `Idempotency-Key` was already used with a differ",
              "originalRequest": {
                "method": "POST",
                "header": [
                  {
                    "key": "Accept",
                    "value": "application/json"
                  },
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "raw": "{{baseUrl}}/agents/:id/calls",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "agents",
                    ":id",
                    "calls"
                  ],
                  "variable": [
                    {
                      "key": "id",
                      "value": "4b1e0d1a-3c4e-4d0a-9f2b-7e1a2b3c4d5e",
                      "description": "Resource id (UUID)."
                    }
                  ]
                },
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"medium\": {\n    \"phone\": {\n      \"to\": \"+15551234567\"\n    }\n  },\n  \"template_context\": {\n    \"agent_name\": \"Riley\",\n    \"business_name\": \"Acme Dental\"\n  },\n  \"lead_id\": \"4b1e0d1a-3c4e-4d0a-9f2b-7e1a2b3c4d5e\",\n  \"metadata\": {\n    \"source\": \"nightly-follow-up\"\n  }\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "status": "`idempotency_key_reused` — this `Idempot",
              "code": 422,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                },
                {
                  "key": "X-Request-Id",
                  "value": "00000000-0000-4000-8000-000000000000"
                }
              ],
              "body": "{\n  \"error\": \"idempotency_key_reused\",\n  \"request_id\": \"0f3b9c1e-6d2a-4b7f-8e1c-5a9d2b4c6e80\"\n}"
            },
            {
              "name": "429 — `rate_limited`, `concurrency_limit_reached`, or `concurrency_limit`.",
              "originalRequest": {
                "method": "POST",
                "header": [
                  {
                    "key": "Accept",
                    "value": "application/json"
                  },
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "raw": "{{baseUrl}}/agents/:id/calls",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "agents",
                    ":id",
                    "calls"
                  ],
                  "variable": [
                    {
                      "key": "id",
                      "value": "4b1e0d1a-3c4e-4d0a-9f2b-7e1a2b3c4d5e",
                      "description": "Resource id (UUID)."
                    }
                  ]
                },
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"medium\": {\n    \"phone\": {\n      \"to\": \"+15551234567\"\n    }\n  },\n  \"template_context\": {\n    \"agent_name\": \"Riley\",\n    \"business_name\": \"Acme Dental\"\n  },\n  \"lead_id\": \"4b1e0d1a-3c4e-4d0a-9f2b-7e1a2b3c4d5e\",\n  \"metadata\": {\n    \"source\": \"nightly-follow-up\"\n  }\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "status": "`rate_limited`, `concurrency_limit_reach",
              "code": 429,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                },
                {
                  "key": "X-Request-Id",
                  "value": "00000000-0000-4000-8000-000000000000"
                }
              ],
              "body": "{\n  \"error\": \"invalid_phone_number\",\n  \"message\": \"phone_number is required: 10-15 digits, E.164 preferred (+15551234567).\",\n  \"request_id\": \"0f3b9c1e-6d2a-4b7f-8e1c-5a9d2b4c6e80\"\n}"
            },
            {
              "name": "500 — `call_record_failed`, `org_lookup_failed`, `lead_lookup_failed` or `internal_err",
              "originalRequest": {
                "method": "POST",
                "header": [
                  {
                    "key": "Accept",
                    "value": "application/json"
                  },
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "raw": "{{baseUrl}}/agents/:id/calls",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "agents",
                    ":id",
                    "calls"
                  ],
                  "variable": [
                    {
                      "key": "id",
                      "value": "4b1e0d1a-3c4e-4d0a-9f2b-7e1a2b3c4d5e",
                      "description": "Resource id (UUID)."
                    }
                  ]
                },
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"medium\": {\n    \"phone\": {\n      \"to\": \"+15551234567\"\n    }\n  },\n  \"template_context\": {\n    \"agent_name\": \"Riley\",\n    \"business_name\": \"Acme Dental\"\n  },\n  \"lead_id\": \"4b1e0d1a-3c4e-4d0a-9f2b-7e1a2b3c4d5e\",\n  \"metadata\": {\n    \"source\": \"nightly-follow-up\"\n  }\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "status": "`call_record_failed`, `org_lookup_failed",
              "code": 500,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                },
                {
                  "key": "X-Request-Id",
                  "value": "00000000-0000-4000-8000-000000000000"
                }
              ],
              "body": "{\n  \"error\": \"invalid_phone_number\",\n  \"message\": \"phone_number is required: 10-15 digits, E.164 preferred (+15551234567).\",\n  \"request_id\": \"0f3b9c1e-6d2a-4b7f-8e1c-5a9d2b4c6e80\"\n}"
            },
            {
              "name": "502 — `carrier_dial_failed`, `call_creation_failed`, `voice_provider_unavailable`.",
              "originalRequest": {
                "method": "POST",
                "header": [
                  {
                    "key": "Accept",
                    "value": "application/json"
                  },
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "raw": "{{baseUrl}}/agents/:id/calls",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "agents",
                    ":id",
                    "calls"
                  ],
                  "variable": [
                    {
                      "key": "id",
                      "value": "4b1e0d1a-3c4e-4d0a-9f2b-7e1a2b3c4d5e",
                      "description": "Resource id (UUID)."
                    }
                  ]
                },
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"medium\": {\n    \"phone\": {\n      \"to\": \"+15551234567\"\n    }\n  },\n  \"template_context\": {\n    \"agent_name\": \"Riley\",\n    \"business_name\": \"Acme Dental\"\n  },\n  \"lead_id\": \"4b1e0d1a-3c4e-4d0a-9f2b-7e1a2b3c4d5e\",\n  \"metadata\": {\n    \"source\": \"nightly-follow-up\"\n  }\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "status": "`carrier_dial_failed`, `call_creation_fa",
              "code": 502,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                },
                {
                  "key": "X-Request-Id",
                  "value": "00000000-0000-4000-8000-000000000000"
                }
              ],
              "body": "{\n  \"error\": \"invalid_phone_number\",\n  \"message\": \"phone_number is required: 10-15 digits, E.164 preferred (+15551234567).\",\n  \"request_id\": \"0f3b9c1e-6d2a-4b7f-8e1c-5a9d2b4c6e80\"\n}"
            },
            {
              "name": "503 — `no_voice_carrier_available` or `voice_carrier_blocked`.",
              "originalRequest": {
                "method": "POST",
                "header": [
                  {
                    "key": "Accept",
                    "value": "application/json"
                  },
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "raw": "{{baseUrl}}/agents/:id/calls",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "agents",
                    ":id",
                    "calls"
                  ],
                  "variable": [
                    {
                      "key": "id",
                      "value": "4b1e0d1a-3c4e-4d0a-9f2b-7e1a2b3c4d5e",
                      "description": "Resource id (UUID)."
                    }
                  ]
                },
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"medium\": {\n    \"phone\": {\n      \"to\": \"+15551234567\"\n    }\n  },\n  \"template_context\": {\n    \"agent_name\": \"Riley\",\n    \"business_name\": \"Acme Dental\"\n  },\n  \"lead_id\": \"4b1e0d1a-3c4e-4d0a-9f2b-7e1a2b3c4d5e\",\n  \"metadata\": {\n    \"source\": \"nightly-follow-up\"\n  }\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "status": "`no_voice_carrier_available` or `voice_c",
              "code": 503,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                },
                {
                  "key": "X-Request-Id",
                  "value": "00000000-0000-4000-8000-000000000000"
                }
              ],
              "body": "{\n  \"error\": \"invalid_phone_number\",\n  \"message\": \"phone_number is required: 10-15 digits, E.164 preferred (+15551234567).\",\n  \"request_id\": \"0f3b9c1e-6d2a-4b7f-8e1c-5a9d2b4c6e80\"\n}"
            }
          ]
        }
      ]
    },
    {
      "name": "Calls",
      "description": "Read every call your organization made or received, pull transcripts and recordings, start ad-hoc calls with an\ninline prompt, and end live calls. Calls started through the API bill tokens exactly like calls started in the app.\n",
      "item": [
        {
          "name": "List calls  ·  GET /calls",
          "request": {
            "method": "GET",
            "header": [
              {
                "key": "Accept",
                "value": "application/json"
              }
            ],
            "url": {
              "raw": "{{baseUrl}}/calls?limit=&offset=&campaign_id=&lead_id=",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "calls"
              ],
              "query": [
                {
                  "key": "limit",
                  "value": "50",
                  "description": "Page size. Default 50, maximum 200 (larger values are clamped to 200).",
                  "disabled": false
                },
                {
                  "key": "offset",
                  "value": "0",
                  "description": "Number of rows to skip. Default 0. Page by increasing `offset` by `limit` until `data` comes back shorter than `limit`.",
                  "disabled": false
                },
                {
                  "key": "campaign_id",
                  "value": "",
                  "description": "",
                  "disabled": true
                },
                {
                  "key": "lead_id",
                  "value": "",
                  "description": "",
                  "disabled": true
                }
              ]
            },
            "description": "**Scope:** `calls:read`\n\nEvery call in your organization (campaign, receptionist and API calls), most recent first. Scope: `calls:read`."
          },
          "response": [
            {
              "name": "200 — OK",
              "originalRequest": {
                "method": "GET",
                "header": [
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "raw": "{{baseUrl}}/calls?limit=&offset=&campaign_id=&lead_id=",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "calls"
                  ],
                  "query": [
                    {
                      "key": "limit",
                      "value": "50",
                      "description": "Page size. Default 50, maximum 200 (larger values are clamped to 200).",
                      "disabled": false
                    },
                    {
                      "key": "offset",
                      "value": "0",
                      "description": "Number of rows to skip. Default 0. Page by increasing `offset` by `limit` until `data` comes back shorter than `limit`.",
                      "disabled": false
                    },
                    {
                      "key": "campaign_id",
                      "value": "",
                      "description": "",
                      "disabled": true
                    },
                    {
                      "key": "lead_id",
                      "value": "",
                      "description": "",
                      "disabled": true
                    }
                  ]
                }
              },
              "status": "OK",
              "code": 200,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                },
                {
                  "key": "X-Request-Id",
                  "value": "00000000-0000-4000-8000-000000000000"
                }
              ],
              "body": "{\n  \"data\": [\n    {\n      \"id\": \"5e6f7a8b-9c0d-4e1f-8a2b-3c4d5e6f7a8b\",\n      \"call_sid\": \"a1b2c3d4e5f6\",\n      \"lead_id\": \"4b1e0d1a-3c4e-4d0a-9f2b-7e1a2b3c4d5e\",\n      \"campaign_id\": \"0d2f6b1e-4a7c-4e8d-9b1a-2c3d4e5f6a7b\",\n      \"to_number\": \"+15551234567\",\n      \"from_number\": \"+15550001111\",\n      \"status\": \"completed\",\n      \"call_outcome\": \"appointment_set\",\n      \"disposition\": null,\n      \"duration\": 184,\n      \"duration_seconds\": 184,\n      \"created_at\": \"2026-10-02T17:03:11Z\",\n      \"ended_at\": \"2026-10-02T17:06:15Z\",\n      \"recording_url\": null\n    }\n  ],\n  \"limit\": 50,\n  \"offset\": 0\n}"
            },
            {
              "name": "401 — No key, or a key that is unknown, revoked or expired. `error` is one of",
              "originalRequest": {
                "method": "GET",
                "header": [
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "raw": "{{baseUrl}}/calls?limit=&offset=&campaign_id=&lead_id=",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "calls"
                  ],
                  "query": [
                    {
                      "key": "limit",
                      "value": "50",
                      "description": "Page size. Default 50, maximum 200 (larger values are clamped to 200).",
                      "disabled": false
                    },
                    {
                      "key": "offset",
                      "value": "0",
                      "description": "Number of rows to skip. Default 0. Page by increasing `offset` by `limit` until `data` comes back shorter than `limit`.",
                      "disabled": false
                    },
                    {
                      "key": "campaign_id",
                      "value": "",
                      "description": "",
                      "disabled": true
                    },
                    {
                      "key": "lead_id",
                      "value": "",
                      "description": "",
                      "disabled": true
                    }
                  ]
                }
              },
              "status": "No key, or a key that is unknown, revoke",
              "code": 401,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                },
                {
                  "key": "X-Request-Id",
                  "value": "00000000-0000-4000-8000-000000000000"
                }
              ],
              "body": "{\n  \"error\": \"invalid_api_key\",\n  \"request_id\": \"0f3b9c1e-6d2a-4b7f-8e1c-5a9d2b4c6e80\"\n}"
            },
            {
              "name": "403 — The key does not carry the scope this operation needs. `required` names the miss",
              "originalRequest": {
                "method": "GET",
                "header": [
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "raw": "{{baseUrl}}/calls?limit=&offset=&campaign_id=&lead_id=",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "calls"
                  ],
                  "query": [
                    {
                      "key": "limit",
                      "value": "50",
                      "description": "Page size. Default 50, maximum 200 (larger values are clamped to 200).",
                      "disabled": false
                    },
                    {
                      "key": "offset",
                      "value": "0",
                      "description": "Number of rows to skip. Default 0. Page by increasing `offset` by `limit` until `data` comes back shorter than `limit`.",
                      "disabled": false
                    },
                    {
                      "key": "campaign_id",
                      "value": "",
                      "description": "",
                      "disabled": true
                    },
                    {
                      "key": "lead_id",
                      "value": "",
                      "description": "",
                      "disabled": true
                    }
                  ]
                }
              },
              "status": "The key does not carry the scope this op",
              "code": 403,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                },
                {
                  "key": "X-Request-Id",
                  "value": "00000000-0000-4000-8000-000000000000"
                }
              ],
              "body": "{\n  \"error\": \"insufficient_scope\",\n  \"message\": \"This key does not have the leads:write scope.\",\n  \"required\": \"leads:write\",\n  \"request_id\": \"0f3b9c1e-6d2a-4b7f-8e1c-5a9d2b4c6e80\"\n}"
            },
            {
              "name": "429 — Too many requests for this key in the current minute. Wait `Retry-After` seconds",
              "originalRequest": {
                "method": "GET",
                "header": [
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "raw": "{{baseUrl}}/calls?limit=&offset=&campaign_id=&lead_id=",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "calls"
                  ],
                  "query": [
                    {
                      "key": "limit",
                      "value": "50",
                      "description": "Page size. Default 50, maximum 200 (larger values are clamped to 200).",
                      "disabled": false
                    },
                    {
                      "key": "offset",
                      "value": "0",
                      "description": "Number of rows to skip. Default 0. Page by increasing `offset` by `limit` until `data` comes back shorter than `limit`.",
                      "disabled": false
                    },
                    {
                      "key": "campaign_id",
                      "value": "",
                      "description": "",
                      "disabled": true
                    },
                    {
                      "key": "lead_id",
                      "value": "",
                      "description": "",
                      "disabled": true
                    }
                  ]
                }
              },
              "status": "Too many requests for this key in the cu",
              "code": 429,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                },
                {
                  "key": "X-Request-Id",
                  "value": "00000000-0000-4000-8000-000000000000"
                }
              ],
              "body": "{\n  \"error\": \"rate_limited\",\n  \"message\": \"This key is limited to 60 requests per minute. Retry in 3s.\",\n  \"retry_after_seconds\": 3,\n  \"request_id\": \"0f3b9c1e-6d2a-4b7f-8e1c-5a9d2b4c6e80\"\n}"
            },
            {
              "name": "500 — `internal_error` — something failed on Lojiq's side. The detail is in Lojiq's lo",
              "originalRequest": {
                "method": "GET",
                "header": [
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "raw": "{{baseUrl}}/calls?limit=&offset=&campaign_id=&lead_id=",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "calls"
                  ],
                  "query": [
                    {
                      "key": "limit",
                      "value": "50",
                      "description": "Page size. Default 50, maximum 200 (larger values are clamped to 200).",
                      "disabled": false
                    },
                    {
                      "key": "offset",
                      "value": "0",
                      "description": "Number of rows to skip. Default 0. Page by increasing `offset` by `limit` until `data` comes back shorter than `limit`.",
                      "disabled": false
                    },
                    {
                      "key": "campaign_id",
                      "value": "",
                      "description": "",
                      "disabled": true
                    },
                    {
                      "key": "lead_id",
                      "value": "",
                      "description": "",
                      "disabled": true
                    }
                  ]
                }
              },
              "status": "`internal_error` — something failed on L",
              "code": 500,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                },
                {
                  "key": "X-Request-Id",
                  "value": "00000000-0000-4000-8000-000000000000"
                }
              ],
              "body": "{\n  \"error\": \"internal_error\",\n  \"message\": \"Something went wrong on our side. Retry\",\n  \"or contact support with the request_id.\": null,\n  \"request_id\": \"0f3b9c1e-6d2a-4b7f-8e1c-5a9d2b4c6e80\"\n}"
            }
          ]
        },
        {
          "name": "Start an ad-hoc call  ·  POST /calls",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Accept",
                "value": "application/json"
              },
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "url": {
              "raw": "{{baseUrl}}/calls",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "calls"
              ]
            },
            "description": "**Scope:** `calls:write`\n\nStarts a call **without a saved agent**: the body carries the prompt and voice inline. Everything else works\nlike `POST /agents/{id}/calls`. Scope: `calls:write`.\n\n**Billing.** Nothing is charged at creation. The call bills AI minutes, carrier minutes and connection fees\non completion, exactly like calls started in the app. Creation is refused with `402 insufficient_balance`\nwhen the token balance is exhausted.\n\n**Phone calls** go through Lojiq's carrier stack with answering-machine detection; the AI connects when a\nhuman answers. Numbers on your organization's do-not-call list are refused (`403 destination_on_dnc`).\n\n**Browser calls** are live immediately; hand the `join_url` to your client through the Lojiq Voice SDK.\n\n**Retries.** Always send an `Idempotency-Key`. A retried request with the same key returns the first answer\n(`Idempotency-Replayed: true`) and never places a second paid call.\n",
            "body": {
              "mode": "raw",
              "raw": "{\n  \"medium\": {\n    \"web\": {}\n  },\n  \"system_prompt\": \"You are Riley, a scheduler for Acme Dental. Book a 30-minute consultation.\",\n  \"voice\": \"Kyle\",\n  \"max_duration_seconds\": 900\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            }
          },
          "response": [
            {
              "name": "201 — Created",
              "originalRequest": {
                "method": "POST",
                "header": [
                  {
                    "key": "Accept",
                    "value": "application/json"
                  },
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "raw": "{{baseUrl}}/calls",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "calls"
                  ]
                },
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"medium\": {\n    \"web\": {}\n  },\n  \"system_prompt\": \"You are Riley, a scheduler for Acme Dental. Book a 30-minute consultation.\",\n  \"voice\": \"Kyle\",\n  \"max_duration_seconds\": 900\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "status": "Created",
              "code": 201,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                },
                {
                  "key": "X-Request-Id",
                  "value": "00000000-0000-4000-8000-000000000000"
                }
              ],
              "body": "{\n  \"id\": \"5e6f7a8b-9c0d-4e1f-8a2b-3c4d5e6f7a8b\",\n  \"status\": \"initiated\",\n  \"medium\": \"phone\",\n  \"join_url\": null,\n  \"agent_id\": \"2a3b4c5d-6e7f-4a8b-9c0d-1e2f3a4b5c6d\",\n  \"lead_id\": \"4b1e0d1a-3c4e-4d0a-9f2b-7e1a2b3c4d5e\",\n  \"to_number\": \"+15551234567\",\n  \"from_number\": \"+15550001111\",\n  \"created_at\": \"2026-10-02T17:03:11Z\"\n}"
            },
            {
              "name": "400 — Validation. `error` is one of `medium_required`, `invalid_medium`, `invalid_to_n",
              "originalRequest": {
                "method": "POST",
                "header": [
                  {
                    "key": "Accept",
                    "value": "application/json"
                  },
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "raw": "{{baseUrl}}/calls",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "calls"
                  ]
                },
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"medium\": {\n    \"web\": {}\n  },\n  \"system_prompt\": \"You are Riley, a scheduler for Acme Dental. Book a 30-minute consultation.\",\n  \"voice\": \"Kyle\",\n  \"max_duration_seconds\": 900\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "status": "Validation. `error` is one of `medium_re",
              "code": 400,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                },
                {
                  "key": "X-Request-Id",
                  "value": "00000000-0000-4000-8000-000000000000"
                }
              ],
              "body": "{\n  \"error\": \"unknown_voice\",\n  \"message\": \"No active voice matches \\\"Kyel\\\".\",\n  \"request_id\": \"0f3b9c1e-6d2a-4b7f-8e1c-5a9d2b4c6e80\"\n}"
            },
            {
              "name": "401 — No key, or a key that is unknown, revoked or expired. `error` is one of",
              "originalRequest": {
                "method": "POST",
                "header": [
                  {
                    "key": "Accept",
                    "value": "application/json"
                  },
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "raw": "{{baseUrl}}/calls",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "calls"
                  ]
                },
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"medium\": {\n    \"web\": {}\n  },\n  \"system_prompt\": \"You are Riley, a scheduler for Acme Dental. Book a 30-minute consultation.\",\n  \"voice\": \"Kyle\",\n  \"max_duration_seconds\": 900\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "status": "No key, or a key that is unknown, revoke",
              "code": 401,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                },
                {
                  "key": "X-Request-Id",
                  "value": "00000000-0000-4000-8000-000000000000"
                }
              ],
              "body": "{\n  \"error\": \"invalid_api_key\",\n  \"request_id\": \"0f3b9c1e-6d2a-4b7f-8e1c-5a9d2b4c6e80\"\n}"
            },
            {
              "name": "402 — `insufficient_balance` — top up in the Lojiq app.",
              "originalRequest": {
                "method": "POST",
                "header": [
                  {
                    "key": "Accept",
                    "value": "application/json"
                  },
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "raw": "{{baseUrl}}/calls",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "calls"
                  ]
                },
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"medium\": {\n    \"web\": {}\n  },\n  \"system_prompt\": \"You are Riley, a scheduler for Acme Dental. Book a 30-minute consultation.\",\n  \"voice\": \"Kyle\",\n  \"max_duration_seconds\": 900\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "status": "`insufficient_balance` — top up in the L",
              "code": 402,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                },
                {
                  "key": "X-Request-Id",
                  "value": "00000000-0000-4000-8000-000000000000"
                }
              ],
              "body": "{\n  \"error\": \"insufficient_balance\",\n  \"message\": \"Insufficient token balance for AI voice minutes.\",\n  \"request_id\": \"0f3b9c1e-6d2a-4b7f-8e1c-5a9d2b4c6e80\"\n}"
            },
            {
              "name": "403 — `insufficient_scope`, `organization_not_active`, `voice_suspended` (billing), or",
              "originalRequest": {
                "method": "POST",
                "header": [
                  {
                    "key": "Accept",
                    "value": "application/json"
                  },
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "raw": "{{baseUrl}}/calls",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "calls"
                  ]
                },
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"medium\": {\n    \"web\": {}\n  },\n  \"system_prompt\": \"You are Riley, a scheduler for Acme Dental. Book a 30-minute consultation.\",\n  \"voice\": \"Kyle\",\n  \"max_duration_seconds\": 900\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "status": "`insufficient_scope`, `organization_not_",
              "code": 403,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                },
                {
                  "key": "X-Request-Id",
                  "value": "00000000-0000-4000-8000-000000000000"
                }
              ],
              "body": "{\n  \"error\": \"destination_on_dnc\",\n  \"message\": \"This number is on your organization's do-not-call list.\",\n  \"request_id\": \"0f3b9c1e-6d2a-4b7f-8e1c-5a9d2b4c6e80\"\n}"
            },
            {
              "name": "404 — `lead_not_found` (the `lead_id` is not yours) or `organization_not_found`.",
              "originalRequest": {
                "method": "POST",
                "header": [
                  {
                    "key": "Accept",
                    "value": "application/json"
                  },
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "raw": "{{baseUrl}}/calls",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "calls"
                  ]
                },
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"medium\": {\n    \"web\": {}\n  },\n  \"system_prompt\": \"You are Riley, a scheduler for Acme Dental. Book a 30-minute consultation.\",\n  \"voice\": \"Kyle\",\n  \"max_duration_seconds\": 900\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "status": "`lead_not_found` (the `lead_id` is not y",
              "code": 404,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                },
                {
                  "key": "X-Request-Id",
                  "value": "00000000-0000-4000-8000-000000000000"
                }
              ],
              "body": "{\n  \"error\": \"lead_not_found\",\n  \"request_id\": \"0f3b9c1e-6d2a-4b7f-8e1c-5a9d2b4c6e80\"\n}"
            },
            {
              "name": "409 — `no_did_available` — no outbound caller-id number is available for your organiza",
              "originalRequest": {
                "method": "POST",
                "header": [
                  {
                    "key": "Accept",
                    "value": "application/json"
                  },
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "raw": "{{baseUrl}}/calls",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "calls"
                  ]
                },
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"medium\": {\n    \"web\": {}\n  },\n  \"system_prompt\": \"You are Riley, a scheduler for Acme Dental. Book a 30-minute consultation.\",\n  \"voice\": \"Kyle\",\n  \"max_duration_seconds\": 900\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "status": "`no_did_available` — no outbound caller-",
              "code": 409,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                },
                {
                  "key": "X-Request-Id",
                  "value": "00000000-0000-4000-8000-000000000000"
                }
              ],
              "body": "{\n  \"error\": \"no_did_available\",\n  \"message\": \"No outbound caller-ID number is available for your organization.\",\n  \"request_id\": \"0f3b9c1e-6d2a-4b7f-8e1c-5a9d2b4c6e80\"\n}"
            },
            {
              "name": "422 — `idempotency_key_reused` — this `Idempotency-Key` was already used with a differ",
              "originalRequest": {
                "method": "POST",
                "header": [
                  {
                    "key": "Accept",
                    "value": "application/json"
                  },
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "raw": "{{baseUrl}}/calls",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "calls"
                  ]
                },
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"medium\": {\n    \"web\": {}\n  },\n  \"system_prompt\": \"You are Riley, a scheduler for Acme Dental. Book a 30-minute consultation.\",\n  \"voice\": \"Kyle\",\n  \"max_duration_seconds\": 900\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "status": "`idempotency_key_reused` — this `Idempot",
              "code": 422,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                },
                {
                  "key": "X-Request-Id",
                  "value": "00000000-0000-4000-8000-000000000000"
                }
              ],
              "body": "{\n  \"error\": \"idempotency_key_reused\",\n  \"request_id\": \"0f3b9c1e-6d2a-4b7f-8e1c-5a9d2b4c6e80\"\n}"
            },
            {
              "name": "429 — `rate_limited` (key), `concurrency_limit_reached` (your organization's concurren",
              "originalRequest": {
                "method": "POST",
                "header": [
                  {
                    "key": "Accept",
                    "value": "application/json"
                  },
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "raw": "{{baseUrl}}/calls",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "calls"
                  ]
                },
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"medium\": {\n    \"web\": {}\n  },\n  \"system_prompt\": \"You are Riley, a scheduler for Acme Dental. Book a 30-minute consultation.\",\n  \"voice\": \"Kyle\",\n  \"max_duration_seconds\": 900\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "status": "`rate_limited` (key), `concurrency_limit",
              "code": 429,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                },
                {
                  "key": "X-Request-Id",
                  "value": "00000000-0000-4000-8000-000000000000"
                }
              ],
              "body": "{\n  \"error\": \"concurrency_limit_reached\",\n  \"message\": \"Concurrent call limit reached — retry shortly.\",\n  \"request_id\": \"0f3b9c1e-6d2a-4b7f-8e1c-5a9d2b4c6e80\"\n}"
            },
            {
              "name": "500 — `call_record_failed`, `org_lookup_failed`, `lead_lookup_failed` or `internal_err",
              "originalRequest": {
                "method": "POST",
                "header": [
                  {
                    "key": "Accept",
                    "value": "application/json"
                  },
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "raw": "{{baseUrl}}/calls",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "calls"
                  ]
                },
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"medium\": {\n    \"web\": {}\n  },\n  \"system_prompt\": \"You are Riley, a scheduler for Acme Dental. Book a 30-minute consultation.\",\n  \"voice\": \"Kyle\",\n  \"max_duration_seconds\": 900\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "status": "`call_record_failed`, `org_lookup_failed",
              "code": 500,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                },
                {
                  "key": "X-Request-Id",
                  "value": "00000000-0000-4000-8000-000000000000"
                }
              ],
              "body": "{\n  \"error\": \"invalid_phone_number\",\n  \"message\": \"phone_number is required: 10-15 digits, E.164 preferred (+15551234567).\",\n  \"request_id\": \"0f3b9c1e-6d2a-4b7f-8e1c-5a9d2b4c6e80\"\n}"
            },
            {
              "name": "502 — `carrier_dial_failed`, `call_creation_failed`, or `voice_provider_unavailable`.",
              "originalRequest": {
                "method": "POST",
                "header": [
                  {
                    "key": "Accept",
                    "value": "application/json"
                  },
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "raw": "{{baseUrl}}/calls",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "calls"
                  ]
                },
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"medium\": {\n    \"web\": {}\n  },\n  \"system_prompt\": \"You are Riley, a scheduler for Acme Dental. Book a 30-minute consultation.\",\n  \"voice\": \"Kyle\",\n  \"max_duration_seconds\": 900\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "status": "`carrier_dial_failed`, `call_creation_fa",
              "code": 502,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                },
                {
                  "key": "X-Request-Id",
                  "value": "00000000-0000-4000-8000-000000000000"
                }
              ],
              "body": "{\n  \"error\": \"carrier_dial_failed\",\n  \"message\": \"The carrier rejected the call.\",\n  \"request_id\": \"0f3b9c1e-6d2a-4b7f-8e1c-5a9d2b4c6e80\"\n}"
            },
            {
              "name": "503 — `no_voice_carrier_available` or `voice_carrier_blocked`.",
              "originalRequest": {
                "method": "POST",
                "header": [
                  {
                    "key": "Accept",
                    "value": "application/json"
                  },
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "raw": "{{baseUrl}}/calls",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "calls"
                  ]
                },
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"medium\": {\n    \"web\": {}\n  },\n  \"system_prompt\": \"You are Riley, a scheduler for Acme Dental. Book a 30-minute consultation.\",\n  \"voice\": \"Kyle\",\n  \"max_duration_seconds\": 900\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "status": "`no_voice_carrier_available` or `voice_c",
              "code": 503,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                },
                {
                  "key": "X-Request-Id",
                  "value": "00000000-0000-4000-8000-000000000000"
                }
              ],
              "body": "{\n  \"error\": \"no_voice_carrier_available\",\n  \"request_id\": \"0f3b9c1e-6d2a-4b7f-8e1c-5a9d2b4c6e80\"\n}"
            }
          ]
        },
        {
          "name": "Get a call  ·  GET /calls/{id}",
          "request": {
            "method": "GET",
            "header": [
              {
                "key": "Accept",
                "value": "application/json"
              }
            ],
            "url": {
              "raw": "{{baseUrl}}/calls/:id",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "calls",
                ":id"
              ],
              "variable": [
                {
                  "key": "id",
                  "value": "4b1e0d1a-3c4e-4d0a-9f2b-7e1a2b3c4d5e",
                  "description": "Resource id (UUID)."
                }
              ]
            },
            "description": "**Scope:** `calls:read`\n\nThe full stored call record, including `call_outcome`, `summary`, `transcript` text and `metadata`. Scope: `calls:read`."
          },
          "response": [
            {
              "name": "200 — OK",
              "originalRequest": {
                "method": "GET",
                "header": [
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "raw": "{{baseUrl}}/calls/:id",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "calls",
                    ":id"
                  ],
                  "variable": [
                    {
                      "key": "id",
                      "value": "4b1e0d1a-3c4e-4d0a-9f2b-7e1a2b3c4d5e",
                      "description": "Resource id (UUID)."
                    }
                  ]
                }
              },
              "status": "OK",
              "code": 200,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                },
                {
                  "key": "X-Request-Id",
                  "value": "00000000-0000-4000-8000-000000000000"
                }
              ],
              "body": "{\n  \"id\": \"5e6f7a8b-9c0d-4e1f-8a2b-3c4d5e6f7a8b\",\n  \"call_sid\": \"a1b2c3d4e5f6\",\n  \"lead_id\": \"4b1e0d1a-3c4e-4d0a-9f2b-7e1a2b3c4d5e\",\n  \"campaign_id\": \"0d2f6b1e-4a7c-4e8d-9b1a-2c3d4e5f6a7b\",\n  \"to_number\": \"+15551234567\",\n  \"from_number\": \"+15550001111\",\n  \"status\": \"completed\",\n  \"call_outcome\": \"appointment_set\",\n  \"disposition\": null,\n  \"duration\": 184,\n  \"duration_seconds\": 184,\n  \"created_at\": \"2026-10-02T17:03:11Z\",\n  \"ended_at\": \"2026-10-02T17:06:15Z\",\n  \"recording_url\": null,\n  \"summary\": \"Caller agreed to a consultation on Thursday at 2pm.\",\n  \"transcript\": \"Agent: Hi, this is Riley from Acme Dental...\\nUser: Sure, I have a minute.\",\n  \"metadata\": {\n    \"source\": \"public_api\",\n    \"public_api_medium\": \"phone\",\n    \"ai_agent_id\": \"2a3b4c5d-6e7f-4a8b-9c0d-1e2f3a4b5c6d\",\n    \"api_metadata\": {\n      \"source\": \"nightly-follow-up\"\n    }\n  }\n}"
            },
            {
              "name": "401 — No key, or a key that is unknown, revoked or expired. `error` is one of",
              "originalRequest": {
                "method": "GET",
                "header": [
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "raw": "{{baseUrl}}/calls/:id",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "calls",
                    ":id"
                  ],
                  "variable": [
                    {
                      "key": "id",
                      "value": "4b1e0d1a-3c4e-4d0a-9f2b-7e1a2b3c4d5e",
                      "description": "Resource id (UUID)."
                    }
                  ]
                }
              },
              "status": "No key, or a key that is unknown, revoke",
              "code": 401,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                },
                {
                  "key": "X-Request-Id",
                  "value": "00000000-0000-4000-8000-000000000000"
                }
              ],
              "body": "{\n  \"error\": \"invalid_api_key\",\n  \"request_id\": \"0f3b9c1e-6d2a-4b7f-8e1c-5a9d2b4c6e80\"\n}"
            },
            {
              "name": "403 — The key does not carry the scope this operation needs. `required` names the miss",
              "originalRequest": {
                "method": "GET",
                "header": [
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "raw": "{{baseUrl}}/calls/:id",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "calls",
                    ":id"
                  ],
                  "variable": [
                    {
                      "key": "id",
                      "value": "4b1e0d1a-3c4e-4d0a-9f2b-7e1a2b3c4d5e",
                      "description": "Resource id (UUID)."
                    }
                  ]
                }
              },
              "status": "The key does not carry the scope this op",
              "code": 403,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                },
                {
                  "key": "X-Request-Id",
                  "value": "00000000-0000-4000-8000-000000000000"
                }
              ],
              "body": "{\n  \"error\": \"insufficient_scope\",\n  \"message\": \"This key does not have the leads:write scope.\",\n  \"required\": \"leads:write\",\n  \"request_id\": \"0f3b9c1e-6d2a-4b7f-8e1c-5a9d2b4c6e80\"\n}"
            },
            {
              "name": "404 — No such resource in your organization (ids from other organizations also answer ",
              "originalRequest": {
                "method": "GET",
                "header": [
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "raw": "{{baseUrl}}/calls/:id",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "calls",
                    ":id"
                  ],
                  "variable": [
                    {
                      "key": "id",
                      "value": "4b1e0d1a-3c4e-4d0a-9f2b-7e1a2b3c4d5e",
                      "description": "Resource id (UUID)."
                    }
                  ]
                }
              },
              "status": "No such resource in your organization (i",
              "code": 404,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                },
                {
                  "key": "X-Request-Id",
                  "value": "00000000-0000-4000-8000-000000000000"
                }
              ],
              "body": "{\n  \"error\": \"not_found\",\n  \"request_id\": \"0f3b9c1e-6d2a-4b7f-8e1c-5a9d2b4c6e80\"\n}"
            },
            {
              "name": "429 — Too many requests for this key in the current minute. Wait `Retry-After` seconds",
              "originalRequest": {
                "method": "GET",
                "header": [
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "raw": "{{baseUrl}}/calls/:id",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "calls",
                    ":id"
                  ],
                  "variable": [
                    {
                      "key": "id",
                      "value": "4b1e0d1a-3c4e-4d0a-9f2b-7e1a2b3c4d5e",
                      "description": "Resource id (UUID)."
                    }
                  ]
                }
              },
              "status": "Too many requests for this key in the cu",
              "code": 429,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                },
                {
                  "key": "X-Request-Id",
                  "value": "00000000-0000-4000-8000-000000000000"
                }
              ],
              "body": "{\n  \"error\": \"rate_limited\",\n  \"message\": \"This key is limited to 60 requests per minute. Retry in 3s.\",\n  \"retry_after_seconds\": 3,\n  \"request_id\": \"0f3b9c1e-6d2a-4b7f-8e1c-5a9d2b4c6e80\"\n}"
            },
            {
              "name": "500 — `internal_error` — something failed on Lojiq's side. The detail is in Lojiq's lo",
              "originalRequest": {
                "method": "GET",
                "header": [
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "raw": "{{baseUrl}}/calls/:id",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "calls",
                    ":id"
                  ],
                  "variable": [
                    {
                      "key": "id",
                      "value": "4b1e0d1a-3c4e-4d0a-9f2b-7e1a2b3c4d5e",
                      "description": "Resource id (UUID)."
                    }
                  ]
                }
              },
              "status": "`internal_error` — something failed on L",
              "code": 500,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                },
                {
                  "key": "X-Request-Id",
                  "value": "00000000-0000-4000-8000-000000000000"
                }
              ],
              "body": "{\n  \"error\": \"internal_error\",\n  \"message\": \"Something went wrong on our side. Retry\",\n  \"or contact support with the request_id.\": null,\n  \"request_id\": \"0f3b9c1e-6d2a-4b7f-8e1c-5a9d2b4c6e80\"\n}"
            }
          ]
        },
        {
          "name": "Get a call transcript  ·  GET /calls/{id}/transcript",
          "request": {
            "method": "GET",
            "header": [
              {
                "key": "Accept",
                "value": "application/json"
              }
            ],
            "url": {
              "raw": "{{baseUrl}}/calls/:id/transcript",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "calls",
                ":id",
                "transcript"
              ],
              "variable": [
                {
                  "key": "id",
                  "value": "4b1e0d1a-3c4e-4d0a-9f2b-7e1a2b3c4d5e",
                  "description": "Resource id (UUID)."
                }
              ]
            },
            "description": "**Scope:** `calls:read`\n\nStructured turns (`transcript: [{ role, content, created_at }]`) when the call has them; otherwise\n`transcript: []` plus the plain-text `transcript_text` and the `summary` from the call record, which is the\nform most AI calls store today. Not every call has either: in the last 30 days roughly one completed call in\nseven had transcript text. Subscribe to `call.transcript_ready` instead of polling. Scope: `calls:read`.\n"
          },
          "response": [
            {
              "name": "200 — OK",
              "originalRequest": {
                "method": "GET",
                "header": [
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "raw": "{{baseUrl}}/calls/:id/transcript",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "calls",
                    ":id",
                    "transcript"
                  ],
                  "variable": [
                    {
                      "key": "id",
                      "value": "4b1e0d1a-3c4e-4d0a-9f2b-7e1a2b3c4d5e",
                      "description": "Resource id (UUID)."
                    }
                  ]
                }
              },
              "status": "OK",
              "code": 200,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                },
                {
                  "key": "X-Request-Id",
                  "value": "00000000-0000-4000-8000-000000000000"
                }
              ],
              "body": "{\n  \"transcript\": [],\n  \"transcript_text\": \"Agent: Hi, this is Riley from Acme Dental...\\nUser: Sure, I have a minute.\",\n  \"summary\": \"Caller agreed to a consultation on Thursday at 2pm.\"\n}"
            },
            {
              "name": "401 — No key, or a key that is unknown, revoked or expired. `error` is one of",
              "originalRequest": {
                "method": "GET",
                "header": [
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "raw": "{{baseUrl}}/calls/:id/transcript",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "calls",
                    ":id",
                    "transcript"
                  ],
                  "variable": [
                    {
                      "key": "id",
                      "value": "4b1e0d1a-3c4e-4d0a-9f2b-7e1a2b3c4d5e",
                      "description": "Resource id (UUID)."
                    }
                  ]
                }
              },
              "status": "No key, or a key that is unknown, revoke",
              "code": 401,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                },
                {
                  "key": "X-Request-Id",
                  "value": "00000000-0000-4000-8000-000000000000"
                }
              ],
              "body": "{\n  \"error\": \"invalid_api_key\",\n  \"request_id\": \"0f3b9c1e-6d2a-4b7f-8e1c-5a9d2b4c6e80\"\n}"
            },
            {
              "name": "403 — The key does not carry the scope this operation needs. `required` names the miss",
              "originalRequest": {
                "method": "GET",
                "header": [
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "raw": "{{baseUrl}}/calls/:id/transcript",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "calls",
                    ":id",
                    "transcript"
                  ],
                  "variable": [
                    {
                      "key": "id",
                      "value": "4b1e0d1a-3c4e-4d0a-9f2b-7e1a2b3c4d5e",
                      "description": "Resource id (UUID)."
                    }
                  ]
                }
              },
              "status": "The key does not carry the scope this op",
              "code": 403,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                },
                {
                  "key": "X-Request-Id",
                  "value": "00000000-0000-4000-8000-000000000000"
                }
              ],
              "body": "{\n  \"error\": \"insufficient_scope\",\n  \"message\": \"This key does not have the leads:write scope.\",\n  \"required\": \"leads:write\",\n  \"request_id\": \"0f3b9c1e-6d2a-4b7f-8e1c-5a9d2b4c6e80\"\n}"
            },
            {
              "name": "404 — No such resource in your organization (ids from other organizations also answer ",
              "originalRequest": {
                "method": "GET",
                "header": [
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "raw": "{{baseUrl}}/calls/:id/transcript",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "calls",
                    ":id",
                    "transcript"
                  ],
                  "variable": [
                    {
                      "key": "id",
                      "value": "4b1e0d1a-3c4e-4d0a-9f2b-7e1a2b3c4d5e",
                      "description": "Resource id (UUID)."
                    }
                  ]
                }
              },
              "status": "No such resource in your organization (i",
              "code": 404,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                },
                {
                  "key": "X-Request-Id",
                  "value": "00000000-0000-4000-8000-000000000000"
                }
              ],
              "body": "{\n  \"error\": \"not_found\",\n  \"request_id\": \"0f3b9c1e-6d2a-4b7f-8e1c-5a9d2b4c6e80\"\n}"
            },
            {
              "name": "429 — Too many requests for this key in the current minute. Wait `Retry-After` seconds",
              "originalRequest": {
                "method": "GET",
                "header": [
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "raw": "{{baseUrl}}/calls/:id/transcript",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "calls",
                    ":id",
                    "transcript"
                  ],
                  "variable": [
                    {
                      "key": "id",
                      "value": "4b1e0d1a-3c4e-4d0a-9f2b-7e1a2b3c4d5e",
                      "description": "Resource id (UUID)."
                    }
                  ]
                }
              },
              "status": "Too many requests for this key in the cu",
              "code": 429,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                },
                {
                  "key": "X-Request-Id",
                  "value": "00000000-0000-4000-8000-000000000000"
                }
              ],
              "body": "{\n  \"error\": \"rate_limited\",\n  \"message\": \"This key is limited to 60 requests per minute. Retry in 3s.\",\n  \"retry_after_seconds\": 3,\n  \"request_id\": \"0f3b9c1e-6d2a-4b7f-8e1c-5a9d2b4c6e80\"\n}"
            },
            {
              "name": "500 — `internal_error` — something failed on Lojiq's side. The detail is in Lojiq's lo",
              "originalRequest": {
                "method": "GET",
                "header": [
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "raw": "{{baseUrl}}/calls/:id/transcript",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "calls",
                    ":id",
                    "transcript"
                  ],
                  "variable": [
                    {
                      "key": "id",
                      "value": "4b1e0d1a-3c4e-4d0a-9f2b-7e1a2b3c4d5e",
                      "description": "Resource id (UUID)."
                    }
                  ]
                }
              },
              "status": "`internal_error` — something failed on L",
              "code": 500,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                },
                {
                  "key": "X-Request-Id",
                  "value": "00000000-0000-4000-8000-000000000000"
                }
              ],
              "body": "{\n  \"error\": \"internal_error\",\n  \"message\": \"Something went wrong on our side. Retry\",\n  \"or contact support with the request_id.\": null,\n  \"request_id\": \"0f3b9c1e-6d2a-4b7f-8e1c-5a9d2b4c6e80\"\n}"
            }
          ]
        },
        {
          "name": "End a live call  ·  POST /calls/{id}/hangup",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Accept",
                "value": "application/json"
              }
            ],
            "url": {
              "raw": "{{baseUrl}}/calls/:id/hangup",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "calls",
                ":id",
                "hangup"
              ],
              "variable": [
                {
                  "key": "id",
                  "value": "4b1e0d1a-3c4e-4d0a-9f2b-7e1a2b3c4d5e",
                  "description": "Resource id (UUID)."
                }
              ]
            },
            "description": "**Scope:** `calls:write`\n\nDrops the AI leg of a live call; the carrier leg follows. Works for calls started through the API or in the app. Scope: `calls:write`."
          },
          "response": [
            {
              "name": "200 — Ended",
              "originalRequest": {
                "method": "POST",
                "header": [
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "raw": "{{baseUrl}}/calls/:id/hangup",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "calls",
                    ":id",
                    "hangup"
                  ],
                  "variable": [
                    {
                      "key": "id",
                      "value": "4b1e0d1a-3c4e-4d0a-9f2b-7e1a2b3c4d5e",
                      "description": "Resource id (UUID)."
                    }
                  ]
                }
              },
              "status": "Ended",
              "code": 200,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                },
                {
                  "key": "X-Request-Id",
                  "value": "00000000-0000-4000-8000-000000000000"
                }
              ],
              "body": "{\n  \"ok\": true\n}"
            },
            {
              "name": "401 — No key, or a key that is unknown, revoked or expired. `error` is one of",
              "originalRequest": {
                "method": "POST",
                "header": [
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "raw": "{{baseUrl}}/calls/:id/hangup",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "calls",
                    ":id",
                    "hangup"
                  ],
                  "variable": [
                    {
                      "key": "id",
                      "value": "4b1e0d1a-3c4e-4d0a-9f2b-7e1a2b3c4d5e",
                      "description": "Resource id (UUID)."
                    }
                  ]
                }
              },
              "status": "No key, or a key that is unknown, revoke",
              "code": 401,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                },
                {
                  "key": "X-Request-Id",
                  "value": "00000000-0000-4000-8000-000000000000"
                }
              ],
              "body": "{\n  \"error\": \"invalid_api_key\",\n  \"request_id\": \"0f3b9c1e-6d2a-4b7f-8e1c-5a9d2b4c6e80\"\n}"
            },
            {
              "name": "403 — The key does not carry the scope this operation needs. `required` names the miss",
              "originalRequest": {
                "method": "POST",
                "header": [
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "raw": "{{baseUrl}}/calls/:id/hangup",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "calls",
                    ":id",
                    "hangup"
                  ],
                  "variable": [
                    {
                      "key": "id",
                      "value": "4b1e0d1a-3c4e-4d0a-9f2b-7e1a2b3c4d5e",
                      "description": "Resource id (UUID)."
                    }
                  ]
                }
              },
              "status": "The key does not carry the scope this op",
              "code": 403,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                },
                {
                  "key": "X-Request-Id",
                  "value": "00000000-0000-4000-8000-000000000000"
                }
              ],
              "body": "{\n  \"error\": \"insufficient_scope\",\n  \"message\": \"This key does not have the leads:write scope.\",\n  \"required\": \"leads:write\",\n  \"request_id\": \"0f3b9c1e-6d2a-4b7f-8e1c-5a9d2b4c6e80\"\n}"
            },
            {
              "name": "404 — No such resource in your organization (ids from other organizations also answer ",
              "originalRequest": {
                "method": "POST",
                "header": [
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "raw": "{{baseUrl}}/calls/:id/hangup",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "calls",
                    ":id",
                    "hangup"
                  ],
                  "variable": [
                    {
                      "key": "id",
                      "value": "4b1e0d1a-3c4e-4d0a-9f2b-7e1a2b3c4d5e",
                      "description": "Resource id (UUID)."
                    }
                  ]
                }
              },
              "status": "No such resource in your organization (i",
              "code": 404,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                },
                {
                  "key": "X-Request-Id",
                  "value": "00000000-0000-4000-8000-000000000000"
                }
              ],
              "body": "{\n  \"error\": \"not_found\",\n  \"request_id\": \"0f3b9c1e-6d2a-4b7f-8e1c-5a9d2b4c6e80\"\n}"
            },
            {
              "name": "409 — `call_already_ended`, or `call_not_connected` (still dialing or in answering-mac",
              "originalRequest": {
                "method": "POST",
                "header": [
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "raw": "{{baseUrl}}/calls/:id/hangup",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "calls",
                    ":id",
                    "hangup"
                  ],
                  "variable": [
                    {
                      "key": "id",
                      "value": "4b1e0d1a-3c4e-4d0a-9f2b-7e1a2b3c4d5e",
                      "description": "Resource id (UUID)."
                    }
                  ]
                }
              },
              "status": "`call_already_ended`, or `call_not_conne",
              "code": 409,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                },
                {
                  "key": "X-Request-Id",
                  "value": "00000000-0000-4000-8000-000000000000"
                }
              ],
              "body": "{\n  \"error\": \"call_not_connected\",\n  \"message\": \"The AI leg has not connected yet (still dialing or screening).\"\n}"
            },
            {
              "name": "429 — Too many requests for this key in the current minute. Wait `Retry-After` seconds",
              "originalRequest": {
                "method": "POST",
                "header": [
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "raw": "{{baseUrl}}/calls/:id/hangup",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "calls",
                    ":id",
                    "hangup"
                  ],
                  "variable": [
                    {
                      "key": "id",
                      "value": "4b1e0d1a-3c4e-4d0a-9f2b-7e1a2b3c4d5e",
                      "description": "Resource id (UUID)."
                    }
                  ]
                }
              },
              "status": "Too many requests for this key in the cu",
              "code": 429,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                },
                {
                  "key": "X-Request-Id",
                  "value": "00000000-0000-4000-8000-000000000000"
                }
              ],
              "body": "{\n  \"error\": \"rate_limited\",\n  \"message\": \"This key is limited to 60 requests per minute. Retry in 3s.\",\n  \"retry_after_seconds\": 3,\n  \"request_id\": \"0f3b9c1e-6d2a-4b7f-8e1c-5a9d2b4c6e80\"\n}"
            },
            {
              "name": "502 — `hangup_failed` — the voice provider did not accept the request.",
              "originalRequest": {
                "method": "POST",
                "header": [
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "raw": "{{baseUrl}}/calls/:id/hangup",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "calls",
                    ":id",
                    "hangup"
                  ],
                  "variable": [
                    {
                      "key": "id",
                      "value": "4b1e0d1a-3c4e-4d0a-9f2b-7e1a2b3c4d5e",
                      "description": "Resource id (UUID)."
                    }
                  ]
                }
              },
              "status": "`hangup_failed` — the voice provider did",
              "code": 502,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                },
                {
                  "key": "X-Request-Id",
                  "value": "00000000-0000-4000-8000-000000000000"
                }
              ],
              "body": "{\n  \"error\": \"invalid_phone_number\",\n  \"message\": \"phone_number is required: 10-15 digits, E.164 preferred (+15551234567).\",\n  \"request_id\": \"0f3b9c1e-6d2a-4b7f-8e1c-5a9d2b4c6e80\"\n}"
            }
          ]
        },
        {
          "name": "Get a call recording  ·  GET /calls/{id}/recording",
          "request": {
            "method": "GET",
            "header": [
              {
                "key": "Accept",
                "value": "application/json"
              }
            ],
            "url": {
              "raw": "{{baseUrl}}/calls/:id/recording",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "calls",
                ":id",
                "recording"
              ],
              "variable": [
                {
                  "key": "id",
                  "value": "4b1e0d1a-3c4e-4d0a-9f2b-7e1a2b3c4d5e",
                  "description": "Resource id (UUID)."
                }
              ]
            },
            "description": "**Scope:** `calls:read`\n\nAnswers `302` to the recording audio. Follow the redirect with your API key omitted (the target is a storage\nURL). Not every call has a recording: campaign recording depends on the campaign's consent settings.\nScope: `calls:read`.\n"
          },
          "response": [
            {
              "name": "401 — No key, or a key that is unknown, revoked or expired. `error` is one of",
              "originalRequest": {
                "method": "GET",
                "header": [
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "raw": "{{baseUrl}}/calls/:id/recording",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "calls",
                    ":id",
                    "recording"
                  ],
                  "variable": [
                    {
                      "key": "id",
                      "value": "4b1e0d1a-3c4e-4d0a-9f2b-7e1a2b3c4d5e",
                      "description": "Resource id (UUID)."
                    }
                  ]
                }
              },
              "status": "No key, or a key that is unknown, revoke",
              "code": 401,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                },
                {
                  "key": "X-Request-Id",
                  "value": "00000000-0000-4000-8000-000000000000"
                }
              ],
              "body": "{\n  \"error\": \"invalid_api_key\",\n  \"request_id\": \"0f3b9c1e-6d2a-4b7f-8e1c-5a9d2b4c6e80\"\n}"
            },
            {
              "name": "403 — The key does not carry the scope this operation needs. `required` names the miss",
              "originalRequest": {
                "method": "GET",
                "header": [
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "raw": "{{baseUrl}}/calls/:id/recording",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "calls",
                    ":id",
                    "recording"
                  ],
                  "variable": [
                    {
                      "key": "id",
                      "value": "4b1e0d1a-3c4e-4d0a-9f2b-7e1a2b3c4d5e",
                      "description": "Resource id (UUID)."
                    }
                  ]
                }
              },
              "status": "The key does not carry the scope this op",
              "code": 403,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                },
                {
                  "key": "X-Request-Id",
                  "value": "00000000-0000-4000-8000-000000000000"
                }
              ],
              "body": "{\n  \"error\": \"insufficient_scope\",\n  \"message\": \"This key does not have the leads:write scope.\",\n  \"required\": \"leads:write\",\n  \"request_id\": \"0f3b9c1e-6d2a-4b7f-8e1c-5a9d2b4c6e80\"\n}"
            },
            {
              "name": "404 — `not_found`, or `recording_not_available` when the call exists but has no record",
              "originalRequest": {
                "method": "GET",
                "header": [
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "raw": "{{baseUrl}}/calls/:id/recording",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "calls",
                    ":id",
                    "recording"
                  ],
                  "variable": [
                    {
                      "key": "id",
                      "value": "4b1e0d1a-3c4e-4d0a-9f2b-7e1a2b3c4d5e",
                      "description": "Resource id (UUID)."
                    }
                  ]
                }
              },
              "status": "`not_found`, or `recording_not_available",
              "code": 404,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                },
                {
                  "key": "X-Request-Id",
                  "value": "00000000-0000-4000-8000-000000000000"
                }
              ],
              "body": "{\n  \"error\": \"recording_not_available\"\n}"
            },
            {
              "name": "429 — Too many requests for this key in the current minute. Wait `Retry-After` seconds",
              "originalRequest": {
                "method": "GET",
                "header": [
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "raw": "{{baseUrl}}/calls/:id/recording",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "calls",
                    ":id",
                    "recording"
                  ],
                  "variable": [
                    {
                      "key": "id",
                      "value": "4b1e0d1a-3c4e-4d0a-9f2b-7e1a2b3c4d5e",
                      "description": "Resource id (UUID)."
                    }
                  ]
                }
              },
              "status": "Too many requests for this key in the cu",
              "code": 429,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                },
                {
                  "key": "X-Request-Id",
                  "value": "00000000-0000-4000-8000-000000000000"
                }
              ],
              "body": "{\n  \"error\": \"rate_limited\",\n  \"message\": \"This key is limited to 60 requests per minute. Retry in 3s.\",\n  \"retry_after_seconds\": 3,\n  \"request_id\": \"0f3b9c1e-6d2a-4b7f-8e1c-5a9d2b4c6e80\"\n}"
            },
            {
              "name": "500 — `internal_error` — something failed on Lojiq's side. The detail is in Lojiq's lo",
              "originalRequest": {
                "method": "GET",
                "header": [
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "raw": "{{baseUrl}}/calls/:id/recording",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "calls",
                    ":id",
                    "recording"
                  ],
                  "variable": [
                    {
                      "key": "id",
                      "value": "4b1e0d1a-3c4e-4d0a-9f2b-7e1a2b3c4d5e",
                      "description": "Resource id (UUID)."
                    }
                  ]
                }
              },
              "status": "`internal_error` — something failed on L",
              "code": 500,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                },
                {
                  "key": "X-Request-Id",
                  "value": "00000000-0000-4000-8000-000000000000"
                }
              ],
              "body": "{\n  \"error\": \"internal_error\",\n  \"message\": \"Something went wrong on our side. Retry\",\n  \"or contact support with the request_id.\": null,\n  \"request_id\": \"0f3b9c1e-6d2a-4b7f-8e1c-5a9d2b4c6e80\"\n}"
            }
          ]
        }
      ]
    },
    {
      "name": "Voices",
      "description": "The voice catalog your agents can use, with a preview clip per voice.",
      "item": [
        {
          "name": "List voices  ·  GET /voices",
          "request": {
            "method": "GET",
            "header": [
              {
                "key": "Accept",
                "value": "application/json"
              }
            ],
            "url": {
              "raw": "{{baseUrl}}/voices",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "voices"
              ]
            },
            "description": "**Scope:** `voices:read`\n\nThe active voice catalog, alphabetical. Use `id` or `name` as `voice` in a call template. Scope: `voices:read`."
          },
          "response": [
            {
              "name": "200 — OK",
              "originalRequest": {
                "method": "GET",
                "header": [
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "raw": "{{baseUrl}}/voices",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "voices"
                  ]
                }
              },
              "status": "OK",
              "code": 200,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                },
                {
                  "key": "X-Request-Id",
                  "value": "00000000-0000-4000-8000-000000000000"
                }
              ],
              "body": "{\n  \"data\": [\n    {\n      \"id\": \"0b1c2d3e-4f5a-4b6c-8d7e-9f0a1b2c3d4e\",\n      \"name\": \"Kyle\",\n      \"gender\": \"male\",\n      \"age\": 34,\n      \"description\": \"Warm, confident, mid-tempo.\",\n      \"language\": \"en-US\",\n      \"personality_traits\": [\n        \"friendly\",\n        \"professional\"\n      ],\n      \"preview_url\": \"https://api.lojiq.ai/v1/voices/0b1c2d3e-4f5a-4b6c-8d7e-9f0a1b2c3d4e/preview\"\n    }\n  ]\n}"
            },
            {
              "name": "401 — No key, or a key that is unknown, revoked or expired. `error` is one of",
              "originalRequest": {
                "method": "GET",
                "header": [
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "raw": "{{baseUrl}}/voices",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "voices"
                  ]
                }
              },
              "status": "No key, or a key that is unknown, revoke",
              "code": 401,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                },
                {
                  "key": "X-Request-Id",
                  "value": "00000000-0000-4000-8000-000000000000"
                }
              ],
              "body": "{\n  \"error\": \"invalid_api_key\",\n  \"request_id\": \"0f3b9c1e-6d2a-4b7f-8e1c-5a9d2b4c6e80\"\n}"
            },
            {
              "name": "403 — The key does not carry the scope this operation needs. `required` names the miss",
              "originalRequest": {
                "method": "GET",
                "header": [
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "raw": "{{baseUrl}}/voices",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "voices"
                  ]
                }
              },
              "status": "The key does not carry the scope this op",
              "code": 403,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                },
                {
                  "key": "X-Request-Id",
                  "value": "00000000-0000-4000-8000-000000000000"
                }
              ],
              "body": "{\n  \"error\": \"insufficient_scope\",\n  \"message\": \"This key does not have the leads:write scope.\",\n  \"required\": \"leads:write\",\n  \"request_id\": \"0f3b9c1e-6d2a-4b7f-8e1c-5a9d2b4c6e80\"\n}"
            },
            {
              "name": "429 — Too many requests for this key in the current minute. Wait `Retry-After` seconds",
              "originalRequest": {
                "method": "GET",
                "header": [
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "raw": "{{baseUrl}}/voices",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "voices"
                  ]
                }
              },
              "status": "Too many requests for this key in the cu",
              "code": 429,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                },
                {
                  "key": "X-Request-Id",
                  "value": "00000000-0000-4000-8000-000000000000"
                }
              ],
              "body": "{\n  \"error\": \"rate_limited\",\n  \"message\": \"This key is limited to 60 requests per minute. Retry in 3s.\",\n  \"retry_after_seconds\": 3,\n  \"request_id\": \"0f3b9c1e-6d2a-4b7f-8e1c-5a9d2b4c6e80\"\n}"
            },
            {
              "name": "500 — `internal_error` — something failed on Lojiq's side. The detail is in Lojiq's lo",
              "originalRequest": {
                "method": "GET",
                "header": [
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "raw": "{{baseUrl}}/voices",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "voices"
                  ]
                }
              },
              "status": "`internal_error` — something failed on L",
              "code": 500,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                },
                {
                  "key": "X-Request-Id",
                  "value": "00000000-0000-4000-8000-000000000000"
                }
              ],
              "body": "{\n  \"error\": \"internal_error\",\n  \"message\": \"Something went wrong on our side. Retry\",\n  \"or contact support with the request_id.\": null,\n  \"request_id\": \"0f3b9c1e-6d2a-4b7f-8e1c-5a9d2b4c6e80\"\n}"
            }
          ]
        },
        {
          "name": "Preview a voice  ·  GET /voices/{id}/preview",
          "request": {
            "method": "GET",
            "header": [
              {
                "key": "Accept",
                "value": "application/json"
              }
            ],
            "url": {
              "raw": "{{baseUrl}}/voices/:id/preview",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "voices",
                ":id",
                "preview"
              ],
              "variable": [
                {
                  "key": "id",
                  "value": "",
                  "description": "Voice id or name."
                }
              ]
            },
            "description": "**Scope:** `voices:read`\n\nA short audio clip of the voice reading a fixed sample sentence (you cannot supply your own text). Cached for\n24 hours. `id` may be the voice id or name. Scope: `voices:read`.\n"
          },
          "response": [
            {
              "name": "200 — Audio (`audio/wav` unless the provider returns another type). `Cache-Control: pu",
              "originalRequest": {
                "method": "GET",
                "header": [
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "raw": "{{baseUrl}}/voices/:id/preview",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "voices",
                    ":id",
                    "preview"
                  ],
                  "variable": [
                    {
                      "key": "id",
                      "value": "",
                      "description": "Voice id or name."
                    }
                  ]
                }
              },
              "status": "Audio (`audio/wav` unless the provider r",
              "code": 200,
              "_postman_previewlanguage": "text",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "audio/wav"
                },
                {
                  "key": "X-Request-Id",
                  "value": "00000000-0000-4000-8000-000000000000"
                }
              ],
              "body": "string"
            },
            {
              "name": "400 — `unknown_voice`.",
              "originalRequest": {
                "method": "GET",
                "header": [
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "raw": "{{baseUrl}}/voices/:id/preview",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "voices",
                    ":id",
                    "preview"
                  ],
                  "variable": [
                    {
                      "key": "id",
                      "value": "",
                      "description": "Voice id or name."
                    }
                  ]
                }
              },
              "status": "`unknown_voice`.",
              "code": 400,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                },
                {
                  "key": "X-Request-Id",
                  "value": "00000000-0000-4000-8000-000000000000"
                }
              ],
              "body": "{\n  \"error\": \"invalid_phone_number\",\n  \"message\": \"phone_number is required: 10-15 digits, E.164 preferred (+15551234567).\",\n  \"request_id\": \"0f3b9c1e-6d2a-4b7f-8e1c-5a9d2b4c6e80\"\n}"
            },
            {
              "name": "401 — No key, or a key that is unknown, revoked or expired. `error` is one of",
              "originalRequest": {
                "method": "GET",
                "header": [
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "raw": "{{baseUrl}}/voices/:id/preview",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "voices",
                    ":id",
                    "preview"
                  ],
                  "variable": [
                    {
                      "key": "id",
                      "value": "",
                      "description": "Voice id or name."
                    }
                  ]
                }
              },
              "status": "No key, or a key that is unknown, revoke",
              "code": 401,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                },
                {
                  "key": "X-Request-Id",
                  "value": "00000000-0000-4000-8000-000000000000"
                }
              ],
              "body": "{\n  \"error\": \"invalid_api_key\",\n  \"request_id\": \"0f3b9c1e-6d2a-4b7f-8e1c-5a9d2b4c6e80\"\n}"
            },
            {
              "name": "403 — The key does not carry the scope this operation needs. `required` names the miss",
              "originalRequest": {
                "method": "GET",
                "header": [
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "raw": "{{baseUrl}}/voices/:id/preview",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "voices",
                    ":id",
                    "preview"
                  ],
                  "variable": [
                    {
                      "key": "id",
                      "value": "",
                      "description": "Voice id or name."
                    }
                  ]
                }
              },
              "status": "The key does not carry the scope this op",
              "code": 403,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                },
                {
                  "key": "X-Request-Id",
                  "value": "00000000-0000-4000-8000-000000000000"
                }
              ],
              "body": "{\n  \"error\": \"insufficient_scope\",\n  \"message\": \"This key does not have the leads:write scope.\",\n  \"required\": \"leads:write\",\n  \"request_id\": \"0f3b9c1e-6d2a-4b7f-8e1c-5a9d2b4c6e80\"\n}"
            },
            {
              "name": "404 — No such resource in your organization (ids from other organizations also answer ",
              "originalRequest": {
                "method": "GET",
                "header": [
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "raw": "{{baseUrl}}/voices/:id/preview",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "voices",
                    ":id",
                    "preview"
                  ],
                  "variable": [
                    {
                      "key": "id",
                      "value": "",
                      "description": "Voice id or name."
                    }
                  ]
                }
              },
              "status": "No such resource in your organization (i",
              "code": 404,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                },
                {
                  "key": "X-Request-Id",
                  "value": "00000000-0000-4000-8000-000000000000"
                }
              ],
              "body": "{\n  \"error\": \"not_found\",\n  \"request_id\": \"0f3b9c1e-6d2a-4b7f-8e1c-5a9d2b4c6e80\"\n}"
            },
            {
              "name": "429 — Too many requests for this key in the current minute. Wait `Retry-After` seconds",
              "originalRequest": {
                "method": "GET",
                "header": [
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "raw": "{{baseUrl}}/voices/:id/preview",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "voices",
                    ":id",
                    "preview"
                  ],
                  "variable": [
                    {
                      "key": "id",
                      "value": "",
                      "description": "Voice id or name."
                    }
                  ]
                }
              },
              "status": "Too many requests for this key in the cu",
              "code": 429,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                },
                {
                  "key": "X-Request-Id",
                  "value": "00000000-0000-4000-8000-000000000000"
                }
              ],
              "body": "{\n  \"error\": \"rate_limited\",\n  \"message\": \"This key is limited to 60 requests per minute. Retry in 3s.\",\n  \"retry_after_seconds\": 3,\n  \"request_id\": \"0f3b9c1e-6d2a-4b7f-8e1c-5a9d2b4c6e80\"\n}"
            },
            {
              "name": "502 — `preview_failed` — the voice provider did not return audio.",
              "originalRequest": {
                "method": "GET",
                "header": [
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "raw": "{{baseUrl}}/voices/:id/preview",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "voices",
                    ":id",
                    "preview"
                  ],
                  "variable": [
                    {
                      "key": "id",
                      "value": "",
                      "description": "Voice id or name."
                    }
                  ]
                }
              },
              "status": "`preview_failed` — the voice provider di",
              "code": 502,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                },
                {
                  "key": "X-Request-Id",
                  "value": "00000000-0000-4000-8000-000000000000"
                }
              ],
              "body": "{\n  \"error\": \"invalid_phone_number\",\n  \"message\": \"phone_number is required: 10-15 digits, E.164 preferred (+15551234567).\",\n  \"request_id\": \"0f3b9c1e-6d2a-4b7f-8e1c-5a9d2b4c6e80\"\n}"
            }
          ]
        }
      ]
    },
    {
      "name": "Appointments",
      "description": "Appointments booked by your AI agents or your team. Read them and cancel them.",
      "item": [
        {
          "name": "List appointments  ·  GET /appointments",
          "request": {
            "method": "GET",
            "header": [
              {
                "key": "Accept",
                "value": "application/json"
              }
            ],
            "url": {
              "raw": "{{baseUrl}}/appointments?limit=&offset=&status=&lead_id=",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "appointments"
              ],
              "query": [
                {
                  "key": "limit",
                  "value": "50",
                  "description": "Page size. Default 50, maximum 200 (larger values are clamped to 200).",
                  "disabled": false
                },
                {
                  "key": "offset",
                  "value": "0",
                  "description": "Number of rows to skip. Default 0. Page by increasing `offset` by `limit` until `data` comes back shorter than `limit`.",
                  "disabled": false
                },
                {
                  "key": "status",
                  "value": "",
                  "description": "",
                  "disabled": true
                },
                {
                  "key": "lead_id",
                  "value": "",
                  "description": "",
                  "disabled": true
                }
              ]
            },
            "description": "**Scope:** `appointments:read`\n\nSoonest first. Filter by `status` or `lead_id`. Scope: `appointments:read`."
          },
          "response": [
            {
              "name": "200 — OK",
              "originalRequest": {
                "method": "GET",
                "header": [
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "raw": "{{baseUrl}}/appointments?limit=&offset=&status=&lead_id=",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "appointments"
                  ],
                  "query": [
                    {
                      "key": "limit",
                      "value": "50",
                      "description": "Page size. Default 50, maximum 200 (larger values are clamped to 200).",
                      "disabled": false
                    },
                    {
                      "key": "offset",
                      "value": "0",
                      "description": "Number of rows to skip. Default 0. Page by increasing `offset` by `limit` until `data` comes back shorter than `limit`.",
                      "disabled": false
                    },
                    {
                      "key": "status",
                      "value": "",
                      "description": "",
                      "disabled": true
                    },
                    {
                      "key": "lead_id",
                      "value": "",
                      "description": "",
                      "disabled": true
                    }
                  ]
                }
              },
              "status": "OK",
              "code": 200,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                },
                {
                  "key": "X-Request-Id",
                  "value": "00000000-0000-4000-8000-000000000000"
                }
              ],
              "body": "{\n  \"data\": [\n    {\n      \"id\": \"8d7c6b5a-4f3e-4d2c-9b1a-0f9e8d7c6b5a\",\n      \"lead_id\": \"4b1e0d1a-3c4e-4d0a-9f2b-7e1a2b3c4d5e\",\n      \"campaign_id\": \"0d2f6b1e-4a7c-4e8d-9b1a-2c3d4e5f6a7b\",\n      \"contact_name\": \"Avery Rivera\",\n      \"appointment_datetime\": \"2026-10-09T21:00:00Z\",\n      \"duration_minutes\": 30,\n      \"timezone\": \"America/Los_Angeles\",\n      \"status\": \"scheduled\",\n      \"fulfillment_mode\": \"ai\",\n      \"source\": \"ai_call\",\n      \"created_at\": \"2026-10-02T17:06:15Z\"\n    }\n  ],\n  \"limit\": 50,\n  \"offset\": 0\n}"
            },
            {
              "name": "401 — No key, or a key that is unknown, revoked or expired. `error` is one of",
              "originalRequest": {
                "method": "GET",
                "header": [
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "raw": "{{baseUrl}}/appointments?limit=&offset=&status=&lead_id=",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "appointments"
                  ],
                  "query": [
                    {
                      "key": "limit",
                      "value": "50",
                      "description": "Page size. Default 50, maximum 200 (larger values are clamped to 200).",
                      "disabled": false
                    },
                    {
                      "key": "offset",
                      "value": "0",
                      "description": "Number of rows to skip. Default 0. Page by increasing `offset` by `limit` until `data` comes back shorter than `limit`.",
                      "disabled": false
                    },
                    {
                      "key": "status",
                      "value": "",
                      "description": "",
                      "disabled": true
                    },
                    {
                      "key": "lead_id",
                      "value": "",
                      "description": "",
                      "disabled": true
                    }
                  ]
                }
              },
              "status": "No key, or a key that is unknown, revoke",
              "code": 401,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                },
                {
                  "key": "X-Request-Id",
                  "value": "00000000-0000-4000-8000-000000000000"
                }
              ],
              "body": "{\n  \"error\": \"invalid_api_key\",\n  \"request_id\": \"0f3b9c1e-6d2a-4b7f-8e1c-5a9d2b4c6e80\"\n}"
            },
            {
              "name": "403 — The key does not carry the scope this operation needs. `required` names the miss",
              "originalRequest": {
                "method": "GET",
                "header": [
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "raw": "{{baseUrl}}/appointments?limit=&offset=&status=&lead_id=",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "appointments"
                  ],
                  "query": [
                    {
                      "key": "limit",
                      "value": "50",
                      "description": "Page size. Default 50, maximum 200 (larger values are clamped to 200).",
                      "disabled": false
                    },
                    {
                      "key": "offset",
                      "value": "0",
                      "description": "Number of rows to skip. Default 0. Page by increasing `offset` by `limit` until `data` comes back shorter than `limit`.",
                      "disabled": false
                    },
                    {
                      "key": "status",
                      "value": "",
                      "description": "",
                      "disabled": true
                    },
                    {
                      "key": "lead_id",
                      "value": "",
                      "description": "",
                      "disabled": true
                    }
                  ]
                }
              },
              "status": "The key does not carry the scope this op",
              "code": 403,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                },
                {
                  "key": "X-Request-Id",
                  "value": "00000000-0000-4000-8000-000000000000"
                }
              ],
              "body": "{\n  \"error\": \"insufficient_scope\",\n  \"message\": \"This key does not have the leads:write scope.\",\n  \"required\": \"leads:write\",\n  \"request_id\": \"0f3b9c1e-6d2a-4b7f-8e1c-5a9d2b4c6e80\"\n}"
            },
            {
              "name": "429 — Too many requests for this key in the current minute. Wait `Retry-After` seconds",
              "originalRequest": {
                "method": "GET",
                "header": [
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "raw": "{{baseUrl}}/appointments?limit=&offset=&status=&lead_id=",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "appointments"
                  ],
                  "query": [
                    {
                      "key": "limit",
                      "value": "50",
                      "description": "Page size. Default 50, maximum 200 (larger values are clamped to 200).",
                      "disabled": false
                    },
                    {
                      "key": "offset",
                      "value": "0",
                      "description": "Number of rows to skip. Default 0. Page by increasing `offset` by `limit` until `data` comes back shorter than `limit`.",
                      "disabled": false
                    },
                    {
                      "key": "status",
                      "value": "",
                      "description": "",
                      "disabled": true
                    },
                    {
                      "key": "lead_id",
                      "value": "",
                      "description": "",
                      "disabled": true
                    }
                  ]
                }
              },
              "status": "Too many requests for this key in the cu",
              "code": 429,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                },
                {
                  "key": "X-Request-Id",
                  "value": "00000000-0000-4000-8000-000000000000"
                }
              ],
              "body": "{\n  \"error\": \"rate_limited\",\n  \"message\": \"This key is limited to 60 requests per minute. Retry in 3s.\",\n  \"retry_after_seconds\": 3,\n  \"request_id\": \"0f3b9c1e-6d2a-4b7f-8e1c-5a9d2b4c6e80\"\n}"
            },
            {
              "name": "500 — `internal_error` — something failed on Lojiq's side. The detail is in Lojiq's lo",
              "originalRequest": {
                "method": "GET",
                "header": [
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "raw": "{{baseUrl}}/appointments?limit=&offset=&status=&lead_id=",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "appointments"
                  ],
                  "query": [
                    {
                      "key": "limit",
                      "value": "50",
                      "description": "Page size. Default 50, maximum 200 (larger values are clamped to 200).",
                      "disabled": false
                    },
                    {
                      "key": "offset",
                      "value": "0",
                      "description": "Number of rows to skip. Default 0. Page by increasing `offset` by `limit` until `data` comes back shorter than `limit`.",
                      "disabled": false
                    },
                    {
                      "key": "status",
                      "value": "",
                      "description": "",
                      "disabled": true
                    },
                    {
                      "key": "lead_id",
                      "value": "",
                      "description": "",
                      "disabled": true
                    }
                  ]
                }
              },
              "status": "`internal_error` — something failed on L",
              "code": 500,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                },
                {
                  "key": "X-Request-Id",
                  "value": "00000000-0000-4000-8000-000000000000"
                }
              ],
              "body": "{\n  \"error\": \"internal_error\",\n  \"message\": \"Something went wrong on our side. Retry\",\n  \"or contact support with the request_id.\": null,\n  \"request_id\": \"0f3b9c1e-6d2a-4b7f-8e1c-5a9d2b4c6e80\"\n}"
            }
          ]
        },
        {
          "name": "Cancel an appointment  ·  POST /appointments/{id}/cancel",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Accept",
                "value": "application/json"
              },
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "url": {
              "raw": "{{baseUrl}}/appointments/:id/cancel",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "appointments",
                ":id",
                "cancel"
              ],
              "variable": [
                {
                  "key": "id",
                  "value": "4b1e0d1a-3c4e-4d0a-9f2b-7e1a2b3c4d5e",
                  "description": "Resource id (UUID)."
                }
              ]
            },
            "description": "**Scope:** `appointments:write`\n\nSets the status to `cancelled`, stores `reason` (up to 500 characters) and emits `appointment.cancelled` with `{ appointment_id, reason, source: \"public_api\" }`. Scope: `appointments:write`.",
            "body": {
              "mode": "raw",
              "raw": "{\n  \"reason\": \"customer_requested\"\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            }
          },
          "response": [
            {
              "name": "200 — Cancelled",
              "originalRequest": {
                "method": "POST",
                "header": [
                  {
                    "key": "Accept",
                    "value": "application/json"
                  },
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "raw": "{{baseUrl}}/appointments/:id/cancel",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "appointments",
                    ":id",
                    "cancel"
                  ],
                  "variable": [
                    {
                      "key": "id",
                      "value": "4b1e0d1a-3c4e-4d0a-9f2b-7e1a2b3c4d5e",
                      "description": "Resource id (UUID)."
                    }
                  ]
                },
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"reason\": \"customer_requested\"\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "status": "Cancelled",
              "code": 200,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                },
                {
                  "key": "X-Request-Id",
                  "value": "00000000-0000-4000-8000-000000000000"
                }
              ],
              "body": "{\n  \"id\": \"8d7c6b5a-4f3e-4d2c-9b1a-0f9e8d7c6b5a\",\n  \"status\": \"cancelled\"\n}"
            },
            {
              "name": "400 — `invalid_request` (the body is not a JSON object) or `invalid_json`.",
              "originalRequest": {
                "method": "POST",
                "header": [
                  {
                    "key": "Accept",
                    "value": "application/json"
                  },
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "raw": "{{baseUrl}}/appointments/:id/cancel",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "appointments",
                    ":id",
                    "cancel"
                  ],
                  "variable": [
                    {
                      "key": "id",
                      "value": "4b1e0d1a-3c4e-4d0a-9f2b-7e1a2b3c4d5e",
                      "description": "Resource id (UUID)."
                    }
                  ]
                },
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"reason\": \"customer_requested\"\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "status": "`invalid_request` (the body is not a JSO",
              "code": 400,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                },
                {
                  "key": "X-Request-Id",
                  "value": "00000000-0000-4000-8000-000000000000"
                }
              ],
              "body": "{\n  \"error\": \"invalid_phone_number\",\n  \"message\": \"phone_number is required: 10-15 digits, E.164 preferred (+15551234567).\",\n  \"request_id\": \"0f3b9c1e-6d2a-4b7f-8e1c-5a9d2b4c6e80\"\n}"
            },
            {
              "name": "401 — No key, or a key that is unknown, revoked or expired. `error` is one of",
              "originalRequest": {
                "method": "POST",
                "header": [
                  {
                    "key": "Accept",
                    "value": "application/json"
                  },
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "raw": "{{baseUrl}}/appointments/:id/cancel",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "appointments",
                    ":id",
                    "cancel"
                  ],
                  "variable": [
                    {
                      "key": "id",
                      "value": "4b1e0d1a-3c4e-4d0a-9f2b-7e1a2b3c4d5e",
                      "description": "Resource id (UUID)."
                    }
                  ]
                },
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"reason\": \"customer_requested\"\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "status": "No key, or a key that is unknown, revoke",
              "code": 401,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                },
                {
                  "key": "X-Request-Id",
                  "value": "00000000-0000-4000-8000-000000000000"
                }
              ],
              "body": "{\n  \"error\": \"invalid_api_key\",\n  \"request_id\": \"0f3b9c1e-6d2a-4b7f-8e1c-5a9d2b4c6e80\"\n}"
            },
            {
              "name": "403 — The key does not carry the scope this operation needs. `required` names the miss",
              "originalRequest": {
                "method": "POST",
                "header": [
                  {
                    "key": "Accept",
                    "value": "application/json"
                  },
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "raw": "{{baseUrl}}/appointments/:id/cancel",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "appointments",
                    ":id",
                    "cancel"
                  ],
                  "variable": [
                    {
                      "key": "id",
                      "value": "4b1e0d1a-3c4e-4d0a-9f2b-7e1a2b3c4d5e",
                      "description": "Resource id (UUID)."
                    }
                  ]
                },
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"reason\": \"customer_requested\"\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "status": "The key does not carry the scope this op",
              "code": 403,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                },
                {
                  "key": "X-Request-Id",
                  "value": "00000000-0000-4000-8000-000000000000"
                }
              ],
              "body": "{\n  \"error\": \"insufficient_scope\",\n  \"message\": \"This key does not have the leads:write scope.\",\n  \"required\": \"leads:write\",\n  \"request_id\": \"0f3b9c1e-6d2a-4b7f-8e1c-5a9d2b4c6e80\"\n}"
            },
            {
              "name": "404 — No such resource in your organization (ids from other organizations also answer ",
              "originalRequest": {
                "method": "POST",
                "header": [
                  {
                    "key": "Accept",
                    "value": "application/json"
                  },
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "raw": "{{baseUrl}}/appointments/:id/cancel",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "appointments",
                    ":id",
                    "cancel"
                  ],
                  "variable": [
                    {
                      "key": "id",
                      "value": "4b1e0d1a-3c4e-4d0a-9f2b-7e1a2b3c4d5e",
                      "description": "Resource id (UUID)."
                    }
                  ]
                },
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"reason\": \"customer_requested\"\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "status": "No such resource in your organization (i",
              "code": 404,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                },
                {
                  "key": "X-Request-Id",
                  "value": "00000000-0000-4000-8000-000000000000"
                }
              ],
              "body": "{\n  \"error\": \"not_found\",\n  \"request_id\": \"0f3b9c1e-6d2a-4b7f-8e1c-5a9d2b4c6e80\"\n}"
            },
            {
              "name": "429 — Too many requests for this key in the current minute. Wait `Retry-After` seconds",
              "originalRequest": {
                "method": "POST",
                "header": [
                  {
                    "key": "Accept",
                    "value": "application/json"
                  },
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "raw": "{{baseUrl}}/appointments/:id/cancel",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "appointments",
                    ":id",
                    "cancel"
                  ],
                  "variable": [
                    {
                      "key": "id",
                      "value": "4b1e0d1a-3c4e-4d0a-9f2b-7e1a2b3c4d5e",
                      "description": "Resource id (UUID)."
                    }
                  ]
                },
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"reason\": \"customer_requested\"\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "status": "Too many requests for this key in the cu",
              "code": 429,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                },
                {
                  "key": "X-Request-Id",
                  "value": "00000000-0000-4000-8000-000000000000"
                }
              ],
              "body": "{\n  \"error\": \"rate_limited\",\n  \"message\": \"This key is limited to 60 requests per minute. Retry in 3s.\",\n  \"retry_after_seconds\": 3,\n  \"request_id\": \"0f3b9c1e-6d2a-4b7f-8e1c-5a9d2b4c6e80\"\n}"
            },
            {
              "name": "500 — `internal_error` — something failed on Lojiq's side. The detail is in Lojiq's lo",
              "originalRequest": {
                "method": "POST",
                "header": [
                  {
                    "key": "Accept",
                    "value": "application/json"
                  },
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "raw": "{{baseUrl}}/appointments/:id/cancel",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "appointments",
                    ":id",
                    "cancel"
                  ],
                  "variable": [
                    {
                      "key": "id",
                      "value": "4b1e0d1a-3c4e-4d0a-9f2b-7e1a2b3c4d5e",
                      "description": "Resource id (UUID)."
                    }
                  ]
                },
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"reason\": \"customer_requested\"\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "status": "`internal_error` — something failed on L",
              "code": 500,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                },
                {
                  "key": "X-Request-Id",
                  "value": "00000000-0000-4000-8000-000000000000"
                }
              ],
              "body": "{\n  \"error\": \"internal_error\",\n  \"message\": \"Something went wrong on our side. Retry\",\n  \"or contact support with the request_id.\": null,\n  \"request_id\": \"0f3b9c1e-6d2a-4b7f-8e1c-5a9d2b4c6e80\"\n}"
            }
          ]
        }
      ]
    },
    {
      "name": "Deals",
      "description": "Pipeline deals attached to leads. **Not yet available** on production — see each operation.\n",
      "item": [
        {
          "name": "List deals  ·  GET /deals",
          "request": {
            "method": "GET",
            "header": [
              {
                "key": "Accept",
                "value": "application/json"
              }
            ],
            "url": {
              "raw": "{{baseUrl}}/deals?limit=&offset=",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "deals"
              ],
              "query": [
                {
                  "key": "limit",
                  "value": "50",
                  "description": "Page size. Default 50, maximum 200 (larger values are clamped to 200).",
                  "disabled": false
                },
                {
                  "key": "offset",
                  "value": "0",
                  "description": "Number of rows to skip. Default 0. Page by increasing `offset` by `limit` until `data` comes back shorter than `limit`.",
                  "disabled": false
                }
              ]
            },
            "description": "**Scope:** `deals:read`\n\n**Not yet available.** Answers `501 feature_unavailable` until the deals store is provisioned.\nIntended behaviour: most recently updated first. Scope: `deals:read`.\n"
          },
          "response": [
            {
              "name": "200 — OK (once available)",
              "originalRequest": {
                "method": "GET",
                "header": [
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "raw": "{{baseUrl}}/deals?limit=&offset=",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "deals"
                  ],
                  "query": [
                    {
                      "key": "limit",
                      "value": "50",
                      "description": "Page size. Default 50, maximum 200 (larger values are clamped to 200).",
                      "disabled": false
                    },
                    {
                      "key": "offset",
                      "value": "0",
                      "description": "Number of rows to skip. Default 0. Page by increasing `offset` by `limit` until `data` comes back shorter than `limit`.",
                      "disabled": false
                    }
                  ]
                }
              },
              "status": "OK (once available)",
              "code": 200,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                },
                {
                  "key": "X-Request-Id",
                  "value": "00000000-0000-4000-8000-000000000000"
                }
              ],
              "body": "{\n  \"data\": [\n    {\n      \"id\": \"3c2b1a0f-9e8d-4c7b-8a6f-5e4d3c2b1a0f\",\n      \"lead_id\": \"4b1e0d1a-3c4e-4d0a-9f2b-7e1a2b3c4d5e\",\n      \"status\": \"open\",\n      \"stage\": \"application\",\n      \"amount_cents\": 425000,\n      \"currency\": \"USD\",\n      \"notes\": null,\n      \"created_at\": \"2026-10-01T12:00:00Z\",\n      \"updated_at\": \"2026-10-02T17:06:15Z\"\n    }\n  ],\n  \"limit\": 50,\n  \"offset\": 0\n}"
            },
            {
              "name": "401 — No key, or a key that is unknown, revoked or expired. `error` is one of",
              "originalRequest": {
                "method": "GET",
                "header": [
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "raw": "{{baseUrl}}/deals?limit=&offset=",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "deals"
                  ],
                  "query": [
                    {
                      "key": "limit",
                      "value": "50",
                      "description": "Page size. Default 50, maximum 200 (larger values are clamped to 200).",
                      "disabled": false
                    },
                    {
                      "key": "offset",
                      "value": "0",
                      "description": "Number of rows to skip. Default 0. Page by increasing `offset` by `limit` until `data` comes back shorter than `limit`.",
                      "disabled": false
                    }
                  ]
                }
              },
              "status": "No key, or a key that is unknown, revoke",
              "code": 401,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                },
                {
                  "key": "X-Request-Id",
                  "value": "00000000-0000-4000-8000-000000000000"
                }
              ],
              "body": "{\n  \"error\": \"invalid_api_key\",\n  \"request_id\": \"0f3b9c1e-6d2a-4b7f-8e1c-5a9d2b4c6e80\"\n}"
            },
            {
              "name": "403 — The key does not carry the scope this operation needs. `required` names the miss",
              "originalRequest": {
                "method": "GET",
                "header": [
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "raw": "{{baseUrl}}/deals?limit=&offset=",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "deals"
                  ],
                  "query": [
                    {
                      "key": "limit",
                      "value": "50",
                      "description": "Page size. Default 50, maximum 200 (larger values are clamped to 200).",
                      "disabled": false
                    },
                    {
                      "key": "offset",
                      "value": "0",
                      "description": "Number of rows to skip. Default 0. Page by increasing `offset` by `limit` until `data` comes back shorter than `limit`.",
                      "disabled": false
                    }
                  ]
                }
              },
              "status": "The key does not carry the scope this op",
              "code": 403,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                },
                {
                  "key": "X-Request-Id",
                  "value": "00000000-0000-4000-8000-000000000000"
                }
              ],
              "body": "{\n  \"error\": \"insufficient_scope\",\n  \"message\": \"This key does not have the leads:write scope.\",\n  \"required\": \"leads:write\",\n  \"request_id\": \"0f3b9c1e-6d2a-4b7f-8e1c-5a9d2b4c6e80\"\n}"
            },
            {
              "name": "429 — Too many requests for this key in the current minute. Wait `Retry-After` seconds",
              "originalRequest": {
                "method": "GET",
                "header": [
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "raw": "{{baseUrl}}/deals?limit=&offset=",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "deals"
                  ],
                  "query": [
                    {
                      "key": "limit",
                      "value": "50",
                      "description": "Page size. Default 50, maximum 200 (larger values are clamped to 200).",
                      "disabled": false
                    },
                    {
                      "key": "offset",
                      "value": "0",
                      "description": "Number of rows to skip. Default 0. Page by increasing `offset` by `limit` until `data` comes back shorter than `limit`.",
                      "disabled": false
                    }
                  ]
                }
              },
              "status": "Too many requests for this key in the cu",
              "code": 429,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                },
                {
                  "key": "X-Request-Id",
                  "value": "00000000-0000-4000-8000-000000000000"
                }
              ],
              "body": "{\n  \"error\": \"rate_limited\",\n  \"message\": \"This key is limited to 60 requests per minute. Retry in 3s.\",\n  \"retry_after_seconds\": 3,\n  \"request_id\": \"0f3b9c1e-6d2a-4b7f-8e1c-5a9d2b4c6e80\"\n}"
            },
            {
              "name": "501 — `feature_unavailable` — this endpoint is not available on your account yet.",
              "originalRequest": {
                "method": "GET",
                "header": [
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "raw": "{{baseUrl}}/deals?limit=&offset=",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "deals"
                  ],
                  "query": [
                    {
                      "key": "limit",
                      "value": "50",
                      "description": "Page size. Default 50, maximum 200 (larger values are clamped to 200).",
                      "disabled": false
                    },
                    {
                      "key": "offset",
                      "value": "0",
                      "description": "Number of rows to skip. Default 0. Page by increasing `offset` by `limit` until `data` comes back shorter than `limit`.",
                      "disabled": false
                    }
                  ]
                }
              },
              "status": "`feature_unavailable` — this endpoint is",
              "code": 501,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                },
                {
                  "key": "X-Request-Id",
                  "value": "00000000-0000-4000-8000-000000000000"
                }
              ],
              "body": "{\n  \"error\": \"feature_unavailable\",\n  \"message\": \"Contacts are not available on this account. Use /leads.\",\n  \"request_id\": \"0f3b9c1e-6d2a-4b7f-8e1c-5a9d2b4c6e80\"\n}"
            }
          ]
        },
        {
          "name": "Update a deal  ·  PATCH /deals/{id}",
          "request": {
            "method": "PATCH",
            "header": [
              {
                "key": "Accept",
                "value": "application/json"
              },
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "url": {
              "raw": "{{baseUrl}}/deals/:id",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "deals",
                ":id"
              ],
              "variable": [
                {
                  "key": "id",
                  "value": "4b1e0d1a-3c4e-4d0a-9f2b-7e1a2b3c4d5e",
                  "description": "Resource id (UUID)."
                }
              ]
            },
            "description": "**Scope:** `deals:write`\n\n**Not yet available.** Answers `501 feature_unavailable` until the deals store is provisioned.\nIntended behaviour: updates `status`, `stage`, `amount_cents` and/or `notes`; emits `deal.status_changed` when status or stage changes. Scope: `deals:write`.\n",
            "body": {
              "mode": "raw",
              "raw": "{\n  \"stage\": \"underwriting\"\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            }
          },
          "response": [
            {
              "name": "200 — The updated deal (once available).",
              "originalRequest": {
                "method": "PATCH",
                "header": [
                  {
                    "key": "Accept",
                    "value": "application/json"
                  },
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "raw": "{{baseUrl}}/deals/:id",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "deals",
                    ":id"
                  ],
                  "variable": [
                    {
                      "key": "id",
                      "value": "4b1e0d1a-3c4e-4d0a-9f2b-7e1a2b3c4d5e",
                      "description": "Resource id (UUID)."
                    }
                  ]
                },
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"stage\": \"underwriting\"\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "status": "The updated deal (once available).",
              "code": 200,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                },
                {
                  "key": "X-Request-Id",
                  "value": "00000000-0000-4000-8000-000000000000"
                }
              ],
              "body": "{\n  \"id\": \"3c2b1a0f-9e8d-4c7b-8a6f-5e4d3c2b1a0f\",\n  \"lead_id\": \"4b1e0d1a-3c4e-4d0a-9f2b-7e1a2b3c4d5e\",\n  \"status\": \"open\",\n  \"stage\": \"application\",\n  \"amount_cents\": 425000,\n  \"currency\": \"USD\",\n  \"notes\": null,\n  \"created_at\": \"2026-10-01T12:00:00Z\",\n  \"updated_at\": \"2026-10-02T17:06:15Z\"\n}"
            },
            {
              "name": "401 — No key, or a key that is unknown, revoked or expired. `error` is one of",
              "originalRequest": {
                "method": "PATCH",
                "header": [
                  {
                    "key": "Accept",
                    "value": "application/json"
                  },
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "raw": "{{baseUrl}}/deals/:id",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "deals",
                    ":id"
                  ],
                  "variable": [
                    {
                      "key": "id",
                      "value": "4b1e0d1a-3c4e-4d0a-9f2b-7e1a2b3c4d5e",
                      "description": "Resource id (UUID)."
                    }
                  ]
                },
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"stage\": \"underwriting\"\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "status": "No key, or a key that is unknown, revoke",
              "code": 401,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                },
                {
                  "key": "X-Request-Id",
                  "value": "00000000-0000-4000-8000-000000000000"
                }
              ],
              "body": "{\n  \"error\": \"invalid_api_key\",\n  \"request_id\": \"0f3b9c1e-6d2a-4b7f-8e1c-5a9d2b4c6e80\"\n}"
            },
            {
              "name": "403 — The key does not carry the scope this operation needs. `required` names the miss",
              "originalRequest": {
                "method": "PATCH",
                "header": [
                  {
                    "key": "Accept",
                    "value": "application/json"
                  },
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "raw": "{{baseUrl}}/deals/:id",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "deals",
                    ":id"
                  ],
                  "variable": [
                    {
                      "key": "id",
                      "value": "4b1e0d1a-3c4e-4d0a-9f2b-7e1a2b3c4d5e",
                      "description": "Resource id (UUID)."
                    }
                  ]
                },
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"stage\": \"underwriting\"\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "status": "The key does not carry the scope this op",
              "code": 403,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                },
                {
                  "key": "X-Request-Id",
                  "value": "00000000-0000-4000-8000-000000000000"
                }
              ],
              "body": "{\n  \"error\": \"insufficient_scope\",\n  \"message\": \"This key does not have the leads:write scope.\",\n  \"required\": \"leads:write\",\n  \"request_id\": \"0f3b9c1e-6d2a-4b7f-8e1c-5a9d2b4c6e80\"\n}"
            },
            {
              "name": "429 — Too many requests for this key in the current minute. Wait `Retry-After` seconds",
              "originalRequest": {
                "method": "PATCH",
                "header": [
                  {
                    "key": "Accept",
                    "value": "application/json"
                  },
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "raw": "{{baseUrl}}/deals/:id",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "deals",
                    ":id"
                  ],
                  "variable": [
                    {
                      "key": "id",
                      "value": "4b1e0d1a-3c4e-4d0a-9f2b-7e1a2b3c4d5e",
                      "description": "Resource id (UUID)."
                    }
                  ]
                },
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"stage\": \"underwriting\"\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "status": "Too many requests for this key in the cu",
              "code": 429,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                },
                {
                  "key": "X-Request-Id",
                  "value": "00000000-0000-4000-8000-000000000000"
                }
              ],
              "body": "{\n  \"error\": \"rate_limited\",\n  \"message\": \"This key is limited to 60 requests per minute. Retry in 3s.\",\n  \"retry_after_seconds\": 3,\n  \"request_id\": \"0f3b9c1e-6d2a-4b7f-8e1c-5a9d2b4c6e80\"\n}"
            },
            {
              "name": "501 — `feature_unavailable` — this endpoint is not available on your account yet.",
              "originalRequest": {
                "method": "PATCH",
                "header": [
                  {
                    "key": "Accept",
                    "value": "application/json"
                  },
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "raw": "{{baseUrl}}/deals/:id",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "deals",
                    ":id"
                  ],
                  "variable": [
                    {
                      "key": "id",
                      "value": "4b1e0d1a-3c4e-4d0a-9f2b-7e1a2b3c4d5e",
                      "description": "Resource id (UUID)."
                    }
                  ]
                },
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"stage\": \"underwriting\"\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "status": "`feature_unavailable` — this endpoint is",
              "code": 501,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                },
                {
                  "key": "X-Request-Id",
                  "value": "00000000-0000-4000-8000-000000000000"
                }
              ],
              "body": "{\n  \"error\": \"feature_unavailable\",\n  \"message\": \"Contacts are not available on this account. Use /leads.\",\n  \"request_id\": \"0f3b9c1e-6d2a-4b7f-8e1c-5a9d2b4c6e80\"\n}"
            }
          ]
        }
      ]
    },
    {
      "name": "Webhooks",
      "description": "Subscribe an HTTPS endpoint to events. Every delivery is signed with HMAC-SHA256 (`X-Lojiq-Signature-256`),\nretried up to 8 times with exponential backoff, and carries a stable event id for idempotency. See the Webhooks guide.\n",
      "item": [
        {
          "name": "List webhook subscriptions  ·  GET /webhooks",
          "request": {
            "method": "GET",
            "header": [
              {
                "key": "Accept",
                "value": "application/json"
              }
            ],
            "url": {
              "raw": "{{baseUrl}}/webhooks",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "webhooks"
              ]
            },
            "description": "**Scope:** `webhooks:manage`\n\nEvery subscription in your organization with its delivery health. Secrets are never returned. Scope: `webhooks:manage`."
          },
          "response": [
            {
              "name": "200 — OK",
              "originalRequest": {
                "method": "GET",
                "header": [
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "raw": "{{baseUrl}}/webhooks",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "webhooks"
                  ]
                }
              },
              "status": "OK",
              "code": 200,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                },
                {
                  "key": "X-Request-Id",
                  "value": "00000000-0000-4000-8000-000000000000"
                }
              ],
              "body": "{\n  \"subscriptions\": [\n    {\n      \"id\": \"6a5b4c3d-2e1f-4a0b-9c8d-7e6f5a4b3c2d\",\n      \"name\": \"crm-sync\",\n      \"target_url\": \"https://example.com/lojiq/webhook\",\n      \"event_types\": [\n        \"lead.created\",\n        \"lead.disposition_changed\",\n        \"call.completed\"\n      ],\n      \"enabled\": true,\n      \"last_success_at\": \"2026-10-02T17:06:15Z\",\n      \"last_failure_at\": null,\n      \"consecutive_failures\": 0,\n      \"disabled_reason\": null,\n      \"created_at\": \"2026-10-02T17:03:11Z\",\n      \"updated_at\": \"2026-10-02T17:03:11Z\"\n    }\n  ]\n}"
            },
            {
              "name": "401 — No key, or a key that is unknown, revoked or expired. `error` is one of",
              "originalRequest": {
                "method": "GET",
                "header": [
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "raw": "{{baseUrl}}/webhooks",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "webhooks"
                  ]
                }
              },
              "status": "No key, or a key that is unknown, revoke",
              "code": 401,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                },
                {
                  "key": "X-Request-Id",
                  "value": "00000000-0000-4000-8000-000000000000"
                }
              ],
              "body": "{\n  \"error\": \"invalid_api_key\",\n  \"request_id\": \"0f3b9c1e-6d2a-4b7f-8e1c-5a9d2b4c6e80\"\n}"
            },
            {
              "name": "403 — The key does not carry the scope this operation needs. `required` names the miss",
              "originalRequest": {
                "method": "GET",
                "header": [
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "raw": "{{baseUrl}}/webhooks",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "webhooks"
                  ]
                }
              },
              "status": "The key does not carry the scope this op",
              "code": 403,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                },
                {
                  "key": "X-Request-Id",
                  "value": "00000000-0000-4000-8000-000000000000"
                }
              ],
              "body": "{\n  \"error\": \"insufficient_scope\",\n  \"message\": \"This key does not have the leads:write scope.\",\n  \"required\": \"leads:write\",\n  \"request_id\": \"0f3b9c1e-6d2a-4b7f-8e1c-5a9d2b4c6e80\"\n}"
            },
            {
              "name": "429 — Too many requests for this key in the current minute. Wait `Retry-After` seconds",
              "originalRequest": {
                "method": "GET",
                "header": [
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "raw": "{{baseUrl}}/webhooks",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "webhooks"
                  ]
                }
              },
              "status": "Too many requests for this key in the cu",
              "code": 429,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                },
                {
                  "key": "X-Request-Id",
                  "value": "00000000-0000-4000-8000-000000000000"
                }
              ],
              "body": "{\n  \"error\": \"rate_limited\",\n  \"message\": \"This key is limited to 60 requests per minute. Retry in 3s.\",\n  \"retry_after_seconds\": 3,\n  \"request_id\": \"0f3b9c1e-6d2a-4b7f-8e1c-5a9d2b4c6e80\"\n}"
            },
            {
              "name": "500 — `internal_error` — something failed on Lojiq's side. The detail is in Lojiq's lo",
              "originalRequest": {
                "method": "GET",
                "header": [
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "raw": "{{baseUrl}}/webhooks",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "webhooks"
                  ]
                }
              },
              "status": "`internal_error` — something failed on L",
              "code": 500,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                },
                {
                  "key": "X-Request-Id",
                  "value": "00000000-0000-4000-8000-000000000000"
                }
              ],
              "body": "{\n  \"error\": \"internal_error\",\n  \"message\": \"Something went wrong on our side. Retry\",\n  \"or contact support with the request_id.\": null,\n  \"request_id\": \"0f3b9c1e-6d2a-4b7f-8e1c-5a9d2b4c6e80\"\n}"
            }
          ]
        },
        {
          "name": "Create a webhook subscription  ·  POST /webhooks",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Accept",
                "value": "application/json"
              },
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "url": {
              "raw": "{{baseUrl}}/webhooks",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "webhooks"
              ]
            },
            "description": "**Scope:** `webhooks:manage`\n\nSubscribes an HTTPS endpoint to one or more event types. The response carries the signing `secret`\n**once** — store it. Scope: `webhooks:manage`.\n\nDelivery: `POST` with the JSON event body, headers `X-Lojiq-Signature-256` (`t=<unix>,v1=<hex hmac>`),\n`X-Lojiq-Event`, `X-Lojiq-Event-Id`, `X-Lojiq-Delivery-Attempt`, `User-Agent: lojiq-webhooks/1.0`.\nYour endpoint has 10 seconds to answer `2xx`. Redirects are not followed and count as failures.\nA failed delivery is retried after 30 s, 1 m, 5 m, 30 m, 2 h, 6 h and 12 h (8 attempts in all, about\n20 hours), then marked dead-letter; after 25 consecutive failures the subscription is disabled with a\n`disabled_reason`.\n",
            "body": {
              "mode": "raw",
              "raw": "{\n  \"name\": \"crm-sync\",\n  \"target_url\": \"https://example.com/lojiq/webhook\",\n  \"event_types\": [\n    \"lead.created\",\n    \"lead.disposition_changed\",\n    \"call.completed\"\n  ]\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            }
          },
          "response": [
            {
              "name": "201 — Created — includes the one-time `secret`.",
              "originalRequest": {
                "method": "POST",
                "header": [
                  {
                    "key": "Accept",
                    "value": "application/json"
                  },
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "raw": "{{baseUrl}}/webhooks",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "webhooks"
                  ]
                },
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"name\": \"crm-sync\",\n  \"target_url\": \"https://example.com/lojiq/webhook\",\n  \"event_types\": [\n    \"lead.created\",\n    \"lead.disposition_changed\",\n    \"call.completed\"\n  ]\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "status": "Created — includes the one-time `secret`",
              "code": 201,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                },
                {
                  "key": "X-Request-Id",
                  "value": "00000000-0000-4000-8000-000000000000"
                }
              ],
              "body": "{\n  \"id\": \"6a5b4c3d-2e1f-4a0b-9c8d-7e6f5a4b3c2d\",\n  \"name\": \"crm-sync\",\n  \"target_url\": \"https://example.com/lojiq/webhook\",\n  \"event_types\": [\n    \"lead.created\",\n    \"lead.disposition_changed\",\n    \"call.completed\"\n  ],\n  \"enabled\": true,\n  \"created_at\": \"2026-10-02T17:03:11Z\",\n  \"secret\": \"whsec_9f2c1a7b3e5d4c6f8a0b1c2d3e4f5a6b7c8d9e0f1a2b3c4d5e6f7a8b9c0d1e2f\"\n}"
            },
            {
              "name": "400 — `event_types_required`, `unknown_event_type:<type>`, `unknown_field:<name>` (onl",
              "originalRequest": {
                "method": "POST",
                "header": [
                  {
                    "key": "Accept",
                    "value": "application/json"
                  },
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "raw": "{{baseUrl}}/webhooks",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "webhooks"
                  ]
                },
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"name\": \"crm-sync\",\n  \"target_url\": \"https://example.com/lojiq/webhook\",\n  \"event_types\": [\n    \"lead.created\",\n    \"lead.disposition_changed\",\n    \"call.completed\"\n  ]\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "status": "`event_types_required`, `unknown_event_t",
              "code": 400,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                },
                {
                  "key": "X-Request-Id",
                  "value": "00000000-0000-4000-8000-000000000000"
                }
              ],
              "body": "{\n  \"error\": \"https_required_in_production\"\n}"
            },
            {
              "name": "401 — No key, or a key that is unknown, revoked or expired. `error` is one of",
              "originalRequest": {
                "method": "POST",
                "header": [
                  {
                    "key": "Accept",
                    "value": "application/json"
                  },
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "raw": "{{baseUrl}}/webhooks",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "webhooks"
                  ]
                },
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"name\": \"crm-sync\",\n  \"target_url\": \"https://example.com/lojiq/webhook\",\n  \"event_types\": [\n    \"lead.created\",\n    \"lead.disposition_changed\",\n    \"call.completed\"\n  ]\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "status": "No key, or a key that is unknown, revoke",
              "code": 401,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                },
                {
                  "key": "X-Request-Id",
                  "value": "00000000-0000-4000-8000-000000000000"
                }
              ],
              "body": "{\n  \"error\": \"invalid_api_key\",\n  \"request_id\": \"0f3b9c1e-6d2a-4b7f-8e1c-5a9d2b4c6e80\"\n}"
            },
            {
              "name": "403 — The key does not carry the scope this operation needs. `required` names the miss",
              "originalRequest": {
                "method": "POST",
                "header": [
                  {
                    "key": "Accept",
                    "value": "application/json"
                  },
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "raw": "{{baseUrl}}/webhooks",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "webhooks"
                  ]
                },
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"name\": \"crm-sync\",\n  \"target_url\": \"https://example.com/lojiq/webhook\",\n  \"event_types\": [\n    \"lead.created\",\n    \"lead.disposition_changed\",\n    \"call.completed\"\n  ]\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "status": "The key does not carry the scope this op",
              "code": 403,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                },
                {
                  "key": "X-Request-Id",
                  "value": "00000000-0000-4000-8000-000000000000"
                }
              ],
              "body": "{\n  \"error\": \"insufficient_scope\",\n  \"message\": \"This key does not have the leads:write scope.\",\n  \"required\": \"leads:write\",\n  \"request_id\": \"0f3b9c1e-6d2a-4b7f-8e1c-5a9d2b4c6e80\"\n}"
            },
            {
              "name": "429 — Too many requests for this key in the current minute. Wait `Retry-After` seconds",
              "originalRequest": {
                "method": "POST",
                "header": [
                  {
                    "key": "Accept",
                    "value": "application/json"
                  },
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "raw": "{{baseUrl}}/webhooks",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "webhooks"
                  ]
                },
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"name\": \"crm-sync\",\n  \"target_url\": \"https://example.com/lojiq/webhook\",\n  \"event_types\": [\n    \"lead.created\",\n    \"lead.disposition_changed\",\n    \"call.completed\"\n  ]\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "status": "Too many requests for this key in the cu",
              "code": 429,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                },
                {
                  "key": "X-Request-Id",
                  "value": "00000000-0000-4000-8000-000000000000"
                }
              ],
              "body": "{\n  \"error\": \"rate_limited\",\n  \"message\": \"This key is limited to 60 requests per minute. Retry in 3s.\",\n  \"retry_after_seconds\": 3,\n  \"request_id\": \"0f3b9c1e-6d2a-4b7f-8e1c-5a9d2b4c6e80\"\n}"
            }
          ]
        },
        {
          "name": "Update a webhook subscription  ·  PATCH /webhooks/{id}",
          "request": {
            "method": "PATCH",
            "header": [
              {
                "key": "Accept",
                "value": "application/json"
              },
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "url": {
              "raw": "{{baseUrl}}/webhooks/:id",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "webhooks",
                ":id"
              ],
              "variable": [
                {
                  "key": "id",
                  "value": "4b1e0d1a-3c4e-4d0a-9f2b-7e1a2b3c4d5e",
                  "description": "Resource id (UUID)."
                }
              ]
            },
            "description": "**Scope:** `webhooks:manage`\n\nChange the name, target URL or event types, or enable/disable it. Re-enabling clears the failure counter. Scope: `webhooks:manage`.",
            "body": {
              "mode": "raw",
              "raw": "{\n  \"enabled\": true\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            }
          },
          "response": [
            {
              "name": "200 — Updated",
              "originalRequest": {
                "method": "PATCH",
                "header": [
                  {
                    "key": "Accept",
                    "value": "application/json"
                  },
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "raw": "{{baseUrl}}/webhooks/:id",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "webhooks",
                    ":id"
                  ],
                  "variable": [
                    {
                      "key": "id",
                      "value": "4b1e0d1a-3c4e-4d0a-9f2b-7e1a2b3c4d5e",
                      "description": "Resource id (UUID)."
                    }
                  ]
                },
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"enabled\": true\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "status": "Updated",
              "code": 200,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                },
                {
                  "key": "X-Request-Id",
                  "value": "00000000-0000-4000-8000-000000000000"
                }
              ],
              "body": "{\n  \"id\": \"6a5b4c3d-2e1f-4a0b-9c8d-7e6f5a4b3c2d\",\n  \"name\": \"crm-sync\",\n  \"target_url\": \"https://example.com/lojiq/webhook\",\n  \"event_types\": [\n    \"lead.created\",\n    \"lead.disposition_changed\",\n    \"call.completed\"\n  ],\n  \"enabled\": true,\n  \"updated_at\": \"2026-10-02T18:00:00Z\"\n}"
            },
            {
              "name": "400 — Same validation codes as create, plus `unknown_field:<name>` (only `name`, `targ",
              "originalRequest": {
                "method": "PATCH",
                "header": [
                  {
                    "key": "Accept",
                    "value": "application/json"
                  },
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "raw": "{{baseUrl}}/webhooks/:id",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "webhooks",
                    ":id"
                  ],
                  "variable": [
                    {
                      "key": "id",
                      "value": "4b1e0d1a-3c4e-4d0a-9f2b-7e1a2b3c4d5e",
                      "description": "Resource id (UUID)."
                    }
                  ]
                },
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"enabled\": true\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "status": "Same validation codes as create, plus `u",
              "code": 400,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                },
                {
                  "key": "X-Request-Id",
                  "value": "00000000-0000-4000-8000-000000000000"
                }
              ],
              "body": "{\n  \"error\": \"invalid_phone_number\",\n  \"message\": \"phone_number is required: 10-15 digits, E.164 preferred (+15551234567).\",\n  \"request_id\": \"0f3b9c1e-6d2a-4b7f-8e1c-5a9d2b4c6e80\"\n}"
            },
            {
              "name": "401 — No key, or a key that is unknown, revoked or expired. `error` is one of",
              "originalRequest": {
                "method": "PATCH",
                "header": [
                  {
                    "key": "Accept",
                    "value": "application/json"
                  },
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "raw": "{{baseUrl}}/webhooks/:id",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "webhooks",
                    ":id"
                  ],
                  "variable": [
                    {
                      "key": "id",
                      "value": "4b1e0d1a-3c4e-4d0a-9f2b-7e1a2b3c4d5e",
                      "description": "Resource id (UUID)."
                    }
                  ]
                },
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"enabled\": true\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "status": "No key, or a key that is unknown, revoke",
              "code": 401,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                },
                {
                  "key": "X-Request-Id",
                  "value": "00000000-0000-4000-8000-000000000000"
                }
              ],
              "body": "{\n  \"error\": \"invalid_api_key\",\n  \"request_id\": \"0f3b9c1e-6d2a-4b7f-8e1c-5a9d2b4c6e80\"\n}"
            },
            {
              "name": "403 — The key does not carry the scope this operation needs. `required` names the miss",
              "originalRequest": {
                "method": "PATCH",
                "header": [
                  {
                    "key": "Accept",
                    "value": "application/json"
                  },
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "raw": "{{baseUrl}}/webhooks/:id",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "webhooks",
                    ":id"
                  ],
                  "variable": [
                    {
                      "key": "id",
                      "value": "4b1e0d1a-3c4e-4d0a-9f2b-7e1a2b3c4d5e",
                      "description": "Resource id (UUID)."
                    }
                  ]
                },
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"enabled\": true\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "status": "The key does not carry the scope this op",
              "code": 403,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                },
                {
                  "key": "X-Request-Id",
                  "value": "00000000-0000-4000-8000-000000000000"
                }
              ],
              "body": "{\n  \"error\": \"insufficient_scope\",\n  \"message\": \"This key does not have the leads:write scope.\",\n  \"required\": \"leads:write\",\n  \"request_id\": \"0f3b9c1e-6d2a-4b7f-8e1c-5a9d2b4c6e80\"\n}"
            },
            {
              "name": "404 — No such resource in your organization (ids from other organizations also answer ",
              "originalRequest": {
                "method": "PATCH",
                "header": [
                  {
                    "key": "Accept",
                    "value": "application/json"
                  },
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "raw": "{{baseUrl}}/webhooks/:id",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "webhooks",
                    ":id"
                  ],
                  "variable": [
                    {
                      "key": "id",
                      "value": "4b1e0d1a-3c4e-4d0a-9f2b-7e1a2b3c4d5e",
                      "description": "Resource id (UUID)."
                    }
                  ]
                },
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"enabled\": true\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "status": "No such resource in your organization (i",
              "code": 404,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                },
                {
                  "key": "X-Request-Id",
                  "value": "00000000-0000-4000-8000-000000000000"
                }
              ],
              "body": "{\n  \"error\": \"not_found\",\n  \"request_id\": \"0f3b9c1e-6d2a-4b7f-8e1c-5a9d2b4c6e80\"\n}"
            },
            {
              "name": "429 — Too many requests for this key in the current minute. Wait `Retry-After` seconds",
              "originalRequest": {
                "method": "PATCH",
                "header": [
                  {
                    "key": "Accept",
                    "value": "application/json"
                  },
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "raw": "{{baseUrl}}/webhooks/:id",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "webhooks",
                    ":id"
                  ],
                  "variable": [
                    {
                      "key": "id",
                      "value": "4b1e0d1a-3c4e-4d0a-9f2b-7e1a2b3c4d5e",
                      "description": "Resource id (UUID)."
                    }
                  ]
                },
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"enabled\": true\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "status": "Too many requests for this key in the cu",
              "code": 429,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                },
                {
                  "key": "X-Request-Id",
                  "value": "00000000-0000-4000-8000-000000000000"
                }
              ],
              "body": "{\n  \"error\": \"rate_limited\",\n  \"message\": \"This key is limited to 60 requests per minute. Retry in 3s.\",\n  \"retry_after_seconds\": 3,\n  \"request_id\": \"0f3b9c1e-6d2a-4b7f-8e1c-5a9d2b4c6e80\"\n}"
            }
          ]
        },
        {
          "name": "Delete a webhook subscription  ·  DELETE /webhooks/{id}",
          "request": {
            "method": "DELETE",
            "header": [
              {
                "key": "Accept",
                "value": "application/json"
              }
            ],
            "url": {
              "raw": "{{baseUrl}}/webhooks/:id",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "webhooks",
                ":id"
              ],
              "variable": [
                {
                  "key": "id",
                  "value": "4b1e0d1a-3c4e-4d0a-9f2b-7e1a2b3c4d5e",
                  "description": "Resource id (UUID)."
                }
              ]
            },
            "description": "**Scope:** `webhooks:manage`\n\nStops all deliveries, including pending retries. Scope: `webhooks:manage`."
          },
          "response": [
            {
              "name": "200 — Deleted (also `200` when the id did not exist).",
              "originalRequest": {
                "method": "DELETE",
                "header": [
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "raw": "{{baseUrl}}/webhooks/:id",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "webhooks",
                    ":id"
                  ],
                  "variable": [
                    {
                      "key": "id",
                      "value": "4b1e0d1a-3c4e-4d0a-9f2b-7e1a2b3c4d5e",
                      "description": "Resource id (UUID)."
                    }
                  ]
                }
              },
              "status": "Deleted (also `200` when the id did not ",
              "code": 200,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                },
                {
                  "key": "X-Request-Id",
                  "value": "00000000-0000-4000-8000-000000000000"
                }
              ],
              "body": "{\n  \"ok\": true\n}"
            },
            {
              "name": "400 — Storage error.",
              "originalRequest": {
                "method": "DELETE",
                "header": [
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "raw": "{{baseUrl}}/webhooks/:id",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "webhooks",
                    ":id"
                  ],
                  "variable": [
                    {
                      "key": "id",
                      "value": "4b1e0d1a-3c4e-4d0a-9f2b-7e1a2b3c4d5e",
                      "description": "Resource id (UUID)."
                    }
                  ]
                }
              },
              "status": "Storage error.",
              "code": 400,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                },
                {
                  "key": "X-Request-Id",
                  "value": "00000000-0000-4000-8000-000000000000"
                }
              ],
              "body": "{\n  \"error\": \"invalid_phone_number\",\n  \"message\": \"phone_number is required: 10-15 digits, E.164 preferred (+15551234567).\",\n  \"request_id\": \"0f3b9c1e-6d2a-4b7f-8e1c-5a9d2b4c6e80\"\n}"
            },
            {
              "name": "401 — No key, or a key that is unknown, revoked or expired. `error` is one of",
              "originalRequest": {
                "method": "DELETE",
                "header": [
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "raw": "{{baseUrl}}/webhooks/:id",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "webhooks",
                    ":id"
                  ],
                  "variable": [
                    {
                      "key": "id",
                      "value": "4b1e0d1a-3c4e-4d0a-9f2b-7e1a2b3c4d5e",
                      "description": "Resource id (UUID)."
                    }
                  ]
                }
              },
              "status": "No key, or a key that is unknown, revoke",
              "code": 401,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                },
                {
                  "key": "X-Request-Id",
                  "value": "00000000-0000-4000-8000-000000000000"
                }
              ],
              "body": "{\n  \"error\": \"invalid_api_key\",\n  \"request_id\": \"0f3b9c1e-6d2a-4b7f-8e1c-5a9d2b4c6e80\"\n}"
            },
            {
              "name": "403 — The key does not carry the scope this operation needs. `required` names the miss",
              "originalRequest": {
                "method": "DELETE",
                "header": [
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "raw": "{{baseUrl}}/webhooks/:id",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "webhooks",
                    ":id"
                  ],
                  "variable": [
                    {
                      "key": "id",
                      "value": "4b1e0d1a-3c4e-4d0a-9f2b-7e1a2b3c4d5e",
                      "description": "Resource id (UUID)."
                    }
                  ]
                }
              },
              "status": "The key does not carry the scope this op",
              "code": 403,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                },
                {
                  "key": "X-Request-Id",
                  "value": "00000000-0000-4000-8000-000000000000"
                }
              ],
              "body": "{\n  \"error\": \"insufficient_scope\",\n  \"message\": \"This key does not have the leads:write scope.\",\n  \"required\": \"leads:write\",\n  \"request_id\": \"0f3b9c1e-6d2a-4b7f-8e1c-5a9d2b4c6e80\"\n}"
            },
            {
              "name": "429 — Too many requests for this key in the current minute. Wait `Retry-After` seconds",
              "originalRequest": {
                "method": "DELETE",
                "header": [
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "raw": "{{baseUrl}}/webhooks/:id",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "webhooks",
                    ":id"
                  ],
                  "variable": [
                    {
                      "key": "id",
                      "value": "4b1e0d1a-3c4e-4d0a-9f2b-7e1a2b3c4d5e",
                      "description": "Resource id (UUID)."
                    }
                  ]
                }
              },
              "status": "Too many requests for this key in the cu",
              "code": 429,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                },
                {
                  "key": "X-Request-Id",
                  "value": "00000000-0000-4000-8000-000000000000"
                }
              ],
              "body": "{\n  \"error\": \"rate_limited\",\n  \"message\": \"This key is limited to 60 requests per minute. Retry in 3s.\",\n  \"retry_after_seconds\": 3,\n  \"request_id\": \"0f3b9c1e-6d2a-4b7f-8e1c-5a9d2b4c6e80\"\n}"
            }
          ]
        }
      ]
    },
    {
      "name": "Reference files",
      "description": "Unauthenticated files the API serves about itself — the OpenAPI spec, the getting-started guide and the browser voice SDK.",
      "item": [
        {
          "name": "OpenAPI spec (YAML)  ·  GET /openapi.yaml",
          "request": {
            "method": "GET",
            "header": [
              {
                "key": "Accept",
                "value": "application/json"
              }
            ],
            "url": {
              "raw": "{{baseUrl}}/openapi.yaml",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "openapi.yaml"
              ]
            },
            "description": "**Scope:** `none`\n\nThe OpenAPI 3.0 document served by the API itself. No authentication.",
            "auth": {
              "type": "noauth"
            }
          },
          "response": [
            {
              "name": "200 — `application/yaml`",
              "originalRequest": {
                "method": "GET",
                "header": [
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "raw": "{{baseUrl}}/openapi.yaml",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "openapi.yaml"
                  ]
                }
              },
              "status": "`application/yaml`",
              "code": 200,
              "_postman_previewlanguage": "text",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/yaml"
                },
                {
                  "key": "X-Request-Id",
                  "value": "00000000-0000-4000-8000-000000000000"
                }
              ],
              "body": "string"
            },
            {
              "name": "500 — `spec_unavailable`.",
              "originalRequest": {
                "method": "GET",
                "header": [
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "raw": "{{baseUrl}}/openapi.yaml",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "openapi.yaml"
                  ]
                }
              },
              "status": "`spec_unavailable`.",
              "code": 500,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                },
                {
                  "key": "X-Request-Id",
                  "value": "00000000-0000-4000-8000-000000000000"
                }
              ],
              "body": "{\n  \"error\": \"invalid_phone_number\",\n  \"message\": \"phone_number is required: 10-15 digits, E.164 preferred (+15551234567).\",\n  \"request_id\": \"0f3b9c1e-6d2a-4b7f-8e1c-5a9d2b4c6e80\"\n}"
            }
          ]
        },
        {
          "name": "Getting-started guide (Markdown)  ·  GET /getting-started.md",
          "request": {
            "method": "GET",
            "header": [
              {
                "key": "Accept",
                "value": "application/json"
              }
            ],
            "url": {
              "raw": "{{baseUrl}}/getting-started.md",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "getting-started.md"
              ]
            },
            "description": "**Scope:** `none`\n\nThe quickstart as Markdown. No authentication.",
            "auth": {
              "type": "noauth"
            }
          },
          "response": [
            {
              "name": "200 — `text/markdown; charset=utf-8`",
              "originalRequest": {
                "method": "GET",
                "header": [
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "raw": "{{baseUrl}}/getting-started.md",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "getting-started.md"
                  ]
                }
              },
              "status": "`text/markdown; charset=utf-8`",
              "code": 200,
              "_postman_previewlanguage": "text",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "text/markdown"
                },
                {
                  "key": "X-Request-Id",
                  "value": "00000000-0000-4000-8000-000000000000"
                }
              ],
              "body": "string"
            },
            {
              "name": "500 — `guide_unavailable`.",
              "originalRequest": {
                "method": "GET",
                "header": [
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "raw": "{{baseUrl}}/getting-started.md",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "getting-started.md"
                  ]
                }
              },
              "status": "`guide_unavailable`.",
              "code": 500,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                },
                {
                  "key": "X-Request-Id",
                  "value": "00000000-0000-4000-8000-000000000000"
                }
              ],
              "body": "{\n  \"error\": \"invalid_phone_number\",\n  \"message\": \"phone_number is required: 10-15 digits, E.164 preferred (+15551234567).\",\n  \"request_id\": \"0f3b9c1e-6d2a-4b7f-8e1c-5a9d2b4c6e80\"\n}"
            }
          ]
        },
        {
          "name": "Browser voice SDK (ES module)  ·  GET /sdk/voice.js",
          "request": {
            "method": "GET",
            "header": [
              {
                "key": "Accept",
                "value": "application/json"
              }
            ],
            "url": {
              "raw": "{{baseUrl}}/sdk/voice.js",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "sdk",
                "voice.js"
              ]
            },
            "description": "**Scope:** `none`\n\nThe Lojiq Voice SDK for joining browser calls: `import { join } from 'https://api.lojiq.ai/v1/sdk/voice.js'`.\nAlways load it from this URL — it seals the `join_url` transport behind a stable facade that will keep\nworking as Lojiq's voice infrastructure changes. Served with `Access-Control-Allow-Origin: *` and cached\nfor 5 minutes. No authentication.\n",
            "auth": {
              "type": "noauth"
            }
          },
          "response": [
            {
              "name": "200 — `application/javascript; charset=utf-8`",
              "originalRequest": {
                "method": "GET",
                "header": [
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "raw": "{{baseUrl}}/sdk/voice.js",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "sdk",
                    "voice.js"
                  ]
                }
              },
              "status": "`application/javascript; charset=utf-8`",
              "code": 200,
              "_postman_previewlanguage": "text",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/javascript"
                },
                {
                  "key": "X-Request-Id",
                  "value": "00000000-0000-4000-8000-000000000000"
                }
              ],
              "body": "string"
            },
            {
              "name": "500 — `sdk_unavailable`.",
              "originalRequest": {
                "method": "GET",
                "header": [
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "raw": "{{baseUrl}}/sdk/voice.js",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "sdk",
                    "voice.js"
                  ]
                }
              },
              "status": "`sdk_unavailable`.",
              "code": 500,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                },
                {
                  "key": "X-Request-Id",
                  "value": "00000000-0000-4000-8000-000000000000"
                }
              ],
              "body": "{\n  \"error\": \"invalid_phone_number\",\n  \"message\": \"phone_number is required: 10-15 digits, E.164 preferred (+15551234567).\",\n  \"request_id\": \"0f3b9c1e-6d2a-4b7f-8e1c-5a9d2b4c6e80\"\n}"
            }
          ]
        },
        {
          "name": "Built-in reference page  ·  GET /docs",
          "request": {
            "method": "GET",
            "header": [
              {
                "key": "Accept",
                "value": "application/json"
              }
            ],
            "url": {
              "raw": "{{baseUrl}}/docs",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "docs"
              ]
            },
            "description": "**Scope:** `none`\n\nA minimal Redoc page rendering `/openapi.yaml`. The full documentation lives at https://docs.lojiq.ai. No authentication.",
            "auth": {
              "type": "noauth"
            }
          },
          "response": [
            {
              "name": "200 — `text/html`",
              "originalRequest": {
                "method": "GET",
                "header": [
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "raw": "{{baseUrl}}/docs",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "docs"
                  ]
                }
              },
              "status": "`text/html`",
              "code": 200,
              "_postman_previewlanguage": "text",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "text/html"
                },
                {
                  "key": "X-Request-Id",
                  "value": "00000000-0000-4000-8000-000000000000"
                }
              ],
              "body": "string"
            }
          ]
        }
      ]
    }
  ]
}
