{
  "info": {
    "_postman_id": "0ec9a623-be17-5c48-a3e9-28a27e935434",
    "name": "Motorical Public API",
    "description": "Transactional email HTTP API and analytics for Motorical Sending SMTP — same job class as SendGrid/Postmark-style send APIs. One Motor Block per project: an isolated sending stream with its own domain, auth, keys, SMTP credentials, rates, logs, webhooks, and automation. Developer sandbox: unpaid agent onboarding uses a Motorical-owned `.sandbox` domain (instant, no DNS) or a sandbox Motor Block on your own fully verified domain (on a Free account, created automatically once DKIM and SPF pass when automatic provisioning is enabled; otherwise call the provision route), with outbound locked to an allowlist until convert + Motorical Plan. Onboarding auth: register → verify-code (returns a single-use setupToken) → set-password {email, password, setupToken} → dashboard JWT (~15m) + refreshToken (7d). Agents store refreshToken and POST /api/auth/refresh with JSON body (cookies optional). After domain ownership verify, call POST /api/public/v1/domains/{id}/check-dns (or re-call verify) to flip dkim_configured/spf_configured before /v1/send. Domains are account-wide, not Motor-Block-scoped (a Motor Block is created from a verified domain, not the reverse) — GET/POST /api/public/v1/domains* need no motorBlockId. Public API covers email sending, analytics, logs, configuration, domain management, domain health, webhooks, and exports. SMTP submission is an out-of-band protocol on mail.motorical.com:2587 (STARTTLS) or :2465 (implicit TLS) using password, OAuth 2.0 access token as SMTP password (or XOAUTH2), or mTLS + password — see https://docs.motorical.com/smtp-integration/authentication-methods. Do not use OAuth access tokens or Bearer tokens on POST /v1/send (Motor Block ApiKey mk_live_ only).\n\nGenerated from https://docs.motorical.com/openapi.json — do not hand-edit; regenerate via `npm run snapshot:api-docs`.\n\nAuth tips:\n- `mkApiKey` (`mk_live_...`) → POST /v1/send\n- `akApiKey` (`ak_live_...`) → mint `bearerToken` via /api/public/token/account-key\n- `bearerToken` → /api/public/v1/* and Communications (plus X-Tenant-Id)\n- OAuth SMTP tokens are out-of-band; see https://docs.motorical.com/smtp-integration/authentication-methods\n\nOpenAPI version: 1.4.1",
    "schema": "https://schema.getpostman.com/json/collection/v2.1.0/collection.json"
  },
  "variable": [
    {
      "key": "apiBaseUrl",
      "value": "https://api.motorical.com"
    },
    {
      "key": "dashboardBaseUrl",
      "value": "https://motorical.com"
    },
    {
      "key": "mkApiKey",
      "value": "mk_live_YOUR_PREFIX_YOUR_SECRET"
    },
    {
      "key": "akApiKey",
      "value": "ak_live_YOUR_PREFIX_YOUR_SECRET"
    },
    {
      "key": "bearerToken",
      "value": ""
    },
    {
      "key": "motorBlockId",
      "value": ""
    },
    {
      "key": "tenantId",
      "value": ""
    },
    {
      "key": "messageId",
      "value": ""
    },
    {
      "key": "webhookId",
      "value": ""
    },
    {
      "key": "jobId",
      "value": ""
    },
    {
      "key": "smtpMessageId",
      "value": ""
    },
    {
      "key": "oauthClientId",
      "value": ""
    },
    {
      "key": "oauthClientSecret",
      "value": ""
    },
    {
      "key": "oauthAuthorizationCode",
      "value": ""
    }
  ],
  "item": [
    {
      "name": "00 — Quick start",
      "description": "Typical agent/developer path: mint public token, dry-run send, inspect message events.",
      "item": [
        {
          "name": "Mint a Public Analytics API token with an Account API Key",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "url": {
              "raw": "{{apiBaseUrl}}/api/public/token/account-key",
              "host": [
                "{{apiBaseUrl}}"
              ],
              "path": [
                "api",
                "public",
                "token",
                "account-key"
              ]
            },
            "description": "Use an Account API Key (`ak_live_...`) to create a short-lived bearer token for `/api/public/v1` endpoints. The key can be supplied as `Authorization: ApiKey ak_live_...` or `X-Api-Key: ak_live_...`.\n\nOpenAPI: `POST /api/public/token/account-key`\nDocs: https://docs.motorical.com/llms.txt",
            "auth": {
              "type": "apikey",
              "apikey": [
                {
                  "key": "key",
                  "value": "Authorization",
                  "type": "string"
                },
                {
                  "key": "value",
                  "value": "ApiKey {{akApiKey}}",
                  "type": "string"
                },
                {
                  "key": "in",
                  "value": "header",
                  "type": "string"
                }
              ]
            },
            "body": {
              "mode": "raw",
              "raw": "{\n  \"motorBlockId\": \"{{motorBlockId}}\",\n  \"scopes\": [\n    \"logs.read\",\n    \"analytics.read\",\n    \"webhooks.manage\"\n  ],\n  \"ttlSeconds\": 900\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            }
          },
          "response": []
        },
        {
          "name": "Send or validate an email",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "url": {
              "raw": "{{apiBaseUrl}}/v1/send",
              "host": [
                "{{apiBaseUrl}}"
              ],
              "path": [
                "v1",
                "send"
              ]
            },
            "description": "Queue an email for immediate delivery, or validate the payload only when `dryRun: true`. `dryRun` defaults to false on this route: the email is sent unless you pass `dryRun: true`, so always set it explicitly. Authenticated via Motor Block API key (`Authorization: ApiKey mk_live_...` or `X-Api-Key: mk_live_...`).\n\n**Dry run:** `dryRun: true` performs the same authentication, domain, DNS, recipient, subject, and body-size checks but does not insert an email log or push delivery work to Redis.\n\n**Idempotency:** Include an `Idempotency-Key` header to prevent duplicate sends on retries (24h window).\n\n**Webhook verification:** Delivery events are posted to your webhook endpoints with an `X-Motorical-Signature` header containing an HMAC-SHA256 hex digest computed over the JSON body using the webhook secret you received at creation time. Verify with: `crypto.createHmac(\"sha256\", secret).update(body).digest(\"hex\")`.\n\nOpenAPI: `POST /v1/send`\nDocs: https://docs.motorical.com/llms.txt",
            "auth": {
              "type": "apikey",
              "apikey": [
                {
                  "key": "key",
                  "value": "Authorization",
                  "type": "string"
                },
                {
                  "key": "value",
                  "value": "ApiKey {{mkApiKey}}",
                  "type": "string"
                },
                {
                  "key": "in",
                  "value": "header",
                  "type": "string"
                }
              ]
            },
            "body": {
              "mode": "raw",
              "raw": "{\n  \"from\": \"sender@yourdomain.com\",\n  \"fromName\": \"Acme Billing\",\n  \"subject\": \"string\",\n  \"text\": \"string\",\n  \"html\": \"string\",\n  \"headers\": {}\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            }
          },
          "response": []
        },
        {
          "name": "Get message event timeline",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{apiBaseUrl}}/api/public/v1/messages/{{messageId}}/events",
              "host": [
                "{{apiBaseUrl}}"
              ],
              "path": [
                "api",
                "public",
                "v1",
                "messages",
                "{{messageId}}",
                "events"
              ],
              "query": [
                {
                  "key": "includePII",
                  "value": "",
                  "description": "Requires logs.pii scope",
                  "disabled": true
                }
              ]
            },
            "description": "Canonical lifecycle events from email_events.\n\nOpenAPI: `GET /api/public/v1/messages/{id}/events`\nDocs: https://docs.motorical.com/llms.txt",
            "auth": {
              "type": "bearer",
              "bearer": [
                {
                  "key": "token",
                  "value": "{{bearerToken}}",
                  "type": "string"
                }
              ]
            }
          },
          "response": []
        }
      ]
    },
    {
      "name": "Account Free Recipients",
      "item": [
        {
          "name": "Ask a recipient to allow test email (OAuth/Public API bearer)",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "url": {
              "raw": "{{apiBaseUrl}}/api/public/v1/account/free-recipients",
              "host": [
                "{{apiBaseUrl}}"
              ],
              "path": [
                "api",
                "public",
                "v1",
                "account",
                "free-recipients"
              ]
            },
            "description": "REQUESTS confirmation only: emails the address a link, and the recipient must open it and click the button. This route can never confirm or stop an address on anyone's behalf. The response is identical whether the email was sent or withheld (for example because the address chose to stop), so it cannot be used to enumerate recipients. The account email is taken from the account, never from the request. The success body includes `data.recipient = { email, status }` (status `pending`, or `confirmed` when the address is already confirmed); a stopped address reports the same shape and status as a fresh request. `pending` means a person must still click the emailed link.\n\nOpenAPI: `POST /api/public/v1/account/free-recipients`\nDocs: https://docs.motorical.com/llms.txt",
            "auth": {
              "type": "bearer",
              "bearer": [
                {
                  "key": "token",
                  "value": "{{bearerToken}}",
                  "type": "string"
                }
              ]
            },
            "body": {
              "mode": "raw",
              "raw": "{\n  \"email\": \"sender@yourdomain.com\"\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            }
          },
          "response": []
        },
        {
          "name": "List Free-account recipients (OAuth/Public API bearer)",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{apiBaseUrl}}/api/public/v1/account/free-recipients",
              "host": [
                "{{apiBaseUrl}}"
              ],
              "path": [
                "api",
                "public",
                "v1",
                "account",
                "free-recipients"
              ]
            },
            "description": "Addresses this account has asked to allow test email, with their status (pending, confirmed, stopped), plus the recipient limit and current usage (`usage` is null when it cannot be read). `limitsNote` says the hourly, daily and monthly numbers are the Free-plan caps for non-sandbox Motor Blocks (a sandbox block is governed by the sandbox caps in the sandbox status). Requires `recipients.manage` (MCP `manage:recipients`).\n\nOpenAPI: `GET /api/public/v1/account/free-recipients`\nDocs: https://docs.motorical.com/llms.txt",
            "auth": {
              "type": "bearer",
              "bearer": [
                {
                  "key": "token",
                  "value": "{{bearerToken}}",
                  "type": "string"
                }
              ]
            }
          },
          "response": []
        },
        {
          "name": "Remove a Free-account recipient (OAuth/Public API bearer)",
          "request": {
            "method": "DELETE",
            "header": [],
            "url": {
              "raw": "{{apiBaseUrl}}/api/public/v1/account/free-recipients/{{id}}",
              "host": [
                "{{apiBaseUrl}}"
              ],
              "path": [
                "api",
                "public",
                "v1",
                "account",
                "free-recipients",
                "{{id}}"
              ]
            },
            "description": "Remove a Free-account recipient (OAuth/Public API bearer)\n\nOpenAPI: `DELETE /api/public/v1/account/free-recipients/{id}`\nDocs: https://docs.motorical.com/llms.txt",
            "auth": {
              "type": "bearer",
              "bearer": [
                {
                  "key": "token",
                  "value": "{{bearerToken}}",
                  "type": "string"
                }
              ]
            }
          },
          "response": []
        }
      ]
    },
    {
      "name": "Account Motor Blocks",
      "item": [
        {
          "name": "Assign a verified domain to a Motor Block",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "url": {
              "raw": "{{apiBaseUrl}}/api/public/v1/account/motor-blocks/{{motorBlockId}}/assign-domain",
              "host": [
                "{{apiBaseUrl}}"
              ],
              "path": [
                "api",
                "public",
                "v1",
                "account",
                "motor-blocks",
                "{{motorBlockId}}",
                "assign-domain"
              ]
            },
            "description": "Requires `confirm: true`. The target must be a verified, non-sandbox domain owned by the account.\n\nOpenAPI: `POST /api/public/v1/account/motor-blocks/{id}/assign-domain`\nDocs: https://docs.motorical.com/llms.txt",
            "auth": {
              "type": "bearer",
              "bearer": [
                {
                  "key": "token",
                  "value": "{{bearerToken}}",
                  "type": "string"
                }
              ]
            },
            "body": {
              "mode": "raw",
              "raw": "{\n  \"domainId\": \"{{motorBlockId}}\",\n  \"confirm\": true\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            }
          },
          "response": []
        },
        {
          "name": "Create a production Motor Block (OAuth/Public API bearer)",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "url": {
              "raw": "{{apiBaseUrl}}/api/public/v1/account/motor-blocks",
              "host": [
                "{{apiBaseUrl}}"
              ],
              "path": [
                "api",
                "public",
                "v1",
                "account",
                "motor-blocks"
              ]
            },
            "description": "Creates a `transactional` or `general_purpose` Motor Block on a verified, non-sandbox domain the account owns, subject to the plan's Motor Block limit. Requires an `Idempotency-Key` header (UUID v4): a replay with the same key and input returns the same block, one database row, and never a credential. The new block is appended to the calling grant in the same transaction, so it is usable by explicit `motorBlockId` immediately, WITHOUT a token refresh or re-authorization (`authorizationUpdated`). Hosted responses never contain a password, API-key secret or certificate — `credentialsAvailable: false` and `credentialsLocation` point to the dashboard. `nextAction` suggests a `dryRun` send from the new block.\n\nOpenAPI: `POST /api/public/v1/account/motor-blocks`\nDocs: https://docs.motorical.com/llms.txt",
            "auth": {
              "type": "bearer",
              "bearer": [
                {
                  "key": "token",
                  "value": "{{bearerToken}}",
                  "type": "string"
                }
              ]
            },
            "body": {
              "mode": "raw",
              "raw": "{\n  \"name\": \"string\",\n  \"domainId\": \"{{motorBlockId}}\",\n  \"type\": \"general_purpose\",\n  \"description\": \"string\"\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            }
          },
          "response": []
        },
        {
          "name": "Deactivate (pause) a Motor Block — reversible",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "url": {
              "raw": "{{apiBaseUrl}}/api/public/v1/account/motor-blocks/{{motorBlockId}}/deactivate",
              "host": [
                "{{apiBaseUrl}}"
              ],
              "path": [
                "api",
                "public",
                "v1",
                "account",
                "motor-blocks",
                "{{motorBlockId}}",
                "deactivate"
              ]
            },
            "description": "Requires `confirm: true`. Sends from the block are refused until it is reactivated. This is NOT deletion: nothing is removed. The response includes `nextAction` pointing at reactivate. A block must be inactive before it can be permanently deleted.\n\nOpenAPI: `POST /api/public/v1/account/motor-blocks/{id}/deactivate`\nDocs: https://docs.motorical.com/llms.txt",
            "auth": {
              "type": "bearer",
              "bearer": [
                {
                  "key": "token",
                  "value": "{{bearerToken}}",
                  "type": "string"
                }
              ]
            },
            "body": {
              "mode": "raw",
              "raw": "{\n  \"confirm\": true\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            }
          },
          "response": []
        },
        {
          "name": "List the account's production Motor Blocks (OAuth/Public API bearer)",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{apiBaseUrl}}/api/public/v1/account/motor-blocks",
              "host": [
                "{{apiBaseUrl}}"
              ],
              "path": [
                "api",
                "public",
                "v1",
                "account",
                "motor-blocks"
              ]
            },
            "description": "Account-scoped inventory of `transactional` and `general_purpose` Motor Blocks covered by the CURRENT authorization grant (read live from the backend, never from a token claim), including inactive blocks. Developer-sandbox and companion blocks are excluded. Each row carries `activeAuthMethod` (read-only) and `credentialsAvailable: false` with a `credentialsLocation` dashboard link — no credential is ever returned.\n\nOpenAPI: `GET /api/public/v1/account/motor-blocks`\nDocs: https://docs.motorical.com/llms.txt",
            "auth": {
              "type": "bearer",
              "bearer": [
                {
                  "key": "token",
                  "value": "{{bearerToken}}",
                  "type": "string"
                }
              ]
            }
          },
          "response": []
        },
        {
          "name": "Live grant-coverage check for one Motor Block (infrastructure)",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{apiBaseUrl}}/api/public/v1/account/authorization/motor-blocks/{{motorBlockId}}",
              "host": [
                "{{apiBaseUrl}}"
              ],
              "path": [
                "api",
                "public",
                "v1",
                "account",
                "authorization",
                "motor-blocks",
                "{{motorBlockId}}"
              ]
            },
            "description": "Used by the hosted MCP server to obtain a live authorization decision before serving task or resource state for an explicitly named block. Returns `authorized: true` only when the CURRENT grant covers the block and the caller owns it; otherwise 403. It is not a customer workflow and no tool is exposed for it.\n\nOpenAPI: `GET /api/public/v1/account/authorization/motor-blocks/{id}`\nDocs: https://docs.motorical.com/llms.txt",
            "auth": {
              "type": "bearer",
              "bearer": [
                {
                  "key": "token",
                  "value": "{{bearerToken}}",
                  "type": "string"
                }
              ]
            }
          },
          "response": []
        },
        {
          "name": "Permanently delete a Motor Block — asynchronous and irrecoverable",
          "request": {
            "method": "DELETE",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "url": {
              "raw": "{{apiBaseUrl}}/api/public/v1/account/motor-blocks/{{motorBlockId}}",
              "host": [
                "{{apiBaseUrl}}"
              ],
              "path": [
                "api",
                "public",
                "v1",
                "account",
                "motor-blocks",
                "{{motorBlockId}}"
              ]
            },
            "description": "Requires `confirm: true` AND an explicit boolean `deleteHistory` (true also deletes the block's message logs and events; false is refused with 409 motor_block_history_present if any exist). The block must already be deactivated. Deletion is queued: the response is 202 with a `jobId`; poll GET /account/motor-block-deletions/{jobId}. Only `transactional` and `general_purpose` blocks can be deleted here (409 motor_block_type_not_supported otherwise). Deletion never affects other blocks sharing the same domain.\n\nOpenAPI: `DELETE /api/public/v1/account/motor-blocks/{id}`\nDocs: https://docs.motorical.com/llms.txt",
            "auth": {
              "type": "bearer",
              "bearer": [
                {
                  "key": "token",
                  "value": "{{bearerToken}}",
                  "type": "string"
                }
              ]
            },
            "body": {
              "mode": "raw",
              "raw": "{\n  \"confirm\": true,\n  \"deleteHistory\": true\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            }
          },
          "response": []
        },
        {
          "name": "Poll a permanent-deletion job",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{apiBaseUrl}}/api/public/v1/account/motor-block-deletions/{{jobId}}",
              "host": [
                "{{apiBaseUrl}}"
              ],
              "path": [
                "api",
                "public",
                "v1",
                "account",
                "motor-block-deletions",
                "{{jobId}}"
              ]
            },
            "description": "Status remains queryable by the authenticated account after the block row is gone. Scoped to the job owner.\n\nOpenAPI: `GET /api/public/v1/account/motor-block-deletions/{jobId}`\nDocs: https://docs.motorical.com/llms.txt",
            "auth": {
              "type": "bearer",
              "bearer": [
                {
                  "key": "token",
                  "value": "{{bearerToken}}",
                  "type": "string"
                }
              ]
            }
          },
          "response": []
        },
        {
          "name": "Reactivate a deactivated Motor Block",
          "request": {
            "method": "POST",
            "header": [],
            "url": {
              "raw": "{{apiBaseUrl}}/api/public/v1/account/motor-blocks/{{motorBlockId}}/reactivate",
              "host": [
                "{{apiBaseUrl}}"
              ],
              "path": [
                "api",
                "public",
                "v1",
                "account",
                "motor-blocks",
                "{{motorBlockId}}",
                "reactivate"
              ]
            },
            "description": "No confirmation needed (restores service). Refused with 409 motor_block_domain_required if the block has no verified production domain, or motor_block_delete_in_progress if deletion was already queued.\n\nOpenAPI: `POST /api/public/v1/account/motor-blocks/{id}/reactivate`\nDocs: https://docs.motorical.com/llms.txt",
            "auth": {
              "type": "bearer",
              "bearer": [
                {
                  "key": "token",
                  "value": "{{bearerToken}}",
                  "type": "string"
                }
              ]
            }
          },
          "response": []
        },
        {
          "name": "Rename a Motor Block (display name only)",
          "request": {
            "method": "PATCH",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "url": {
              "raw": "{{apiBaseUrl}}/api/public/v1/account/motor-blocks/{{motorBlockId}}/name",
              "host": [
                "{{apiBaseUrl}}"
              ],
              "path": [
                "api",
                "public",
                "v1",
                "account",
                "motor-blocks",
                "{{motorBlockId}}",
                "name"
              ]
            },
            "description": "Changes the display name. Rename NEVER changes the SMTP username or any credential; an SMTP username changes only at the sandbox-to-production conversion boundary.\n\nOpenAPI: `PATCH /api/public/v1/account/motor-blocks/{id}/name`\nDocs: https://docs.motorical.com/llms.txt",
            "auth": {
              "type": "bearer",
              "bearer": [
                {
                  "key": "token",
                  "value": "{{bearerToken}}",
                  "type": "string"
                }
              ]
            },
            "body": {
              "mode": "raw",
              "raw": "{\n  \"name\": \"string\"\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            }
          },
          "response": []
        },
        {
          "name": "Switch a Motor Block between transactional and general_purpose",
          "request": {
            "method": "PATCH",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "url": {
              "raw": "{{apiBaseUrl}}/api/public/v1/account/motor-blocks/{{motorBlockId}}/type",
              "host": [
                "{{apiBaseUrl}}"
              ],
              "path": [
                "api",
                "public",
                "v1",
                "account",
                "motor-blocks",
                "{{motorBlockId}}",
                "type"
              ]
            },
            "description": "Requires `confirm: true` (else 400 confirmation_required). Only `transactional` and `general_purpose` are accepted; marketing, portal and sandbox blocks fail closed. Auth method is read-only and never changed by this route.\n\nOpenAPI: `PATCH /api/public/v1/account/motor-blocks/{id}/type`\nDocs: https://docs.motorical.com/llms.txt",
            "auth": {
              "type": "bearer",
              "bearer": [
                {
                  "key": "token",
                  "value": "{{bearerToken}}",
                  "type": "string"
                }
              ]
            },
            "body": {
              "mode": "raw",
              "raw": "{\n  \"type\": \"transactional\",\n  \"confirm\": true\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            }
          },
          "response": []
        }
      ]
    },
    {
      "name": "Account Sandbox",
      "item": [
        {
          "name": "Convert account sandbox to a verified production domain (OAuth/Public API bearer)",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "url": {
              "raw": "{{apiBaseUrl}}/api/public/v1/account/sandbox/convert",
              "host": [
                "{{apiBaseUrl}}"
              ],
              "path": [
                "api",
                "public",
                "v1",
                "account",
                "sandbox",
                "convert"
              ]
            },
            "description": "Account-scoped counterpart to POST /api/developer/sandbox/convert — same pure service function, so behavior cannot drift between a dashboard session and an OAuth-delegated agent. Requires an active Motorical subscription and a domain already added + verified. The response always includes `activeAuthMethod` (the converted Motor Block's configured auth method — Password, API Key, OAuth 2.0, or mTLS; read-only). When authenticated via an OAuth/Delegation grant it additionally includes `credentialsLocation`, a dashboard URL where the actual credential value can be viewed or regenerated — this endpoint never returns the raw credential itself. Conversion is a one-way production identity transition: the block keeps its id, password, API keys, auth method and grant coverage, but takes the chosen (or a deterministic fallback) production `name` and `type`, and its SMTP username is REPLACED with a production-derived one. Existing SMTP clients must switch to the new username; the response states the change in `previousSmtpUsername`, `smtpUsername`, `credentialChanges` and `integrationActionRequired`.\n\nOpenAPI: `POST /api/public/v1/account/sandbox/convert`\nDocs: https://docs.motorical.com/llms.txt",
            "auth": {
              "type": "bearer",
              "bearer": [
                {
                  "key": "token",
                  "value": "{{bearerToken}}",
                  "type": "string"
                }
              ]
            },
            "body": {
              "mode": "raw",
              "raw": "{\n  \"domainId\": \"{{motorBlockId}}\",\n  \"name\": \"string\",\n  \"type\": \"transactional\"\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            }
          },
          "response": []
        },
        {
          "name": "Get account sandbox status (OAuth/Public API bearer)",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{apiBaseUrl}}/api/public/v1/account/sandbox",
              "host": [
                "{{apiBaseUrl}}"
              ],
              "path": [
                "api",
                "public",
                "v1",
                "account",
                "sandbox"
              ]
            },
            "description": "Account-scoped counterpart to GET /api/developer/sandbox — same underlying service, reachable with an OAuth Delegation header or Public API bearer token instead of a dashboard session. The allowlist is the effective list (sandbox recipients, link-confirmed recipients, the account address and the test sink, minus any address that clicked stop); domain.sandbox true means the Motorical-owned sandbox domain, false means your own domain.\n\nOpenAPI: `GET /api/public/v1/account/sandbox`\nDocs: https://docs.motorical.com/llms.txt",
            "auth": {
              "type": "bearer",
              "bearer": [
                {
                  "key": "token",
                  "value": "{{bearerToken}}",
                  "type": "string"
                }
              ]
            }
          },
          "response": []
        },
        {
          "name": "Provision account sandbox (OAuth/Public API bearer)",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "url": {
              "raw": "{{apiBaseUrl}}/api/public/v1/account/sandbox/provision",
              "host": [
                "{{apiBaseUrl}}"
              ],
              "path": [
                "api",
                "public",
                "v1",
                "account",
                "sandbox",
                "provision"
              ]
            },
            "description": "Account-scoped counterpart to POST /api/developer/sandbox/provision — creates `<handle>.sandbox.motorical.com` (a Motorical-owned `.sandbox` domain, instant, no DNS) and a locked, outbound-allowlisted Motor Block. A Free account that adds and fully verifies its own domain gets a sandbox Motor Block on that domain automatically, with no provisioning call, when automatic provisioning is enabled; otherwise call this route. Idempotent per account. Credentials are returned inline in the 201 body only for a plain Public API bearer token with no OAuth/Delegation grant attached (unlike the dashboard-JWT-only /api/developer/sandbox/provision above, which always returns them). When the caller is authenticated via an OAuth-delegated grant (MCP client or a Delegation header), the response instead returns `credentialsAvailable: false` plus a `credentialsNote`, and the raw credential is never included — retrieve it later via the `credentialsLocation` dashboard link returned by POST /account/sandbox/convert.\n\nOpenAPI: `POST /api/public/v1/account/sandbox/provision`\nDocs: https://docs.motorical.com/llms.txt",
            "auth": {
              "type": "bearer",
              "bearer": [
                {
                  "key": "token",
                  "value": "{{bearerToken}}",
                  "type": "string"
                }
              ]
            },
            "body": {
              "mode": "raw",
              "raw": "{\n  \"handle\": \"string\",\n  \"channel\": \"cli\"\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            }
          },
          "response": []
        }
      ]
    },
    {
      "name": "Analytics",
      "item": [
        {
          "name": "Account identity, plan and grant",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{apiBaseUrl}}/api/public/v1/account/whoami",
              "host": [
                "{{apiBaseUrl}}"
              ],
              "path": [
                "api",
                "public",
                "v1",
                "account",
                "whoami"
              ]
            },
            "description": "Who the credential acts for, account-wide (no motorBlockId needed): the account id, owner email and name, the plan name and status, and, for an OAuth grant, the client, the scopes it holds, the Motor Blocks it covers, when it was granted, canAdd (permissions it could still be given, available:false where the plan does not allow it) and addInDashboard. grant is null when the call is not made over an OAuth grant.\n\nOpenAPI: `GET /api/public/v1/account/whoami`\nDocs: https://docs.motorical.com/llms.txt",
            "auth": {
              "type": "bearer",
              "bearer": [
                {
                  "key": "token",
                  "value": "{{bearerToken}}",
                  "type": "string"
                }
              ]
            }
          },
          "response": []
        },
        {
          "name": "Account-wide rate limits",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{apiBaseUrl}}/api/public/v1/account/rate-limits",
              "host": [
                "{{apiBaseUrl}}"
              ],
              "path": [
                "api",
                "public",
                "v1",
                "account",
                "rate-limits"
              ]
            },
            "description": "Account-wide send-quota usage vs the hourly and daily account cap, aggregated across all of the account's motor blocks.\n\nOpenAPI: `GET /api/public/v1/account/rate-limits`\nDocs: https://docs.motorical.com/llms.txt",
            "auth": {
              "type": "bearer",
              "bearer": [
                {
                  "key": "token",
                  "value": "{{bearerToken}}",
                  "type": "string"
                }
              ]
            }
          },
          "response": []
        },
        {
          "name": "Anomaly detection (bounce spikes)",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{apiBaseUrl}}/api/public/v1/motor-blocks/{{motorBlockId}}/anomalies",
              "host": [
                "{{apiBaseUrl}}"
              ],
              "path": [
                "api",
                "public",
                "v1",
                "motor-blocks",
                "{{motorBlockId}}",
                "anomalies"
              ]
            },
            "description": "Anomaly detection (bounce spikes)\n\nOpenAPI: `GET /api/public/v1/motor-blocks/{id}/anomalies`\nDocs: https://docs.motorical.com/llms.txt",
            "auth": {
              "type": "bearer",
              "bearer": [
                {
                  "key": "token",
                  "value": "{{bearerToken}}",
                  "type": "string"
                }
              ]
            }
          },
          "response": []
        },
        {
          "name": "Composed account state",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{apiBaseUrl}}/api/public/v1/account/state",
              "host": [
                "{{apiBaseUrl}}"
              ],
              "path": [
                "api",
                "public",
                "v1",
                "account",
                "state"
              ]
            },
            "description": "One composed answer for \"where does this account stand\": domain verification, DNS readiness, Motor Block existence, and sandbox status in a single call, account-wide (no motorBlockId needed, works before any Motor Block exists).\n\nOpenAPI: `GET /api/public/v1/account/state`\nDocs: https://docs.motorical.com/llms.txt",
            "auth": {
              "type": "bearer",
              "bearer": [
                {
                  "key": "token",
                  "value": "{{bearerToken}}",
                  "type": "string"
                }
              ]
            }
          },
          "response": []
        },
        {
          "name": "Daily summary",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{apiBaseUrl}}/api/public/v1/motor-blocks/{{motorBlockId}}/daily-summary",
              "host": [
                "{{apiBaseUrl}}"
              ],
              "path": [
                "api",
                "public",
                "v1",
                "motor-blocks",
                "{{motorBlockId}}",
                "daily-summary"
              ],
              "query": [
                {
                  "key": "days",
                  "value": "",
                  "description": "",
                  "disabled": true
                }
              ]
            },
            "description": "Daily rollups for a recent window (sent, delivered, bounced, complained, plus rates).\n\nOpenAPI: `GET /api/public/v1/motor-blocks/{id}/daily-summary`\nDocs: https://docs.motorical.com/llms.txt",
            "auth": {
              "type": "bearer",
              "bearer": [
                {
                  "key": "token",
                  "value": "{{bearerToken}}",
                  "type": "string"
                }
              ]
            }
          },
          "response": []
        },
        {
          "name": "Deliverability by recipient domain",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{apiBaseUrl}}/api/public/v1/motor-blocks/{{motorBlockId}}/deliverability?limit=50",
              "host": [
                "{{apiBaseUrl}}"
              ],
              "path": [
                "api",
                "public",
                "v1",
                "motor-blocks",
                "{{motorBlockId}}",
                "deliverability"
              ],
              "query": [
                {
                  "key": "from",
                  "value": "",
                  "description": "",
                  "disabled": true
                },
                {
                  "key": "to",
                  "value": "",
                  "description": "",
                  "disabled": true
                },
                {
                  "key": "limit",
                  "value": "50",
                  "description": "",
                  "disabled": false
                }
              ]
            },
            "description": "Deliverability by recipient domain\n\nOpenAPI: `GET /api/public/v1/motor-blocks/{id}/deliverability`\nDocs: https://docs.motorical.com/llms.txt",
            "auth": {
              "type": "bearer",
              "bearer": [
                {
                  "key": "token",
                  "value": "{{bearerToken}}",
                  "type": "string"
                }
              ]
            }
          },
          "response": []
        },
        {
          "name": "DNS records to publish for one domain",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{apiBaseUrl}}/api/public/v1/domains/{{id}}/dns-records",
              "host": [
                "{{apiBaseUrl}}"
              ],
              "path": [
                "api",
                "public",
                "v1",
                "domains",
                "{{id}}",
                "dns-records"
              ],
              "query": [
                {
                  "key": "lookup",
                  "value": "",
                  "description": "",
                  "disabled": true
                }
              ]
            },
            "description": "The DNS records to publish for the domain and what each is for. Add lookup=true to also check what DNS currently answers (slower, live lookups).\n\nOpenAPI: `GET /api/public/v1/domains/{id}/dns-records`\nDocs: https://docs.motorical.com/llms.txt",
            "auth": {
              "type": "bearer",
              "bearer": [
                {
                  "key": "token",
                  "value": "{{bearerToken}}",
                  "type": "string"
                }
              ]
            }
          },
          "response": []
        },
        {
          "name": "Email-authentication health of one domain",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{apiBaseUrl}}/api/public/v1/domains/{{id}}/health",
              "host": [
                "{{apiBaseUrl}}"
              ],
              "path": [
                "api",
                "public",
                "v1",
                "domains",
                "{{id}}",
                "health"
              ],
              "query": [
                {
                  "key": "refresh",
                  "value": "",
                  "description": "",
                  "disabled": true
                }
              ]
            },
            "description": "SPF, DKIM, DMARC, status and issues for one domain by id, cache-first with a source field. Works for a domain that has no Motor Block yet. Add refresh=true for a live DNS check.\n\nOpenAPI: `GET /api/public/v1/domains/{id}/health`\nDocs: https://docs.motorical.com/llms.txt",
            "auth": {
              "type": "bearer",
              "bearer": [
                {
                  "key": "token",
                  "value": "{{bearerToken}}",
                  "type": "string"
                }
              ]
            }
          },
          "response": []
        },
        {
          "name": "Event stream (SSE)",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{apiBaseUrl}}/api/public/v1/motor-blocks/{{motorBlockId}}/events/stream",
              "host": [
                "{{apiBaseUrl}}"
              ],
              "path": [
                "api",
                "public",
                "v1",
                "motor-blocks",
                "{{motorBlockId}}",
                "events",
                "stream"
              ]
            },
            "description": "Event stream (SSE)\n\nOpenAPI: `GET /api/public/v1/motor-blocks/{id}/events/stream`\nDocs: https://docs.motorical.com/llms.txt",
            "auth": {
              "type": "bearer",
              "bearer": [
                {
                  "key": "token",
                  "value": "{{bearerToken}}",
                  "type": "string"
                }
              ]
            }
          },
          "response": []
        },
        {
          "name": "Metrics series and totals",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{apiBaseUrl}}/api/public/v1/motor-blocks/{{motorBlockId}}/metrics",
              "host": [
                "{{apiBaseUrl}}"
              ],
              "path": [
                "api",
                "public",
                "v1",
                "motor-blocks",
                "{{motorBlockId}}",
                "metrics"
              ],
              "query": [
                {
                  "key": "from",
                  "value": "",
                  "description": "",
                  "disabled": true
                },
                {
                  "key": "to",
                  "value": "",
                  "description": "",
                  "disabled": true
                },
                {
                  "key": "interval",
                  "value": "",
                  "description": "",
                  "disabled": true
                }
              ]
            },
            "description": "Aggregated metrics (sent, delivered, bounced, complained) over hour/day buckets.\n\nOpenAPI: `GET /api/public/v1/motor-blocks/{id}/metrics`\nDocs: https://docs.motorical.com/llms.txt",
            "auth": {
              "type": "bearer",
              "bearer": [
                {
                  "key": "token",
                  "value": "{{bearerToken}}",
                  "type": "string"
                }
              ]
            }
          },
          "response": []
        },
        {
          "name": "Motor Block overview",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{apiBaseUrl}}/api/public/v1/motor-blocks/{{motorBlockId}}/overview",
              "host": [
                "{{apiBaseUrl}}"
              ],
              "path": [
                "api",
                "public",
                "v1",
                "motor-blocks",
                "{{motorBlockId}}",
                "overview"
              ],
              "query": [
                {
                  "key": "from",
                  "value": "",
                  "description": "",
                  "disabled": true
                },
                {
                  "key": "to",
                  "value": "",
                  "description": "",
                  "disabled": true
                }
              ]
            },
            "description": "One-call overview including totals, rates, reputation, rate limits, anomalies, and top domains.\n\nOpenAPI: `GET /api/public/v1/motor-blocks/{id}/overview`\nDocs: https://docs.motorical.com/llms.txt",
            "auth": {
              "type": "bearer",
              "bearer": [
                {
                  "key": "token",
                  "value": "{{bearerToken}}",
                  "type": "string"
                }
              ]
            }
          },
          "response": []
        },
        {
          "name": "Motor Block rate limits",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{apiBaseUrl}}/api/public/v1/motor-blocks/{{motorBlockId}}/rate-limits",
              "host": [
                "{{apiBaseUrl}}"
              ],
              "path": [
                "api",
                "public",
                "v1",
                "motor-blocks",
                "{{motorBlockId}}",
                "rate-limits"
              ]
            },
            "description": "Current usage vs burst, hourly, and daily rate limits.\n\nOpenAPI: `GET /api/public/v1/motor-blocks/{id}/rate-limits`\nDocs: https://docs.motorical.com/llms.txt",
            "auth": {
              "type": "bearer",
              "bearer": [
                {
                  "key": "token",
                  "value": "{{bearerToken}}",
                  "type": "string"
                }
              ]
            }
          },
          "response": []
        },
        {
          "name": "One sending domain",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{apiBaseUrl}}/api/public/v1/domains/{{id}}",
              "host": [
                "{{apiBaseUrl}}"
              ],
              "path": [
                "api",
                "public",
                "v1",
                "domains",
                "{{id}}"
              ]
            },
            "description": "One domain of the account by id: verified, DNS authentication flags, DKIM mode, created. Read-only, no keys or tokens. 404 when the id is not one of your domains.\n\nOpenAPI: `GET /api/public/v1/domains/{id}`\nDocs: https://docs.motorical.com/llms.txt",
            "auth": {
              "type": "bearer",
              "bearer": [
                {
                  "key": "token",
                  "value": "{{bearerToken}}",
                  "type": "string"
                }
              ]
            }
          },
          "response": []
        },
        {
          "name": "Provider breakdown (gmail, outlook, yahoo, other)",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{apiBaseUrl}}/api/public/v1/motor-blocks/{{motorBlockId}}/providers?limit=50",
              "host": [
                "{{apiBaseUrl}}"
              ],
              "path": [
                "api",
                "public",
                "v1",
                "motor-blocks",
                "{{motorBlockId}}",
                "providers"
              ],
              "query": [
                {
                  "key": "from",
                  "value": "",
                  "description": "",
                  "disabled": true
                },
                {
                  "key": "to",
                  "value": "",
                  "description": "",
                  "disabled": true
                },
                {
                  "key": "limit",
                  "value": "50",
                  "description": "",
                  "disabled": false
                }
              ]
            },
            "description": "Provider breakdown (gmail, outlook, yahoo, other)\n\nOpenAPI: `GET /api/public/v1/motor-blocks/{id}/providers`\nDocs: https://docs.motorical.com/llms.txt",
            "auth": {
              "type": "bearer",
              "bearer": [
                {
                  "key": "token",
                  "value": "{{bearerToken}}",
                  "type": "string"
                }
              ]
            }
          },
          "response": []
        },
        {
          "name": "Reputation score",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{apiBaseUrl}}/api/public/v1/motor-blocks/{{motorBlockId}}/reputation",
              "host": [
                "{{apiBaseUrl}}"
              ],
              "path": [
                "api",
                "public",
                "v1",
                "motor-blocks",
                "{{motorBlockId}}",
                "reputation"
              ]
            },
            "description": "Reputation score\n\nOpenAPI: `GET /api/public/v1/motor-blocks/{id}/reputation`\nDocs: https://docs.motorical.com/llms.txt",
            "auth": {
              "type": "bearer",
              "bearer": [
                {
                  "key": "token",
                  "value": "{{bearerToken}}",
                  "type": "string"
                }
              ]
            }
          },
          "response": []
        },
        {
          "name": "SMTP error code diagnostics",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{apiBaseUrl}}/api/public/v1/motor-blocks/{{motorBlockId}}/error-codes?limit=50",
              "host": [
                "{{apiBaseUrl}}"
              ],
              "path": [
                "api",
                "public",
                "v1",
                "motor-blocks",
                "{{motorBlockId}}",
                "error-codes"
              ],
              "query": [
                {
                  "key": "from",
                  "value": "",
                  "description": "",
                  "disabled": true
                },
                {
                  "key": "to",
                  "value": "",
                  "description": "",
                  "disabled": true
                },
                {
                  "key": "limit",
                  "value": "50",
                  "description": "",
                  "disabled": false
                }
              ]
            },
            "description": "SMTP error code diagnostics\n\nOpenAPI: `GET /api/public/v1/motor-blocks/{id}/error-codes`\nDocs: https://docs.motorical.com/llms.txt",
            "auth": {
              "type": "bearer",
              "bearer": [
                {
                  "key": "token",
                  "value": "{{bearerToken}}",
                  "type": "string"
                }
              ]
            }
          },
          "response": []
        }
      ]
    },
    {
      "name": "Communications",
      "item": [
        {
          "name": "Add a suppression",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json"
              },
              {
                "key": "X-Tenant-Id",
                "value": "{{tenantId}}"
              }
            ],
            "url": {
              "raw": "{{dashboardBaseUrl}}/comm-api/api/suppressions",
              "host": [
                "{{dashboardBaseUrl}}"
              ],
              "path": [
                "comm-api",
                "api",
                "suppressions"
              ]
            },
            "description": "Communications Block endpoint. Requires `X-Tenant-Id` (workspace id) plus caller auth: `Authorization: Bearer <dashboard JWT>` or `Authorization: ApiKey ak_live_...` (must own the workspace). Discover default workspace via `GET /api/comm/tenant` (returns `tenantId` + `workspaces[]`).\n\nOpenAPI: `POST /comm-api/api/suppressions`\nDocs: https://docs.motorical.com/llms.txt",
            "auth": {
              "type": "bearer",
              "bearer": [
                {
                  "key": "token",
                  "value": "{{bearerToken}}",
                  "type": "string"
                }
              ]
            },
            "body": {
              "mode": "raw",
              "raw": "{}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            }
          },
          "response": []
        },
        {
          "name": "Add contacts to a list",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json"
              },
              {
                "key": "X-Tenant-Id",
                "value": "{{tenantId}}"
              }
            ],
            "url": {
              "raw": "{{dashboardBaseUrl}}/comm-api/api/lists/{{id}}/contacts",
              "host": [
                "{{dashboardBaseUrl}}"
              ],
              "path": [
                "comm-api",
                "api",
                "lists",
                "{{id}}",
                "contacts"
              ]
            },
            "description": "Communications Block endpoint. Requires `X-Tenant-Id` (workspace id) plus caller auth: `Authorization: Bearer <dashboard JWT>` or `Authorization: ApiKey ak_live_...` (must own the workspace). Discover default workspace via `GET /api/comm/tenant` (returns `tenantId` + `workspaces[]`).\n\nOpenAPI: `POST /comm-api/api/lists/{id}/contacts`\nDocs: https://docs.motorical.com/llms.txt",
            "auth": {
              "type": "bearer",
              "bearer": [
                {
                  "key": "token",
                  "value": "{{bearerToken}}",
                  "type": "string"
                }
              ]
            },
            "body": {
              "mode": "raw",
              "raw": "{}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            }
          },
          "response": []
        },
        {
          "name": "Bulk delete contact lists",
          "request": {
            "method": "DELETE",
            "header": [
              {
                "key": "X-Tenant-Id",
                "value": "{{tenantId}}"
              }
            ],
            "url": {
              "raw": "{{dashboardBaseUrl}}/comm-api/api/lists",
              "host": [
                "{{dashboardBaseUrl}}"
              ],
              "path": [
                "comm-api",
                "api",
                "lists"
              ]
            },
            "description": "Communications Block endpoint. Requires `X-Tenant-Id` (workspace id) plus caller auth: `Authorization: Bearer <dashboard JWT>` or `Authorization: ApiKey ak_live_...` (must own the workspace). Discover default workspace via `GET /api/comm/tenant` (returns `tenantId` + `workspaces[]`).\n\nOpenAPI: `DELETE /comm-api/api/lists`\nDocs: https://docs.motorical.com/llms.txt",
            "auth": {
              "type": "bearer",
              "bearer": [
                {
                  "key": "token",
                  "value": "{{bearerToken}}",
                  "type": "string"
                }
              ]
            }
          },
          "response": []
        },
        {
          "name": "Bulk delete recipients",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json"
              },
              {
                "key": "X-Tenant-Id",
                "value": "{{tenantId}}"
              }
            ],
            "url": {
              "raw": "{{dashboardBaseUrl}}/comm-api/api/recipients/bulk-delete",
              "host": [
                "{{dashboardBaseUrl}}"
              ],
              "path": [
                "comm-api",
                "api",
                "recipients",
                "bulk-delete"
              ]
            },
            "description": "Communications Block endpoint. Requires `X-Tenant-Id` (workspace id) plus caller auth: `Authorization: Bearer <dashboard JWT>` or `Authorization: ApiKey ak_live_...` (must own the workspace). Discover default workspace via `GET /api/comm/tenant` (returns `tenantId` + `workspaces[]`).\n\nOpenAPI: `POST /comm-api/api/recipients/bulk-delete`\nDocs: https://docs.motorical.com/llms.txt",
            "auth": {
              "type": "bearer",
              "bearer": [
                {
                  "key": "token",
                  "value": "{{bearerToken}}",
                  "type": "string"
                }
              ]
            },
            "body": {
              "mode": "raw",
              "raw": "{}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            }
          },
          "response": []
        },
        {
          "name": "Bulk delete recipients matching a filter",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json"
              },
              {
                "key": "X-Tenant-Id",
                "value": "{{tenantId}}"
              }
            ],
            "url": {
              "raw": "{{dashboardBaseUrl}}/comm-api/api/recipients/bulk-delete-by-filter",
              "host": [
                "{{dashboardBaseUrl}}"
              ],
              "path": [
                "comm-api",
                "api",
                "recipients",
                "bulk-delete-by-filter"
              ]
            },
            "description": "Communications Block endpoint. Requires `X-Tenant-Id` (workspace id) plus caller auth: `Authorization: Bearer <dashboard JWT>` or `Authorization: ApiKey ak_live_...` (must own the workspace). Discover default workspace via `GET /api/comm/tenant` (returns `tenantId` + `workspaces[]`).\n\nOpenAPI: `POST /comm-api/api/recipients/bulk-delete-by-filter`\nDocs: https://docs.motorical.com/llms.txt",
            "auth": {
              "type": "bearer",
              "bearer": [
                {
                  "key": "token",
                  "value": "{{bearerToken}}",
                  "type": "string"
                }
              ]
            },
            "body": {
              "mode": "raw",
              "raw": "{}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            }
          },
          "response": []
        },
        {
          "name": "Bulk delete templates",
          "request": {
            "method": "DELETE",
            "header": [
              {
                "key": "X-Tenant-Id",
                "value": "{{tenantId}}"
              }
            ],
            "url": {
              "raw": "{{dashboardBaseUrl}}/comm-api/api/templates",
              "host": [
                "{{dashboardBaseUrl}}"
              ],
              "path": [
                "comm-api",
                "api",
                "templates"
              ]
            },
            "description": "Communications Block endpoint. Requires `X-Tenant-Id` (workspace id) plus caller auth: `Authorization: Bearer <dashboard JWT>` or `Authorization: ApiKey ak_live_...` (must own the workspace). Discover default workspace via `GET /api/comm/tenant` (returns `tenantId` + `workspaces[]`).\n\nOpenAPI: `DELETE /comm-api/api/templates`\nDocs: https://docs.motorical.com/llms.txt",
            "auth": {
              "type": "bearer",
              "bearer": [
                {
                  "key": "token",
                  "value": "{{bearerToken}}",
                  "type": "string"
                }
              ]
            }
          },
          "response": []
        },
        {
          "name": "Bulk import suppressions",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json"
              },
              {
                "key": "X-Tenant-Id",
                "value": "{{tenantId}}"
              }
            ],
            "url": {
              "raw": "{{dashboardBaseUrl}}/comm-api/api/suppressions/bulk",
              "host": [
                "{{dashboardBaseUrl}}"
              ],
              "path": [
                "comm-api",
                "api",
                "suppressions",
                "bulk"
              ]
            },
            "description": "Communications Block endpoint. Requires `X-Tenant-Id` (workspace id) plus caller auth: `Authorization: Bearer <dashboard JWT>` or `Authorization: ApiKey ak_live_...` (must own the workspace). Discover default workspace via `GET /api/comm/tenant` (returns `tenantId` + `workspaces[]`).\n\nOpenAPI: `POST /comm-api/api/suppressions/bulk`\nDocs: https://docs.motorical.com/llms.txt",
            "auth": {
              "type": "bearer",
              "bearer": [
                {
                  "key": "token",
                  "value": "{{bearerToken}}",
                  "type": "string"
                }
              ]
            },
            "body": {
              "mode": "raw",
              "raw": "{}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            }
          },
          "response": []
        },
        {
          "name": "Bulk move recipients",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json"
              },
              {
                "key": "X-Tenant-Id",
                "value": "{{tenantId}}"
              }
            ],
            "url": {
              "raw": "{{dashboardBaseUrl}}/comm-api/api/recipients/bulk-move",
              "host": [
                "{{dashboardBaseUrl}}"
              ],
              "path": [
                "comm-api",
                "api",
                "recipients",
                "bulk-move"
              ]
            },
            "description": "Communications Block endpoint. Requires `X-Tenant-Id` (workspace id) plus caller auth: `Authorization: Bearer <dashboard JWT>` or `Authorization: ApiKey ak_live_...` (must own the workspace). Discover default workspace via `GET /api/comm/tenant` (returns `tenantId` + `workspaces[]`).\n\nOpenAPI: `POST /comm-api/api/recipients/bulk-move`\nDocs: https://docs.motorical.com/llms.txt",
            "auth": {
              "type": "bearer",
              "bearer": [
                {
                  "key": "token",
                  "value": "{{bearerToken}}",
                  "type": "string"
                }
              ]
            },
            "body": {
              "mode": "raw",
              "raw": "{}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            }
          },
          "response": []
        },
        {
          "name": "Cancel a campaign",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json"
              },
              {
                "key": "X-Tenant-Id",
                "value": "{{tenantId}}"
              }
            ],
            "url": {
              "raw": "{{dashboardBaseUrl}}/comm-api/api/campaigns/{{id}}/cancel",
              "host": [
                "{{dashboardBaseUrl}}"
              ],
              "path": [
                "comm-api",
                "api",
                "campaigns",
                "{{id}}",
                "cancel"
              ]
            },
            "description": "Communications Block endpoint. Requires `X-Tenant-Id` (workspace id) plus caller auth: `Authorization: Bearer <dashboard JWT>` or `Authorization: ApiKey ak_live_...` (must own the workspace). Discover default workspace via `GET /api/comm/tenant` (returns `tenantId` + `workspaces[]`).\n\nOpenAPI: `POST /comm-api/api/campaigns/{id}/cancel`\nDocs: https://docs.motorical.com/llms.txt",
            "auth": {
              "type": "bearer",
              "bearer": [
                {
                  "key": "token",
                  "value": "{{bearerToken}}",
                  "type": "string"
                }
              ]
            },
            "body": {
              "mode": "raw",
              "raw": "{}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            }
          },
          "response": []
        },
        {
          "name": "Cleanup deleted campaigns",
          "request": {
            "method": "DELETE",
            "header": [
              {
                "key": "X-Tenant-Id",
                "value": "{{tenantId}}"
              }
            ],
            "url": {
              "raw": "{{dashboardBaseUrl}}/comm-api/api/campaigns/cleanup",
              "host": [
                "{{dashboardBaseUrl}}"
              ],
              "path": [
                "comm-api",
                "api",
                "campaigns",
                "cleanup"
              ]
            },
            "description": "Communications Block endpoint. Requires `X-Tenant-Id` (workspace id) plus caller auth: `Authorization: Bearer <dashboard JWT>` or `Authorization: ApiKey ak_live_...` (must own the workspace). Discover default workspace via `GET /api/comm/tenant` (returns `tenantId` + `workspaces[]`).\n\nOpenAPI: `DELETE /comm-api/api/campaigns/cleanup`\nDocs: https://docs.motorical.com/llms.txt",
            "auth": {
              "type": "bearer",
              "bearer": [
                {
                  "key": "token",
                  "value": "{{bearerToken}}",
                  "type": "string"
                }
              ]
            }
          },
          "response": []
        },
        {
          "name": "Cleanup deleted recipients",
          "request": {
            "method": "DELETE",
            "header": [
              {
                "key": "X-Tenant-Id",
                "value": "{{tenantId}}"
              }
            ],
            "url": {
              "raw": "{{dashboardBaseUrl}}/comm-api/api/recipients/cleanup",
              "host": [
                "{{dashboardBaseUrl}}"
              ],
              "path": [
                "comm-api",
                "api",
                "recipients",
                "cleanup"
              ]
            },
            "description": "Communications Block endpoint. Requires `X-Tenant-Id` (workspace id) plus caller auth: `Authorization: Bearer <dashboard JWT>` or `Authorization: ApiKey ak_live_...` (must own the workspace). Discover default workspace via `GET /api/comm/tenant` (returns `tenantId` + `workspaces[]`).\n\nOpenAPI: `DELETE /comm-api/api/recipients/cleanup`\nDocs: https://docs.motorical.com/llms.txt",
            "auth": {
              "type": "bearer",
              "bearer": [
                {
                  "key": "token",
                  "value": "{{bearerToken}}",
                  "type": "string"
                }
              ]
            }
          },
          "response": []
        },
        {
          "name": "Communications API health",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{dashboardBaseUrl}}/comm-api/api/health",
              "host": [
                "{{dashboardBaseUrl}}"
              ],
              "path": [
                "comm-api",
                "api",
                "health"
              ]
            },
            "description": "Communications Block endpoint.\n\nOpenAPI: `GET /comm-api/api/health`\nDocs: https://docs.motorical.com/llms.txt",
            "auth": {
              "type": "bearer",
              "bearer": [
                {
                  "key": "token",
                  "value": "{{bearerToken}}",
                  "type": "string"
                }
              ]
            }
          },
          "response": []
        },
        {
          "name": "Compile campaign content and audience",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json"
              },
              {
                "key": "X-Tenant-Id",
                "value": "{{tenantId}}"
              }
            ],
            "url": {
              "raw": "{{dashboardBaseUrl}}/comm-api/api/campaigns/{{id}}/compile",
              "host": [
                "{{dashboardBaseUrl}}"
              ],
              "path": [
                "comm-api",
                "api",
                "campaigns",
                "{{id}}",
                "compile"
              ]
            },
            "description": "Communications Block endpoint. Requires `X-Tenant-Id` (workspace id) plus caller auth: `Authorization: Bearer <dashboard JWT>` or `Authorization: ApiKey ak_live_...` (must own the workspace). Discover default workspace via `GET /api/comm/tenant` (returns `tenantId` + `workspaces[]`).\n\nOpenAPI: `POST /comm-api/api/campaigns/{id}/compile`\nDocs: https://docs.motorical.com/llms.txt",
            "auth": {
              "type": "bearer",
              "bearer": [
                {
                  "key": "token",
                  "value": "{{bearerToken}}",
                  "type": "string"
                }
              ]
            },
            "body": {
              "mode": "raw",
              "raw": "{}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            }
          },
          "response": []
        },
        {
          "name": "Create a campaign",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json"
              },
              {
                "key": "X-Tenant-Id",
                "value": "{{tenantId}}"
              }
            ],
            "url": {
              "raw": "{{dashboardBaseUrl}}/comm-api/api/campaigns",
              "host": [
                "{{dashboardBaseUrl}}"
              ],
              "path": [
                "comm-api",
                "api",
                "campaigns"
              ]
            },
            "description": "Communications Block endpoint. Requires `X-Tenant-Id` (workspace id) plus caller auth: `Authorization: Bearer <dashboard JWT>` or `Authorization: ApiKey ak_live_...` (must own the workspace). Discover default workspace via `GET /api/comm/tenant` (returns `tenantId` + `workspaces[]`).\n\nOpenAPI: `POST /comm-api/api/campaigns`\nDocs: https://docs.motorical.com/llms.txt",
            "auth": {
              "type": "bearer",
              "bearer": [
                {
                  "key": "token",
                  "value": "{{bearerToken}}",
                  "type": "string"
                }
              ]
            },
            "body": {
              "mode": "raw",
              "raw": "{}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            }
          },
          "response": []
        },
        {
          "name": "Create a Communications workspace",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json"
              },
              {
                "key": "X-Tenant-Id",
                "value": "{{tenantId}}"
              }
            ],
            "url": {
              "raw": "{{dashboardBaseUrl}}/comm-api/api/workspaces",
              "host": [
                "{{dashboardBaseUrl}}"
              ],
              "path": [
                "comm-api",
                "api",
                "workspaces"
              ]
            },
            "description": "Account-scoped Communications Block endpoint. Requires caller auth: `Authorization: Bearer <dashboard JWT>` or `Authorization: ApiKey ak_live_...`. Does not require `X-Tenant-Id`.\n\nOpenAPI: `POST /comm-api/api/workspaces`\nDocs: https://docs.motorical.com/llms.txt",
            "auth": {
              "type": "bearer",
              "bearer": [
                {
                  "key": "token",
                  "value": "{{bearerToken}}",
                  "type": "string"
                }
              ]
            },
            "body": {
              "mode": "raw",
              "raw": "{}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            }
          },
          "response": []
        },
        {
          "name": "Create a contact list",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json"
              },
              {
                "key": "X-Tenant-Id",
                "value": "{{tenantId}}"
              }
            ],
            "url": {
              "raw": "{{dashboardBaseUrl}}/comm-api/api/lists",
              "host": [
                "{{dashboardBaseUrl}}"
              ],
              "path": [
                "comm-api",
                "api",
                "lists"
              ]
            },
            "description": "Communications Block endpoint. Requires `X-Tenant-Id` (workspace id) plus caller auth: `Authorization: Bearer <dashboard JWT>` or `Authorization: ApiKey ak_live_...` (must own the workspace). Discover default workspace via `GET /api/comm/tenant` (returns `tenantId` + `workspaces[]`).\n\nOpenAPI: `POST /comm-api/api/lists`\nDocs: https://docs.motorical.com/llms.txt",
            "auth": {
              "type": "bearer",
              "bearer": [
                {
                  "key": "token",
                  "value": "{{bearerToken}}",
                  "type": "string"
                }
              ]
            },
            "body": {
              "mode": "raw",
              "raw": "{}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            }
          },
          "response": []
        },
        {
          "name": "Create a smart list from filters",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json"
              },
              {
                "key": "X-Tenant-Id",
                "value": "{{tenantId}}"
              }
            ],
            "url": {
              "raw": "{{dashboardBaseUrl}}/comm-api/api/lists/from-filter",
              "host": [
                "{{dashboardBaseUrl}}"
              ],
              "path": [
                "comm-api",
                "api",
                "lists",
                "from-filter"
              ]
            },
            "description": "Communications Block endpoint. Requires `X-Tenant-Id` (workspace id) plus caller auth: `Authorization: Bearer <dashboard JWT>` or `Authorization: ApiKey ak_live_...` (must own the workspace). Discover default workspace via `GET /api/comm/tenant` (returns `tenantId` + `workspaces[]`).\n\nOpenAPI: `POST /comm-api/api/lists/from-filter`\nDocs: https://docs.motorical.com/llms.txt",
            "auth": {
              "type": "bearer",
              "bearer": [
                {
                  "key": "token",
                  "value": "{{bearerToken}}",
                  "type": "string"
                }
              ]
            },
            "body": {
              "mode": "raw",
              "raw": "{}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            }
          },
          "response": []
        },
        {
          "name": "Create a template",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json"
              },
              {
                "key": "X-Tenant-Id",
                "value": "{{tenantId}}"
              }
            ],
            "url": {
              "raw": "{{dashboardBaseUrl}}/comm-api/api/templates",
              "host": [
                "{{dashboardBaseUrl}}"
              ],
              "path": [
                "comm-api",
                "api",
                "templates"
              ]
            },
            "description": "Communications Block endpoint. Requires `X-Tenant-Id` (workspace id) plus caller auth: `Authorization: Bearer <dashboard JWT>` or `Authorization: ApiKey ak_live_...` (must own the workspace). Discover default workspace via `GET /api/comm/tenant` (returns `tenantId` + `workspaces[]`).\n\nOpenAPI: `POST /comm-api/api/templates`\nDocs: https://docs.motorical.com/llms.txt",
            "auth": {
              "type": "bearer",
              "bearer": [
                {
                  "key": "token",
                  "value": "{{bearerToken}}",
                  "type": "string"
                }
              ]
            },
            "body": {
              "mode": "raw",
              "raw": "{}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            }
          },
          "response": []
        },
        {
          "name": "Create or update a contact",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json"
              },
              {
                "key": "X-Tenant-Id",
                "value": "{{tenantId}}"
              }
            ],
            "url": {
              "raw": "{{dashboardBaseUrl}}/comm-api/api/contacts/upsert",
              "host": [
                "{{dashboardBaseUrl}}"
              ],
              "path": [
                "comm-api",
                "api",
                "contacts",
                "upsert"
              ]
            },
            "description": "Communications Block endpoint. Requires `X-Tenant-Id` (workspace id) plus caller auth: `Authorization: Bearer <dashboard JWT>` or `Authorization: ApiKey ak_live_...` (must own the workspace). Discover default workspace via `GET /api/comm/tenant` (returns `tenantId` + `workspaces[]`).\n\nOpenAPI: `POST /comm-api/api/contacts/upsert`\nDocs: https://docs.motorical.com/llms.txt",
            "auth": {
              "type": "bearer",
              "bearer": [
                {
                  "key": "token",
                  "value": "{{bearerToken}}",
                  "type": "string"
                }
              ]
            },
            "body": {
              "mode": "raw",
              "raw": "{}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            }
          },
          "response": []
        },
        {
          "name": "Delete a campaign",
          "request": {
            "method": "DELETE",
            "header": [
              {
                "key": "X-Tenant-Id",
                "value": "{{tenantId}}"
              }
            ],
            "url": {
              "raw": "{{dashboardBaseUrl}}/comm-api/api/campaigns/{{id}}",
              "host": [
                "{{dashboardBaseUrl}}"
              ],
              "path": [
                "comm-api",
                "api",
                "campaigns",
                "{{id}}"
              ]
            },
            "description": "Communications Block endpoint. Requires `X-Tenant-Id` (workspace id) plus caller auth: `Authorization: Bearer <dashboard JWT>` or `Authorization: ApiKey ak_live_...` (must own the workspace). Discover default workspace via `GET /api/comm/tenant` (returns `tenantId` + `workspaces[]`).\n\nOpenAPI: `DELETE /comm-api/api/campaigns/{id}`\nDocs: https://docs.motorical.com/llms.txt",
            "auth": {
              "type": "bearer",
              "bearer": [
                {
                  "key": "token",
                  "value": "{{bearerToken}}",
                  "type": "string"
                }
              ]
            }
          },
          "response": []
        },
        {
          "name": "Delete a contact",
          "request": {
            "method": "DELETE",
            "header": [
              {
                "key": "X-Tenant-Id",
                "value": "{{tenantId}}"
              }
            ],
            "url": {
              "raw": "{{dashboardBaseUrl}}/comm-api/api/contacts/{{id}}",
              "host": [
                "{{dashboardBaseUrl}}"
              ],
              "path": [
                "comm-api",
                "api",
                "contacts",
                "{{id}}"
              ]
            },
            "description": "Communications Block endpoint. Requires `X-Tenant-Id` (workspace id) plus caller auth: `Authorization: Bearer <dashboard JWT>` or `Authorization: ApiKey ak_live_...` (must own the workspace). Discover default workspace via `GET /api/comm/tenant` (returns `tenantId` + `workspaces[]`).\n\nOpenAPI: `DELETE /comm-api/api/contacts/{id}`\nDocs: https://docs.motorical.com/llms.txt",
            "auth": {
              "type": "bearer",
              "bearer": [
                {
                  "key": "token",
                  "value": "{{bearerToken}}",
                  "type": "string"
                }
              ]
            }
          },
          "response": []
        },
        {
          "name": "Delete a contact list",
          "request": {
            "method": "DELETE",
            "header": [
              {
                "key": "X-Tenant-Id",
                "value": "{{tenantId}}"
              }
            ],
            "url": {
              "raw": "{{dashboardBaseUrl}}/comm-api/api/lists/{{id}}",
              "host": [
                "{{dashboardBaseUrl}}"
              ],
              "path": [
                "comm-api",
                "api",
                "lists",
                "{{id}}"
              ]
            },
            "description": "Communications Block endpoint. Requires `X-Tenant-Id` (workspace id) plus caller auth: `Authorization: Bearer <dashboard JWT>` or `Authorization: ApiKey ak_live_...` (must own the workspace). Discover default workspace via `GET /api/comm/tenant` (returns `tenantId` + `workspaces[]`).\n\nOpenAPI: `DELETE /comm-api/api/lists/{id}`\nDocs: https://docs.motorical.com/llms.txt",
            "auth": {
              "type": "bearer",
              "bearer": [
                {
                  "key": "token",
                  "value": "{{bearerToken}}",
                  "type": "string"
                }
              ]
            }
          },
          "response": []
        },
        {
          "name": "Delete a template",
          "request": {
            "method": "DELETE",
            "header": [
              {
                "key": "X-Tenant-Id",
                "value": "{{tenantId}}"
              }
            ],
            "url": {
              "raw": "{{dashboardBaseUrl}}/comm-api/api/templates/{{id}}",
              "host": [
                "{{dashboardBaseUrl}}"
              ],
              "path": [
                "comm-api",
                "api",
                "templates",
                "{{id}}"
              ]
            },
            "description": "Communications Block endpoint. Requires `X-Tenant-Id` (workspace id) plus caller auth: `Authorization: Bearer <dashboard JWT>` or `Authorization: ApiKey ak_live_...` (must own the workspace). Discover default workspace via `GET /api/comm/tenant` (returns `tenantId` + `workspaces[]`).\n\nOpenAPI: `DELETE /comm-api/api/templates/{id}`\nDocs: https://docs.motorical.com/llms.txt",
            "auth": {
              "type": "bearer",
              "bearer": [
                {
                  "key": "token",
                  "value": "{{bearerToken}}",
                  "type": "string"
                }
              ]
            }
          },
          "response": []
        },
        {
          "name": "Discover or provision Communications workspaces",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{apiBaseUrl}}/api/comm/tenant",
              "host": [
                "{{apiBaseUrl}}"
              ],
              "path": [
                "api",
                "comm",
                "tenant"
              ]
            },
            "description": "Account-scoped Communications Block endpoint. Requires caller auth: `Authorization: Bearer <dashboard JWT>` or `Authorization: ApiKey ak_live_...`. Does not require `X-Tenant-Id`.\n\nOpenAPI: `GET /api/comm/tenant`\nDocs: https://docs.motorical.com/llms.txt",
            "auth": {
              "type": "noauth"
            }
          },
          "response": []
        },
        {
          "name": "Export GDPR data",
          "request": {
            "method": "GET",
            "header": [
              {
                "key": "X-Tenant-Id",
                "value": "{{tenantId}}"
              }
            ],
            "url": {
              "raw": "{{dashboardBaseUrl}}/comm-api/api/gdpr/export",
              "host": [
                "{{dashboardBaseUrl}}"
              ],
              "path": [
                "comm-api",
                "api",
                "gdpr",
                "export"
              ]
            },
            "description": "Communications Block endpoint. Requires `X-Tenant-Id` (workspace id) plus caller auth: `Authorization: Bearer <dashboard JWT>` or `Authorization: ApiKey ak_live_...` (must own the workspace). Discover default workspace via `GET /api/comm/tenant` (returns `tenantId` + `workspaces[]`).\n\nOpenAPI: `GET /comm-api/api/gdpr/export`\nDocs: https://docs.motorical.com/llms.txt",
            "auth": {
              "type": "bearer",
              "bearer": [
                {
                  "key": "token",
                  "value": "{{bearerToken}}",
                  "type": "string"
                }
              ]
            }
          },
          "response": []
        },
        {
          "name": "Export list contacts",
          "request": {
            "method": "GET",
            "header": [
              {
                "key": "X-Tenant-Id",
                "value": "{{tenantId}}"
              }
            ],
            "url": {
              "raw": "{{dashboardBaseUrl}}/comm-api/api/lists/{{id}}/contacts/export",
              "host": [
                "{{dashboardBaseUrl}}"
              ],
              "path": [
                "comm-api",
                "api",
                "lists",
                "{{id}}",
                "contacts",
                "export"
              ]
            },
            "description": "Communications Block endpoint. Requires `X-Tenant-Id` (workspace id) plus caller auth: `Authorization: Bearer <dashboard JWT>` or `Authorization: ApiKey ak_live_...` (must own the workspace). Discover default workspace via `GET /api/comm/tenant` (returns `tenantId` + `workspaces[]`).\n\nOpenAPI: `GET /comm-api/api/lists/{id}/contacts/export`\nDocs: https://docs.motorical.com/llms.txt",
            "auth": {
              "type": "bearer",
              "bearer": [
                {
                  "key": "token",
                  "value": "{{bearerToken}}",
                  "type": "string"
                }
              ]
            }
          },
          "response": []
        },
        {
          "name": "Export recipients",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json"
              },
              {
                "key": "X-Tenant-Id",
                "value": "{{tenantId}}"
              }
            ],
            "url": {
              "raw": "{{dashboardBaseUrl}}/comm-api/api/recipients/export",
              "host": [
                "{{dashboardBaseUrl}}"
              ],
              "path": [
                "comm-api",
                "api",
                "recipients",
                "export"
              ]
            },
            "description": "Communications Block endpoint. Requires `X-Tenant-Id` (workspace id) plus caller auth: `Authorization: Bearer <dashboard JWT>` or `Authorization: ApiKey ak_live_...` (must own the workspace). Discover default workspace via `GET /api/comm/tenant` (returns `tenantId` + `workspaces[]`).\n\nOpenAPI: `POST /comm-api/api/recipients/export`\nDocs: https://docs.motorical.com/llms.txt",
            "auth": {
              "type": "bearer",
              "bearer": [
                {
                  "key": "token",
                  "value": "{{bearerToken}}",
                  "type": "string"
                }
              ]
            },
            "body": {
              "mode": "raw",
              "raw": "{}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            }
          },
          "response": []
        },
        {
          "name": "Export tracking events",
          "request": {
            "method": "GET",
            "header": [
              {
                "key": "X-Tenant-Id",
                "value": "{{tenantId}}"
              }
            ],
            "url": {
              "raw": "{{dashboardBaseUrl}}/comm-api/api/tracking/export",
              "host": [
                "{{dashboardBaseUrl}}"
              ],
              "path": [
                "comm-api",
                "api",
                "tracking",
                "export"
              ],
              "query": [
                {
                  "key": "event_type",
                  "value": "",
                  "description": "Comma-separated event types, such as opened,clicked.",
                  "disabled": true
                },
                {
                  "key": "campaign_id",
                  "value": "",
                  "description": "Comma-separated campaign UUIDs.",
                  "disabled": true
                },
                {
                  "key": "contact_email",
                  "value": "",
                  "description": "",
                  "disabled": true
                },
                {
                  "key": "date_from",
                  "value": "",
                  "description": "",
                  "disabled": true
                },
                {
                  "key": "date_to",
                  "value": "",
                  "description": "",
                  "disabled": true
                },
                {
                  "key": "view",
                  "value": "",
                  "description": "Defaults to chronological (the raw per-event timeline, unchanged). recipient collapses each campaign recipient to one row at their furthest send-funnel stage (queued, sent, delivered-or-bounced, opened, clicked). complained and unsubscribed are reported as independent flags rather than funnel stages, since a recipient can carry either at any stage -- they never compete with or hide the funnel stage they occurred at. In recipient view, event_type filters on the winning stage (or the flag) rather than on raw per-event rows.",
                  "disabled": true
                }
              ]
            },
            "description": "Communications Block endpoint. Requires `X-Tenant-Id` (workspace id) plus caller auth: `Authorization: Bearer <dashboard JWT>` or `Authorization: ApiKey ak_live_...` (must own the workspace). Discover default workspace via `GET /api/comm/tenant` (returns `tenantId` + `workspaces[]`). Tracking events, summary counts, and CSV export share these filters and hide queued lifecycle rows superseded by a later outcome.\n\nOpenAPI: `GET /comm-api/api/tracking/export`\nDocs: https://docs.motorical.com/llms.txt",
            "auth": {
              "type": "bearer",
              "bearer": [
                {
                  "key": "token",
                  "value": "{{bearerToken}}",
                  "type": "string"
                }
              ]
            }
          },
          "response": []
        },
        {
          "name": "Filter recipients",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json"
              },
              {
                "key": "X-Tenant-Id",
                "value": "{{tenantId}}"
              }
            ],
            "url": {
              "raw": "{{dashboardBaseUrl}}/comm-api/api/recipients/filter",
              "host": [
                "{{dashboardBaseUrl}}"
              ],
              "path": [
                "comm-api",
                "api",
                "recipients",
                "filter"
              ]
            },
            "description": "Communications Block endpoint. Requires `X-Tenant-Id` (workspace id) plus caller auth: `Authorization: Bearer <dashboard JWT>` or `Authorization: ApiKey ak_live_...` (must own the workspace). Discover default workspace via `GET /api/comm/tenant` (returns `tenantId` + `workspaces[]`).\n\nOpenAPI: `POST /comm-api/api/recipients/filter`\nDocs: https://docs.motorical.com/llms.txt",
            "auth": {
              "type": "bearer",
              "bearer": [
                {
                  "key": "token",
                  "value": "{{bearerToken}}",
                  "type": "string"
                }
              ]
            },
            "body": {
              "mode": "raw",
              "raw": "{}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            }
          },
          "response": []
        },
        {
          "name": "Get a template",
          "request": {
            "method": "GET",
            "header": [
              {
                "key": "X-Tenant-Id",
                "value": "{{tenantId}}"
              }
            ],
            "url": {
              "raw": "{{dashboardBaseUrl}}/comm-api/api/templates/{{id}}",
              "host": [
                "{{dashboardBaseUrl}}"
              ],
              "path": [
                "comm-api",
                "api",
                "templates",
                "{{id}}"
              ]
            },
            "description": "Communications Block endpoint. Requires `X-Tenant-Id` (workspace id) plus caller auth: `Authorization: Bearer <dashboard JWT>` or `Authorization: ApiKey ak_live_...` (must own the workspace). Discover default workspace via `GET /api/comm/tenant` (returns `tenantId` + `workspaces[]`).\n\nOpenAPI: `GET /comm-api/api/templates/{id}`\nDocs: https://docs.motorical.com/llms.txt",
            "auth": {
              "type": "bearer",
              "bearer": [
                {
                  "key": "token",
                  "value": "{{bearerToken}}",
                  "type": "string"
                }
              ]
            }
          },
          "response": []
        },
        {
          "name": "Get campaign analytics",
          "request": {
            "method": "GET",
            "header": [
              {
                "key": "X-Tenant-Id",
                "value": "{{tenantId}}"
              }
            ],
            "url": {
              "raw": "{{dashboardBaseUrl}}/comm-api/api/campaigns/{{id}}/analytics",
              "host": [
                "{{dashboardBaseUrl}}"
              ],
              "path": [
                "comm-api",
                "api",
                "campaigns",
                "{{id}}",
                "analytics"
              ]
            },
            "description": "Communications Block endpoint. Requires `X-Tenant-Id` (workspace id) plus caller auth: `Authorization: Bearer <dashboard JWT>` or `Authorization: ApiKey ak_live_...` (must own the workspace). Discover default workspace via `GET /api/comm/tenant` (returns `tenantId` + `workspaces[]`).\n\nOpenAPI: `GET /comm-api/api/campaigns/{id}/analytics`\nDocs: https://docs.motorical.com/llms.txt",
            "auth": {
              "type": "bearer",
              "bearer": [
                {
                  "key": "token",
                  "value": "{{bearerToken}}",
                  "type": "string"
                }
              ]
            }
          },
          "response": []
        },
        {
          "name": "Get campaign details",
          "request": {
            "method": "GET",
            "header": [
              {
                "key": "X-Tenant-Id",
                "value": "{{tenantId}}"
              }
            ],
            "url": {
              "raw": "{{dashboardBaseUrl}}/comm-api/api/campaigns/{{id}}",
              "host": [
                "{{dashboardBaseUrl}}"
              ],
              "path": [
                "comm-api",
                "api",
                "campaigns",
                "{{id}}"
              ]
            },
            "description": "Communications Block endpoint. Requires `X-Tenant-Id` (workspace id) plus caller auth: `Authorization: Bearer <dashboard JWT>` or `Authorization: ApiKey ak_live_...` (must own the workspace). Discover default workspace via `GET /api/comm/tenant` (returns `tenantId` + `workspaces[]`).\n\nOpenAPI: `GET /comm-api/api/campaigns/{id}`\nDocs: https://docs.motorical.com/llms.txt",
            "auth": {
              "type": "bearer",
              "bearer": [
                {
                  "key": "token",
                  "value": "{{bearerToken}}",
                  "type": "string"
                }
              ]
            }
          },
          "response": []
        },
        {
          "name": "Get campaign recipient consent status",
          "request": {
            "method": "GET",
            "header": [
              {
                "key": "X-Tenant-Id",
                "value": "{{tenantId}}"
              }
            ],
            "url": {
              "raw": "{{dashboardBaseUrl}}/comm-api/api/campaigns/{{id}}/recipient-consent",
              "host": [
                "{{dashboardBaseUrl}}"
              ],
              "path": [
                "comm-api",
                "api",
                "campaigns",
                "{{id}}",
                "recipient-consent"
              ]
            },
            "description": "Communications Block endpoint. Requires `X-Tenant-Id` (workspace id) plus caller auth: `Authorization: Bearer <dashboard JWT>` or `Authorization: ApiKey ak_live_...` (must own the workspace). Discover default workspace via `GET /api/comm/tenant` (returns `tenantId` + `workspaces[]`).\n\nOpenAPI: `GET /comm-api/api/campaigns/{id}/recipient-consent`\nDocs: https://docs.motorical.com/llms.txt",
            "auth": {
              "type": "bearer",
              "bearer": [
                {
                  "key": "token",
                  "value": "{{bearerToken}}",
                  "type": "string"
                }
              ]
            }
          },
          "response": []
        },
        {
          "name": "Get campaign stats",
          "request": {
            "method": "GET",
            "header": [
              {
                "key": "X-Tenant-Id",
                "value": "{{tenantId}}"
              }
            ],
            "url": {
              "raw": "{{dashboardBaseUrl}}/comm-api/api/campaigns/{{id}}/stats",
              "host": [
                "{{dashboardBaseUrl}}"
              ],
              "path": [
                "comm-api",
                "api",
                "campaigns",
                "{{id}}",
                "stats"
              ]
            },
            "description": "Communications Block endpoint. Requires `X-Tenant-Id` (workspace id) plus caller auth: `Authorization: Bearer <dashboard JWT>` or `Authorization: ApiKey ak_live_...` (must own the workspace). Discover default workspace via `GET /api/comm/tenant` (returns `tenantId` + `workspaces[]`).\n\nOpenAPI: `GET /comm-api/api/campaigns/{id}/stats`\nDocs: https://docs.motorical.com/llms.txt",
            "auth": {
              "type": "bearer",
              "bearer": [
                {
                  "key": "token",
                  "value": "{{bearerToken}}",
                  "type": "string"
                }
              ]
            }
          },
          "response": []
        },
        {
          "name": "Get click breakdown",
          "request": {
            "method": "GET",
            "header": [
              {
                "key": "X-Tenant-Id",
                "value": "{{tenantId}}"
              }
            ],
            "url": {
              "raw": "{{dashboardBaseUrl}}/comm-api/api/campaigns/{{id}}/click-breakdown",
              "host": [
                "{{dashboardBaseUrl}}"
              ],
              "path": [
                "comm-api",
                "api",
                "campaigns",
                "{{id}}",
                "click-breakdown"
              ]
            },
            "description": "Communications Block endpoint. Requires `X-Tenant-Id` (workspace id) plus caller auth: `Authorization: Bearer <dashboard JWT>` or `Authorization: ApiKey ak_live_...` (must own the workspace). Discover default workspace via `GET /api/comm/tenant` (returns `tenantId` + `workspaces[]`).\n\nOpenAPI: `GET /comm-api/api/campaigns/{id}/click-breakdown`\nDocs: https://docs.motorical.com/llms.txt",
            "auth": {
              "type": "bearer",
              "bearer": [
                {
                  "key": "token",
                  "value": "{{bearerToken}}",
                  "type": "string"
                }
              ]
            }
          },
          "response": []
        },
        {
          "name": "Get Communications analytics overview",
          "request": {
            "method": "GET",
            "header": [
              {
                "key": "X-Tenant-Id",
                "value": "{{tenantId}}"
              }
            ],
            "url": {
              "raw": "{{dashboardBaseUrl}}/comm-api/api/analytics/overview",
              "host": [
                "{{dashboardBaseUrl}}"
              ],
              "path": [
                "comm-api",
                "api",
                "analytics",
                "overview"
              ]
            },
            "description": "Communications Block endpoint. Requires `X-Tenant-Id` (workspace id) plus caller auth: `Authorization: Bearer <dashboard JWT>` or `Authorization: ApiKey ak_live_...` (must own the workspace). Discover default workspace via `GET /api/comm/tenant` (returns `tenantId` + `workspaces[]`).\n\nOpenAPI: `GET /comm-api/api/analytics/overview`\nDocs: https://docs.motorical.com/llms.txt",
            "auth": {
              "type": "bearer",
              "bearer": [
                {
                  "key": "token",
                  "value": "{{bearerToken}}",
                  "type": "string"
                }
              ]
            }
          },
          "response": []
        },
        {
          "name": "Get consent-event analytics",
          "request": {
            "method": "GET",
            "header": [
              {
                "key": "X-Tenant-Id",
                "value": "{{tenantId}}"
              }
            ],
            "url": {
              "raw": "{{dashboardBaseUrl}}/comm-api/api/consent-events/analytics",
              "host": [
                "{{dashboardBaseUrl}}"
              ],
              "path": [
                "comm-api",
                "api",
                "consent-events",
                "analytics"
              ]
            },
            "description": "Communications Block endpoint. Requires `X-Tenant-Id` (workspace id) plus caller auth: `Authorization: Bearer <dashboard JWT>` or `Authorization: ApiKey ak_live_...` (must own the workspace). Discover default workspace via `GET /api/comm/tenant` (returns `tenantId` + `workspaces[]`).\n\nOpenAPI: `GET /comm-api/api/consent-events/analytics`\nDocs: https://docs.motorical.com/llms.txt",
            "auth": {
              "type": "bearer",
              "bearer": [
                {
                  "key": "token",
                  "value": "{{bearerToken}}",
                  "type": "string"
                }
              ]
            }
          },
          "response": []
        },
        {
          "name": "Get current workspace consent settings",
          "request": {
            "method": "GET",
            "header": [
              {
                "key": "X-Tenant-Id",
                "value": "{{tenantId}}"
              }
            ],
            "url": {
              "raw": "{{dashboardBaseUrl}}/comm-api/api/settings/consent",
              "host": [
                "{{dashboardBaseUrl}}"
              ],
              "path": [
                "comm-api",
                "api",
                "settings",
                "consent"
              ]
            },
            "description": "Communications Block endpoint. Requires `X-Tenant-Id` (workspace id) plus caller auth: `Authorization: Bearer <dashboard JWT>` or `Authorization: ApiKey ak_live_...` (must own the workspace). Discover default workspace via `GET /api/comm/tenant` (returns `tenantId` + `workspaces[]`).\n\nOpenAPI: `GET /comm-api/api/settings/consent`\nDocs: https://docs.motorical.com/llms.txt",
            "auth": {
              "type": "bearer",
              "bearer": [
                {
                  "key": "token",
                  "value": "{{bearerToken}}",
                  "type": "string"
                }
              ]
            }
          },
          "response": []
        },
        {
          "name": "Get current workspace open-tracking settings",
          "request": {
            "method": "GET",
            "header": [
              {
                "key": "X-Tenant-Id",
                "value": "{{tenantId}}"
              }
            ],
            "url": {
              "raw": "{{dashboardBaseUrl}}/comm-api/api/settings/open-tracking",
              "host": [
                "{{dashboardBaseUrl}}"
              ],
              "path": [
                "comm-api",
                "api",
                "settings",
                "open-tracking"
              ]
            },
            "description": "Communications Block endpoint. Requires `X-Tenant-Id` (workspace id) plus caller auth: `Authorization: Bearer <dashboard JWT>` or `Authorization: ApiKey ak_live_...` (must own the workspace). Discover default workspace via `GET /api/comm/tenant` (returns `tenantId` + `workspaces[]`).\n\nOpenAPI: `GET /comm-api/api/settings/open-tracking`\nDocs: https://docs.motorical.com/llms.txt",
            "auth": {
              "type": "bearer",
              "bearer": [
                {
                  "key": "token",
                  "value": "{{bearerToken}}",
                  "type": "string"
                }
              ]
            }
          },
          "response": []
        },
        {
          "name": "Get suppression stats",
          "request": {
            "method": "GET",
            "header": [
              {
                "key": "X-Tenant-Id",
                "value": "{{tenantId}}"
              }
            ],
            "url": {
              "raw": "{{dashboardBaseUrl}}/comm-api/api/suppressions/stats",
              "host": [
                "{{dashboardBaseUrl}}"
              ],
              "path": [
                "comm-api",
                "api",
                "suppressions",
                "stats"
              ]
            },
            "description": "Communications Block endpoint. Requires `X-Tenant-Id` (workspace id) plus caller auth: `Authorization: Bearer <dashboard JWT>` or `Authorization: ApiKey ak_live_...` (must own the workspace). Discover default workspace via `GET /api/comm/tenant` (returns `tenantId` + `workspaces[]`).\n\nOpenAPI: `GET /comm-api/api/suppressions/stats`\nDocs: https://docs.motorical.com/llms.txt",
            "auth": {
              "type": "bearer",
              "bearer": [
                {
                  "key": "token",
                  "value": "{{bearerToken}}",
                  "type": "string"
                }
              ]
            }
          },
          "response": []
        },
        {
          "name": "Get tracking stats",
          "request": {
            "method": "GET",
            "header": [
              {
                "key": "X-Tenant-Id",
                "value": "{{tenantId}}"
              }
            ],
            "url": {
              "raw": "{{dashboardBaseUrl}}/comm-api/api/tracking/stats",
              "host": [
                "{{dashboardBaseUrl}}"
              ],
              "path": [
                "comm-api",
                "api",
                "tracking",
                "stats"
              ],
              "query": [
                {
                  "key": "event_type",
                  "value": "",
                  "description": "Comma-separated event types, such as opened,clicked.",
                  "disabled": true
                },
                {
                  "key": "campaign_id",
                  "value": "",
                  "description": "Comma-separated campaign UUIDs.",
                  "disabled": true
                },
                {
                  "key": "contact_email",
                  "value": "",
                  "description": "",
                  "disabled": true
                },
                {
                  "key": "date_from",
                  "value": "",
                  "description": "",
                  "disabled": true
                },
                {
                  "key": "date_to",
                  "value": "",
                  "description": "",
                  "disabled": true
                },
                {
                  "key": "view",
                  "value": "",
                  "description": "Defaults to chronological (the raw per-event timeline, unchanged). recipient collapses each campaign recipient to one row at their furthest send-funnel stage (queued, sent, delivered-or-bounced, opened, clicked). complained and unsubscribed are reported as independent flags rather than funnel stages, since a recipient can carry either at any stage -- they never compete with or hide the funnel stage they occurred at. In recipient view, event_type filters on the winning stage (or the flag) rather than on raw per-event rows.",
                  "disabled": true
                },
                {
                  "key": "days",
                  "value": "",
                  "description": "Optional rolling-day window. When omitted with no date_from, the summary covers all visible events.",
                  "disabled": true
                }
              ]
            },
            "description": "Communications Block endpoint. Requires `X-Tenant-Id` (workspace id) plus caller auth: `Authorization: Bearer <dashboard JWT>` or `Authorization: ApiKey ak_live_...` (must own the workspace). Discover default workspace via `GET /api/comm/tenant` (returns `tenantId` + `workspaces[]`). Tracking events, summary counts, and CSV export share these filters and hide queued lifecycle rows superseded by a later outcome. The total and by_type values describe the same visible population returned by the tracking events endpoint. In recipient view, the response instead carries by_status (the non-overlapping funnel breakdown, one recipient per stage), plus separate complained and unsubscribed counts.\n\nOpenAPI: `GET /comm-api/api/tracking/stats`\nDocs: https://docs.motorical.com/llms.txt",
            "auth": {
              "type": "bearer",
              "bearer": [
                {
                  "key": "token",
                  "value": "{{bearerToken}}",
                  "type": "string"
                }
              ]
            }
          },
          "response": []
        },
        {
          "name": "Get unsubscribe analytics",
          "request": {
            "method": "GET",
            "header": [
              {
                "key": "X-Tenant-Id",
                "value": "{{tenantId}}"
              }
            ],
            "url": {
              "raw": "{{dashboardBaseUrl}}/comm-api/api/unsubscribe-analytics",
              "host": [
                "{{dashboardBaseUrl}}"
              ],
              "path": [
                "comm-api",
                "api",
                "unsubscribe-analytics"
              ]
            },
            "description": "Communications Block endpoint. Requires `X-Tenant-Id` (workspace id) plus caller auth: `Authorization: Bearer <dashboard JWT>` or `Authorization: ApiKey ak_live_...` (must own the workspace). Discover default workspace via `GET /api/comm/tenant` (returns `tenantId` + `workspaces[]`).\n\nOpenAPI: `GET /comm-api/api/unsubscribe-analytics`\nDocs: https://docs.motorical.com/llms.txt",
            "auth": {
              "type": "bearer",
              "bearer": [
                {
                  "key": "token",
                  "value": "{{bearerToken}}",
                  "type": "string"
                }
              ]
            }
          },
          "response": []
        },
        {
          "name": "Get unsubscribe trends",
          "request": {
            "method": "GET",
            "header": [
              {
                "key": "X-Tenant-Id",
                "value": "{{tenantId}}"
              }
            ],
            "url": {
              "raw": "{{dashboardBaseUrl}}/comm-api/api/unsubscribe-trends",
              "host": [
                "{{dashboardBaseUrl}}"
              ],
              "path": [
                "comm-api",
                "api",
                "unsubscribe-trends"
              ]
            },
            "description": "Communications Block endpoint. Requires `X-Tenant-Id` (workspace id) plus caller auth: `Authorization: Bearer <dashboard JWT>` or `Authorization: ApiKey ak_live_...` (must own the workspace). Discover default workspace via `GET /api/comm/tenant` (returns `tenantId` + `workspaces[]`).\n\nOpenAPI: `GET /comm-api/api/unsubscribe-trends`\nDocs: https://docs.motorical.com/llms.txt",
            "auth": {
              "type": "bearer",
              "bearer": [
                {
                  "key": "token",
                  "value": "{{bearerToken}}",
                  "type": "string"
                }
              ]
            }
          },
          "response": []
        },
        {
          "name": "Get workspace consent settings",
          "request": {
            "method": "GET",
            "header": [
              {
                "key": "X-Tenant-Id",
                "value": "{{tenantId}}"
              }
            ],
            "url": {
              "raw": "{{dashboardBaseUrl}}/comm-api/api/workspaces/{{id}}/settings/consent",
              "host": [
                "{{dashboardBaseUrl}}"
              ],
              "path": [
                "comm-api",
                "api",
                "workspaces",
                "{{id}}",
                "settings",
                "consent"
              ]
            },
            "description": "Account-scoped Communications Block endpoint. Requires caller auth: `Authorization: Bearer <dashboard JWT>` or `Authorization: ApiKey ak_live_...`. Does not require `X-Tenant-Id`.\n\nOpenAPI: `GET /comm-api/api/workspaces/{id}/settings/consent`\nDocs: https://docs.motorical.com/llms.txt",
            "auth": {
              "type": "bearer",
              "bearer": [
                {
                  "key": "token",
                  "value": "{{bearerToken}}",
                  "type": "string"
                }
              ]
            }
          },
          "response": []
        },
        {
          "name": "Get workspace open-tracking settings",
          "request": {
            "method": "GET",
            "header": [
              {
                "key": "X-Tenant-Id",
                "value": "{{tenantId}}"
              }
            ],
            "url": {
              "raw": "{{dashboardBaseUrl}}/comm-api/api/workspaces/{{id}}/settings/open-tracking",
              "host": [
                "{{dashboardBaseUrl}}"
              ],
              "path": [
                "comm-api",
                "api",
                "workspaces",
                "{{id}}",
                "settings",
                "open-tracking"
              ]
            },
            "description": "Account-scoped Communications Block endpoint. Requires caller auth: `Authorization: Bearer <dashboard JWT>` or `Authorization: ApiKey ak_live_...`. Does not require `X-Tenant-Id`.\n\nOpenAPI: `GET /comm-api/api/workspaces/{id}/settings/open-tracking`\nDocs: https://docs.motorical.com/llms.txt",
            "auth": {
              "type": "bearer",
              "bearer": [
                {
                  "key": "token",
                  "value": "{{bearerToken}}",
                  "type": "string"
                }
              ]
            }
          },
          "response": []
        },
        {
          "name": "Import bounces into suppressions",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json"
              },
              {
                "key": "X-Tenant-Id",
                "value": "{{tenantId}}"
              }
            ],
            "url": {
              "raw": "{{dashboardBaseUrl}}/comm-api/api/suppressions/import-bounces",
              "host": [
                "{{dashboardBaseUrl}}"
              ],
              "path": [
                "comm-api",
                "api",
                "suppressions",
                "import-bounces"
              ]
            },
            "description": "Communications Block endpoint. Requires `X-Tenant-Id` (workspace id) plus caller auth: `Authorization: Bearer <dashboard JWT>` or `Authorization: ApiKey ak_live_...` (must own the workspace). Discover default workspace via `GET /api/comm/tenant` (returns `tenantId` + `workspaces[]`).\n\nOpenAPI: `POST /comm-api/api/suppressions/import-bounces`\nDocs: https://docs.motorical.com/llms.txt",
            "auth": {
              "type": "bearer",
              "bearer": [
                {
                  "key": "token",
                  "value": "{{bearerToken}}",
                  "type": "string"
                }
              ]
            },
            "body": {
              "mode": "raw",
              "raw": "{}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            }
          },
          "response": []
        },
        {
          "name": "Import list contacts from CSV",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json"
              },
              {
                "key": "X-Tenant-Id",
                "value": "{{tenantId}}"
              }
            ],
            "url": {
              "raw": "{{dashboardBaseUrl}}/comm-api/api/lists/{{id}}/contacts/import",
              "host": [
                "{{dashboardBaseUrl}}"
              ],
              "path": [
                "comm-api",
                "api",
                "lists",
                "{{id}}",
                "contacts",
                "import"
              ]
            },
            "description": "Communications Block endpoint. Requires `X-Tenant-Id` (workspace id) plus caller auth: `Authorization: Bearer <dashboard JWT>` or `Authorization: ApiKey ak_live_...` (must own the workspace). Discover default workspace via `GET /api/comm/tenant` (returns `tenantId` + `workspaces[]`).\n\nOpenAPI: `POST /comm-api/api/lists/{id}/contacts/import`\nDocs: https://docs.motorical.com/llms.txt",
            "auth": {
              "type": "bearer",
              "bearer": [
                {
                  "key": "token",
                  "value": "{{bearerToken}}",
                  "type": "string"
                }
              ]
            },
            "body": {
              "mode": "raw",
              "raw": "{}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            }
          },
          "response": []
        },
        {
          "name": "List campaign clicks",
          "request": {
            "method": "GET",
            "header": [
              {
                "key": "X-Tenant-Id",
                "value": "{{tenantId}}"
              }
            ],
            "url": {
              "raw": "{{dashboardBaseUrl}}/comm-api/api/campaigns/{{id}}/clicks",
              "host": [
                "{{dashboardBaseUrl}}"
              ],
              "path": [
                "comm-api",
                "api",
                "campaigns",
                "{{id}}",
                "clicks"
              ]
            },
            "description": "Communications Block endpoint. Requires `X-Tenant-Id` (workspace id) plus caller auth: `Authorization: Bearer <dashboard JWT>` or `Authorization: ApiKey ak_live_...` (must own the workspace). Discover default workspace via `GET /api/comm/tenant` (returns `tenantId` + `workspaces[]`).\n\nOpenAPI: `GET /comm-api/api/campaigns/{id}/clicks`\nDocs: https://docs.motorical.com/llms.txt",
            "auth": {
              "type": "bearer",
              "bearer": [
                {
                  "key": "token",
                  "value": "{{bearerToken}}",
                  "type": "string"
                }
              ]
            }
          },
          "response": []
        },
        {
          "name": "List campaign events",
          "request": {
            "method": "GET",
            "header": [
              {
                "key": "X-Tenant-Id",
                "value": "{{tenantId}}"
              }
            ],
            "url": {
              "raw": "{{dashboardBaseUrl}}/comm-api/api/campaigns/{{id}}/events",
              "host": [
                "{{dashboardBaseUrl}}"
              ],
              "path": [
                "comm-api",
                "api",
                "campaigns",
                "{{id}}",
                "events"
              ]
            },
            "description": "Communications Block endpoint. Requires `X-Tenant-Id` (workspace id) plus caller auth: `Authorization: Bearer <dashboard JWT>` or `Authorization: ApiKey ak_live_...` (must own the workspace). Discover default workspace via `GET /api/comm/tenant` (returns `tenantId` + `workspaces[]`).\n\nOpenAPI: `GET /comm-api/api/campaigns/{id}/events`\nDocs: https://docs.motorical.com/llms.txt",
            "auth": {
              "type": "bearer",
              "bearer": [
                {
                  "key": "token",
                  "value": "{{bearerToken}}",
                  "type": "string"
                }
              ]
            }
          },
          "response": []
        },
        {
          "name": "List campaign recipients",
          "request": {
            "method": "GET",
            "header": [
              {
                "key": "X-Tenant-Id",
                "value": "{{tenantId}}"
              }
            ],
            "url": {
              "raw": "{{dashboardBaseUrl}}/comm-api/api/campaigns/{{id}}/recipients",
              "host": [
                "{{dashboardBaseUrl}}"
              ],
              "path": [
                "comm-api",
                "api",
                "campaigns",
                "{{id}}",
                "recipients"
              ]
            },
            "description": "Communications Block endpoint. Requires `X-Tenant-Id` (workspace id) plus caller auth: `Authorization: Bearer <dashboard JWT>` or `Authorization: ApiKey ak_live_...` (must own the workspace). Discover default workspace via `GET /api/comm/tenant` (returns `tenantId` + `workspaces[]`).\n\nOpenAPI: `GET /comm-api/api/campaigns/{id}/recipients`\nDocs: https://docs.motorical.com/llms.txt",
            "auth": {
              "type": "bearer",
              "bearer": [
                {
                  "key": "token",
                  "value": "{{bearerToken}}",
                  "type": "string"
                }
              ]
            }
          },
          "response": []
        },
        {
          "name": "List campaigns",
          "request": {
            "method": "GET",
            "header": [
              {
                "key": "X-Tenant-Id",
                "value": "{{tenantId}}"
              }
            ],
            "url": {
              "raw": "{{dashboardBaseUrl}}/comm-api/api/campaigns",
              "host": [
                "{{dashboardBaseUrl}}"
              ],
              "path": [
                "comm-api",
                "api",
                "campaigns"
              ]
            },
            "description": "Communications Block endpoint. Requires `X-Tenant-Id` (workspace id) plus caller auth: `Authorization: Bearer <dashboard JWT>` or `Authorization: ApiKey ak_live_...` (must own the workspace). Discover default workspace via `GET /api/comm/tenant` (returns `tenantId` + `workspaces[]`).\n\nOpenAPI: `GET /comm-api/api/campaigns`\nDocs: https://docs.motorical.com/llms.txt",
            "auth": {
              "type": "bearer",
              "bearer": [
                {
                  "key": "token",
                  "value": "{{bearerToken}}",
                  "type": "string"
                }
              ]
            }
          },
          "response": []
        },
        {
          "name": "List Communications workspaces",
          "request": {
            "method": "GET",
            "header": [
              {
                "key": "X-Tenant-Id",
                "value": "{{tenantId}}"
              }
            ],
            "url": {
              "raw": "{{dashboardBaseUrl}}/comm-api/api/workspaces",
              "host": [
                "{{dashboardBaseUrl}}"
              ],
              "path": [
                "comm-api",
                "api",
                "workspaces"
              ]
            },
            "description": "Account-scoped Communications Block endpoint. Requires caller auth: `Authorization: Bearer <dashboard JWT>` or `Authorization: ApiKey ak_live_...`. Does not require `X-Tenant-Id`.\n\nOpenAPI: `GET /comm-api/api/workspaces`\nDocs: https://docs.motorical.com/llms.txt",
            "auth": {
              "type": "bearer",
              "bearer": [
                {
                  "key": "token",
                  "value": "{{bearerToken}}",
                  "type": "string"
                }
              ]
            }
          },
          "response": []
        },
        {
          "name": "List consent events",
          "request": {
            "method": "GET",
            "header": [
              {
                "key": "X-Tenant-Id",
                "value": "{{tenantId}}"
              }
            ],
            "url": {
              "raw": "{{dashboardBaseUrl}}/comm-api/api/consent-events",
              "host": [
                "{{dashboardBaseUrl}}"
              ],
              "path": [
                "comm-api",
                "api",
                "consent-events"
              ]
            },
            "description": "Communications Block endpoint. Requires `X-Tenant-Id` (workspace id) plus caller auth: `Authorization: Bearer <dashboard JWT>` or `Authorization: ApiKey ak_live_...` (must own the workspace). Discover default workspace via `GET /api/comm/tenant` (returns `tenantId` + `workspaces[]`).\n\nOpenAPI: `GET /comm-api/api/consent-events`\nDocs: https://docs.motorical.com/llms.txt",
            "auth": {
              "type": "bearer",
              "bearer": [
                {
                  "key": "token",
                  "value": "{{bearerToken}}",
                  "type": "string"
                }
              ]
            }
          },
          "response": []
        },
        {
          "name": "List contact lists",
          "request": {
            "method": "GET",
            "header": [
              {
                "key": "X-Tenant-Id",
                "value": "{{tenantId}}"
              }
            ],
            "url": {
              "raw": "{{dashboardBaseUrl}}/comm-api/api/lists",
              "host": [
                "{{dashboardBaseUrl}}"
              ],
              "path": [
                "comm-api",
                "api",
                "lists"
              ]
            },
            "description": "Communications Block endpoint. Requires `X-Tenant-Id` (workspace id) plus caller auth: `Authorization: Bearer <dashboard JWT>` or `Authorization: ApiKey ak_live_...` (must own the workspace). Discover default workspace via `GET /api/comm/tenant` (returns `tenantId` + `workspaces[]`).\n\nOpenAPI: `GET /comm-api/api/lists`\nDocs: https://docs.motorical.com/llms.txt",
            "auth": {
              "type": "bearer",
              "bearer": [
                {
                  "key": "token",
                  "value": "{{bearerToken}}",
                  "type": "string"
                }
              ]
            }
          },
          "response": []
        },
        {
          "name": "List contacts in a list",
          "request": {
            "method": "GET",
            "header": [
              {
                "key": "X-Tenant-Id",
                "value": "{{tenantId}}"
              }
            ],
            "url": {
              "raw": "{{dashboardBaseUrl}}/comm-api/api/lists/{{id}}/contacts",
              "host": [
                "{{dashboardBaseUrl}}"
              ],
              "path": [
                "comm-api",
                "api",
                "lists",
                "{{id}}",
                "contacts"
              ]
            },
            "description": "Communications Block endpoint. Requires `X-Tenant-Id` (workspace id) plus caller auth: `Authorization: Bearer <dashboard JWT>` or `Authorization: ApiKey ak_live_...` (must own the workspace). Discover default workspace via `GET /api/comm/tenant` (returns `tenantId` + `workspaces[]`).\n\nOpenAPI: `GET /comm-api/api/lists/{id}/contacts`\nDocs: https://docs.motorical.com/llms.txt",
            "auth": {
              "type": "bearer",
              "bearer": [
                {
                  "key": "token",
                  "value": "{{bearerToken}}",
                  "type": "string"
                }
              ]
            }
          },
          "response": []
        },
        {
          "name": "List deleted campaigns",
          "request": {
            "method": "GET",
            "header": [
              {
                "key": "X-Tenant-Id",
                "value": "{{tenantId}}"
              }
            ],
            "url": {
              "raw": "{{dashboardBaseUrl}}/comm-api/api/campaigns/deleted",
              "host": [
                "{{dashboardBaseUrl}}"
              ],
              "path": [
                "comm-api",
                "api",
                "campaigns",
                "deleted"
              ]
            },
            "description": "Communications Block endpoint. Requires `X-Tenant-Id` (workspace id) plus caller auth: `Authorization: Bearer <dashboard JWT>` or `Authorization: ApiKey ak_live_...` (must own the workspace). Discover default workspace via `GET /api/comm/tenant` (returns `tenantId` + `workspaces[]`).\n\nOpenAPI: `GET /comm-api/api/campaigns/deleted`\nDocs: https://docs.motorical.com/llms.txt",
            "auth": {
              "type": "bearer",
              "bearer": [
                {
                  "key": "token",
                  "value": "{{bearerToken}}",
                  "type": "string"
                }
              ]
            }
          },
          "response": []
        },
        {
          "name": "List deleted recipients",
          "request": {
            "method": "GET",
            "header": [
              {
                "key": "X-Tenant-Id",
                "value": "{{tenantId}}"
              }
            ],
            "url": {
              "raw": "{{dashboardBaseUrl}}/comm-api/api/recipients/deleted",
              "host": [
                "{{dashboardBaseUrl}}"
              ],
              "path": [
                "comm-api",
                "api",
                "recipients",
                "deleted"
              ]
            },
            "description": "Communications Block endpoint. Requires `X-Tenant-Id` (workspace id) plus caller auth: `Authorization: Bearer <dashboard JWT>` or `Authorization: ApiKey ak_live_...` (must own the workspace). Discover default workspace via `GET /api/comm/tenant` (returns `tenantId` + `workspaces[]`).\n\nOpenAPI: `GET /comm-api/api/recipients/deleted`\nDocs: https://docs.motorical.com/llms.txt",
            "auth": {
              "type": "bearer",
              "bearer": [
                {
                  "key": "token",
                  "value": "{{bearerToken}}",
                  "type": "string"
                }
              ]
            }
          },
          "response": []
        },
        {
          "name": "List marketing Motor Blocks assigned to the workspace",
          "request": {
            "method": "GET",
            "header": [
              {
                "key": "X-Tenant-Id",
                "value": "{{tenantId}}"
              }
            ],
            "url": {
              "raw": "{{dashboardBaseUrl}}/comm-api/api/workspaces/current/motor-blocks",
              "host": [
                "{{dashboardBaseUrl}}"
              ],
              "path": [
                "comm-api",
                "api",
                "workspaces",
                "current",
                "motor-blocks"
              ]
            },
            "description": "Communications Block endpoint. Requires `X-Tenant-Id` (workspace id) plus caller auth: `Authorization: Bearer <dashboard JWT>` or `Authorization: ApiKey ak_live_...` (must own the workspace). Discover default workspace via `GET /api/comm/tenant` (returns `tenantId` + `workspaces[]`).\n\nOpenAPI: `GET /comm-api/api/workspaces/current/motor-blocks`\nDocs: https://docs.motorical.com/llms.txt",
            "auth": {
              "type": "bearer",
              "bearer": [
                {
                  "key": "token",
                  "value": "{{bearerToken}}",
                  "type": "string"
                }
              ]
            }
          },
          "response": []
        },
        {
          "name": "List Motor Blocks assigned to a workspace",
          "request": {
            "method": "GET",
            "header": [
              {
                "key": "X-Tenant-Id",
                "value": "{{tenantId}}"
              }
            ],
            "url": {
              "raw": "{{dashboardBaseUrl}}/comm-api/api/workspaces/{{id}}/motor-blocks",
              "host": [
                "{{dashboardBaseUrl}}"
              ],
              "path": [
                "comm-api",
                "api",
                "workspaces",
                "{{id}}",
                "motor-blocks"
              ]
            },
            "description": "Account-scoped Communications Block endpoint. Requires caller auth: `Authorization: Bearer <dashboard JWT>` or `Authorization: ApiKey ak_live_...`. Does not require `X-Tenant-Id`.\n\nOpenAPI: `GET /comm-api/api/workspaces/{id}/motor-blocks`\nDocs: https://docs.motorical.com/llms.txt",
            "auth": {
              "type": "bearer",
              "bearer": [
                {
                  "key": "token",
                  "value": "{{bearerToken}}",
                  "type": "string"
                }
              ]
            }
          },
          "response": []
        },
        {
          "name": "List recipient campaign groupings",
          "request": {
            "method": "GET",
            "header": [
              {
                "key": "X-Tenant-Id",
                "value": "{{tenantId}}"
              }
            ],
            "url": {
              "raw": "{{dashboardBaseUrl}}/comm-api/api/recipients/campaigns",
              "host": [
                "{{dashboardBaseUrl}}"
              ],
              "path": [
                "comm-api",
                "api",
                "recipients",
                "campaigns"
              ]
            },
            "description": "Communications Block endpoint. Requires `X-Tenant-Id` (workspace id) plus caller auth: `Authorization: Bearer <dashboard JWT>` or `Authorization: ApiKey ak_live_...` (must own the workspace). Discover default workspace via `GET /api/comm/tenant` (returns `tenantId` + `workspaces[]`).\n\nOpenAPI: `GET /comm-api/api/recipients/campaigns`\nDocs: https://docs.motorical.com/llms.txt",
            "auth": {
              "type": "bearer",
              "bearer": [
                {
                  "key": "token",
                  "value": "{{bearerToken}}",
                  "type": "string"
                }
              ]
            }
          },
          "response": []
        },
        {
          "name": "List recipient filter facets",
          "request": {
            "method": "GET",
            "header": [
              {
                "key": "X-Tenant-Id",
                "value": "{{tenantId}}"
              }
            ],
            "url": {
              "raw": "{{dashboardBaseUrl}}/comm-api/api/recipients/facets",
              "host": [
                "{{dashboardBaseUrl}}"
              ],
              "path": [
                "comm-api",
                "api",
                "recipients",
                "facets"
              ]
            },
            "description": "Communications Block endpoint. Requires `X-Tenant-Id` (workspace id) plus caller auth: `Authorization: Bearer <dashboard JWT>` or `Authorization: ApiKey ak_live_...` (must own the workspace). Discover default workspace via `GET /api/comm/tenant` (returns `tenantId` + `workspaces[]`).\n\nOpenAPI: `GET /comm-api/api/recipients/facets`\nDocs: https://docs.motorical.com/llms.txt",
            "auth": {
              "type": "bearer",
              "bearer": [
                {
                  "key": "token",
                  "value": "{{bearerToken}}",
                  "type": "string"
                }
              ]
            }
          },
          "response": []
        },
        {
          "name": "List suppressions",
          "request": {
            "method": "GET",
            "header": [
              {
                "key": "X-Tenant-Id",
                "value": "{{tenantId}}"
              }
            ],
            "url": {
              "raw": "{{dashboardBaseUrl}}/comm-api/api/suppressions",
              "host": [
                "{{dashboardBaseUrl}}"
              ],
              "path": [
                "comm-api",
                "api",
                "suppressions"
              ]
            },
            "description": "Communications Block endpoint. Requires `X-Tenant-Id` (workspace id) plus caller auth: `Authorization: Bearer <dashboard JWT>` or `Authorization: ApiKey ak_live_...` (must own the workspace). Discover default workspace via `GET /api/comm/tenant` (returns `tenantId` + `workspaces[]`).\n\nOpenAPI: `GET /comm-api/api/suppressions`\nDocs: https://docs.motorical.com/llms.txt",
            "auth": {
              "type": "bearer",
              "bearer": [
                {
                  "key": "token",
                  "value": "{{bearerToken}}",
                  "type": "string"
                }
              ]
            }
          },
          "response": []
        },
        {
          "name": "List templates",
          "request": {
            "method": "GET",
            "header": [
              {
                "key": "X-Tenant-Id",
                "value": "{{tenantId}}"
              }
            ],
            "url": {
              "raw": "{{dashboardBaseUrl}}/comm-api/api/templates",
              "host": [
                "{{dashboardBaseUrl}}"
              ],
              "path": [
                "comm-api",
                "api",
                "templates"
              ]
            },
            "description": "Communications Block endpoint. Requires `X-Tenant-Id` (workspace id) plus caller auth: `Authorization: Bearer <dashboard JWT>` or `Authorization: ApiKey ak_live_...` (must own the workspace). Discover default workspace via `GET /api/comm/tenant` (returns `tenantId` + `workspaces[]`).\n\nOpenAPI: `GET /comm-api/api/templates`\nDocs: https://docs.motorical.com/llms.txt",
            "auth": {
              "type": "bearer",
              "bearer": [
                {
                  "key": "token",
                  "value": "{{bearerToken}}",
                  "type": "string"
                }
              ]
            }
          },
          "response": []
        },
        {
          "name": "List unsubscribe events",
          "request": {
            "method": "GET",
            "header": [
              {
                "key": "X-Tenant-Id",
                "value": "{{tenantId}}"
              }
            ],
            "url": {
              "raw": "{{dashboardBaseUrl}}/comm-api/api/unsubscribe-events",
              "host": [
                "{{dashboardBaseUrl}}"
              ],
              "path": [
                "comm-api",
                "api",
                "unsubscribe-events"
              ]
            },
            "description": "Communications Block endpoint. Requires `X-Tenant-Id` (workspace id) plus caller auth: `Authorization: Bearer <dashboard JWT>` or `Authorization: ApiKey ak_live_...` (must own the workspace). Discover default workspace via `GET /api/comm/tenant` (returns `tenantId` + `workspaces[]`).\n\nOpenAPI: `GET /comm-api/api/unsubscribe-events`\nDocs: https://docs.motorical.com/llms.txt",
            "auth": {
              "type": "bearer",
              "bearer": [
                {
                  "key": "token",
                  "value": "{{bearerToken}}",
                  "type": "string"
                }
              ]
            }
          },
          "response": []
        },
        {
          "name": "Permanently delete a campaign",
          "request": {
            "method": "DELETE",
            "header": [
              {
                "key": "X-Tenant-Id",
                "value": "{{tenantId}}"
              }
            ],
            "url": {
              "raw": "{{dashboardBaseUrl}}/comm-api/api/campaigns/{{id}}/permanent",
              "host": [
                "{{dashboardBaseUrl}}"
              ],
              "path": [
                "comm-api",
                "api",
                "campaigns",
                "{{id}}",
                "permanent"
              ]
            },
            "description": "Communications Block endpoint. Requires `X-Tenant-Id` (workspace id) plus caller auth: `Authorization: Bearer <dashboard JWT>` or `Authorization: ApiKey ak_live_...` (must own the workspace). Discover default workspace via `GET /api/comm/tenant` (returns `tenantId` + `workspaces[]`).\n\nOpenAPI: `DELETE /comm-api/api/campaigns/{id}/permanent`\nDocs: https://docs.motorical.com/llms.txt",
            "auth": {
              "type": "bearer",
              "bearer": [
                {
                  "key": "token",
                  "value": "{{bearerToken}}",
                  "type": "string"
                }
              ]
            }
          },
          "response": []
        },
        {
          "name": "Permanently delete a recipient",
          "request": {
            "method": "DELETE",
            "header": [
              {
                "key": "X-Tenant-Id",
                "value": "{{tenantId}}"
              }
            ],
            "url": {
              "raw": "{{dashboardBaseUrl}}/comm-api/api/recipients/{{id}}/permanent",
              "host": [
                "{{dashboardBaseUrl}}"
              ],
              "path": [
                "comm-api",
                "api",
                "recipients",
                "{{id}}",
                "permanent"
              ]
            },
            "description": "Communications Block endpoint. Requires `X-Tenant-Id` (workspace id) plus caller auth: `Authorization: Bearer <dashboard JWT>` or `Authorization: ApiKey ak_live_...` (must own the workspace). Discover default workspace via `GET /api/comm/tenant` (returns `tenantId` + `workspaces[]`).\n\nOpenAPI: `DELETE /comm-api/api/recipients/{id}/permanent`\nDocs: https://docs.motorical.com/llms.txt",
            "auth": {
              "type": "bearer",
              "bearer": [
                {
                  "key": "token",
                  "value": "{{bearerToken}}",
                  "type": "string"
                }
              ]
            }
          },
          "response": []
        },
        {
          "name": "Remove a contact from a list",
          "request": {
            "method": "DELETE",
            "header": [
              {
                "key": "X-Tenant-Id",
                "value": "{{tenantId}}"
              }
            ],
            "url": {
              "raw": "{{dashboardBaseUrl}}/comm-api/api/lists/{{id}}/contacts/{{contactId}}",
              "host": [
                "{{dashboardBaseUrl}}"
              ],
              "path": [
                "comm-api",
                "api",
                "lists",
                "{{id}}",
                "contacts",
                "{{contactId}}"
              ]
            },
            "description": "Communications Block endpoint. Requires `X-Tenant-Id` (workspace id) plus caller auth: `Authorization: Bearer <dashboard JWT>` or `Authorization: ApiKey ak_live_...` (must own the workspace). Discover default workspace via `GET /api/comm/tenant` (returns `tenantId` + `workspaces[]`).\n\nOpenAPI: `DELETE /comm-api/api/lists/{id}/contacts/{contactId}`\nDocs: https://docs.motorical.com/llms.txt",
            "auth": {
              "type": "bearer",
              "bearer": [
                {
                  "key": "token",
                  "value": "{{bearerToken}}",
                  "type": "string"
                }
              ]
            }
          },
          "response": []
        },
        {
          "name": "Remove a suppression",
          "request": {
            "method": "DELETE",
            "header": [
              {
                "key": "X-Tenant-Id",
                "value": "{{tenantId}}"
              }
            ],
            "url": {
              "raw": "{{dashboardBaseUrl}}/comm-api/api/suppressions/{{id}}",
              "host": [
                "{{dashboardBaseUrl}}"
              ],
              "path": [
                "comm-api",
                "api",
                "suppressions",
                "{{id}}"
              ]
            },
            "description": "Communications Block endpoint. Requires `X-Tenant-Id` (workspace id) plus caller auth: `Authorization: Bearer <dashboard JWT>` or `Authorization: ApiKey ak_live_...` (must own the workspace). Discover default workspace via `GET /api/comm/tenant` (returns `tenantId` + `workspaces[]`).\n\nOpenAPI: `DELETE /comm-api/api/suppressions/{id}`\nDocs: https://docs.motorical.com/llms.txt",
            "auth": {
              "type": "bearer",
              "bearer": [
                {
                  "key": "token",
                  "value": "{{bearerToken}}",
                  "type": "string"
                }
              ]
            }
          },
          "response": []
        },
        {
          "name": "Replace workspace Motor Block assignments",
          "request": {
            "method": "PUT",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json"
              },
              {
                "key": "X-Tenant-Id",
                "value": "{{tenantId}}"
              }
            ],
            "url": {
              "raw": "{{dashboardBaseUrl}}/comm-api/api/workspaces/{{id}}/motor-blocks",
              "host": [
                "{{dashboardBaseUrl}}"
              ],
              "path": [
                "comm-api",
                "api",
                "workspaces",
                "{{id}}",
                "motor-blocks"
              ]
            },
            "description": "Account-scoped Communications Block endpoint. Requires caller auth: `Authorization: Bearer <dashboard JWT>` or `Authorization: ApiKey ak_live_...`. Does not require `X-Tenant-Id`.\n\nOpenAPI: `PUT /comm-api/api/workspaces/{id}/motor-blocks`\nDocs: https://docs.motorical.com/llms.txt",
            "auth": {
              "type": "bearer",
              "bearer": [
                {
                  "key": "token",
                  "value": "{{bearerToken}}",
                  "type": "string"
                }
              ]
            },
            "body": {
              "mode": "raw",
              "raw": "{}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            }
          },
          "response": []
        },
        {
          "name": "Resolve a sending domain to a companion marketing Motor Block",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json"
              },
              {
                "key": "X-Tenant-Id",
                "value": "{{tenantId}}"
              }
            ],
            "url": {
              "raw": "{{dashboardBaseUrl}}/comm-api/api/workspaces/{{motorBlockId}}/motor-blocks/from-domain",
              "host": [
                "{{dashboardBaseUrl}}"
              ],
              "path": [
                "comm-api",
                "api",
                "workspaces",
                "{{motorBlockId}}",
                "motor-blocks",
                "from-domain"
              ]
            },
            "description": "Account-scoped Communications Block endpoint. Requires caller auth: `Authorization: Bearer <dashboard JWT>` or `Authorization: ApiKey ak_live_...`. Does not require `X-Tenant-Id`.\n\nOpenAPI: `POST /comm-api/api/workspaces/{id}/motor-blocks/from-domain`\nDocs: https://docs.motorical.com/llms.txt",
            "auth": {
              "type": "bearer",
              "bearer": [
                {
                  "key": "token",
                  "value": "{{bearerToken}}",
                  "type": "string"
                }
              ]
            },
            "body": {
              "mode": "raw",
              "raw": "{}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            }
          },
          "response": []
        },
        {
          "name": "Restore a campaign",
          "request": {
            "method": "PATCH",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json"
              },
              {
                "key": "X-Tenant-Id",
                "value": "{{tenantId}}"
              }
            ],
            "url": {
              "raw": "{{dashboardBaseUrl}}/comm-api/api/campaigns/{{id}}/restore",
              "host": [
                "{{dashboardBaseUrl}}"
              ],
              "path": [
                "comm-api",
                "api",
                "campaigns",
                "{{id}}",
                "restore"
              ]
            },
            "description": "Communications Block endpoint. Requires `X-Tenant-Id` (workspace id) plus caller auth: `Authorization: Bearer <dashboard JWT>` or `Authorization: ApiKey ak_live_...` (must own the workspace). Discover default workspace via `GET /api/comm/tenant` (returns `tenantId` + `workspaces[]`).\n\nOpenAPI: `PATCH /comm-api/api/campaigns/{id}/restore`\nDocs: https://docs.motorical.com/llms.txt",
            "auth": {
              "type": "bearer",
              "bearer": [
                {
                  "key": "token",
                  "value": "{{bearerToken}}",
                  "type": "string"
                }
              ]
            },
            "body": {
              "mode": "raw",
              "raw": "{}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            }
          },
          "response": []
        },
        {
          "name": "Restore a recipient",
          "request": {
            "method": "PATCH",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json"
              },
              {
                "key": "X-Tenant-Id",
                "value": "{{tenantId}}"
              }
            ],
            "url": {
              "raw": "{{dashboardBaseUrl}}/comm-api/api/recipients/{{id}}/restore",
              "host": [
                "{{dashboardBaseUrl}}"
              ],
              "path": [
                "comm-api",
                "api",
                "recipients",
                "{{id}}",
                "restore"
              ]
            },
            "description": "Communications Block endpoint. Requires `X-Tenant-Id` (workspace id) plus caller auth: `Authorization: Bearer <dashboard JWT>` or `Authorization: ApiKey ak_live_...` (must own the workspace). Discover default workspace via `GET /api/comm/tenant` (returns `tenantId` + `workspaces[]`).\n\nOpenAPI: `PATCH /comm-api/api/recipients/{id}/restore`\nDocs: https://docs.motorical.com/llms.txt",
            "auth": {
              "type": "bearer",
              "bearer": [
                {
                  "key": "token",
                  "value": "{{bearerToken}}",
                  "type": "string"
                }
              ]
            },
            "body": {
              "mode": "raw",
              "raw": "{}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            }
          },
          "response": []
        },
        {
          "name": "Restore recipients",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json"
              },
              {
                "key": "X-Tenant-Id",
                "value": "{{tenantId}}"
              }
            ],
            "url": {
              "raw": "{{dashboardBaseUrl}}/comm-api/api/recipients/restore",
              "host": [
                "{{dashboardBaseUrl}}"
              ],
              "path": [
                "comm-api",
                "api",
                "recipients",
                "restore"
              ]
            },
            "description": "Communications Block endpoint. Requires `X-Tenant-Id` (workspace id) plus caller auth: `Authorization: Bearer <dashboard JWT>` or `Authorization: ApiKey ak_live_...` (must own the workspace). Discover default workspace via `GET /api/comm/tenant` (returns `tenantId` + `workspaces[]`).\n\nOpenAPI: `POST /comm-api/api/recipients/restore`\nDocs: https://docs.motorical.com/llms.txt",
            "auth": {
              "type": "bearer",
              "bearer": [
                {
                  "key": "token",
                  "value": "{{bearerToken}}",
                  "type": "string"
                }
              ]
            },
            "body": {
              "mode": "raw",
              "raw": "{}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            }
          },
          "response": []
        },
        {
          "name": "Resubscribe a contact",
          "request": {
            "method": "PUT",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json"
              },
              {
                "key": "X-Tenant-Id",
                "value": "{{tenantId}}"
              }
            ],
            "url": {
              "raw": "{{dashboardBaseUrl}}/comm-api/api/contacts/{{id}}/resubscribe",
              "host": [
                "{{dashboardBaseUrl}}"
              ],
              "path": [
                "comm-api",
                "api",
                "contacts",
                "{{id}}",
                "resubscribe"
              ]
            },
            "description": "Communications Block endpoint. Requires `X-Tenant-Id` (workspace id) plus caller auth: `Authorization: Bearer <dashboard JWT>` or `Authorization: ApiKey ak_live_...` (must own the workspace). Discover default workspace via `GET /api/comm/tenant` (returns `tenantId` + `workspaces[]`).\n\nOpenAPI: `PUT /comm-api/api/contacts/{id}/resubscribe`\nDocs: https://docs.motorical.com/llms.txt",
            "auth": {
              "type": "bearer",
              "bearer": [
                {
                  "key": "token",
                  "value": "{{bearerToken}}",
                  "type": "string"
                }
              ]
            },
            "body": {
              "mode": "raw",
              "raw": "{}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            }
          },
          "response": []
        },
        {
          "name": "Schedule a campaign",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json"
              },
              {
                "key": "X-Tenant-Id",
                "value": "{{tenantId}}"
              }
            ],
            "url": {
              "raw": "{{dashboardBaseUrl}}/comm-api/api/campaigns/{{id}}/schedule",
              "host": [
                "{{dashboardBaseUrl}}"
              ],
              "path": [
                "comm-api",
                "api",
                "campaigns",
                "{{id}}",
                "schedule"
              ]
            },
            "description": "Communications Block endpoint. Requires `X-Tenant-Id` (workspace id) plus caller auth: `Authorization: Bearer <dashboard JWT>` or `Authorization: ApiKey ak_live_...` (must own the workspace). Discover default workspace via `GET /api/comm/tenant` (returns `tenantId` + `workspaces[]`).\n\nOpenAPI: `POST /comm-api/api/campaigns/{id}/schedule`\nDocs: https://docs.motorical.com/llms.txt",
            "auth": {
              "type": "bearer",
              "bearer": [
                {
                  "key": "token",
                  "value": "{{bearerToken}}",
                  "type": "string"
                }
              ]
            },
            "body": {
              "mode": "raw",
              "raw": "{}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            }
          },
          "response": []
        },
        {
          "name": "Search recipients",
          "request": {
            "method": "GET",
            "header": [
              {
                "key": "X-Tenant-Id",
                "value": "{{tenantId}}"
              }
            ],
            "url": {
              "raw": "{{dashboardBaseUrl}}/comm-api/api/recipients",
              "host": [
                "{{dashboardBaseUrl}}"
              ],
              "path": [
                "comm-api",
                "api",
                "recipients"
              ]
            },
            "description": "Communications Block endpoint. Requires `X-Tenant-Id` (workspace id) plus caller auth: `Authorization: Bearer <dashboard JWT>` or `Authorization: ApiKey ak_live_...` (must own the workspace). Discover default workspace via `GET /api/comm/tenant` (returns `tenantId` + `workspaces[]`).\n\nOpenAPI: `GET /comm-api/api/recipients`\nDocs: https://docs.motorical.com/llms.txt",
            "auth": {
              "type": "bearer",
              "bearer": [
                {
                  "key": "token",
                  "value": "{{bearerToken}}",
                  "type": "string"
                }
              ]
            }
          },
          "response": []
        },
        {
          "name": "Search tracking events",
          "request": {
            "method": "GET",
            "header": [
              {
                "key": "X-Tenant-Id",
                "value": "{{tenantId}}"
              }
            ],
            "url": {
              "raw": "{{dashboardBaseUrl}}/comm-api/api/tracking/events",
              "host": [
                "{{dashboardBaseUrl}}"
              ],
              "path": [
                "comm-api",
                "api",
                "tracking",
                "events"
              ],
              "query": [
                {
                  "key": "event_type",
                  "value": "",
                  "description": "Comma-separated event types, such as opened,clicked.",
                  "disabled": true
                },
                {
                  "key": "campaign_id",
                  "value": "",
                  "description": "Comma-separated campaign UUIDs.",
                  "disabled": true
                },
                {
                  "key": "contact_email",
                  "value": "",
                  "description": "",
                  "disabled": true
                },
                {
                  "key": "date_from",
                  "value": "",
                  "description": "",
                  "disabled": true
                },
                {
                  "key": "date_to",
                  "value": "",
                  "description": "",
                  "disabled": true
                },
                {
                  "key": "view",
                  "value": "",
                  "description": "Defaults to chronological (the raw per-event timeline, unchanged). recipient collapses each campaign recipient to one row at their furthest send-funnel stage (queued, sent, delivered-or-bounced, opened, clicked). complained and unsubscribed are reported as independent flags rather than funnel stages, since a recipient can carry either at any stage -- they never compete with or hide the funnel stage they occurred at. In recipient view, event_type filters on the winning stage (or the flag) rather than on raw per-event rows.",
                  "disabled": true
                }
              ]
            },
            "description": "Communications Block endpoint. Requires `X-Tenant-Id` (workspace id) plus caller auth: `Authorization: Bearer <dashboard JWT>` or `Authorization: ApiKey ak_live_...` (must own the workspace). Discover default workspace via `GET /api/comm/tenant` (returns `tenantId` + `workspaces[]`). Tracking events, summary counts, and CSV export share these filters and hide queued lifecycle rows superseded by a later outcome.\n\nOpenAPI: `GET /comm-api/api/tracking/events`\nDocs: https://docs.motorical.com/llms.txt",
            "auth": {
              "type": "bearer",
              "bearer": [
                {
                  "key": "token",
                  "value": "{{bearerToken}}",
                  "type": "string"
                }
              ]
            }
          },
          "response": []
        },
        {
          "name": "Unsubscribe a contact",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json"
              },
              {
                "key": "X-Tenant-Id",
                "value": "{{tenantId}}"
              }
            ],
            "url": {
              "raw": "{{dashboardBaseUrl}}/comm-api/api/contacts/{{id}}/unsubscribe",
              "host": [
                "{{dashboardBaseUrl}}"
              ],
              "path": [
                "comm-api",
                "api",
                "contacts",
                "{{id}}",
                "unsubscribe"
              ]
            },
            "description": "Communications Block endpoint. Requires `X-Tenant-Id` (workspace id) plus caller auth: `Authorization: Bearer <dashboard JWT>` or `Authorization: ApiKey ak_live_...` (must own the workspace). Discover default workspace via `GET /api/comm/tenant` (returns `tenantId` + `workspaces[]`).\n\nOpenAPI: `POST /comm-api/api/contacts/{id}/unsubscribe`\nDocs: https://docs.motorical.com/llms.txt",
            "auth": {
              "type": "bearer",
              "bearer": [
                {
                  "key": "token",
                  "value": "{{bearerToken}}",
                  "type": "string"
                }
              ]
            },
            "body": {
              "mode": "raw",
              "raw": "{}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            }
          },
          "response": []
        },
        {
          "name": "Update a Communications workspace",
          "request": {
            "method": "PATCH",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json"
              },
              {
                "key": "X-Tenant-Id",
                "value": "{{tenantId}}"
              }
            ],
            "url": {
              "raw": "{{dashboardBaseUrl}}/comm-api/api/workspaces/{{id}}",
              "host": [
                "{{dashboardBaseUrl}}"
              ],
              "path": [
                "comm-api",
                "api",
                "workspaces",
                "{{id}}"
              ]
            },
            "description": "Account-scoped Communications Block endpoint. Requires caller auth: `Authorization: Bearer <dashboard JWT>` or `Authorization: ApiKey ak_live_...`. Does not require `X-Tenant-Id`.\n\nOpenAPI: `PATCH /comm-api/api/workspaces/{id}`\nDocs: https://docs.motorical.com/llms.txt",
            "auth": {
              "type": "bearer",
              "bearer": [
                {
                  "key": "token",
                  "value": "{{bearerToken}}",
                  "type": "string"
                }
              ]
            },
            "body": {
              "mode": "raw",
              "raw": "{}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            }
          },
          "response": []
        },
        {
          "name": "Update a contact list",
          "request": {
            "method": "PATCH",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json"
              },
              {
                "key": "X-Tenant-Id",
                "value": "{{tenantId}}"
              }
            ],
            "url": {
              "raw": "{{dashboardBaseUrl}}/comm-api/api/lists/{{id}}",
              "host": [
                "{{dashboardBaseUrl}}"
              ],
              "path": [
                "comm-api",
                "api",
                "lists",
                "{{id}}"
              ]
            },
            "description": "Communications Block endpoint. Requires `X-Tenant-Id` (workspace id) plus caller auth: `Authorization: Bearer <dashboard JWT>` or `Authorization: ApiKey ak_live_...` (must own the workspace). Discover default workspace via `GET /api/comm/tenant` (returns `tenantId` + `workspaces[]`).\n\nOpenAPI: `PATCH /comm-api/api/lists/{id}`\nDocs: https://docs.motorical.com/llms.txt",
            "auth": {
              "type": "bearer",
              "bearer": [
                {
                  "key": "token",
                  "value": "{{bearerToken}}",
                  "type": "string"
                }
              ]
            },
            "body": {
              "mode": "raw",
              "raw": "{}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            }
          },
          "response": []
        },
        {
          "name": "Update a template",
          "request": {
            "method": "PATCH",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json"
              },
              {
                "key": "X-Tenant-Id",
                "value": "{{tenantId}}"
              }
            ],
            "url": {
              "raw": "{{dashboardBaseUrl}}/comm-api/api/templates/{{id}}",
              "host": [
                "{{dashboardBaseUrl}}"
              ],
              "path": [
                "comm-api",
                "api",
                "templates",
                "{{id}}"
              ]
            },
            "description": "Communications Block endpoint. Requires `X-Tenant-Id` (workspace id) plus caller auth: `Authorization: Bearer <dashboard JWT>` or `Authorization: ApiKey ak_live_...` (must own the workspace). Discover default workspace via `GET /api/comm/tenant` (returns `tenantId` + `workspaces[]`).\n\nOpenAPI: `PATCH /comm-api/api/templates/{id}`\nDocs: https://docs.motorical.com/llms.txt",
            "auth": {
              "type": "bearer",
              "bearer": [
                {
                  "key": "token",
                  "value": "{{bearerToken}}",
                  "type": "string"
                }
              ]
            },
            "body": {
              "mode": "raw",
              "raw": "{}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            }
          },
          "response": []
        },
        {
          "name": "Update campaign settings",
          "request": {
            "method": "PATCH",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json"
              },
              {
                "key": "X-Tenant-Id",
                "value": "{{tenantId}}"
              }
            ],
            "url": {
              "raw": "{{dashboardBaseUrl}}/comm-api/api/campaigns/{{id}}/settings",
              "host": [
                "{{dashboardBaseUrl}}"
              ],
              "path": [
                "comm-api",
                "api",
                "campaigns",
                "{{id}}",
                "settings"
              ]
            },
            "description": "Communications Block endpoint. Requires `X-Tenant-Id` (workspace id) plus caller auth: `Authorization: Bearer <dashboard JWT>` or `Authorization: ApiKey ak_live_...` (must own the workspace). Discover default workspace via `GET /api/comm/tenant` (returns `tenantId` + `workspaces[]`).\n\nOpenAPI: `PATCH /comm-api/api/campaigns/{id}/settings`\nDocs: https://docs.motorical.com/llms.txt",
            "auth": {
              "type": "bearer",
              "bearer": [
                {
                  "key": "token",
                  "value": "{{bearerToken}}",
                  "type": "string"
                }
              ]
            },
            "body": {
              "mode": "raw",
              "raw": "{}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            }
          },
          "response": []
        },
        {
          "name": "Update current workspace consent settings",
          "request": {
            "method": "PATCH",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json"
              },
              {
                "key": "X-Tenant-Id",
                "value": "{{tenantId}}"
              }
            ],
            "url": {
              "raw": "{{dashboardBaseUrl}}/comm-api/api/settings/consent",
              "host": [
                "{{dashboardBaseUrl}}"
              ],
              "path": [
                "comm-api",
                "api",
                "settings",
                "consent"
              ]
            },
            "description": "Communications Block endpoint. Requires `X-Tenant-Id` (workspace id) plus caller auth: `Authorization: Bearer <dashboard JWT>` or `Authorization: ApiKey ak_live_...` (must own the workspace). Discover default workspace via `GET /api/comm/tenant` (returns `tenantId` + `workspaces[]`).\n\nOpenAPI: `PATCH /comm-api/api/settings/consent`\nDocs: https://docs.motorical.com/llms.txt",
            "auth": {
              "type": "bearer",
              "bearer": [
                {
                  "key": "token",
                  "value": "{{bearerToken}}",
                  "type": "string"
                }
              ]
            },
            "body": {
              "mode": "raw",
              "raw": "{}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            }
          },
          "response": []
        },
        {
          "name": "Update current workspace open-tracking settings",
          "request": {
            "method": "PATCH",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json"
              },
              {
                "key": "X-Tenant-Id",
                "value": "{{tenantId}}"
              }
            ],
            "url": {
              "raw": "{{dashboardBaseUrl}}/comm-api/api/settings/open-tracking",
              "host": [
                "{{dashboardBaseUrl}}"
              ],
              "path": [
                "comm-api",
                "api",
                "settings",
                "open-tracking"
              ]
            },
            "description": "Communications Block endpoint. Requires `X-Tenant-Id` (workspace id) plus caller auth: `Authorization: Bearer <dashboard JWT>` or `Authorization: ApiKey ak_live_...` (must own the workspace). Discover default workspace via `GET /api/comm/tenant` (returns `tenantId` + `workspaces[]`).\n\nOpenAPI: `PATCH /comm-api/api/settings/open-tracking`\nDocs: https://docs.motorical.com/llms.txt",
            "auth": {
              "type": "bearer",
              "bearer": [
                {
                  "key": "token",
                  "value": "{{bearerToken}}",
                  "type": "string"
                }
              ]
            },
            "body": {
              "mode": "raw",
              "raw": "{}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            }
          },
          "response": []
        },
        {
          "name": "Update workspace consent settings",
          "request": {
            "method": "PATCH",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json"
              },
              {
                "key": "X-Tenant-Id",
                "value": "{{tenantId}}"
              }
            ],
            "url": {
              "raw": "{{dashboardBaseUrl}}/comm-api/api/workspaces/{{id}}/settings/consent",
              "host": [
                "{{dashboardBaseUrl}}"
              ],
              "path": [
                "comm-api",
                "api",
                "workspaces",
                "{{id}}",
                "settings",
                "consent"
              ]
            },
            "description": "Account-scoped Communications Block endpoint. Requires caller auth: `Authorization: Bearer <dashboard JWT>` or `Authorization: ApiKey ak_live_...`. Does not require `X-Tenant-Id`.\n\nOpenAPI: `PATCH /comm-api/api/workspaces/{id}/settings/consent`\nDocs: https://docs.motorical.com/llms.txt",
            "auth": {
              "type": "bearer",
              "bearer": [
                {
                  "key": "token",
                  "value": "{{bearerToken}}",
                  "type": "string"
                }
              ]
            },
            "body": {
              "mode": "raw",
              "raw": "{}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            }
          },
          "response": []
        },
        {
          "name": "Update workspace open-tracking settings",
          "request": {
            "method": "PATCH",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json"
              },
              {
                "key": "X-Tenant-Id",
                "value": "{{tenantId}}"
              }
            ],
            "url": {
              "raw": "{{dashboardBaseUrl}}/comm-api/api/workspaces/{{id}}/settings/open-tracking",
              "host": [
                "{{dashboardBaseUrl}}"
              ],
              "path": [
                "comm-api",
                "api",
                "workspaces",
                "{{id}}",
                "settings",
                "open-tracking"
              ]
            },
            "description": "Account-scoped Communications Block endpoint. Requires caller auth: `Authorization: Bearer <dashboard JWT>` or `Authorization: ApiKey ak_live_...`. Does not require `X-Tenant-Id`.\n\nOpenAPI: `PATCH /comm-api/api/workspaces/{id}/settings/open-tracking`\nDocs: https://docs.motorical.com/llms.txt",
            "auth": {
              "type": "bearer",
              "bearer": [
                {
                  "key": "token",
                  "value": "{{bearerToken}}",
                  "type": "string"
                }
              ]
            },
            "body": {
              "mode": "raw",
              "raw": "{}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            }
          },
          "response": []
        },
        {
          "name": "Validate a template without saving",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json"
              },
              {
                "key": "X-Tenant-Id",
                "value": "{{tenantId}}"
              }
            ],
            "url": {
              "raw": "{{dashboardBaseUrl}}/comm-api/api/templates/validate",
              "host": [
                "{{dashboardBaseUrl}}"
              ],
              "path": [
                "comm-api",
                "api",
                "templates",
                "validate"
              ]
            },
            "description": "Communications Block endpoint. Requires `X-Tenant-Id` (workspace id) plus caller auth: `Authorization: Bearer <dashboard JWT>` or `Authorization: ApiKey ak_live_...` (must own the workspace). Discover default workspace via `GET /api/comm/tenant` (returns `tenantId` + `workspaces[]`).\n\nOpenAPI: `POST /comm-api/api/templates/validate`\nDocs: https://docs.motorical.com/llms.txt",
            "auth": {
              "type": "bearer",
              "bearer": [
                {
                  "key": "token",
                  "value": "{{bearerToken}}",
                  "type": "string"
                }
              ]
            },
            "body": {
              "mode": "raw",
              "raw": "{}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            }
          },
          "response": []
        }
      ]
    },
    {
      "name": "Config",
      "item": [
        {
          "name": "Domain health (SPF/DKIM/DMARC)",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{apiBaseUrl}}/api/public/v1/motor-blocks/{{motorBlockId}}/domain-health",
              "host": [
                "{{apiBaseUrl}}"
              ],
              "path": [
                "api",
                "public",
                "v1",
                "motor-blocks",
                "{{motorBlockId}}",
                "domain-health"
              ],
              "query": [
                {
                  "key": "refresh",
                  "value": "",
                  "description": "If true, attempt a synchronous live DNS refresh before responding",
                  "disabled": true
                }
              ]
            },
            "description": "Cache-first: returns DB auth flags immediately (sub-second). Stale/cold checks schedule an async DNS refresh. Pass refresh=true to wait for a live re-check (capped; may still return prior cache on timeout).\n\nOpenAPI: `GET /api/public/v1/motor-blocks/{id}/domain-health`\nDocs: https://docs.motorical.com/llms.txt",
            "auth": {
              "type": "bearer",
              "bearer": [
                {
                  "key": "token",
                  "value": "{{bearerToken}}",
                  "type": "string"
                }
              ]
            }
          },
          "response": []
        },
        {
          "name": "Motor Block config snapshot",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{apiBaseUrl}}/api/public/v1/motor-blocks/{{motorBlockId}}/config",
              "host": [
                "{{apiBaseUrl}}"
              ],
              "path": [
                "api",
                "public",
                "v1",
                "motor-blocks",
                "{{motorBlockId}}",
                "config"
              ]
            },
            "description": "Read-only, non-sensitive configuration snapshot and domain status.\n\nOpenAPI: `GET /api/public/v1/motor-blocks/{id}/config`\nDocs: https://docs.motorical.com/llms.txt",
            "auth": {
              "type": "bearer",
              "bearer": [
                {
                  "key": "token",
                  "value": "{{bearerToken}}",
                  "type": "string"
                }
              ]
            }
          },
          "response": []
        }
      ]
    },
    {
      "name": "Developer Sandbox",
      "item": [
        {
          "name": "Convert sandbox Motor Block to a verified production domain",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "url": {
              "raw": "{{apiBaseUrl}}/api/developer/sandbox/convert",
              "host": [
                "{{apiBaseUrl}}"
              ],
              "path": [
                "api",
                "developer",
                "sandbox",
                "convert"
              ]
            },
            "description": "Requires an active Motorical subscription (CSV plans via sync-plans-from-csv.py). Re-points the sandbox Motor Block to a customer-owned verified domain, clears sandbox flags, applies plan limits, and reaps sandbox DNS.\n\nOpenAPI: `POST /api/developer/sandbox/convert`\nDocs: https://docs.motorical.com/llms.txt",
            "auth": {
              "type": "bearer",
              "bearer": [
                {
                  "key": "token",
                  "value": "{{bearerToken}}",
                  "type": "string"
                }
              ]
            },
            "body": {
              "mode": "raw",
              "raw": "{\n  \"domainId\": \"{{motorBlockId}}\"\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            }
          },
          "response": []
        },
        {
          "name": "Get developer sandbox status",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{apiBaseUrl}}/api/developer/sandbox",
              "host": [
                "{{apiBaseUrl}}"
              ],
              "path": [
                "api",
                "developer",
                "sandbox"
              ]
            },
            "description": "Returns sandbox domain, Motor Block, outbound lock, allowlist, and caps. The allowlist is the effective list: sandbox recipients, link-confirmed recipients, the account address and the test sink, minus any address that clicked stop. domain.sandbox true means the Motorical-owned sandbox domain; false means your own domain. Requires a verified dashboard JWT (the same dashboard session obtained from login or set-password).\n\nOpenAPI: `GET /api/developer/sandbox`\nDocs: https://docs.motorical.com/llms.txt",
            "auth": {
              "type": "bearer",
              "bearer": [
                {
                  "key": "token",
                  "value": "{{bearerToken}}",
                  "type": "string"
                }
              ]
            }
          },
          "response": []
        },
        {
          "name": "Provision unpaid developer sandbox",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "url": {
              "raw": "{{apiBaseUrl}}/api/developer/sandbox/provision",
              "host": [
                "{{apiBaseUrl}}"
              ],
              "path": [
                "api",
                "developer",
                "sandbox",
                "provision"
              ]
            },
            "description": "Creates `<handle>.sandbox.motorical.com` (a Motorical-owned `.sandbox` domain, instant, no DNS for you to publish; a Free account that adds and fully verifies its own domain can instead get its sandbox Motor Block on that domain automatically when automatic provisioning is enabled), a transactional Motor Block with `product_allocation.developer_sandbox`, mints `mk_live_` once, and locks outbound to the account allowlist. Idempotent per account. Does not require a paid Motorical Plan.\n\nOpenAPI: `POST /api/developer/sandbox/provision`\nDocs: https://docs.motorical.com/llms.txt",
            "auth": {
              "type": "bearer",
              "bearer": [
                {
                  "key": "token",
                  "value": "{{bearerToken}}",
                  "type": "string"
                }
              ]
            },
            "body": {
              "mode": "raw",
              "raw": "{\n  \"handle\": \"string\",\n  \"channel\": \"cli\"\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            }
          },
          "response": []
        },
        {
          "name": "Update sandbox outbound lock / allowlist",
          "request": {
            "method": "PATCH",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "url": {
              "raw": "{{apiBaseUrl}}/api/developer/sandbox/outbound",
              "host": [
                "{{apiBaseUrl}}"
              ],
              "path": [
                "api",
                "developer",
                "sandbox",
                "outbound"
              ]
            },
            "description": "Widen or tighten the recipient allowlist. Never open-world while developer_sandbox is set; convert clears the lock.\n\nOpenAPI: `PATCH /api/developer/sandbox/outbound`\nDocs: https://docs.motorical.com/llms.txt",
            "auth": {
              "type": "bearer",
              "bearer": [
                {
                  "key": "token",
                  "value": "{{bearerToken}}",
                  "type": "string"
                }
              ]
            },
            "body": {
              "mode": "raw",
              "raw": "{\n  \"outboundLocked\": true,\n  \"allowedRecipients\": [\n    \"sender@yourdomain.com\"\n  ]\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            }
          },
          "response": []
        }
      ]
    },
    {
      "name": "Domains",
      "item": [
        {
          "name": "Add a customer domain",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "url": {
              "raw": "{{apiBaseUrl}}/api/domains",
              "host": [
                "{{apiBaseUrl}}"
              ],
              "path": [
                "api",
                "domains"
              ]
            },
            "description": "Returns verification DNS instructions. For cname_managed DKIM, publish the CNAME in verification.records.dkim / dnsRecords (not a TXT p= key).\n\nOpenAPI: `POST /api/domains`\nDocs: https://docs.motorical.com/llms.txt",
            "auth": {
              "type": "bearer",
              "bearer": [
                {
                  "key": "token",
                  "value": "{{bearerToken}}",
                  "type": "string"
                }
              ]
            },
            "body": {
              "mode": "raw",
              "raw": "{\n  \"domain\": \"string\",\n  \"verificationMethod\": \"dns\"\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            }
          },
          "response": []
        },
        {
          "name": "Add a customer domain (account-wide, OAuth/MCP-capable)",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "url": {
              "raw": "{{apiBaseUrl}}/api/public/v1/domains",
              "host": [
                "{{apiBaseUrl}}"
              ],
              "path": [
                "api",
                "public",
                "v1",
                "domains"
              ]
            },
            "description": "Same handler as POST /api/domains — identical validation, DKIM/Cloudflare setup, and verification-instruction generation — reached over a Public API bearer or MCP OAuth/Delegation grant instead of a dashboard session. Account-wide: no motorBlockId. Returns verification DNS instructions; for cname_managed DKIM publish the CNAME in verification.records.dkim / dnsRecords (not a TXT p= key).\n\nOpenAPI: `POST /api/public/v1/domains`\nDocs: https://docs.motorical.com/llms.txt",
            "auth": {
              "type": "bearer",
              "bearer": [
                {
                  "key": "token",
                  "value": "{{bearerToken}}",
                  "type": "string"
                }
              ]
            },
            "body": {
              "mode": "raw",
              "raw": "{\n  \"domain\": \"string\",\n  \"verificationMethod\": \"dns\"\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            }
          },
          "response": []
        },
        {
          "name": "Check DKIM/SPF/DMARC and persist send-readiness flags",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "url": {
              "raw": "{{apiBaseUrl}}/api/domains/{{id}}/check-dns",
              "host": [
                "{{apiBaseUrl}}"
              ],
              "path": [
                "api",
                "domains",
                "{{id}}",
                "check-dns"
              ]
            },
            "description": "Same email-auth refresh as re-verify. Use when /v1/send returns DOMAIN_DNS_INCOMPLETE despite dig showing correct records. Requires dashboard JWT (not Public API bearer / domain-health token). For a Public API bearer or MCP OAuth/Delegation grant, use POST /api/public/v1/domains/{id}/check-dns instead — same handler, no motorBlockId.\n\nOpenAPI: `POST /api/domains/{id}/check-dns`\nDocs: https://docs.motorical.com/llms.txt",
            "auth": {
              "type": "bearer",
              "bearer": [
                {
                  "key": "token",
                  "value": "{{bearerToken}}",
                  "type": "string"
                }
              ]
            },
            "body": {
              "mode": "raw",
              "raw": "{\n  \"recordType\": \"dkim\"\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            }
          },
          "response": []
        },
        {
          "name": "Check DKIM/SPF/DMARC and persist send-readiness flags (account-wide, OAuth/MCP-capable)",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "url": {
              "raw": "{{apiBaseUrl}}/api/public/v1/domains/{{id}}/check-dns",
              "host": [
                "{{apiBaseUrl}}"
              ],
              "path": [
                "api",
                "public",
                "v1",
                "domains",
                "{{id}}",
                "check-dns"
              ]
            },
            "description": "Same handler as POST /api/domains/{id}/check-dns, reached over a Public API bearer or MCP OAuth/Delegation grant instead of a dashboard session. Account-wide: no motorBlockId. Use when /v1/send returns DOMAIN_DNS_INCOMPLETE despite dig showing correct records.\n\nOpenAPI: `POST /api/public/v1/domains/{id}/check-dns`\nDocs: https://docs.motorical.com/llms.txt",
            "auth": {
              "type": "bearer",
              "bearer": [
                {
                  "key": "token",
                  "value": "{{bearerToken}}",
                  "type": "string"
                }
              ]
            },
            "body": {
              "mode": "raw",
              "raw": "{\n  \"recordType\": \"dkim\"\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            }
          },
          "response": []
        },
        {
          "name": "List domains on the account",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{apiBaseUrl}}/api/public/v1/domains",
              "host": [
                "{{apiBaseUrl}}"
              ],
              "path": [
                "api",
                "public",
                "v1",
                "domains"
              ]
            },
            "description": "Account-wide — domains belong to the account (domains.user_id), not to a Motor Block, and no motorBlockId is required or read. A Motor Block is created FROM a verified domain (motor_blocks.domain_id), never the reverse, so this is the entry point for a new account before any Motor Block exists. Symmetric with, and reuses the same handler as, the dashboard's domain list.\n\nOpenAPI: `GET /api/public/v1/domains`\nDocs: https://docs.motorical.com/llms.txt",
            "auth": {
              "type": "bearer",
              "bearer": [
                {
                  "key": "token",
                  "value": "{{bearerToken}}",
                  "type": "string"
                }
              ]
            }
          },
          "response": []
        },
        {
          "name": "Verify ownership and refresh DKIM/SPF send-readiness",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "url": {
              "raw": "{{apiBaseUrl}}/api/domains/{{id}}/verify",
              "host": [
                "{{apiBaseUrl}}"
              ],
              "path": [
                "api",
                "domains",
                "{{id}}",
                "verify"
              ]
            },
            "description": "First call verifies ownership TXT. Re-calling after verified=true live-checks DKIM/SPF/DMARC and sets dkim_configured/spf_configured (required for /v1/send). Response includes sendReady + summary.\n\nOpenAPI: `POST /api/domains/{id}/verify`\nDocs: https://docs.motorical.com/llms.txt",
            "auth": {
              "type": "bearer",
              "bearer": [
                {
                  "key": "token",
                  "value": "{{bearerToken}}",
                  "type": "string"
                }
              ]
            },
            "body": {
              "mode": "raw",
              "raw": "{\n  \"method\": \"dns\"\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            }
          },
          "response": []
        },
        {
          "name": "Verify ownership and refresh DKIM/SPF send-readiness (account-wide, OAuth/MCP-capable)",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "url": {
              "raw": "{{apiBaseUrl}}/api/public/v1/domains/{{id}}/verify",
              "host": [
                "{{apiBaseUrl}}"
              ],
              "path": [
                "api",
                "public",
                "v1",
                "domains",
                "{{id}}",
                "verify"
              ]
            },
            "description": "Same handler as POST /api/domains/{id}/verify, reached over a Public API bearer or MCP OAuth/Delegation grant instead of a dashboard session. Account-wide: no motorBlockId. First call verifies ownership TXT. Re-calling after verified=true live-checks DKIM/SPF/DMARC and sets dkim_configured/spf_configured (required for /v1/send). Response includes sendReady + summary.\n\nOpenAPI: `POST /api/public/v1/domains/{id}/verify`\nDocs: https://docs.motorical.com/llms.txt",
            "auth": {
              "type": "bearer",
              "bearer": [
                {
                  "key": "token",
                  "value": "{{bearerToken}}",
                  "type": "string"
                }
              ]
            },
            "body": {
              "mode": "raw",
              "raw": "{\n  \"method\": \"dns\"\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            }
          },
          "response": []
        }
      ]
    },
    {
      "name": "Exports",
      "item": [
        {
          "name": "Create export job",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "url": {
              "raw": "{{apiBaseUrl}}/api/public/v1/motor-blocks/{{motorBlockId}}/exports",
              "host": [
                "{{apiBaseUrl}}"
              ],
              "path": [
                "api",
                "public",
                "v1",
                "motor-blocks",
                "{{motorBlockId}}",
                "exports"
              ]
            },
            "description": "Create export job\n\nOpenAPI: `POST /api/public/v1/motor-blocks/{id}/exports`\nDocs: https://docs.motorical.com/llms.txt",
            "auth": {
              "type": "bearer",
              "bearer": [
                {
                  "key": "token",
                  "value": "{{bearerToken}}",
                  "type": "string"
                }
              ]
            },
            "body": {
              "mode": "raw",
              "raw": "{\n  \"jobType\": \"logs\",\n  \"params\": {},\n  \"includePII\": true\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            }
          },
          "response": []
        },
        {
          "name": "Download export file (signed token, single-use)",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{apiBaseUrl}}/api/public/v1/exports/{{jobId}}/download?token={{token}}",
              "host": [
                "{{apiBaseUrl}}"
              ],
              "path": [
                "api",
                "public",
                "v1",
                "exports",
                "{{jobId}}",
                "download"
              ],
              "query": [
                {
                  "key": "token",
                  "value": "{{token}}",
                  "description": "",
                  "disabled": false
                }
              ]
            },
            "description": "The file is deleted on a successful download — exports are not retained. GET the job status again for a fresh token against the same file if the download did not complete. An unretrieved file is deleted automatically 24 hours after the job completes.\n\nOpenAPI: `GET /api/public/v1/exports/{jobId}/download`\nDocs: https://docs.motorical.com/llms.txt",
            "auth": {
              "type": "bearer",
              "bearer": [
                {
                  "key": "token",
                  "value": "{{bearerToken}}",
                  "type": "string"
                }
              ]
            }
          },
          "response": []
        },
        {
          "name": "Get export job status",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{apiBaseUrl}}/api/public/v1/exports/{{jobId}}",
              "host": [
                "{{apiBaseUrl}}"
              ],
              "path": [
                "api",
                "public",
                "v1",
                "exports",
                "{{jobId}}"
              ]
            },
            "description": "Get export job status\n\nOpenAPI: `GET /api/public/v1/exports/{jobId}`\nDocs: https://docs.motorical.com/llms.txt",
            "auth": {
              "type": "bearer",
              "bearer": [
                {
                  "key": "token",
                  "value": "{{bearerToken}}",
                  "type": "string"
                }
              ]
            }
          },
          "response": []
        },
        {
          "name": "List recent export jobs",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{apiBaseUrl}}/api/public/v1/motor-blocks/{{motorBlockId}}/exports",
              "host": [
                "{{apiBaseUrl}}"
              ],
              "path": [
                "api",
                "public",
                "v1",
                "motor-blocks",
                "{{motorBlockId}}",
                "exports"
              ]
            },
            "description": "List recent export jobs\n\nOpenAPI: `GET /api/public/v1/motor-blocks/{id}/exports`\nDocs: https://docs.motorical.com/llms.txt",
            "auth": {
              "type": "bearer",
              "bearer": [
                {
                  "key": "token",
                  "value": "{{bearerToken}}",
                  "type": "string"
                }
              ]
            }
          },
          "response": []
        },
        {
          "name": "Preview recent logs (no job creation)",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{apiBaseUrl}}/api/public/v1/motor-blocks/{{motorBlockId}}/exports/preview?limit=50",
              "host": [
                "{{apiBaseUrl}}"
              ],
              "path": [
                "api",
                "public",
                "v1",
                "motor-blocks",
                "{{motorBlockId}}",
                "exports",
                "preview"
              ],
              "query": [
                {
                  "key": "limit",
                  "value": "50",
                  "description": "",
                  "disabled": false
                },
                {
                  "key": "includePII",
                  "value": "",
                  "description": "Requires logs.pii scope",
                  "disabled": true
                }
              ]
            },
            "description": "Preview recent logs (no job creation)\n\nOpenAPI: `GET /api/public/v1/motor-blocks/{id}/exports/preview`\nDocs: https://docs.motorical.com/llms.txt",
            "auth": {
              "type": "bearer",
              "bearer": [
                {
                  "key": "token",
                  "value": "{{bearerToken}}",
                  "type": "string"
                }
              ]
            }
          },
          "response": []
        }
      ]
    },
    {
      "name": "Logs",
      "item": [
        {
          "name": "Get message by send id (UUID)",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{apiBaseUrl}}/api/public/v1/messages/{{messageId}}",
              "host": [
                "{{apiBaseUrl}}"
              ],
              "path": [
                "api",
                "public",
                "v1",
                "messages",
                "{{messageId}}"
              ],
              "query": [
                {
                  "key": "includePII",
                  "value": "",
                  "description": "Requires logs.pii scope",
                  "disabled": true
                }
              ]
            },
            "description": "Get message by send id (UUID)\n\nOpenAPI: `GET /api/public/v1/messages/{id}`\nDocs: https://docs.motorical.com/llms.txt",
            "auth": {
              "type": "bearer",
              "bearer": [
                {
                  "key": "token",
                  "value": "{{bearerToken}}",
                  "type": "string"
                }
              ]
            }
          },
          "response": []
        },
        {
          "name": "Get message event timeline",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{apiBaseUrl}}/api/public/v1/messages/{{messageId}}/events",
              "host": [
                "{{apiBaseUrl}}"
              ],
              "path": [
                "api",
                "public",
                "v1",
                "messages",
                "{{messageId}}",
                "events"
              ],
              "query": [
                {
                  "key": "includePII",
                  "value": "",
                  "description": "Requires logs.pii scope",
                  "disabled": true
                }
              ]
            },
            "description": "Canonical lifecycle events from email_events.\n\nOpenAPI: `GET /api/public/v1/messages/{id}/events`\nDocs: https://docs.motorical.com/llms.txt",
            "auth": {
              "type": "bearer",
              "bearer": [
                {
                  "key": "token",
                  "value": "{{bearerToken}}",
                  "type": "string"
                }
              ]
            }
          },
          "response": []
        },
        {
          "name": "Lookup message by RFC Message-ID header",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{apiBaseUrl}}/api/public/v1/messages?smtpMessageId={{smtpMessageId}}",
              "host": [
                "{{apiBaseUrl}}"
              ],
              "path": [
                "api",
                "public",
                "v1",
                "messages"
              ],
              "query": [
                {
                  "key": "smtpMessageId",
                  "value": "{{smtpMessageId}}",
                  "description": "RFC Message-ID value (with or without angle brackets)",
                  "disabled": false
                },
                {
                  "key": "includePII",
                  "value": "",
                  "description": "",
                  "disabled": true
                }
              ]
            },
            "description": "Not a collection/list endpoint. Requires query smtpMessageId (the RFC Message-ID / SMTP message id). For listing recent sends use GET /motor-blocks/{id}/logs. For lookup by send UUID use GET /messages/{id}.\n\nOpenAPI: `GET /api/public/v1/messages`\nDocs: https://docs.motorical.com/llms.txt",
            "auth": {
              "type": "bearer",
              "bearer": [
                {
                  "key": "token",
                  "value": "{{bearerToken}}",
                  "type": "string"
                }
              ]
            }
          },
          "response": []
        },
        {
          "name": "Per-recipient outcomes for a multi-recipient send",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{apiBaseUrl}}/api/public/v1/messages/{{messageId}}/recipients",
              "host": [
                "{{apiBaseUrl}}"
              ],
              "path": [
                "api",
                "public",
                "v1",
                "messages",
                "{{messageId}}",
                "recipients"
              ],
              "query": [
                {
                  "key": "includePII",
                  "value": "",
                  "description": "Requires logs.pii scope",
                  "disabled": true
                }
              ]
            },
            "description": "GET /messages/{id} and GET /messages/{id}/events both collapse to a single email_events row (whichever recipient's log line landed first). This reads postfix_log_events grouped by recipient — the only place a multi-recipient send's individual recipient outcomes are visible.\n\nOpenAPI: `GET /api/public/v1/messages/{id}/recipients`\nDocs: https://docs.motorical.com/llms.txt",
            "auth": {
              "type": "bearer",
              "bearer": [
                {
                  "key": "token",
                  "value": "{{bearerToken}}",
                  "type": "string"
                }
              ]
            }
          },
          "response": []
        },
        {
          "name": "Search logs with cursor pagination",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{apiBaseUrl}}/api/public/v1/motor-blocks/{{motorBlockId}}/logs?limit=50",
              "host": [
                "{{apiBaseUrl}}"
              ],
              "path": [
                "api",
                "public",
                "v1",
                "motor-blocks",
                "{{motorBlockId}}",
                "logs"
              ],
              "query": [
                {
                  "key": "from",
                  "value": "",
                  "description": "",
                  "disabled": true
                },
                {
                  "key": "to",
                  "value": "",
                  "description": "",
                  "disabled": true
                },
                {
                  "key": "currentOutcome",
                  "value": "",
                  "description": "",
                  "disabled": true
                },
                {
                  "key": "query",
                  "value": "",
                  "description": "",
                  "disabled": true
                },
                {
                  "key": "limit",
                  "value": "50",
                  "description": "",
                  "disabled": false
                },
                {
                  "key": "cursor",
                  "value": "",
                  "description": "",
                  "disabled": true
                },
                {
                  "key": "includePII",
                  "value": "",
                  "description": "Requires logs.pii scope",
                  "disabled": true
                }
              ]
            },
            "description": "Search logs with cursor pagination\n\nOpenAPI: `GET /api/public/v1/motor-blocks/{id}/logs`\nDocs: https://docs.motorical.com/llms.txt",
            "auth": {
              "type": "bearer",
              "bearer": [
                {
                  "key": "token",
                  "value": "{{bearerToken}}",
                  "type": "string"
                }
              ]
            }
          },
          "response": []
        }
      ]
    },
    {
      "name": "Motor Blocks",
      "item": [
        {
          "name": "List motor blocks bound to the token",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{apiBaseUrl}}/api/public/v1/motor-blocks",
              "host": [
                "{{apiBaseUrl}}"
              ],
              "path": [
                "api",
                "public",
                "v1",
                "motor-blocks"
              ]
            },
            "description": "Returns the Motor Block(s) associated with the current public API token.\n\nOpenAPI: `GET /api/public/v1/motor-blocks`\nDocs: https://docs.motorical.com/llms.txt",
            "auth": {
              "type": "bearer",
              "bearer": [
                {
                  "key": "token",
                  "value": "{{bearerToken}}",
                  "type": "string"
                }
              ]
            }
          },
          "response": []
        },
        {
          "name": "Mint a Public Analytics API token with a dashboard JWT",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "url": {
              "raw": "{{apiBaseUrl}}/api/public/token",
              "host": [
                "{{apiBaseUrl}}"
              ],
              "path": [
                "api",
                "public",
                "token"
              ]
            },
            "description": "Dashboard and trusted-session flow for creating a short-lived bearer token for `/api/public/v1` endpoints. Server-to-server integrations should prefer `/api/public/token/account-key`.\n\nOpenAPI: `POST /api/public/token`\nDocs: https://docs.motorical.com/llms.txt",
            "auth": {
              "type": "bearer",
              "bearer": [
                {
                  "key": "token",
                  "value": "{{bearerToken}}",
                  "type": "string"
                }
              ]
            },
            "body": {
              "mode": "raw",
              "raw": "{\n  \"motorBlockId\": \"{{motorBlockId}}\",\n  \"scopes\": [\n    \"string\"\n  ],\n  \"ttlSeconds\": 300\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            }
          },
          "response": []
        },
        {
          "name": "Mint a Public Analytics API token with an Account API Key",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "url": {
              "raw": "{{apiBaseUrl}}/api/public/token/account-key",
              "host": [
                "{{apiBaseUrl}}"
              ],
              "path": [
                "api",
                "public",
                "token",
                "account-key"
              ]
            },
            "description": "Use an Account API Key (`ak_live_...`) to create a short-lived bearer token for `/api/public/v1` endpoints. The key can be supplied as `Authorization: ApiKey ak_live_...` or `X-Api-Key: ak_live_...`.\n\nOpenAPI: `POST /api/public/token/account-key`\nDocs: https://docs.motorical.com/llms.txt",
            "auth": {
              "type": "apikey",
              "apikey": [
                {
                  "key": "key",
                  "value": "Authorization",
                  "type": "string"
                },
                {
                  "key": "value",
                  "value": "ApiKey {{akApiKey}}",
                  "type": "string"
                },
                {
                  "key": "in",
                  "value": "header",
                  "type": "string"
                }
              ]
            },
            "body": {
              "mode": "raw",
              "raw": "{\n  \"motorBlockId\": \"{{motorBlockId}}\",\n  \"scopes\": [\n    \"logs.read\",\n    \"analytics.read\",\n    \"webhooks.manage\"\n  ],\n  \"ttlSeconds\": 900\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            }
          },
          "response": []
        }
      ]
    },
    {
      "name": "OAuth",
      "item": [
        {
          "name": "OAuth 2.0 authorization endpoint (consent HTML)",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{dashboardBaseUrl}}/api/oauth2/authorize?client_id={{client_id}}&response_type={{response_type}}&redirect_uri={{redirect_uri}}",
              "host": [
                "{{dashboardBaseUrl}}"
              ],
              "path": [
                "api",
                "oauth2",
                "authorize"
              ],
              "query": [
                {
                  "key": "client_id",
                  "value": "{{client_id}}",
                  "description": "",
                  "disabled": false
                },
                {
                  "key": "response_type",
                  "value": "{{response_type}}",
                  "description": "",
                  "disabled": false
                },
                {
                  "key": "redirect_uri",
                  "value": "{{redirect_uri}}",
                  "description": "",
                  "disabled": false
                },
                {
                  "key": "scope",
                  "value": "email.send",
                  "description": "",
                  "disabled": true
                },
                {
                  "key": "state",
                  "value": "",
                  "description": "",
                  "disabled": true
                }
              ]
            },
            "description": "Starts the authorization-code flow for a Motor Block OAuth app. Returns an HTML consent page. After approve, redirects to redirect_uri with ?code=. Use the access token from /api/oauth2/token as the SMTP password on mail.motorical.com — not on POST /v1/send.\n\nOpenAPI: `GET /api/oauth2/authorize`\nDocs: https://docs.motorical.com/llms.txt",
            "auth": {
              "type": "noauth"
            }
          },
          "response": []
        },
        {
          "name": "OAuth 2.0 token endpoint",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "url": {
              "raw": "{{dashboardBaseUrl}}/api/oauth2/token",
              "host": [
                "{{dashboardBaseUrl}}"
              ],
              "path": [
                "api",
                "oauth2",
                "token"
              ]
            },
            "description": "Exchange an authorization code or refresh token for an access token. The access_token JWT is used as the SMTP password (PLAIN/LOGIN) or via XOAUTH2 on mail.motorical.com:2587.\n\nOpenAPI: `POST /api/oauth2/token`\nDocs: https://docs.motorical.com/llms.txt",
            "auth": {
              "type": "noauth"
            },
            "body": {
              "mode": "raw",
              "raw": "{\n  \"grant_type\": \"authorization_code\",\n  \"code\": \"{{oauthAuthorizationCode}}\",\n  \"client_id\": \"{{oauthClientId}}\",\n  \"client_secret\": \"{{oauthClientSecret}}\",\n  \"redirect_uri\": \"https://motorical.com/oauth/callback\"\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            }
          },
          "response": []
        },
        {
          "name": "Validate an OAuth access token",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{dashboardBaseUrl}}/api/oauth2/validate",
              "host": [
                "{{dashboardBaseUrl}}"
              ],
              "path": [
                "api",
                "oauth2",
                "validate"
              ],
              "query": [
                {
                  "key": "token",
                  "value": "",
                  "description": "",
                  "disabled": true
                },
                {
                  "key": "access_token",
                  "value": "",
                  "description": "",
                  "disabled": true
                }
              ]
            },
            "description": "Optional helper to introspect a Motorical-issued SMTP access token (query or Authorization Bearer).\n\nOpenAPI: `GET /api/oauth2/validate`\nDocs: https://docs.motorical.com/llms.txt",
            "auth": {
              "type": "noauth"
            }
          },
          "response": []
        }
      ]
    },
    {
      "name": "Onboarding Auth",
      "item": [
        {
          "name": "Mint a one-time browser handoff URL",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "url": {
              "raw": "{{apiBaseUrl}}/api/auth/web-handoff",
              "host": [
                "{{apiBaseUrl}}"
              ],
              "path": [
                "api",
                "auth",
                "web-handoff"
              ]
            },
            "description": "Requires dashboard Bearer JWT. Returns a ~90s URL `https://motorical.com/auth/cli?code=…`. Open the link right away; if it says expired, ask for a new link or sign in with your password. Browser exchanges the code for a normal web session; if cli_password_pending, forces /auth/set-password.\n\nOpenAPI: `POST /api/auth/web-handoff`\nDocs: https://docs.motorical.com/llms.txt",
            "auth": {
              "type": "bearer",
              "bearer": [
                {
                  "key": "token",
                  "value": "{{bearerToken}}",
                  "type": "string"
                }
              ]
            },
            "body": {
              "mode": "raw",
              "raw": "{\n  \"path\": \"string\"\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            }
          },
          "response": []
        },
        {
          "name": "Password login (returns JWT + refreshToken)",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "url": {
              "raw": "{{apiBaseUrl}}/api/auth/login",
              "host": [
                "{{apiBaseUrl}}"
              ],
              "path": [
                "api",
                "auth",
                "login"
              ]
            },
            "description": "Same token shape as set-password. MFA accounts get a challenge instead of tokens until MFA verify succeeds.\n\nOpenAPI: `POST /api/auth/login`\nDocs: https://docs.motorical.com/llms.txt",
            "auth": {
              "type": "noauth"
            },
            "body": {
              "mode": "raw",
              "raw": "{\n  \"email\": \"sender@yourdomain.com\",\n  \"password\": \"string\"\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            }
          },
          "response": []
        },
        {
          "name": "Rotate refresh token; issue new access JWT (non-interactive)",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "url": {
              "raw": "{{apiBaseUrl}}/api/auth/refresh",
              "host": [
                "{{apiBaseUrl}}"
              ],
              "path": [
                "api",
                "auth",
                "refresh"
              ]
            },
            "description": "Browser: send `__Host-motorical_refresh` cookie. Agents and scripts: POST JSON `{ \"refreshToken\": \"...\" }` (no cookie required). Response includes new `token` + rotated `refreshToken`. Store the new refreshToken; old one has a short grace window.\n\nOpenAPI: `POST /api/auth/refresh`\nDocs: https://docs.motorical.com/llms.txt",
            "auth": {
              "type": "noauth"
            },
            "body": {
              "mode": "raw",
              "raw": "{\n  \"refreshToken\": \"string\"\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            }
          },
          "response": []
        },
        {
          "name": "Set password after email verification (returns JWT + refreshToken)",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "url": {
              "raw": "{{apiBaseUrl}}/api/auth/set-password",
              "host": [
                "{{apiBaseUrl}}"
              ],
              "path": [
                "api",
                "auth",
                "set-password"
              ]
            },
            "description": "Access JWT expires ~15m. refreshToken (7d) is returned in JSON for agents and also set as HttpOnly cookie for browsers. Pass channel: cli|agent to keep cli_password_pending so first browser visit forces establish-password.\n\nOpenAPI: `POST /api/auth/set-password`\nDocs: https://docs.motorical.com/llms.txt",
            "auth": {
              "type": "noauth"
            },
            "body": {
              "mode": "raw",
              "raw": "{\n  \"email\": \"sender@yourdomain.com\",\n  \"password\": \"string\",\n  \"setupToken\": \"string\",\n  \"channel\": \"cli\"\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            }
          },
          "response": []
        },
        {
          "name": "Start agent signup (email verification code)",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "url": {
              "raw": "{{apiBaseUrl}}/api/auth/register",
              "host": [
                "{{apiBaseUrl}}"
              ],
              "path": [
                "api",
                "auth",
                "register"
              ]
            },
            "description": "Sends a 6-digit verification code. Optional onboardingChannel: cli|agent marks the account for sandbox onboarding. Not for production send — after verify + set-password use dashboard JWT for sandbox APIs, then mk_live_ for /v1/send.\n\nOpenAPI: `POST /api/auth/register`\nDocs: https://docs.motorical.com/llms.txt",
            "auth": {
              "type": "noauth"
            },
            "body": {
              "mode": "raw",
              "raw": "{\n  \"email\": \"sender@yourdomain.com\",\n  \"onboardingChannel\": \"cli\"\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            }
          },
          "response": []
        },
        {
          "name": "Verify email with 6-digit code",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "url": {
              "raw": "{{apiBaseUrl}}/api/auth/verify-code",
              "host": [
                "{{apiBaseUrl}}"
              ],
              "path": [
                "api",
                "auth",
                "verify-code"
              ]
            },
            "description": "Verify email with 6-digit code\n\nOpenAPI: `POST /api/auth/verify-code`\nDocs: https://docs.motorical.com/llms.txt",
            "auth": {
              "type": "noauth"
            },
            "body": {
              "mode": "raw",
              "raw": "{\n  \"email\": \"sender@yourdomain.com\",\n  \"code\": \"string\"\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            }
          },
          "response": []
        }
      ]
    },
    {
      "name": "Send",
      "item": [
        {
          "name": "Get HTTP Send API service status",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{apiBaseUrl}}/v1/status",
              "host": [
                "{{apiBaseUrl}}"
              ],
              "path": [
                "v1",
                "status"
              ]
            },
            "description": "Get HTTP Send API service status\n\nOpenAPI: `GET /v1/status`\nDocs: https://docs.motorical.com/llms.txt",
            "auth": {
              "type": "apikey",
              "apikey": [
                {
                  "key": "key",
                  "value": "Authorization",
                  "type": "string"
                },
                {
                  "key": "value",
                  "value": "ApiKey {{mkApiKey}}",
                  "type": "string"
                },
                {
                  "key": "in",
                  "value": "header",
                  "type": "string"
                }
              ]
            }
          },
          "response": []
        },
        {
          "name": "Send or validate an email",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "url": {
              "raw": "{{apiBaseUrl}}/v1/send",
              "host": [
                "{{apiBaseUrl}}"
              ],
              "path": [
                "v1",
                "send"
              ]
            },
            "description": "Queue an email for immediate delivery, or validate the payload only when `dryRun: true`. `dryRun` defaults to false on this route: the email is sent unless you pass `dryRun: true`, so always set it explicitly. Authenticated via Motor Block API key (`Authorization: ApiKey mk_live_...` or `X-Api-Key: mk_live_...`).\n\n**Dry run:** `dryRun: true` performs the same authentication, domain, DNS, recipient, subject, and body-size checks but does not insert an email log or push delivery work to Redis.\n\n**Idempotency:** Include an `Idempotency-Key` header to prevent duplicate sends on retries (24h window).\n\n**Webhook verification:** Delivery events are posted to your webhook endpoints with an `X-Motorical-Signature` header containing an HMAC-SHA256 hex digest computed over the JSON body using the webhook secret you received at creation time. Verify with: `crypto.createHmac(\"sha256\", secret).update(body).digest(\"hex\")`.\n\nOpenAPI: `POST /v1/send`\nDocs: https://docs.motorical.com/llms.txt",
            "auth": {
              "type": "apikey",
              "apikey": [
                {
                  "key": "key",
                  "value": "Authorization",
                  "type": "string"
                },
                {
                  "key": "value",
                  "value": "ApiKey {{mkApiKey}}",
                  "type": "string"
                },
                {
                  "key": "in",
                  "value": "header",
                  "type": "string"
                }
              ]
            },
            "body": {
              "mode": "raw",
              "raw": "{\n  \"from\": \"sender@yourdomain.com\",\n  \"fromName\": \"Acme Billing\",\n  \"subject\": \"string\",\n  \"text\": \"string\",\n  \"html\": \"string\",\n  \"headers\": {}\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            }
          },
          "response": []
        },
        {
          "name": "Test SMTP setup parameters",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "url": {
              "raw": "{{apiBaseUrl}}/v1/test-email",
              "host": [
                "{{apiBaseUrl}}"
              ],
              "path": [
                "v1",
                "test-email"
              ]
            },
            "description": "Validate SMTP setup parameters for customer setup flows. Authenticated with a Motor Block API key supplied as `Authorization: ApiKey mk_live_...` or `X-Api-Key: mk_live_...`.\n\nOpenAPI: `POST /v1/test-email`\nDocs: https://docs.motorical.com/llms.txt",
            "auth": {
              "type": "apikey",
              "apikey": [
                {
                  "key": "key",
                  "value": "Authorization",
                  "type": "string"
                },
                {
                  "key": "value",
                  "value": "ApiKey {{mkApiKey}}",
                  "type": "string"
                },
                {
                  "key": "in",
                  "value": "header",
                  "type": "string"
                }
              ]
            },
            "body": {
              "mode": "raw",
              "raw": "{\n  \"method\": \"basic_auth\",\n  \"host\": \"string\",\n  \"port\": 0,\n  \"username\": \"string\",\n  \"password\": \"string\",\n  \"to\": \"sender@yourdomain.com\",\n  \"subject\": \"string\"\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            }
          },
          "response": []
        }
      ]
    },
    {
      "name": "Webhooks",
      "item": [
        {
          "name": "Create webhook",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "url": {
              "raw": "{{apiBaseUrl}}/api/public/v1/motor-blocks/{{motorBlockId}}/webhooks",
              "host": [
                "{{apiBaseUrl}}"
              ],
              "path": [
                "api",
                "public",
                "v1",
                "motor-blocks",
                "{{motorBlockId}}",
                "webhooks"
              ]
            },
            "description": "Create webhook\n\nOpenAPI: `POST /api/public/v1/motor-blocks/{id}/webhooks`\nDocs: https://docs.motorical.com/llms.txt",
            "auth": {
              "type": "bearer",
              "bearer": [
                {
                  "key": "token",
                  "value": "{{bearerToken}}",
                  "type": "string"
                }
              ]
            },
            "body": {
              "mode": "raw",
              "raw": "{\n  \"url\": \"string\",\n  \"events\": [\n    \"message.processed\"\n  ]\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            }
          },
          "response": []
        },
        {
          "name": "Delete webhook",
          "request": {
            "method": "DELETE",
            "header": [],
            "url": {
              "raw": "{{apiBaseUrl}}/api/public/v1/motor-blocks/{{motorBlockId}}/webhooks/{{webhookId}}",
              "host": [
                "{{apiBaseUrl}}"
              ],
              "path": [
                "api",
                "public",
                "v1",
                "motor-blocks",
                "{{motorBlockId}}",
                "webhooks",
                "{{webhookId}}"
              ]
            },
            "description": "Delete webhook\n\nOpenAPI: `DELETE /api/public/v1/motor-blocks/{id}/webhooks/{webhookId}`\nDocs: https://docs.motorical.com/llms.txt",
            "auth": {
              "type": "bearer",
              "bearer": [
                {
                  "key": "token",
                  "value": "{{bearerToken}}",
                  "type": "string"
                }
              ]
            }
          },
          "response": []
        },
        {
          "name": "Enqueue a test webhook delivery",
          "request": {
            "method": "POST",
            "header": [],
            "url": {
              "raw": "{{apiBaseUrl}}/api/public/v1/motor-blocks/{{motorBlockId}}/webhooks/{{webhookId}}/test",
              "host": [
                "{{apiBaseUrl}}"
              ],
              "path": [
                "api",
                "public",
                "v1",
                "motor-blocks",
                "{{motorBlockId}}",
                "webhooks",
                "{{webhookId}}",
                "test"
              ]
            },
            "description": "Enqueue a test webhook delivery\n\nOpenAPI: `POST /api/public/v1/motor-blocks/{id}/webhooks/{webhookId}/test`\nDocs: https://docs.motorical.com/llms.txt",
            "auth": {
              "type": "bearer",
              "bearer": [
                {
                  "key": "token",
                  "value": "{{bearerToken}}",
                  "type": "string"
                }
              ]
            }
          },
          "response": []
        },
        {
          "name": "List webhooks",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{apiBaseUrl}}/api/public/v1/motor-blocks/{{motorBlockId}}/webhooks",
              "host": [
                "{{apiBaseUrl}}"
              ],
              "path": [
                "api",
                "public",
                "v1",
                "motor-blocks",
                "{{motorBlockId}}",
                "webhooks"
              ]
            },
            "description": "List webhooks\n\nOpenAPI: `GET /api/public/v1/motor-blocks/{id}/webhooks`\nDocs: https://docs.motorical.com/llms.txt",
            "auth": {
              "type": "bearer",
              "bearer": [
                {
                  "key": "token",
                  "value": "{{bearerToken}}",
                  "type": "string"
                }
              ]
            }
          },
          "response": []
        },
        {
          "name": "Update webhook",
          "request": {
            "method": "PUT",
            "header": [],
            "url": {
              "raw": "{{apiBaseUrl}}/api/public/v1/motor-blocks/{{motorBlockId}}/webhooks/{{webhookId}}",
              "host": [
                "{{apiBaseUrl}}"
              ],
              "path": [
                "api",
                "public",
                "v1",
                "motor-blocks",
                "{{motorBlockId}}",
                "webhooks",
                "{{webhookId}}"
              ]
            },
            "description": "Update webhook\n\nOpenAPI: `PUT /api/public/v1/motor-blocks/{id}/webhooks/{webhookId}`\nDocs: https://docs.motorical.com/llms.txt",
            "auth": {
              "type": "bearer",
              "bearer": [
                {
                  "key": "token",
                  "value": "{{bearerToken}}",
                  "type": "string"
                }
              ]
            }
          },
          "response": []
        },
        {
          "name": "Webhook delivery history",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{apiBaseUrl}}/api/public/v1/motor-blocks/{{motorBlockId}}/webhooks/{{webhookId}}/deliveries?limit=50",
              "host": [
                "{{apiBaseUrl}}"
              ],
              "path": [
                "api",
                "public",
                "v1",
                "motor-blocks",
                "{{motorBlockId}}",
                "webhooks",
                "{{webhookId}}",
                "deliveries"
              ],
              "query": [
                {
                  "key": "limit",
                  "value": "50",
                  "description": "",
                  "disabled": false
                }
              ]
            },
            "description": "Webhook delivery history\n\nOpenAPI: `GET /api/public/v1/motor-blocks/{id}/webhooks/{webhookId}/deliveries`\nDocs: https://docs.motorical.com/llms.txt",
            "auth": {
              "type": "bearer",
              "bearer": [
                {
                  "key": "token",
                  "value": "{{bearerToken}}",
                  "type": "string"
                }
              ]
            }
          },
          "response": []
        },
        {
          "name": "Webhook delivery stats",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{apiBaseUrl}}/api/public/v1/motor-blocks/{{motorBlockId}}/webhooks/{{webhookId}}/stats",
              "host": [
                "{{apiBaseUrl}}"
              ],
              "path": [
                "api",
                "public",
                "v1",
                "motor-blocks",
                "{{motorBlockId}}",
                "webhooks",
                "{{webhookId}}",
                "stats"
              ],
              "query": [
                {
                  "key": "hours",
                  "value": "",
                  "description": "",
                  "disabled": true
                }
              ]
            },
            "description": "Webhook delivery stats\n\nOpenAPI: `GET /api/public/v1/motor-blocks/{id}/webhooks/{webhookId}/stats`\nDocs: https://docs.motorical.com/llms.txt",
            "auth": {
              "type": "bearer",
              "bearer": [
                {
                  "key": "token",
                  "value": "{{bearerToken}}",
                  "type": "string"
                }
              ]
            }
          },
          "response": []
        }
      ]
    }
  ]
}
