{
  "item": [
    {
      "id": "ab6024b8-0b15-4927-9fcf-7d05ec76e859",
      "name": "Conversations",
      "description": {
        "content": "Obtain or create a `conversationId` for **in-conversation** messaging.\n\n**Three options:** (1) `POST /api/conversations/getConversationByPhoneAndEmail` — find or create contact + conversation from phone/email. (2) `POST /api/contacts/create-new-conversation` — create contact (if needed) and conversation in one request. (3) `POST /api/conversations` — create conversation when you already have a `contactId`.\n\n**Optional:** you can skip these and send standalone messages with `to` / `recipientId` — the send APIs auto-resolve contact and conversation.\n",
        "type": "text/plain"
      },
      "item": [
        {
          "id": "6893c659-7b65-4fb5-a4ef-2a7081597ee5",
          "name": "Resolve conversation by phone or email (find or create)",
          "request": {
            "name": "Resolve conversation by phone or email (find or create)",
            "description": {
              "content": "Returns `{ data: { _id: conversationId, contactId: { ... } } }`. Creates contact/conversation if missing.\n",
              "type": "text/plain"
            },
            "url": {
              "path": [
                "api",
                "conversations",
                "getConversationByPhoneAndEmail"
              ],
              "host": [
                "{{baseUrl}}"
              ],
              "query": [],
              "variable": []
            },
            "header": [
              {
                "disabled": false,
                "description": "Unique key for safe retries on creates and message sends.",
                "key": "Idempotency-Key",
                "value": "01HZY8QX3K9V2B4C6D8E0F2G4H6J8K0L"
              },
              {
                "key": "Content-Type",
                "value": "application/json"
              },
              {
                "key": "Accept",
                "value": "application/json"
              }
            ],
            "method": "POST",
            "auth": {
              "type": "apikey",
              "apikey": [
                {
                  "key": "key",
                  "value": "x-api-key"
                },
                {
                  "key": "value",
                  "value": "{{apiKey}}"
                },
                {
                  "key": "in",
                  "value": "header"
                }
              ]
            },
            "body": {
              "mode": "raw",
              "raw": "{\n  \"email\": \"john.doe@example.com\",\n  \"phone\": \"+1234567890\"\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            }
          },
          "response": [],
          "event": [],
          "protocolProfileBehavior": {
            "disableBodyPruning": true
          }
        },
        {
          "id": "cf86f99d-90b2-4919-a108-ce4aef83e3e5",
          "name": "Create contact and conversation",
          "request": {
            "name": "Create contact and conversation",
            "description": {
              "content": "Creates contact if missing, then creates conversation. Returns `data._id` as `conversationId`. Reuses existing contact/conversation when phone or email matches.\n",
              "type": "text/plain"
            },
            "url": {
              "path": [
                "api",
                "contacts",
                "create-new-conversation"
              ],
              "host": [
                "{{baseUrl}}"
              ],
              "query": [],
              "variable": []
            },
            "header": [
              {
                "disabled": false,
                "description": "Unique key for safe retries on creates and message sends.",
                "key": "Idempotency-Key",
                "value": "01HZY8QX3K9V2B4C6D8E0F2G4H6J8K0L"
              },
              {
                "key": "Content-Type",
                "value": "application/json"
              },
              {
                "key": "Accept",
                "value": "application/json"
              }
            ],
            "method": "POST",
            "auth": {
              "type": "apikey",
              "apikey": [
                {
                  "key": "key",
                  "value": "x-api-key"
                },
                {
                  "key": "value",
                  "value": "{{apiKey}}"
                },
                {
                  "key": "in",
                  "value": "header"
                }
              ]
            },
            "body": {
              "mode": "raw",
              "raw": "{\n  \"firstName\": \"John\",\n  \"lastName\": \"Doe\",\n  \"email\": \"john.doe@example.com\",\n  \"phone\": \"+1234567890\",\n  \"lifecycleStage\": \"Lead\",\n  \"groupId\": \"64f91a7d28ae948d8e9e8435\"\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            }
          },
          "response": [],
          "event": [],
          "protocolProfileBehavior": {
            "disableBodyPruning": true
          }
        },
        {
          "id": "ced93974-2770-4d79-807a-bee79f8f4b1c",
          "name": "Create conversation (by contactId)",
          "request": {
            "name": "Create conversation (by contactId)",
            "description": {
              "content": "`POST /api/conversations` — requires an existing `contactId`. Returns `201` with new conversation or `200` if one already exists for that contact.\n",
              "type": "text/plain"
            },
            "url": {
              "path": [
                "api",
                "conversations"
              ],
              "host": [
                "{{baseUrl}}"
              ],
              "query": [],
              "variable": []
            },
            "header": [
              {
                "disabled": false,
                "description": "Unique key for safe retries on creates and message sends.",
                "key": "Idempotency-Key",
                "value": "01HZY8QX3K9V2B4C6D8E0F2G4H6J8K0L"
              },
              {
                "key": "Content-Type",
                "value": "application/json"
              },
              {
                "key": "Accept",
                "value": "application/json"
              }
            ],
            "method": "POST",
            "auth": {
              "type": "apikey",
              "apikey": [
                {
                  "key": "key",
                  "value": "x-api-key"
                },
                {
                  "key": "value",
                  "value": "{{apiKey}}"
                },
                {
                  "key": "in",
                  "value": "header"
                }
              ]
            },
            "body": {
              "mode": "raw",
              "raw": "{\n  \"contactId\": \"64f91a7d28ae948d8e9e8430\"\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            }
          },
          "response": [],
          "event": [],
          "protocolProfileBehavior": {
            "disableBodyPruning": true
          }
        },
        {
          "id": "0831d8c2-7963-4f04-8826-73331b89ae68",
          "name": "Get conversation by id",
          "request": {
            "name": "Get conversation by id",
            "description": {
              "content": "Fetch a single conversation with populated contact.\n",
              "type": "text/plain"
            },
            "url": {
              "path": [
                "api",
                "conversations",
                ":conversationId"
              ],
              "host": [
                "{{baseUrl}}"
              ],
              "query": [],
              "variable": [
                {
                  "disabled": false,
                  "type": "any",
                  "value": "64f91a7d28ae948d8e9e8430",
                  "key": "conversationId",
                  "description": "(Required) "
                }
              ]
            },
            "header": [
              {
                "key": "Accept",
                "value": "application/json"
              }
            ],
            "method": "GET",
            "auth": {
              "type": "apikey",
              "apikey": [
                {
                  "key": "key",
                  "value": "x-api-key"
                },
                {
                  "key": "value",
                  "value": "{{apiKey}}"
                },
                {
                  "key": "in",
                  "value": "header"
                }
              ]
            }
          },
          "response": [],
          "event": [],
          "protocolProfileBehavior": {
            "disableBodyPruning": true
          }
        },
        {
          "id": "ae7d968a-e716-476c-97a8-52535ac4ee3a",
          "name": "List conversations for a contact",
          "request": {
            "name": "List conversations for a contact",
            "description": {
              "content": "All conversations linked to a contact id.\n",
              "type": "text/plain"
            },
            "url": {
              "path": [
                "api",
                "conversations",
                "getAllConversationsOfContact",
                ":contactId"
              ],
              "host": [
                "{{baseUrl}}"
              ],
              "query": [],
              "variable": [
                {
                  "disabled": false,
                  "type": "any",
                  "value": "64f91a7d28ae948d8e9e8430",
                  "key": "contactId",
                  "description": "(Required) "
                }
              ]
            },
            "header": [
              {
                "key": "Accept",
                "value": "application/json"
              }
            ],
            "method": "GET",
            "auth": {
              "type": "apikey",
              "apikey": [
                {
                  "key": "key",
                  "value": "x-api-key"
                },
                {
                  "key": "value",
                  "value": "{{apiKey}}"
                },
                {
                  "key": "in",
                  "value": "header"
                }
              ]
            }
          },
          "response": [],
          "event": [],
          "protocolProfileBehavior": {
            "disableBodyPruning": true
          }
        },
        {
          "id": "92285c1e-8e68-498c-bfdb-9b3bd27edfa0",
          "name": "List messages in a conversation",
          "request": {
            "name": "List messages in a conversation",
            "description": {
              "content": "Paginated message history for a conversation (`?page=1&limit=10`, optional `channel`).\n",
              "type": "text/plain"
            },
            "url": {
              "path": [
                "api",
                "messages",
                ":conversationId"
              ],
              "host": [
                "{{baseUrl}}"
              ],
              "query": [],
              "variable": [
                {
                  "disabled": false,
                  "type": "any",
                  "value": "64f91a7d28ae948d8e9e8430",
                  "key": "conversationId",
                  "description": "(Required) "
                }
              ]
            },
            "header": [
              {
                "key": "Accept",
                "value": "application/json"
              }
            ],
            "method": "GET",
            "auth": {
              "type": "apikey",
              "apikey": [
                {
                  "key": "key",
                  "value": "x-api-key"
                },
                {
                  "key": "value",
                  "value": "{{apiKey}}"
                },
                {
                  "key": "in",
                  "value": "header"
                }
              ]
            }
          },
          "response": [],
          "event": [],
          "protocolProfileBehavior": {
            "disableBodyPruning": true
          }
        }
      ],
      "event": []
    },
    {
      "id": "c4480d9a-0b44-4d42-b071-e9958bde84d5",
      "name": "Send Live Chat",
      "description": {
        "content": "Send live chat on channel `chat`. **Two ways to target the recipient:** (1) **In conversation** — pass `conversationId` (and optionally `contactId`). (2) **Standalone** — omit `conversationId`; pass `contactId` or `to` (phone). (`recipientId` is accepted as an alias for `contactId`.)\n",
        "type": "text/plain"
      },
      "item": [
        {
          "id": "136eea7f-19f0-43f1-a74c-fb9b94884db3",
          "name": "Send a live chat message",
          "request": {
            "name": "Send a live chat message",
            "description": {
              "content": "Supports **in-conversation** (`conversationId`) or **standalone** (`contactId` or `to`). `channel` must be `chat`. Attachment `mediaType`: image, video, audio, file, or empty string.\n",
              "type": "text/plain"
            },
            "url": {
              "path": [
                "api",
                "messages",
                "sendLiveMessage"
              ],
              "host": [
                "{{baseUrl}}"
              ],
              "query": [],
              "variable": []
            },
            "header": [
              {
                "disabled": false,
                "description": "Unique key for safe retries on creates and message sends.",
                "key": "Idempotency-Key",
                "value": "01HZY8QX3K9V2B4C6D8E0F2G4H6J8K0L"
              },
              {
                "key": "Content-Type",
                "value": "application/json"
              },
              {
                "key": "Accept",
                "value": "application/json"
              }
            ],
            "method": "POST",
            "auth": {
              "type": "apikey",
              "apikey": [
                {
                  "key": "key",
                  "value": "x-api-key"
                },
                {
                  "key": "value",
                  "value": "{{apiKey}}"
                },
                {
                  "key": "in",
                  "value": "header"
                }
              ]
            },
            "body": {
              "mode": "raw",
              "raw": "{\n  \"conversationId\": \"64f91a7d28ae948d8e9e8430\",\n  \"contactId\": \"64f91a7d28ae948d8e9e8432\",\n  \"content\": \"Hello, {{contact.name}}! Please find the attached file.\",\n  \"channel\": \"chat\",\n  \"mediaUrl\": null,\n  \"mediaType\": null,\n  \"source\": \"widget\",\n  \"attachments\": [\n    {\n      \"fileName\": \"document.pdf\",\n      \"fileSize\": \"120 KB\",\n      \"mimeType\": \"application/pdf\",\n      \"mediaUrl\": \"https://your-s3-bucket.s3.amazonaws.com/document.pdf\",\n      \"mediaType\": \"file\"\n    },\n    {\n      \"fileName\": \"image.jpg\",\n      \"fileSize\": \"450 KB\",\n      \"mimeType\": \"image/jpeg\",\n      \"mediaUrl\": \"https://your-s3-bucket.s3.amazonaws.com/image.jpg\",\n      \"mediaType\": \"image\"\n    }\n  ]\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            }
          },
          "response": [],
          "event": [],
          "protocolProfileBehavior": {
            "disableBodyPruning": true
          }
        }
      ],
      "event": []
    },
    {
      "id": "05f47500-eeec-4e00-a24d-dfb3be0dba9c",
      "name": "Send Email",
      "description": {
        "content": "Send email on channel `email`. **In conversation:** `conversationId` + `recipientIds`. **Standalone:** omit `conversationId`; use `to` (email) and/or `recipientIds`. `providerId` = provider id or provider email.\n",
        "type": "text/plain"
      },
      "item": [
        {
          "id": "8fff9421-b37f-4a2f-b2f9-aac3abaca56c",
          "name": "Send an email message",
          "request": {
            "name": "Send an email message",
            "description": {
              "content": "**In conversation** or **standalone** — see folder description. `providerId` = provider id or provider email.\n",
              "type": "text/plain"
            },
            "url": {
              "path": [
                "api",
                "messages",
                "sendEmailMessage"
              ],
              "host": [
                "{{baseUrl}}"
              ],
              "query": [],
              "variable": []
            },
            "header": [
              {
                "disabled": false,
                "description": "Unique key for safe retries on creates and message sends.",
                "key": "Idempotency-Key",
                "value": "01HZY8QX3K9V2B4C6D8E0F2G4H6J8K0L"
              },
              {
                "key": "Content-Type",
                "value": "application/json"
              },
              {
                "key": "Accept",
                "value": "application/json"
              }
            ],
            "method": "POST",
            "auth": {
              "type": "apikey",
              "apikey": [
                {
                  "key": "key",
                  "value": "x-api-key"
                },
                {
                  "key": "value",
                  "value": "{{apiKey}}"
                },
                {
                  "key": "in",
                  "value": "header"
                }
              ]
            },
            "body": {
              "mode": "raw",
              "raw": "{\n  \"conversationId\": \"64d82f8f90b04f2b9c343b7a\",\n  \"recipientIds\": [\n    \"64c1e942d0911c73920693bd\"\n  ],\n  \"channel\": \"email\",\n  \"subject\": \"Test Email Subject\",\n  \"content\": \"<p>Hello {{contact.firstName}}, this is a test email.</p>\",\n  \"mediaUrl\": \"\",\n  \"mediaType\": \"\",\n  \"source\": \"web\",\n  \"providerId\": \"64db8124cb0a330f257cb0c2\",\n  \"attachments\": [\n    {\n      \"fileName\": \"document.pdf\",\n      \"fileSize\": \"120 KB\",\n      \"mimeType\": \"application/pdf\",\n      \"mediaUrl\": \"https://your-s3-bucket.s3.amazonaws.com/document.pdf\",\n      \"mediaType\": \"file\"\n    }\n  ],\n  \"replyToMessageId\": \"64e90fa89e24f248d9a36e5b\",\n  \"quotedMessageId\": \"<quoted-msg-id@example.com>\",\n  \"threadId\": \"<thread-id-from-gmail>\"\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            }
          },
          "response": [],
          "event": [],
          "protocolProfileBehavior": {
            "disableBodyPruning": true
          }
        }
      ],
      "event": []
    },
    {
      "id": "7ba18239-59a3-493b-90ed-2d6f70c344f5",
      "name": "Send SMS",
      "description": {
        "content": "Send SMS via `POST /api/messages/sendMessage` (`channel: \"sms\"`). **In conversation:** `conversationId` (+ optional `contactId`). **Standalone:** `to` (phone) — contact/conversation created if needed. `providerId` = provider id or sending number.\n",
        "type": "text/plain"
      },
      "item": [
        {
          "id": "62da1469-a08b-4111-82d4-fad731c08d45",
          "name": "Send an SMS message",
          "request": {
            "name": "Send an SMS message",
            "description": {
              "content": "**Standalone example** in body; see docs for **in-conversation** variant with `conversationId`. `channel` must be `sms`.\n",
              "type": "text/plain"
            },
            "url": {
              "path": [
                "api",
                "messages",
                "sendMessage"
              ],
              "host": [
                "{{baseUrl}}"
              ],
              "query": [],
              "variable": []
            },
            "header": [
              {
                "disabled": false,
                "description": "Unique key for safe retries on creates and message sends.",
                "key": "Idempotency-Key",
                "value": "01HZY8QX3K9V2B4C6D8E0F2G4H6J8K0L"
              },
              {
                "key": "Content-Type",
                "value": "application/json"
              },
              {
                "key": "Accept",
                "value": "application/json"
              }
            ],
            "method": "POST",
            "auth": {
              "type": "apikey",
              "apikey": [
                {
                  "key": "key",
                  "value": "x-api-key"
                },
                {
                  "key": "value",
                  "value": "{{apiKey}}"
                },
                {
                  "key": "in",
                  "value": "header"
                }
              ]
            },
            "body": {
              "mode": "raw",
              "raw": "{\n  \"to\": \"+15551234567\",\n  \"channel\": \"sms\",\n  \"content\": \"Hello {{contact.firstName}}, your appointment is scheduled.\",\n  \"mediaUrl\": \"\",\n  \"mediaType\": \"\",\n  \"source\": \"HelloCRM\",\n  \"providerId\": \"+15559876543\"\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            }
          },
          "response": [],
          "event": [],
          "protocolProfileBehavior": {
            "disableBodyPruning": true
          }
        }
      ],
      "event": []
    },
    {
      "id": "8a1d2b2f-fca5-4e50-99a1-eeca3d79942f",
      "name": "Send WhatsApp",
      "description": {
        "content": "Send WhatsApp via `POST /api/messages/sendMessage` (`channel: \"whatsapp\"`). Same targeting as SMS: **in conversation** (`conversationId`) or **standalone** (`to`). Template fields for approved templates.\n",
        "type": "text/plain"
      },
      "item": [
        {
          "id": "dfe8eb35-5a54-4a9f-a49a-9e5ee1d6e82f",
          "name": "Send a WhatsApp message",
          "request": {
            "name": "Send a WhatsApp message",
            "description": {
              "content": "**Standalone example** in body; see docs for **in-conversation** variant. Template fields optional when using approved templates.\n",
              "type": "text/plain"
            },
            "url": {
              "path": [
                "api",
                "messages",
                "sendMessage"
              ],
              "host": [
                "{{baseUrl}}"
              ],
              "query": [],
              "variable": []
            },
            "header": [
              {
                "disabled": false,
                "description": "Unique key for safe retries on creates and message sends.",
                "key": "Idempotency-Key",
                "value": "01HZY8QX3K9V2B4C6D8E0F2G4H6J8K0L"
              },
              {
                "key": "Content-Type",
                "value": "application/json"
              },
              {
                "key": "Accept",
                "value": "application/json"
              }
            ],
            "method": "POST",
            "auth": {
              "type": "apikey",
              "apikey": [
                {
                  "key": "key",
                  "value": "x-api-key"
                },
                {
                  "key": "value",
                  "value": "{{apiKey}}"
                },
                {
                  "key": "in",
                  "value": "header"
                }
              ]
            },
            "body": {
              "mode": "raw",
              "raw": "{\n  \"to\": \"+15551234567\",\n  \"channel\": \"whatsapp\",\n  \"content\": \"Hello {{contact.firstName}}, your appointment is scheduled.\",\n  \"mediaUrl\": \"\",\n  \"mediaType\": \"\",\n  \"source\": \"HelloCRM\",\n  \"providerId\": \"+15559876543\",\n  \"templateId\": \"646b8124cb0a330f257cb010\",\n  \"headerParameters\": [\n    {\n      \"type\": \"text\",\n      \"text\": \"Hey\"\n    }\n  ],\n  \"bodyParameters\": [\n    {\n      \"type\": \"text\",\n      \"text\": \"Hey body\"\n    }\n  ]\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            }
          },
          "response": [],
          "event": [],
          "protocolProfileBehavior": {
            "disableBodyPruning": true
          }
        }
      ],
      "event": []
    },
    {
      "id": "31942c46-af4d-4825-a34b-a905e2446626",
      "name": "Bulk Email",
      "description": {
        "content": "Bulk email campaign. Endpoint: `POST /api/messages/sendBulkNewMessages` with `channel: \"email\"` and comma-separated emails in `to`.\n",
        "type": "text/plain"
      },
      "item": [
        {
          "id": "0a3fbc25-784d-412c-818a-ef15afd5178b",
          "name": "Bulk send email",
          "request": {
            "name": "Bulk send email",
            "description": {
              "content": "Queues a bulk email campaign. `to` is comma-separated emails; requires `providerId`.\n",
              "type": "text/plain"
            },
            "url": {
              "path": [
                "api",
                "messages",
                "sendBulkNewMessages"
              ],
              "host": [
                "{{baseUrl}}"
              ],
              "query": [],
              "variable": []
            },
            "header": [
              {
                "disabled": false,
                "description": "Unique key for safe retries on creates and message sends.",
                "key": "Idempotency-Key",
                "value": "01HZY8QX3K9V2B4C6D8E0F2G4H6J8K0L"
              },
              {
                "key": "Content-Type",
                "value": "application/json"
              },
              {
                "key": "Accept",
                "value": "application/json"
              }
            ],
            "method": "POST",
            "auth": {
              "type": "apikey",
              "apikey": [
                {
                  "key": "key",
                  "value": "x-api-key"
                },
                {
                  "key": "value",
                  "value": "{{apiKey}}"
                },
                {
                  "key": "in",
                  "value": "header"
                }
              ]
            },
            "body": {
              "mode": "raw",
              "raw": "{\n  \"to\": \"alice@example.com,bob@example.com\",\n  \"channel\": \"email\",\n  \"subject\": \"Bulk campaign subject\",\n  \"preheader\": \"\",\n  \"content\": \"<p>Hello {{contact.firstName}}, this is a bulk email.</p>\",\n  \"mediaUrl\": \"\",\n  \"mediaType\": \"\",\n  \"source\": \"HelloCRM\",\n  \"providerId\": \"64db8124cb0a330f257cb0c2\",\n  \"attachments\": [],\n  \"scheduleType\": \"now\",\n  \"scheduleTime\": {\n    \"date\": \"\",\n    \"time\": \"\"\n  }\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            }
          },
          "response": [],
          "event": [],
          "protocolProfileBehavior": {
            "disableBodyPruning": true
          }
        }
      ],
      "event": []
    },
    {
      "id": "0decadbe-df7e-4ec4-99f7-8e18df182257",
      "name": "Bulk SMS",
      "description": {
        "content": "Bulk SMS campaign. Endpoint: `POST /api/messages/sendBulkNewMessages` with `channel: \"sms\"` and comma-separated phone numbers in `to`.\n",
        "type": "text/plain"
      },
      "item": [
        {
          "id": "0edc09cb-80a0-4659-a4b1-aa595c4c8a60",
          "name": "Bulk send SMS",
          "request": {
            "name": "Bulk send SMS",
            "description": {
              "content": "Queues bulk SMS. `to` is comma-separated phone numbers; `channel` must be `sms`.\n",
              "type": "text/plain"
            },
            "url": {
              "path": [
                "api",
                "messages",
                "sendBulkNewMessages"
              ],
              "host": [
                "{{baseUrl}}"
              ],
              "query": [],
              "variable": []
            },
            "header": [
              {
                "disabled": false,
                "description": "Unique key for safe retries on creates and message sends.",
                "key": "Idempotency-Key",
                "value": "01HZY8QX3K9V2B4C6D8E0F2G4H6J8K0L"
              },
              {
                "key": "Content-Type",
                "value": "application/json"
              },
              {
                "key": "Accept",
                "value": "application/json"
              }
            ],
            "method": "POST",
            "auth": {
              "type": "apikey",
              "apikey": [
                {
                  "key": "key",
                  "value": "x-api-key"
                },
                {
                  "key": "value",
                  "value": "{{apiKey}}"
                },
                {
                  "key": "in",
                  "value": "header"
                }
              ]
            },
            "body": {
              "mode": "raw",
              "raw": "{\n  \"to\": \"+15551234567,+15559876543\",\n  \"channel\": \"sms\",\n  \"content\": \"Hello {{contact.firstName}}, your appointment is scheduled.\",\n  \"mediaUrl\": \"\",\n  \"mediaType\": \"\",\n  \"source\": \"HelloCRM\",\n  \"providerId\": \"64db8124cb0a330f257cb0c2\",\n  \"attachments\": [],\n  \"scheduleType\": \"now\",\n  \"scheduleTime\": {\n    \"date\": \"\",\n    \"time\": \"\"\n  }\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            }
          },
          "response": [],
          "event": [],
          "protocolProfileBehavior": {
            "disableBodyPruning": true
          }
        }
      ],
      "event": []
    },
    {
      "id": "0b8c8896-1958-4085-81f8-a7d4995ebe9c",
      "name": "Bulk WhatsApp",
      "description": {
        "content": "Bulk WhatsApp campaign. Endpoint: `POST /api/messages/sendBulkNewMessages` with `channel: \"whatsapp\"` and comma-separated phone numbers in `to`.\n",
        "type": "text/plain"
      },
      "item": [
        {
          "id": "b087431b-d63d-43ae-8351-d3fecf3a1b3f",
          "name": "Bulk send WhatsApp",
          "request": {
            "name": "Bulk send WhatsApp",
            "description": {
              "content": "Queues bulk WhatsApp. Same endpoint as bulk SMS; set `channel` to `whatsapp`.\n",
              "type": "text/plain"
            },
            "url": {
              "path": [
                "api",
                "messages",
                "sendBulkNewMessages"
              ],
              "host": [
                "{{baseUrl}}"
              ],
              "query": [],
              "variable": []
            },
            "header": [
              {
                "disabled": false,
                "description": "Unique key for safe retries on creates and message sends.",
                "key": "Idempotency-Key",
                "value": "01HZY8QX3K9V2B4C6D8E0F2G4H6J8K0L"
              },
              {
                "key": "Content-Type",
                "value": "application/json"
              },
              {
                "key": "Accept",
                "value": "application/json"
              }
            ],
            "method": "POST",
            "auth": {
              "type": "apikey",
              "apikey": [
                {
                  "key": "key",
                  "value": "x-api-key"
                },
                {
                  "key": "value",
                  "value": "{{apiKey}}"
                },
                {
                  "key": "in",
                  "value": "header"
                }
              ]
            },
            "body": {
              "mode": "raw",
              "raw": "{\n  \"to\": \"+15551234567,+15559876543\",\n  \"channel\": \"whatsapp\",\n  \"content\": \"Hello {{contact.firstName}}, your appointment is scheduled.\",\n  \"mediaUrl\": \"\",\n  \"mediaType\": \"\",\n  \"source\": \"HelloCRM\",\n  \"providerId\": \"64db8124cb0a330f257cb0c2\",\n  \"templateId\": \"646b8124cb0a330f257cb010\",\n  \"headerParameters\": [\n    {\n      \"type\": \"text\",\n      \"text\": \"Hey\"\n    }\n  ],\n  \"bodyParameters\": [\n    {\n      \"type\": \"text\",\n      \"text\": \"Hey body\"\n    }\n  ],\n  \"attachments\": [],\n  \"scheduleType\": \"now\",\n  \"scheduleTime\": {\n    \"date\": \"\",\n    \"time\": \"\"\n  }\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            }
          },
          "response": [],
          "event": [],
          "protocolProfileBehavior": {
            "disableBodyPruning": true
          }
        }
      ],
      "event": []
    },
    {
      "id": "ca1aefa9-3071-41b6-89d6-8444c4a8a685",
      "name": "Templates",
      "description": {
        "content": "CRUD for message templates. **Create** endpoints are split by channel (SMS, email, WhatsApp). WhatsApp create/update often uses `multipart/form-data` when a header media `file` is required; SMS and email use JSON.\n",
        "type": "text/plain"
      },
      "item": [
        {
          "id": "fc043017-cd36-4e45-8ad5-7cdbd9b2afa0",
          "name": "List templates",
          "request": {
            "name": "List templates",
            "description": {
              "content": "Paginated list. Agents see only their templates; admins see team templates.\n",
              "type": "text/plain"
            },
            "url": {
              "path": [
                "api",
                "templates"
              ],
              "host": [
                "{{baseUrl}}"
              ],
              "query": [
                {
                  "disabled": false,
                  "key": "page",
                  "value": "1",
                  "description": "Page number"
                },
                {
                  "disabled": false,
                  "key": "limit",
                  "value": "20",
                  "description": "Page size"
                },
                {
                  "disabled": false,
                  "key": "types",
                  "value": "sms",
                  "description": "Filter: sms, email, whatsapp (repeat or array per server)"
                },
                {
                  "disabled": false,
                  "key": "statuses",
                  "value": "approved",
                  "description": "Filter: pending, approved, rejected"
                }
              ],
              "variable": []
            },
            "header": [
              {
                "key": "Accept",
                "value": "application/json"
              }
            ],
            "method": "GET",
            "auth": {
              "type": "apikey",
              "apikey": [
                {
                  "key": "key",
                  "value": "x-api-key"
                },
                {
                  "key": "value",
                  "value": "{{apiKey}}"
                },
                {
                  "key": "in",
                  "value": "header"
                }
              ]
            }
          },
          "response": [],
          "event": [],
          "protocolProfileBehavior": {
            "disableBodyPruning": true
          }
        },
        {
          "id": "669300df-2e99-4ab3-b7b9-1bd2b04ac75f",
          "name": "Get template by id",
          "request": {
            "name": "Get template by id",
            "description": {
              "content": "Fetch one template by id.\n",
              "type": "text/plain"
            },
            "url": {
              "path": [
                "api",
                "templates",
                ":templateId"
              ],
              "host": [
                "{{baseUrl}}"
              ],
              "query": [],
              "variable": [
                {
                  "disabled": false,
                  "type": "any",
                  "value": "646b8124cb0a330f257cb010",
                  "key": "templateId",
                  "description": "(Required) "
                }
              ]
            },
            "header": [
              {
                "key": "Accept",
                "value": "application/json"
              }
            ],
            "method": "GET",
            "auth": {
              "type": "apikey",
              "apikey": [
                {
                  "key": "key",
                  "value": "x-api-key"
                },
                {
                  "key": "value",
                  "value": "{{apiKey}}"
                },
                {
                  "key": "in",
                  "value": "header"
                }
              ]
            }
          },
          "response": [],
          "event": [],
          "protocolProfileBehavior": {
            "disableBodyPruning": true
          }
        },
        {
          "id": "f784dac6-b21d-4d37-8009-5a6558669de6",
          "name": "Create SMS template",
          "request": {
            "name": "Create SMS template",
            "description": {
              "content": "`templateType` must be `sms`. Returns `data._id` — use as `templateId` when sending messages.\n",
              "type": "text/plain"
            },
            "url": {
              "path": [
                "api",
                "templates"
              ],
              "host": [
                "{{baseUrl}}"
              ],
              "query": [],
              "variable": []
            },
            "header": [
              {
                "disabled": false,
                "description": "Unique key for safe retries on creates and message sends.",
                "key": "Idempotency-Key",
                "value": "01HZY8QX3K9V2B4C6D8E0F2G4H6J8K0L"
              },
              {
                "key": "Content-Type",
                "value": "application/json"
              },
              {
                "key": "Accept",
                "value": "application/json"
              }
            ],
            "method": "POST",
            "auth": {
              "type": "apikey",
              "apikey": [
                {
                  "key": "key",
                  "value": "x-api-key"
                },
                {
                  "key": "value",
                  "value": "{{apiKey}}"
                },
                {
                  "key": "in",
                  "value": "header"
                }
              ]
            },
            "body": {
              "mode": "raw",
              "raw": "{\n  \"templateType\": \"sms\",\n  \"name\": \"Appointment reminder\",\n  \"uniqueName\": \"appointment_reminder_sms\",\n  \"content\": \"Hello {{contact.firstName}}, your appointment is on {{appointment.date}}.\",\n  \"category\": \"UTILITY\",\n  \"language\": \"en\",\n  \"provider\": \"64db8124cb0a330f257cb0c2\",\n  \"variables\": [\n    \"contact.firstName\",\n    \"appointment.date\"\n  ]\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            }
          },
          "response": [],
          "event": [],
          "protocolProfileBehavior": {
            "disableBodyPruning": true
          }
        },
        {
          "id": "0589e349-bbc2-4c78-a3e8-89ef91ac596f",
          "name": "Create email template",
          "request": {
            "name": "Create email template",
            "description": {
              "content": "`templateType` must be `email`. Include `subject` and HTML `content`.\n",
              "type": "text/plain"
            },
            "url": {
              "path": [
                "api",
                "templates"
              ],
              "host": [
                "{{baseUrl}}"
              ],
              "query": [],
              "variable": []
            },
            "header": [
              {
                "disabled": false,
                "description": "Unique key for safe retries on creates and message sends.",
                "key": "Idempotency-Key",
                "value": "01HZY8QX3K9V2B4C6D8E0F2G4H6J8K0L"
              },
              {
                "key": "Content-Type",
                "value": "application/json"
              },
              {
                "key": "Accept",
                "value": "application/json"
              }
            ],
            "method": "POST",
            "auth": {
              "type": "apikey",
              "apikey": [
                {
                  "key": "key",
                  "value": "x-api-key"
                },
                {
                  "key": "value",
                  "value": "{{apiKey}}"
                },
                {
                  "key": "in",
                  "value": "header"
                }
              ]
            },
            "body": {
              "mode": "raw",
              "raw": "{\n  \"templateType\": \"email\",\n  \"name\": \"Welcome email\",\n  \"uniqueName\": \"welcome_email\",\n  \"subject\": \"Welcome to {{company.name}}\",\n  \"content\": \"<p>Hello {{contact.firstName}}, welcome aboard.</p>\",\n  \"language\": \"en\",\n  \"provider\": \"64db8124cb0a330f257cb0c2\",\n  \"variables\": [\n    \"contact.firstName\",\n    \"company.name\"\n  ],\n  \"preheader\": \"We're glad you're here\"\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            }
          },
          "response": [],
          "event": [],
          "protocolProfileBehavior": {
            "disableBodyPruning": true
          }
        },
        {
          "id": "916e9b17-70a5-4032-843a-500887413f4f",
          "name": "Create WhatsApp template",
          "request": {
            "name": "Create WhatsApp template",
            "description": {
              "content": "`templateType` must be `whatsapp`. Submitted to Meta for approval. For image/video/document headers, send `multipart/form-data` with a `file` field (see schema notes).\n",
              "type": "text/plain"
            },
            "url": {
              "path": [
                "api",
                "templates"
              ],
              "host": [
                "{{baseUrl}}"
              ],
              "query": [],
              "variable": []
            },
            "header": [
              {
                "disabled": false,
                "description": "Unique key for safe retries on creates and message sends.",
                "key": "Idempotency-Key",
                "value": "01HZY8QX3K9V2B4C6D8E0F2G4H6J8K0L"
              },
              {
                "key": "Content-Type",
                "value": "application/json"
              },
              {
                "key": "Accept",
                "value": "application/json"
              }
            ],
            "method": "POST",
            "auth": {
              "type": "apikey",
              "apikey": [
                {
                  "key": "key",
                  "value": "x-api-key"
                },
                {
                  "key": "value",
                  "value": "{{apiKey}}"
                },
                {
                  "key": "in",
                  "value": "header"
                }
              ]
            },
            "body": {
              "mode": "raw",
              "raw": "{\n  \"templateType\": \"whatsapp\",\n  \"name\": \"Appointment reminder\",\n  \"uniqueName\": \"appointment_reminder_wa\",\n  \"content\": \"Hello {{1}}, your appointment is on {{2}}.\",\n  \"category\": \"UTILITY\",\n  \"language\": \"en\",\n  \"provider\": \"64db8124cb0a330f257cb0c2\",\n  \"variables\": [\n    \"{{1}}\",\n    \"{{2}}\"\n  ],\n  \"bodyVariableSampleValues\": [\n    \"Jane\",\n    \"May 20\"\n  ],\n  \"isHeader\": false,\n  \"headerType\": \"text\",\n  \"footer\": \"Reply STOP to opt out\"\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            }
          },
          "response": [],
          "event": [],
          "protocolProfileBehavior": {
            "disableBodyPruning": true
          }
        },
        {
          "id": "cb41438f-5dfd-4de6-bb12-b13772589a26",
          "name": "Update template",
          "request": {
            "name": "Update template",
            "description": {
              "content": "Updates template by id. WhatsApp templates sync to Meta when edited.\n",
              "type": "text/plain"
            },
            "url": {
              "path": [
                "api",
                "templates",
                ":templateId"
              ],
              "host": [
                "{{baseUrl}}"
              ],
              "query": [],
              "variable": [
                {
                  "disabled": false,
                  "type": "any",
                  "value": "646b8124cb0a330f257cb010",
                  "key": "templateId",
                  "description": "(Required) "
                }
              ]
            },
            "header": [
              {
                "disabled": false,
                "description": "Unique key for safe retries on creates and message sends.",
                "key": "Idempotency-Key",
                "value": "01HZY8QX3K9V2B4C6D8E0F2G4H6J8K0L"
              },
              {
                "key": "Content-Type",
                "value": "application/json"
              },
              {
                "key": "Accept",
                "value": "application/json"
              }
            ],
            "method": "PUT",
            "auth": {
              "type": "apikey",
              "apikey": [
                {
                  "key": "key",
                  "value": "x-api-key"
                },
                {
                  "key": "value",
                  "value": "{{apiKey}}"
                },
                {
                  "key": "in",
                  "value": "header"
                }
              ]
            },
            "body": {
              "mode": "raw",
              "raw": "{\n  \"templateType\": \"sms\",\n  \"name\": \"Appointment reminder (updated)\",\n  \"content\": \"Hi {{contact.firstName}}, reminder: appointment on {{appointment.date}}.\",\n  \"category\": \"UTILITY\",\n  \"language\": \"en\",\n  \"variables\": [\n    \"contact.firstName\",\n    \"appointment.date\"\n  ]\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            }
          },
          "response": [],
          "event": [],
          "protocolProfileBehavior": {
            "disableBodyPruning": true
          }
        },
        {
          "id": "0187bb48-9d56-4115-b5fd-836ffb8b4d84",
          "name": "Delete template",
          "request": {
            "name": "Delete template",
            "description": {
              "content": "Deletes template by id. WhatsApp templates are removed from Meta when applicable.\n",
              "type": "text/plain"
            },
            "url": {
              "path": [
                "api",
                "templates",
                ":templateId"
              ],
              "host": [
                "{{baseUrl}}"
              ],
              "query": [],
              "variable": [
                {
                  "disabled": false,
                  "type": "any",
                  "value": "646b8124cb0a330f257cb010",
                  "key": "templateId",
                  "description": "(Required) "
                }
              ]
            },
            "header": [
              {
                "key": "Accept",
                "value": "application/json"
              }
            ],
            "method": "DELETE",
            "auth": {
              "type": "apikey",
              "apikey": [
                {
                  "key": "key",
                  "value": "x-api-key"
                },
                {
                  "key": "value",
                  "value": "{{apiKey}}"
                },
                {
                  "key": "in",
                  "value": "header"
                }
              ]
            }
          },
          "response": [],
          "event": [],
          "protocolProfileBehavior": {
            "disableBodyPruning": true
          }
        }
      ],
      "event": []
    },
    {
      "id": "6da90670-33b6-4ae9-9648-a63ad9adf858",
      "name": "Contacts",
      "description": {
        "content": "Create, update, upsert, and delete contacts.",
        "type": "text/plain"
      },
      "item": [
        {
          "id": "54e4114e-214e-4702-b791-fa82918966d1",
          "name": "Create a new contact",
          "request": {
            "name": "Create a new contact",
            "description": {
              "content": "`status`: open, in-progress, closed. `lifecycleStage`: Form, Live Chat, Ads, Event, CRM, Other.\n",
              "type": "text/plain"
            },
            "url": {
              "path": [
                "api",
                "contacts"
              ],
              "host": [
                "{{baseUrl}}"
              ],
              "query": [],
              "variable": []
            },
            "header": [
              {
                "disabled": false,
                "description": "Unique key for safe retries on creates and message sends.",
                "key": "Idempotency-Key",
                "value": "01HZY8QX3K9V2B4C6D8E0F2G4H6J8K0L"
              },
              {
                "key": "Content-Type",
                "value": "application/json"
              },
              {
                "key": "Accept",
                "value": "application/json"
              }
            ],
            "method": "POST",
            "auth": {
              "type": "apikey",
              "apikey": [
                {
                  "key": "key",
                  "value": "x-api-key"
                },
                {
                  "key": "value",
                  "value": "{{apiKey}}"
                },
                {
                  "key": "in",
                  "value": "header"
                }
              ]
            },
            "body": {
              "mode": "raw",
              "raw": "{\n  \"firstName\": \"John\",\n  \"lastName\": \"Doe\",\n  \"email\": \"john.doe@example.com\",\n  \"phone\": \"+1234567890\",\n  \"status\": \"open\",\n  \"source\": \"Website\",\n  \"lifecycleStage\": \"Lead\",\n  \"groupIds\": [\n    \"64f91a7d28ae948d8e9e8435\"\n  ],\n  \"additionalFields\": {\n    \"job_title\": \"Marketing Manager\",\n    \"city\": \"New York\"\n  }\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            }
          },
          "response": [],
          "event": [],
          "protocolProfileBehavior": {
            "disableBodyPruning": true
          }
        },
        {
          "id": "0760f089-3912-4567-a0ff-552b02a6793c",
          "name": "Update an existing contact",
          "request": {
            "name": "Update an existing contact",
            "description": {
              "content": "Updates a contact by id.\n",
              "type": "text/plain"
            },
            "url": {
              "path": [
                "api",
                "contacts",
                ":contactId"
              ],
              "host": [
                "{{baseUrl}}"
              ],
              "query": [],
              "variable": [
                {
                  "disabled": false,
                  "type": "any",
                  "value": "64f91a7d28ae948d8e9e8430",
                  "key": "contactId",
                  "description": "(Required) "
                }
              ]
            },
            "header": [
              {
                "disabled": false,
                "description": "Unique key for safe retries on creates and message sends.",
                "key": "Idempotency-Key",
                "value": "01HZY8QX3K9V2B4C6D8E0F2G4H6J8K0L"
              },
              {
                "key": "Content-Type",
                "value": "application/json"
              },
              {
                "key": "Accept",
                "value": "application/json"
              }
            ],
            "method": "PUT",
            "auth": {
              "type": "apikey",
              "apikey": [
                {
                  "key": "key",
                  "value": "x-api-key"
                },
                {
                  "key": "value",
                  "value": "{{apiKey}}"
                },
                {
                  "key": "in",
                  "value": "header"
                }
              ]
            },
            "body": {
              "mode": "raw",
              "raw": "{\n  \"firstName\": \"Jane\",\n  \"lastName\": \"Doe\",\n  \"email\": \"jane.doe@example.com\",\n  \"phone\": \"+19876543210\",\n  \"status\": \"open\",\n  \"source\": \"LinkedIn\",\n  \"lifecycleStage\": \"Customer\",\n  \"groupIds\": [\n    \"64f91a7d28ae948d8e9e8435\"\n  ],\n  \"company\": \"64f91a7d28ae948d8e9e9999\",\n  \"additionalFields\": {\n    \"job_title\": \"CTO\",\n    \"location\": \"San Francisco\"\n  }\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            }
          },
          "response": [],
          "event": [],
          "protocolProfileBehavior": {
            "disableBodyPruning": true
          }
        },
        {
          "id": "160b6de6-4558-4491-aec7-7a5398802c35",
          "name": "Delete a contact by id",
          "request": {
            "name": "Delete a contact by id",
            "description": {
              "content": "Deletes a contact.\n",
              "type": "text/plain"
            },
            "url": {
              "path": [
                "api",
                "contacts",
                ":contactId"
              ],
              "host": [
                "{{baseUrl}}"
              ],
              "query": [],
              "variable": [
                {
                  "disabled": false,
                  "type": "any",
                  "value": "64f91a7d28ae948d8e9e8430",
                  "key": "contactId",
                  "description": "(Required) "
                }
              ]
            },
            "header": [
              {
                "key": "Accept",
                "value": "application/json"
              }
            ],
            "method": "DELETE",
            "auth": {
              "type": "apikey",
              "apikey": [
                {
                  "key": "key",
                  "value": "x-api-key"
                },
                {
                  "key": "value",
                  "value": "{{apiKey}}"
                },
                {
                  "key": "in",
                  "value": "header"
                }
              ]
            }
          },
          "response": [],
          "event": [],
          "protocolProfileBehavior": {
            "disableBodyPruning": true
          }
        },
        {
          "id": "584b3d9e-d748-49e2-86ad-ff6f5e80a06f",
          "name": "Upsert a contact by matching rules (email/phone)",
          "request": {
            "name": "Upsert a contact by matching rules (email/phone)",
            "description": {
              "content": "Use `Content-Type: application/json` (not `text/plain`).\n",
              "type": "text/plain"
            },
            "url": {
              "path": [
                "api",
                "contacts",
                "createOrUpdateContact"
              ],
              "host": [
                "{{baseUrl}}"
              ],
              "query": [],
              "variable": []
            },
            "header": [
              {
                "disabled": false,
                "description": "Unique key for safe retries on creates and message sends.",
                "key": "Idempotency-Key",
                "value": "01HZY8QX3K9V2B4C6D8E0F2G4H6J8K0L"
              },
              {
                "key": "Content-Type",
                "value": "application/json"
              },
              {
                "key": "Accept",
                "value": "application/json"
              }
            ],
            "method": "POST",
            "auth": {
              "type": "apikey",
              "apikey": [
                {
                  "key": "key",
                  "value": "x-api-key"
                },
                {
                  "key": "value",
                  "value": "{{apiKey}}"
                },
                {
                  "key": "in",
                  "value": "header"
                }
              ]
            },
            "body": {
              "mode": "raw",
              "raw": "{\n  \"firstName\": \"John\",\n  \"lastName\": \"Doe\",\n  \"email\": \"john.doe@example.com\",\n  \"phone\": \"+1234567890\",\n  \"status\": \"open\",\n  \"source\": \"CRM\",\n  \"lifecycleStage\": \"Lead\",\n  \"additionalFields\": {\n    \"job_title\": \"Marketing Manager\",\n    \"city\": \"New York\"\n  }\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            }
          },
          "response": [],
          "event": [],
          "protocolProfileBehavior": {
            "disableBodyPruning": true
          }
        },
        {
          "id": "dcff494e-816b-4aa5-af0b-ca16808ca5b5",
          "name": "Delete contacts matching an email address",
          "request": {
            "name": "Delete contacts matching an email address",
            "description": {
              "content": "Deletes contacts for the given `email` query parameter.\n",
              "type": "text/plain"
            },
            "url": {
              "path": [
                "api",
                "contacts",
                "deleteContactsByEmail"
              ],
              "host": [
                "{{baseUrl}}"
              ],
              "query": [
                {
                  "disabled": false,
                  "key": "email",
                  "value": "test@gmail.com",
                  "description": "(Required) "
                }
              ],
              "variable": []
            },
            "header": [
              {
                "key": "Accept",
                "value": "application/json"
              }
            ],
            "method": "DELETE",
            "auth": {
              "type": "apikey",
              "apikey": [
                {
                  "key": "key",
                  "value": "x-api-key"
                },
                {
                  "key": "value",
                  "value": "{{apiKey}}"
                },
                {
                  "key": "in",
                  "value": "header"
                }
              ]
            }
          },
          "response": [],
          "event": [],
          "protocolProfileBehavior": {
            "disableBodyPruning": true
          }
        }
      ],
      "event": []
    },
    {
      "id": "823a30fc-8d71-45db-824f-26e3f8dbccd1",
      "name": "Companies",
      "description": {
        "content": "Public API: `POST /api/companies/create`, `PUT /api/companies/edit/{companyId}`, `DELETE /api/companies/delete/{companyId}`.",
        "type": "text/plain"
      },
      "item": [
        {
          "id": "212a78b0-6ca0-4052-8e49-c25c1b3abd8a",
          "name": "Create company",
          "request": {
            "name": "Create company",
            "description": {
              "content": "Creates a company.\n",
              "type": "text/plain"
            },
            "url": {
              "path": [
                "api",
                "companies",
                "create"
              ],
              "host": [
                "{{baseUrl}}"
              ],
              "query": [],
              "variable": []
            },
            "header": [
              {
                "disabled": false,
                "description": "Unique key for safe retries on creates and message sends.",
                "key": "Idempotency-Key",
                "value": "01HZY8QX3K9V2B4C6D8E0F2G4H6J8K0L"
              },
              {
                "key": "Content-Type",
                "value": "application/json"
              },
              {
                "key": "Accept",
                "value": "application/json"
              }
            ],
            "method": "POST",
            "auth": {
              "type": "apikey",
              "apikey": [
                {
                  "key": "key",
                  "value": "x-api-key"
                },
                {
                  "key": "value",
                  "value": "{{apiKey}}"
                },
                {
                  "key": "in",
                  "value": "header"
                }
              ]
            },
            "body": {
              "mode": "raw",
              "raw": "{\n  \"name\": \"Acme Corporation\",\n  \"domain\": \"acme.com\",\n  \"industry\": \"Technology\",\n  \"email\": \"info@acme.com\",\n  \"phoneNumber\": \"+1234567890\",\n  \"logoUrl\": \"https://logo.clearbit.com/acme.com\",\n  \"address\": \"123 Main St\",\n  \"city\": \"San Francisco\",\n  \"state\": \"CA\",\n  \"postalCode\": \"94105\",\n  \"country\": \"USA\",\n  \"employeeCount\": 200,\n  \"annualRevenue\": 5000000,\n  \"contacts\": [\n    \"64f91a7d28ae948d8e9e8431\"\n  ],\n  \"additionalFields\": {\n    \"founded\": \"2005\",\n    \"website\": \"https://www.acme.com\"\n  }\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            }
          },
          "response": [],
          "event": [],
          "protocolProfileBehavior": {
            "disableBodyPruning": true
          }
        },
        {
          "id": "54da50f7-dc6b-4326-9d97-7d19aee14c8c",
          "name": "Update company",
          "request": {
            "name": "Update company",
            "description": {
              "content": "Updates a company by id.\n",
              "type": "text/plain"
            },
            "url": {
              "path": [
                "api",
                "companies",
                "edit",
                ":companyId"
              ],
              "host": [
                "{{baseUrl}}"
              ],
              "query": [],
              "variable": [
                {
                  "disabled": false,
                  "type": "any",
                  "value": "64f91a7d28ae948d8e9e8430",
                  "key": "companyId",
                  "description": "(Required) "
                }
              ]
            },
            "header": [
              {
                "disabled": false,
                "description": "Unique key for safe retries on creates and message sends.",
                "key": "Idempotency-Key",
                "value": "01HZY8QX3K9V2B4C6D8E0F2G4H6J8K0L"
              },
              {
                "key": "Content-Type",
                "value": "application/json"
              },
              {
                "key": "Accept",
                "value": "application/json"
              }
            ],
            "method": "PUT",
            "auth": {
              "type": "apikey",
              "apikey": [
                {
                  "key": "key",
                  "value": "x-api-key"
                },
                {
                  "key": "value",
                  "value": "{{apiKey}}"
                },
                {
                  "key": "in",
                  "value": "header"
                }
              ]
            },
            "body": {
              "mode": "raw",
              "raw": "{\n  \"name\": \"Acme Corp International\",\n  \"domain\": \"acme.com\",\n  \"industry\": \"Enterprise Software\",\n  \"additionalFields\": {\n    \"updated_by\": \"Admin\"\n  }\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            }
          },
          "response": [],
          "event": [],
          "protocolProfileBehavior": {
            "disableBodyPruning": true
          }
        },
        {
          "id": "df07c986-b1a8-4e27-a081-1e56285c73ae",
          "name": "Delete company",
          "request": {
            "name": "Delete company",
            "description": {
              "content": "Deletes a company by id.\n",
              "type": "text/plain"
            },
            "url": {
              "path": [
                "api",
                "companies",
                "delete",
                ":companyId"
              ],
              "host": [
                "{{baseUrl}}"
              ],
              "query": [],
              "variable": [
                {
                  "disabled": false,
                  "type": "any",
                  "value": "64f91a7d28ae948d8e9e8430",
                  "key": "companyId",
                  "description": "(Required) "
                }
              ]
            },
            "header": [
              {
                "key": "Accept",
                "value": "application/json"
              }
            ],
            "method": "DELETE",
            "auth": {
              "type": "apikey",
              "apikey": [
                {
                  "key": "key",
                  "value": "x-api-key"
                },
                {
                  "key": "value",
                  "value": "{{apiKey}}"
                },
                {
                  "key": "in",
                  "value": "header"
                }
              ]
            }
          },
          "response": [],
          "event": [],
          "protocolProfileBehavior": {
            "disableBodyPruning": true
          }
        }
      ],
      "event": []
    },
    {
      "id": "3691f277-a07c-4e4d-a5dd-d92d4ba790f9",
      "name": "Products",
      "description": {
        "content": "Create, update, and delete products.",
        "type": "text/plain"
      },
      "item": [
        {
          "id": "1356c8fb-fba8-4f93-b0f9-e004c03dba5a",
          "name": "Create a product",
          "request": {
            "name": "Create a product",
            "description": {
              "content": "`billingFrequency`: one-time, weekly, every-two-weeks, monthly, quarterly, semi-annually, annually, etc.\n",
              "type": "text/plain"
            },
            "url": {
              "path": [
                "api",
                "products"
              ],
              "host": [
                "{{baseUrl}}"
              ],
              "query": [],
              "variable": []
            },
            "header": [
              {
                "disabled": false,
                "description": "Unique key for safe retries on creates and message sends.",
                "key": "Idempotency-Key",
                "value": "01HZY8QX3K9V2B4C6D8E0F2G4H6J8K0L"
              },
              {
                "key": "Content-Type",
                "value": "application/json"
              },
              {
                "key": "Accept",
                "value": "application/json"
              }
            ],
            "method": "POST",
            "auth": {
              "type": "apikey",
              "apikey": [
                {
                  "key": "key",
                  "value": "x-api-key"
                },
                {
                  "key": "value",
                  "value": "{{apiKey}}"
                },
                {
                  "key": "in",
                  "value": "header"
                }
              ]
            },
            "body": {
              "mode": "raw",
              "raw": "{\n  \"name\": \"Pro CRM Subscription\",\n  \"sku\": \"PRO-CRM-001\",\n  \"description\": \"Advanced CRM plan with automation and reporting\",\n  \"billingFrequency\": \"monthly\",\n  \"term\": \"12 months\",\n  \"productType\": \"subscription\",\n  \"imageUrl\": \"https://example.com/images/product.png\",\n  \"url\": \"https://example.com/products/pro-crm\",\n  \"unitCost\": 20,\n  \"unitPrice\": 50\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            }
          },
          "response": [],
          "event": [],
          "protocolProfileBehavior": {
            "disableBodyPruning": true
          }
        },
        {
          "id": "cc1c6e10-60bc-4176-943c-3e324f8c1ec6",
          "name": "Update a product",
          "request": {
            "name": "Update a product",
            "description": {
              "content": "Updates a product by id.\n",
              "type": "text/plain"
            },
            "url": {
              "path": [
                "api",
                "products",
                ":productId"
              ],
              "host": [
                "{{baseUrl}}"
              ],
              "query": [],
              "variable": [
                {
                  "disabled": false,
                  "type": "any",
                  "value": "64f91a7d28ae948d8e9e8430",
                  "key": "productId",
                  "description": "(Required) "
                }
              ]
            },
            "header": [
              {
                "disabled": false,
                "description": "Unique key for safe retries on creates and message sends.",
                "key": "Idempotency-Key",
                "value": "01HZY8QX3K9V2B4C6D8E0F2G4H6J8K0L"
              },
              {
                "key": "Content-Type",
                "value": "application/json"
              },
              {
                "key": "Accept",
                "value": "application/json"
              }
            ],
            "method": "PUT",
            "auth": {
              "type": "apikey",
              "apikey": [
                {
                  "key": "key",
                  "value": "x-api-key"
                },
                {
                  "key": "value",
                  "value": "{{apiKey}}"
                },
                {
                  "key": "in",
                  "value": "header"
                }
              ]
            },
            "body": {
              "mode": "raw",
              "raw": "{\n  \"name\": \"Pro CRM Plus\",\n  \"sku\": \"PRO-CRM-002\",\n  \"description\": \"Updated plan with more integrations\",\n  \"billingFrequency\": \"monthly\",\n  \"term\": \"12 months\",\n  \"productType\": \"subscription\",\n  \"imageUrl\": \"https://example.com/images/pro-crm-plus.png\",\n  \"url\": \"https://example.com/products/pro-crm-plus\",\n  \"unitCost\": 25,\n  \"unitPrice\": 60\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            }
          },
          "response": [],
          "event": [],
          "protocolProfileBehavior": {
            "disableBodyPruning": true
          }
        },
        {
          "id": "ebe70d01-faf7-4e3f-a096-19265c8b89f9",
          "name": "Delete a product",
          "request": {
            "name": "Delete a product",
            "description": {
              "content": "Deletes a product.\n",
              "type": "text/plain"
            },
            "url": {
              "path": [
                "api",
                "products",
                ":productId"
              ],
              "host": [
                "{{baseUrl}}"
              ],
              "query": [],
              "variable": [
                {
                  "disabled": false,
                  "type": "any",
                  "value": "64f91a7d28ae948d8e9e8430",
                  "key": "productId",
                  "description": "(Required) "
                }
              ]
            },
            "header": [
              {
                "key": "Accept",
                "value": "application/json"
              }
            ],
            "method": "DELETE",
            "auth": {
              "type": "apikey",
              "apikey": [
                {
                  "key": "key",
                  "value": "x-api-key"
                },
                {
                  "key": "value",
                  "value": "{{apiKey}}"
                },
                {
                  "key": "in",
                  "value": "header"
                }
              ]
            }
          },
          "response": [],
          "event": [],
          "protocolProfileBehavior": {
            "disableBodyPruning": true
          }
        }
      ],
      "event": []
    },
    {
      "id": "ac811022-3496-4d0d-846b-02df61099648",
      "name": "Deals",
      "description": {
        "content": "Public API: `POST /api/deals/create`, `PUT /api/deals/edit/{dealId}`, `DELETE /api/deals/delete/{dealId}`.",
        "type": "text/plain"
      },
      "item": [
        {
          "id": "4fff5dd9-23e2-4279-91a1-89c0fe08e833",
          "name": "Create deal",
          "request": {
            "name": "Create deal",
            "description": {
              "content": "Creates a deal.\n",
              "type": "text/plain"
            },
            "url": {
              "path": [
                "api",
                "deals",
                "create"
              ],
              "host": [
                "{{baseUrl}}"
              ],
              "query": [],
              "variable": []
            },
            "header": [
              {
                "disabled": false,
                "description": "Unique key for safe retries on creates and message sends.",
                "key": "Idempotency-Key",
                "value": "01HZY8QX3K9V2B4C6D8E0F2G4H6J8K0L"
              },
              {
                "key": "Content-Type",
                "value": "application/json"
              },
              {
                "key": "Accept",
                "value": "application/json"
              }
            ],
            "method": "POST",
            "auth": {
              "type": "apikey",
              "apikey": [
                {
                  "key": "key",
                  "value": "x-api-key"
                },
                {
                  "key": "value",
                  "value": "{{apiKey}}"
                },
                {
                  "key": "in",
                  "value": "header"
                }
              ]
            },
            "body": {
              "mode": "raw",
              "raw": "{\n  \"name\": \"Enterprise CRM Deal\",\n  \"description\": \"Annual CRM contract\",\n  \"amount\": 50000,\n  \"currency\": \"USD\",\n  \"pipeline\": \"PIPELINE_ID_HERE\",\n  \"stage\": \"STAGE_ID_HERE\",\n  \"closeDate\": \"2025-08-30\",\n  \"contacts\": [\n    \"CONTACT_ID_1\",\n    \"CONTACT_ID_2\"\n  ],\n  \"company\": \"COMPANY_ID_HERE\",\n  \"owner\": \"USER_ID_HERE\"\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            }
          },
          "response": [],
          "event": [],
          "protocolProfileBehavior": {
            "disableBodyPruning": true
          }
        },
        {
          "id": "478f3a23-3948-4f99-8b84-426cc3969f95",
          "name": "Update deal",
          "request": {
            "name": "Update deal",
            "description": {
              "content": "Updates a deal by id.\n",
              "type": "text/plain"
            },
            "url": {
              "path": [
                "api",
                "deals",
                "edit",
                ":dealId"
              ],
              "host": [
                "{{baseUrl}}"
              ],
              "query": [],
              "variable": [
                {
                  "disabled": false,
                  "type": "any",
                  "value": "64f91a7d28ae948d8e9e8430",
                  "key": "dealId",
                  "description": "(Required) "
                }
              ]
            },
            "header": [
              {
                "disabled": false,
                "description": "Unique key for safe retries on creates and message sends.",
                "key": "Idempotency-Key",
                "value": "01HZY8QX3K9V2B4C6D8E0F2G4H6J8K0L"
              },
              {
                "key": "Content-Type",
                "value": "application/json"
              },
              {
                "key": "Accept",
                "value": "application/json"
              }
            ],
            "method": "PUT",
            "auth": {
              "type": "apikey",
              "apikey": [
                {
                  "key": "key",
                  "value": "x-api-key"
                },
                {
                  "key": "value",
                  "value": "{{apiKey}}"
                },
                {
                  "key": "in",
                  "value": "header"
                }
              ]
            },
            "body": {
              "mode": "raw",
              "raw": "{\n  \"name\": \"Updated CRM Enterprise Deal\",\n  \"description\": \"Updated description for annual enterprise deal\",\n  \"amount\": 60000,\n  \"currency\": \"USD\",\n  \"pipeline\": \"PIPELINE_ID_HERE\",\n  \"stage\": \"STAGE_ID_HERE\",\n  \"closeDate\": \"2025-12-31\",\n  \"contacts\": [\n    \"CONTACT_ID_1\",\n    \"CONTACT_ID_3\"\n  ],\n  \"company\": \"COMPANY_ID_HERE\",\n  \"owner\": \"USER_ID_HERE\"\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            }
          },
          "response": [],
          "event": [],
          "protocolProfileBehavior": {
            "disableBodyPruning": true
          }
        },
        {
          "id": "10098a22-a476-42ac-aec3-110595b5565a",
          "name": "Delete deal",
          "request": {
            "name": "Delete deal",
            "description": {
              "content": "Deletes a deal (`DELETE /api/deals/delete/{dealId}`).\n",
              "type": "text/plain"
            },
            "url": {
              "path": [
                "api",
                "deals",
                "delete",
                ":dealId"
              ],
              "host": [
                "{{baseUrl}}"
              ],
              "query": [],
              "variable": [
                {
                  "disabled": false,
                  "type": "any",
                  "value": "64f91a7d28ae948d8e9e8430",
                  "key": "dealId",
                  "description": "(Required) "
                }
              ]
            },
            "header": [
              {
                "key": "Accept",
                "value": "application/json"
              }
            ],
            "method": "DELETE",
            "auth": {
              "type": "apikey",
              "apikey": [
                {
                  "key": "key",
                  "value": "x-api-key"
                },
                {
                  "key": "value",
                  "value": "{{apiKey}}"
                },
                {
                  "key": "in",
                  "value": "header"
                }
              ]
            }
          },
          "response": [],
          "event": [],
          "protocolProfileBehavior": {
            "disableBodyPruning": true
          }
        }
      ],
      "event": []
    },
    {
      "id": "3e33d729-2f1f-4b48-acb1-5bd997d7a3ea",
      "name": "Quotes",
      "description": {
        "content": "Create, update, delete quotes. `signatureOption`: no-signature, written-signature. `status`: draft, published, expired. `template`: default-basic.\n",
        "type": "text/plain"
      },
      "item": [
        {
          "id": "ce8f9d41-d64f-49a8-ab02-4ac797fec245",
          "name": "Create a quote from a deal",
          "request": {
            "name": "Create a quote from a deal",
            "description": {
              "content": "Creates a quote for a deal.\n",
              "type": "text/plain"
            },
            "url": {
              "path": [
                "api",
                "quotes"
              ],
              "host": [
                "{{baseUrl}}"
              ],
              "query": [],
              "variable": []
            },
            "header": [
              {
                "disabled": false,
                "description": "Unique key for safe retries on creates and message sends.",
                "key": "Idempotency-Key",
                "value": "01HZY8QX3K9V2B4C6D8E0F2G4H6J8K0L"
              },
              {
                "key": "Content-Type",
                "value": "application/json"
              },
              {
                "key": "Accept",
                "value": "application/json"
              }
            ],
            "method": "POST",
            "auth": {
              "type": "apikey",
              "apikey": [
                {
                  "key": "key",
                  "value": "x-api-key"
                },
                {
                  "key": "value",
                  "value": "{{apiKey}}"
                },
                {
                  "key": "in",
                  "value": "header"
                }
              ]
            },
            "body": {
              "mode": "raw",
              "raw": "{\n  \"dealId\": \"YOUR_DEAL_ID\"\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            }
          },
          "response": [],
          "event": [],
          "protocolProfileBehavior": {
            "disableBodyPruning": true
          }
        },
        {
          "id": "c5f9afd8-61b0-433f-b31f-f82b9ef79c0a",
          "name": "Update quote presentation and terms",
          "request": {
            "name": "Update quote presentation and terms",
            "description": {
              "content": "Updates quote fields.\n",
              "type": "text/plain"
            },
            "url": {
              "path": [
                "api",
                "quotes",
                ":quoteId"
              ],
              "host": [
                "{{baseUrl}}"
              ],
              "query": [],
              "variable": [
                {
                  "disabled": false,
                  "type": "any",
                  "value": "YOUR_QUOTE_ID",
                  "key": "quoteId",
                  "description": "(Required) "
                }
              ]
            },
            "header": [
              {
                "disabled": false,
                "description": "Unique key for safe retries on creates and message sends.",
                "key": "Idempotency-Key",
                "value": "01HZY8QX3K9V2B4C6D8E0F2G4H6J8K0L"
              },
              {
                "key": "Content-Type",
                "value": "application/json"
              },
              {
                "key": "Accept",
                "value": "application/json"
              }
            ],
            "method": "PUT",
            "auth": {
              "type": "apikey",
              "apikey": [
                {
                  "key": "key",
                  "value": "x-api-key"
                },
                {
                  "key": "value",
                  "value": "{{apiKey}}"
                },
                {
                  "key": "in",
                  "value": "header"
                }
              ]
            },
            "body": {
              "mode": "raw",
              "raw": "{\n  \"signatureOption\": \"written-signature\",\n  \"name\": \"Updated Quote Name\",\n  \"url\": \"https://quotes.example.com/q-123\",\n  \"template\": \"default-basic\",\n  \"expirationDate\": \"2025-10-10T00:00:00Z\",\n  \"commentsToBuyer\": \"Please review this quote.\",\n  \"purchaseTerms\": \"Net 30\",\n  \"status\": \"published\",\n  \"acceptOnlinePayment\": true\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            }
          },
          "response": [],
          "event": [],
          "protocolProfileBehavior": {
            "disableBodyPruning": true
          }
        },
        {
          "id": "dd349f10-f1d5-4c77-b42f-bf87c6110820",
          "name": "Delete a quote",
          "request": {
            "name": "Delete a quote",
            "description": {
              "content": "Deletes a quote.\n",
              "type": "text/plain"
            },
            "url": {
              "path": [
                "api",
                "quotes",
                ":quoteId"
              ],
              "host": [
                "{{baseUrl}}"
              ],
              "query": [],
              "variable": [
                {
                  "disabled": false,
                  "type": "any",
                  "value": "YOUR_QUOTE_ID",
                  "key": "quoteId",
                  "description": "(Required) "
                }
              ]
            },
            "header": [
              {
                "key": "Accept",
                "value": "application/json"
              }
            ],
            "method": "DELETE",
            "auth": {
              "type": "apikey",
              "apikey": [
                {
                  "key": "key",
                  "value": "x-api-key"
                },
                {
                  "key": "value",
                  "value": "{{apiKey}}"
                },
                {
                  "key": "in",
                  "value": "header"
                }
              ]
            }
          },
          "response": [],
          "event": [],
          "protocolProfileBehavior": {
            "disableBodyPruning": true
          }
        }
      ],
      "event": []
    }
  ],
  "event": [],
  "variable": [
    {
      "type": "string",
      "value": "https://api.hellocrm.ai",
      "key": "baseUrl"
    }
  ],
  "auth": {
    "type": "apikey",
    "apikey": [
      {
        "key": "key",
        "value": "x-api-key"
      },
      {
        "key": "value",
        "value": "{{apiKey}}"
      },
      {
        "key": "in",
        "value": "header"
      }
    ]
  },
  "info": {
    "_postman_id": "b262b223-eef1-4eb3-abd2-b173feeb7ff6",
    "name": "HelloCRM API",
    "schema": "https://schema.getpostman.com/json/collection/v2.1.0/collection.json",
    "description": {
      "content": "HelloCRM **documented public API** for integrators: conversations, messaging (live chat, email, SMS, WhatsApp, bulk), templates, contacts, companies, products, deals, and quotes.\n\n**Messaging — two modes (both supported):** **In conversation** — pass `conversationId` (from Conversations APIs or your CRM). **Standalone** — omit `conversationId`; pass `to` (phone or email) or `contactId` and the API finds or creates the contact and conversation. `providerId` = provider id or sending phone/email on file.\n\n**Authentication:** `x-api-key` (team API key) or `Authorization: Bearer <jwt>` on protected routes.\n\n**Standard success envelope** (target contract; some handlers may omit fields):\n`{\"success\":true,\"message\":\"string\",\"data\":{},\"meta\":{}}`\n\n**Idempotency:** Send `Idempotency-Key` on creates and sensitive sends when you retry.\n\n**Bulk outbound:** `POST /api/messages/sendBulkNewMessages` — comma-separated `to`, `channel` one of `email`, `sms`, `whatsapp` (see Bulk Email / Bulk SMS / Bulk WhatsApp folders).\n\nRegenerated by `hellocrm-backend/scripts/generate-postman-collection.mjs` (documented routes only).",
      "type": "text/plain"
    }
  }
}