{
  "info": {
    "name": "hooks.tab.co.id — API V2",
    "description": "Official Postman collection for hooks.tab.co.id WhatsApp Open API V2.\n\n**Authentication**\nEvery protected request requires two headers:\n- `Client-Id` — your client identifier\n- `Secret-Key` — your encrypted secret key\n\nBoth are found in **Settings → API Access** on the dashboard.\n\nSet the `base_url`, `client_id`, and `secret_key` collection variables before making requests.",
    "schema": "https://schema.getpostman.com/json/collection/v2.1.0/collection.json"
  },
  "variable": [
    { "key": "base_url",   "value": "https://hooks.tab.co.id/api/v2", "type": "string" },
    { "key": "client_id",  "value": "your-client-id",                  "type": "string" },
    { "key": "secret_key", "value": "your-secret-key",                 "type": "string" }
  ],
  "auth": {
    "type": "apikey",
    "apikey": [
      { "key": "key",   "value": "Client-Id",      "type": "string" },
      { "key": "value", "value": "{{client_id}}",  "type": "string" },
      { "key": "in",    "value": "header",          "type": "string" }
    ]
  },
  "item": [
    {
      "name": "Access",
      "item": [
        {
          "name": "Verify Access",
          "request": {
            "method": "GET",
            "header": [
              { "key": "Client-Id",  "value": "{{client_id}}" },
              { "key": "Secret-Key", "value": "{{secret_key}}" }
            ],
            "url": { "raw": "{{base_url}}/access", "host": ["{{base_url}}"], "path": ["access"] },
            "description": "Verify credentials and retrieve your access details including whitelisted hosts."
          }
        },
        {
          "name": "Refresh Secret Key",
          "request": {
            "method": "POST",
            "header": [
              { "key": "Client-Id",   "value": "{{client_id}}" },
              { "key": "Secret-Key",  "value": "{{secret_key}}" },
              { "key": "Content-Type","value": "application/json" }
            ],
            "url": { "raw": "{{base_url}}/access/refresh-key", "host": ["{{base_url}}"], "path": ["access","refresh-key"] },
            "description": "Generate a new secret key. Update your integration immediately — old key is invalidated."
          }
        },
        {
          "name": "List Whitelisted Hosts",
          "request": {
            "method": "GET",
            "header": [
              { "key": "Client-Id",  "value": "{{client_id}}" },
              { "key": "Secret-Key", "value": "{{secret_key}}" }
            ],
            "url": { "raw": "{{base_url}}/access/host", "host": ["{{base_url}}"], "path": ["access","host"] }
          }
        },
        {
          "name": "Add Whitelisted Host",
          "request": {
            "method": "POST",
            "header": [
              { "key": "Client-Id",   "value": "{{client_id}}" },
              { "key": "Secret-Key",  "value": "{{secret_key}}" },
              { "key": "Content-Type","value": "application/json" }
            ],
            "body": {
              "mode": "raw",
              "raw": "{\n  \"host\": \"127.0.0.1\"\n}",
              "options": { "raw": { "language": "json" } }
            },
            "url": { "raw": "{{base_url}}/access/host/create", "host": ["{{base_url}}"], "path": ["access","host","create"] },
            "description": "Add an IP address or domain to the whitelist."
          }
        },
        {
          "name": "Remove Whitelisted Host",
          "request": {
            "method": "POST",
            "header": [
              { "key": "Client-Id",   "value": "{{client_id}}" },
              { "key": "Secret-Key",  "value": "{{secret_key}}" },
              { "key": "Content-Type","value": "application/json" }
            ],
            "body": {
              "mode": "raw",
              "raw": "{\n  \"host\": \"127.0.0.1\"\n}",
              "options": { "raw": { "language": "json" } }
            },
            "url": { "raw": "{{base_url}}/access/host/delete", "host": ["{{base_url}}"], "path": ["access","host","delete"] }
          }
        }
      ]
    },
    {
      "name": "Integration",
      "item": [
        {
          "name": "List Integrations",
          "request": {
            "method": "GET",
            "header": [
              { "key": "Client-Id",  "value": "{{client_id}}" },
              { "key": "Secret-Key", "value": "{{secret_key}}" }
            ],
            "url": { "raw": "{{base_url}}/integration", "host": ["{{base_url}}"], "path": ["integration"] },
            "description": "Returns all connected WhatsApp Business integrations. Use data[].id as idintegration in broadcast/message endpoints.\n\n**Response includes `mode` field:**\n- `full` — broadcast + chat both available\n- `broadcast_only` — only broadcast features available\n- `chat_only` — only chat features available (broadcast endpoints return 403 for this integration)"
          }
        },
        {
          "name": "Synchronize Integration",
          "request": {
            "method": "GET",
            "header": [
              { "key": "Client-Id",  "value": "{{client_id}}" },
              { "key": "Secret-Key", "value": "{{secret_key}}" }
            ],
            "url": { "raw": "{{base_url}}/integration/synchronize", "host": ["{{base_url}}"], "path": ["integration","synchronize"] },
            "description": "Sync integration status with Meta."
          }
        }
      ]
    },
    {
      "name": "Master Data",
      "item": [
        {
          "name": "Get Master List",
          "request": {
            "method": "GET",
            "header": [
              { "key": "Client-Id",  "value": "{{client_id}}" },
              { "key": "Secret-Key", "value": "{{secret_key}}" }
            ],
            "url": {
              "raw": "{{base_url}}/master/language",
              "host": ["{{base_url}}"],
              "path": ["master","language"]
            },
            "description": "Replace 'language' with: category | language | type\n\nReturns master data records. Use IDs as foreign keys in template/broadcast endpoints."
          }
        },
        {
          "name": "Get Master Limit",
          "request": {
            "method": "GET",
            "header": [
              { "key": "Client-Id",  "value": "{{client_id}}" },
              { "key": "Secret-Key", "value": "{{secret_key}}" }
            ],
            "url": {
              "raw": "{{base_url}}/master/limit/language",
              "host": ["{{base_url}}"],
              "path": ["master","limit","language"]
            },
            "description": "Same as /master/{model} but with default limit applied."
          }
        }
      ]
    },
    {
      "name": "Template",
      "item": [
        {
          "name": "List Templates",
          "request": {
            "method": "GET",
            "header": [
              { "key": "Client-Id",  "value": "{{client_id}}" },
              { "key": "Secret-Key", "value": "{{secret_key}}" }
            ],
            "url": {
              "raw": "{{base_url}}/template/whatsapp?limit=10&offset=1",
              "host": ["{{base_url}}"],
              "path": ["template","whatsapp"],
              "query": [
                { "key": "limit",                  "value": "10",    "description": "Items per page" },
                { "key": "offset",                 "value": "1",     "description": "Page number (1-based)" },
                { "key": "filter[search]",         "value": "",      "disabled": true, "description": "Search by name or body" },
                { "key": "filter[status.id]",      "value": "",      "disabled": true, "description": "Filter by status ID" },
                { "key": "filter[category.id]",    "value": "",      "disabled": true, "description": "Filter by category ID" },
                { "key": "filter[language.id]",    "value": "",      "disabled": true, "description": "Filter by language ID" },
                { "key": "filter[integration.id]", "value": "",      "disabled": true, "description": "Filter by integration ID" }
              ]
            },
            "description": "Returns only latest version (is_latest=1) of each template.\n\nResponse includes `parameters` field with parsed header/body/buttons structure."
          }
        },
        {
          "name": "Get Template Detail",
          "request": {
            "method": "GET",
            "header": [
              { "key": "Client-Id",  "value": "{{client_id}}" },
              { "key": "Secret-Key", "value": "{{secret_key}}" }
            ],
            "url": {
              "raw": "{{base_url}}/template/whatsapp/1",
              "host": ["{{base_url}}"],
              "path": ["template","whatsapp","1"]
            },
            "description": "Returns template detail including `parameters` (parsed) and `meta_parameter` (raw JSON from Meta)."
          }
        },
        {
          "name": "Create Template",
          "request": {
            "method": "POST",
            "header": [
              { "key": "Client-Id",   "value": "{{client_id}}" },
              { "key": "Secret-Key",  "value": "{{secret_key}}" },
              { "key": "Content-Type","value": "application/json" }
            ],
            "body": {
              "mode": "raw",
              "raw": "{\n  \"idintegration\": 4,\n  \"languageid\": 4,\n  \"categoryid\": 2,\n  \"name\": \"My Order Template\",\n  \"components\": [\n    {\n      \"type\": \"HEADER\",\n      \"format\": \"IMAGE\",\n      \"example_list\": [\"https://hooks.tab.co.id/storage/files/banner.jpg\"]\n    },\n    {\n      \"type\": \"BODY\",\n      \"text\": \"Hello {{1}}, your order {{2}} is ready.\",\n      \"example\": {\n        \"body_text\": [[\"John\", \"#ORD001\"]]\n      }\n    },\n    {\n      \"type\": \"FOOTER\",\n      \"text\": \"Reply STOP to unsubscribe\"\n    },\n    {\n      \"type\": \"BUTTONS\",\n      \"buttons\": [\n        {\n          \"type\": \"PHONE_NUMBER\",\n          \"text\": \"Call Us\",\n          \"phone_number\": \"+628123456789\"\n        },\n        {\n          \"type\": \"URL\",\n          \"text\": \"Track Order\",\n          \"url\": \"https://hooks.tab.co.id/track/{{1}}\",\n          \"example\": 1\n        }\n      ]\n    }\n  ]\n}",
              "options": { "raw": { "language": "json" } }
            },
            "url": { "raw": "{{base_url}}/template/whatsapp/create", "host": ["{{base_url}}"], "path": ["template","whatsapp","create"] },
            "description": "Create a WhatsApp message template and submit to Meta for approval.\n\n**components[] types:**\n\n**BODY** (required)\n- text: body message, use {{1}}, {{2}} for variables\n- Variables cannot start or end the text\n- example.body_text required if variables present\n\n**HEADER** (optional, max 1)\n- format: TEXT | IMAGE | DOCUMENT | VIDEO\n- TEXT: provide `text` field, no example_list\n- IMAGE/DOCUMENT/VIDEO: provide `example_list[0]` = URL from File Uploader\n\n**FOOTER** (optional)\n- Static text only. Not reflected in parameters field.\n\n**BUTTONS** (optional, max 3)\n- PHONE_NUMBER: requires `text` + `phone_number`\n- URL: requires `text` + `url`. Add `example: 1` if url contains {{1}}."
          }
        },
        {
          "name": "Create Template — TEXT Header Only",
          "request": {
            "method": "POST",
            "header": [
              { "key": "Client-Id",   "value": "{{client_id}}" },
              { "key": "Secret-Key",  "value": "{{secret_key}}" },
              { "key": "Content-Type","value": "application/json" }
            ],
            "body": {
              "mode": "raw",
              "raw": "{\n  \"idintegration\": 4,\n  \"languageid\": 4,\n  \"categoryid\": 2,\n  \"name\": \"Simple Text Template\",\n  \"components\": [\n    {\n      \"type\": \"HEADER\",\n      \"format\": \"TEXT\",\n      \"text\": \"Order Confirmation\"\n    },\n    {\n      \"type\": \"BODY\",\n      \"text\": \"Hello {{1}}, your order has been confirmed.\",\n      \"example\": {\n        \"body_text\": [[\"John\"]]\n      }\n    }\n  ]\n}",
              "options": { "raw": { "language": "json" } }
            },
            "url": { "raw": "{{base_url}}/template/whatsapp/create", "host": ["{{base_url}}"], "path": ["template","whatsapp","create"] },
            "description": "Example: TEXT header (no file upload, no example_list needed)."
          }
        },
        {
          "name": "Create Template — No Header No Buttons",
          "request": {
            "method": "POST",
            "header": [
              { "key": "Client-Id",   "value": "{{client_id}}" },
              { "key": "Secret-Key",  "value": "{{secret_key}}" },
              { "key": "Content-Type","value": "application/json" }
            ],
            "body": {
              "mode": "raw",
              "raw": "{\n  \"idintegration\": 4,\n  \"languageid\": 4,\n  \"categoryid\": 4,\n  \"name\": \"Plain Message Template\",\n  \"components\": [\n    {\n      \"type\": \"BODY\",\n      \"text\": \"Your appointment on {{1}} at {{2}} is confirmed.\",\n      \"example\": {\n        \"body_text\": [[\"Monday\", \"10:00 AM\"]]\n      }\n    }\n  ]\n}",
              "options": { "raw": { "language": "json" } }
            },
            "url": { "raw": "{{base_url}}/template/whatsapp/create", "host": ["{{base_url}}"], "path": ["template","whatsapp","create"] },
            "description": "Minimal template — body only, no header, no footer, no buttons."
          }
        },
        {
          "name": "Delete Template",
          "request": {
            "method": "POST",
            "header": [
              { "key": "Client-Id",   "value": "{{client_id}}" },
              { "key": "Secret-Key",  "value": "{{secret_key}}" }
            ],
            "url": {
              "raw": "{{base_url}}/template/whatsapp/delete/1",
              "host": ["{{base_url}}"],
              "path": ["template","whatsapp","delete","1"]
            },
            "description": "Soft-delete template (is_active=0) and removes from Meta if meta_id exists."
          }
        }
      ]
    },
    {
      "name": "Broadcast",
      "item": [
        {
          "name": "Generate Parameter",
          "request": {
            "method": "POST",
            "header": [
              { "key": "Client-Id",   "value": "{{client_id}}" },
              { "key": "Secret-Key",  "value": "{{secret_key}}" },
              { "key": "Content-Type","value": "application/json" }
            ],
            "body": {
              "mode": "raw",
              "raw": "{\n  \"body\": \"Hello {{1}}, your order {{2}} is ready.\"\n}",
              "options": { "raw": { "language": "json" } }
            },
            "url": { "raw": "{{base_url}}/broadcast/generate-parameter", "host": ["{{base_url}}"], "path": ["broadcast","generate-parameter"] },
            "description": "Extracts variable placeholders from a body text. Returns [{key:\"1\"},{key:\"2\"}] for {{1}},{{2}}."
          }
        },
        {
          "name": "List Direct Broadcasts",
          "request": {
            "method": "GET",
            "header": [
              { "key": "Client-Id",  "value": "{{client_id}}" },
              { "key": "Secret-Key", "value": "{{secret_key}}" }
            ],
            "url": {
              "raw": "{{base_url}}/broadcast/whatsapp?limit=10&offset=1",
              "host": ["{{base_url}}"],
              "path": ["broadcast","whatsapp"],
              "query": [
                { "key": "limit",  "value": "10" },
                { "key": "offset", "value": "1" },
                { "key": "filter[idstatus]",          "value": "", "disabled": true },
                { "key": "filter[idintegration]",     "value": "", "disabled": true },
                { "key": "filter[template.idcategory]","value": "", "disabled": true }
              ]
            }
          }
        },
        {
          "name": "Send Direct Broadcast",
          "request": {
            "method": "POST",
            "header": [
              { "key": "Client-Id",   "value": "{{client_id}}" },
              { "key": "Secret-Key",  "value": "{{secret_key}}" },
              { "key": "Content-Type","value": "application/json" }
            ],
            "body": {
              "mode": "raw",
              "raw": "{\n  \"idintegration\": 4,\n  \"idtemplate\": 1,\n  \"languageid\": 4,\n  \"phone\": \"628123456789\",\n  \"parameters\": {\n    \"header\": {\n      \"params\": [\n        { \"type\": \"image\", \"value\": \"https://hooks.tab.co.id/storage/files/banner.jpg\" }\n      ]\n    },\n    \"body\": [\n      { \"type\": \"text\", \"value\": \"John\" },\n      { \"type\": \"text\", \"value\": \"#ORD001\" }\n    ],\n    \"buttons\": [\n      { \"index\": 0, \"parameters\": [\"ORDER123\"] }\n    ]\n  },\n  \"send_at\": null\n}",
              "options": { "raw": { "language": "json" } }
            },
            "url": { "raw": "{{base_url}}/broadcast/whatsapp/direct", "host": ["{{base_url}}"], "path": ["broadcast","whatsapp","direct"] },
            "description": "Send a WhatsApp broadcast to a single recipient.\n\n**parameters object:**\n- `header.params[0].type` — lowercase: image | document | video (omit for TEXT header or no header)\n- `header.params[0].value` — media URL\n- `body[]` — ordered array matching {{1}}, {{2}}, ... Each: {type:\"text\", value:\"...\"}\n- `buttons[]` — only for URL buttons with variables: {index:0, parameters:[\"value\"]}\n\n**send_at** — Y-m-d H:i:s to schedule, null to send immediately.\n\n**403 — chat_only guard:** If the channel mode is `chat_only`, this endpoint returns HTTP 403:\n```json\n{\"success\":false,\"message\":\"This integration is configured for chat only. Broadcast features are not available.\"}\n```"
          }
        },
        {
          "name": "Send Direct Broadcast — No Header",
          "request": {
            "method": "POST",
            "header": [
              { "key": "Client-Id",   "value": "{{client_id}}" },
              { "key": "Secret-Key",  "value": "{{secret_key}}" },
              { "key": "Content-Type","value": "application/json" }
            ],
            "body": {
              "mode": "raw",
              "raw": "{\n  \"idintegration\": 4,\n  \"idtemplate\": 1,\n  \"languageid\": 4,\n  \"phone\": \"628123456789\",\n  \"parameters\": {\n    \"body\": [\n      { \"type\": \"text\", \"value\": \"John\" }\n    ]\n  }\n}",
              "options": { "raw": { "language": "json" } }
            },
            "url": { "raw": "{{base_url}}/broadcast/whatsapp/direct", "host": ["{{base_url}}"], "path": ["broadcast","whatsapp","direct"] },
            "description": "Minimal example — body variables only, no header media, no button variables."
          }
        },
        {
          "name": "Send Direct Broadcast Bulk (Multi-Recipient)",
          "request": {
            "method": "POST",
            "header": [
              { "key": "Client-Id",   "value": "{{client_id}}" },
              { "key": "Secret-Key",  "value": "{{secret_key}}" },
              { "key": "Content-Type","value": "application/json" }
            ],
            "body": {
              "mode": "raw",
              "raw": "[\n  {\n    \"idintegration\": 4,\n    \"idtemplate\": 1,\n    \"languageid\": 4,\n    \"phone\": \"628123456789\",\n    \"parameters\": {\n      \"body\": [\n        { \"type\": \"text\", \"value\": \"John\" }\n      ]\n    }\n  },\n  {\n    \"idintegration\": 4,\n    \"idtemplate\": 1,\n    \"languageid\": 4,\n    \"phone\": \"628987654321\",\n    \"parameters\": {\n      \"body\": [\n        { \"type\": \"text\", \"value\": \"Jane\" }\n      ]\n    },\n    \"send_at\": \"2026-06-01 09:00:00\"\n  }\n]",
              "options": { "raw": { "language": "json" } }
            },
            "url": { "raw": "{{base_url}}/broadcast/whatsapp/direct/bulk", "host": ["{{base_url}}"], "path": ["broadcast","whatsapp","direct","bulk"] },
            "description": "Send to multiple recipients individually. Each item in array = one recipient.\nDifferent parameters per recipient allowed.\nsend_at per-item for scheduled sends.\n\n**Per-item chat_only guard:** Items whose integration mode is `chat_only` are placed in failedQueue (overall request still returns 200). Rejection message per failed item: `\"This integration is configured for chat only.\"`"
          }
        },
        {
          "name": "List Bulk Campaigns",
          "request": {
            "method": "GET",
            "header": [
              { "key": "Client-Id",  "value": "{{client_id}}" },
              { "key": "Secret-Key", "value": "{{secret_key}}" }
            ],
            "url": {
              "raw": "{{base_url}}/broadcast/whatsapp/bulk?limit=10&offset=1",
              "host": ["{{base_url}}"],
              "path": ["broadcast","whatsapp","bulk"],
              "query": [
                { "key": "limit",  "value": "10" },
                { "key": "offset", "value": "1" }
              ]
            }
          }
        },
        {
          "name": "Send Bulk Broadcast (Contact List)",
          "request": {
            "method": "POST",
            "header": [
              { "key": "Client-Id",   "value": "{{client_id}}" },
              { "key": "Secret-Key",  "value": "{{secret_key}}" },
              { "key": "Content-Type","value": "application/json" }
            ],
            "body": {
              "mode": "raw",
              "raw": "{\n  \"idintegration\": 4,\n  \"idtemplate\": 1,\n  \"idcontactlist\": 1,\n  \"languageid\": 4,\n  \"parameters\": {\n    \"header\": {\n      \"params\": [\n        { \"type\": \"image\", \"value\": \"https://hooks.tab.co.id/storage/files/banner.jpg\" }\n      ]\n    },\n    \"body\": [\n      { \"type\": \"text\", \"value\": \"Customer\" }\n    ],\n    \"buttons\": [\n      { \"index\": 0, \"parameters\": [\"PROMO2026\"] }\n    ]\n  }\n}",
              "options": { "raw": { "language": "json" } }
            },
            "url": { "raw": "{{base_url}}/broadcast/whatsapp/bulk", "host": ["{{base_url}}"], "path": ["broadcast","whatsapp","bulk"] },
            "description": "Send same template to all members of a contact list.\nSame parameters applied to every recipient.\n\n**403 — chat_only guard:** If the channel mode is `chat_only`, this endpoint returns HTTP 403:\n```json\n{\"success\":false,\"message\":\"This integration is configured for chat only. Broadcast features are not available.\"}\n```"
          }
        },
        {
          "name": "Get Bulk Campaign Summary",
          "request": {
            "method": "GET",
            "header": [
              { "key": "Client-Id",  "value": "{{client_id}}" },
              { "key": "Secret-Key", "value": "{{secret_key}}" }
            ],
            "url": {
              "raw": "{{base_url}}/broadcast/whatsapp/bulk/your-grouping-id",
              "host": ["{{base_url}}"],
              "path": ["broadcast","whatsapp","bulk","your-grouping-id"]
            },
            "description": "Get total/sent/failed/pending summary for a bulk campaign."
          }
        },
        {
          "name": "List Bulk Campaign Recipients",
          "request": {
            "method": "GET",
            "header": [
              { "key": "Client-Id",  "value": "{{client_id}}" },
              { "key": "Secret-Key", "value": "{{secret_key}}" }
            ],
            "url": {
              "raw": "{{base_url}}/broadcast/whatsapp/bulk/list/your-grouping-id?limit=10&offset=1",
              "host": ["{{base_url}}"],
              "path": ["broadcast","whatsapp","bulk","list","your-grouping-id"],
              "query": [
                { "key": "limit",  "value": "10" },
                { "key": "offset", "value": "1" }
              ]
            }
          }
        },
        {
          "name": "Get Broadcast Detail",
          "request": {
            "method": "GET",
            "header": [
              { "key": "Client-Id",  "value": "{{client_id}}" },
              { "key": "Secret-Key", "value": "{{secret_key}}" }
            ],
            "url": {
              "raw": "{{base_url}}/broadcast/whatsapp/1",
              "host": ["{{base_url}}"],
              "path": ["broadcast","whatsapp","1"]
            },
            "description": "Get individual broadcast record status and details."
          }
        }
      ]
    },
    {
      "name": "Message",
      "item": [
        {
          "name": "Send Direct Message",
          "request": {
            "method": "POST",
            "header": [
              { "key": "Client-Id",   "value": "{{client_id}}" },
              { "key": "Secret-Key",  "value": "{{secret_key}}" },
              { "key": "Content-Type","value": "application/json" }
            ],
            "body": {
              "mode": "raw",
              "raw": "{\n  \"idintegration\": 4,\n  \"idcontact\": 1,\n  \"type\": \"TEXT\",\n  \"content\": {\n    \"body\": \"Hello! How can I help you today?\"\n  }\n}",
              "options": { "raw": { "language": "json" } }
            },
            "url": { "raw": "{{base_url}}/message/whatsapp/direct", "host": ["{{base_url}}"], "path": ["message","whatsapp","direct"] },
            "description": "Send a direct message to a contact.\n\n**type values:**\n- TEXT: `{\"body\":\"Hello!\"}`\n- IMAGE/VIDEO/DOCUMENT/AUDIO: `{\"link\":\"https://...\"}` or `{\"id\":\"media_id\"}`\n- LOCATION: `{\"latitude\":...,\"longitude\":...,\"name\":\"...\",\"address\":\"...\"}`\n- REACTION: `{\"message_id\":\"wamid.xxx\",\"emoji\":\"👍\"}`"
          }
        },
        {
          "name": "List Messages (by Integration)",
          "request": {
            "method": "GET",
            "header": [
              { "key": "Client-Id",  "value": "{{client_id}}" },
              { "key": "Secret-Key", "value": "{{secret_key}}" }
            ],
            "url": {
              "raw": "{{base_url}}/message/whatsapp/1",
              "host": ["{{base_url}}"],
              "path": ["message","whatsapp","1"]
            },
            "description": "List all message threads for an integration. Replace 1 with idintegration.\n\n**403 — ownership guard:** If the channel does not exist or is not owned by your access, this endpoint returns HTTP 403:\n```json\n{\"success\":false,\"message\":\"Integration not found or access denied.\"}\n```"
          }
        },
        {
          "name": "List Messages (by Integration + Contact)",
          "request": {
            "method": "GET",
            "header": [
              { "key": "Client-Id",  "value": "{{client_id}}" },
              { "key": "Secret-Key", "value": "{{secret_key}}" }
            ],
            "url": {
              "raw": "{{base_url}}/message/whatsapp/1/1",
              "host": ["{{base_url}}"],
              "path": ["message","whatsapp","1","1"]
            },
            "description": "List messages for a specific contact. Replace path: /message/whatsapp/{idintegration}/{idcontact}.\n\n**403 — ownership guard:** If the channel does not exist or is not owned by your access, this endpoint returns HTTP 403:\n```json\n{\"success\":false,\"message\":\"Integration not found or access denied.\"}\n```"
          }
        },
        {
          "name": "Get Media Info",
          "request": {
            "method": "GET",
            "header": [
              { "key": "Client-Id",  "value": "{{client_id}}" },
              { "key": "Secret-Key", "value": "{{secret_key}}" }
            ],
            "url": {
              "raw": "{{base_url}}/message/whatsapp/media/1",
              "host": ["{{base_url}}"],
              "path": ["message","whatsapp","media","1"]
            }
          }
        },
        {
          "name": "Get Media Download URL",
          "request": {
            "method": "GET",
            "header": [
              { "key": "Client-Id",  "value": "{{client_id}}" },
              { "key": "Secret-Key", "value": "{{secret_key}}" }
            ],
            "url": {
              "raw": "{{base_url}}/message/whatsapp/media/download/url?idmedia=1",
              "host": ["{{base_url}}"],
              "path": ["message","whatsapp","media","download","url"],
              "query": [{ "key": "idmedia", "value": "1" }]
            },
            "description": "Returns a time-limited signed URL to download the media file."
          }
        },
        {
          "name": "Download Media File",
          "request": {
            "method": "GET",
            "header": [
              { "key": "Client-Id",  "value": "{{client_id}}" },
              { "key": "Secret-Key", "value": "{{secret_key}}" }
            ],
            "url": {
              "raw": "{{base_url}}/message/whatsapp/media/download/1",
              "host": ["{{base_url}}"],
              "path": ["message","whatsapp","media","download","1"]
            }
          }
        }
      ]
    },
    {
      "name": "File",
      "item": [
        {
          "name": "List Files",
          "request": {
            "method": "GET",
            "header": [
              { "key": "Client-Id",  "value": "{{client_id}}" },
              { "key": "Secret-Key", "value": "{{secret_key}}" }
            ],
            "url": { "raw": "{{base_url}}/file", "host": ["{{base_url}}"], "path": ["file"] },
            "description": "List uploaded files. URLs from this endpoint are used as example_list in template create."
          }
        },
        {
          "name": "Upload File",
          "request": {
            "method": "POST",
            "header": [
              { "key": "Client-Id",  "value": "{{client_id}}" },
              { "key": "Secret-Key", "value": "{{secret_key}}" }
            ],
            "body": {
              "mode": "formdata",
              "formdata": [
                { "key": "file", "type": "file", "src": "/path/to/file.jpg", "description": "File to upload (image/document/video)" }
              ]
            },
            "url": { "raw": "{{base_url}}/file/create", "host": ["{{base_url}}"], "path": ["file","create"] },
            "description": "Upload a file. The returned URL is used in template header example_list and broadcast header parameters."
          }
        },
        {
          "name": "Get File Detail",
          "request": {
            "method": "GET",
            "header": [
              { "key": "Client-Id",  "value": "{{client_id}}" },
              { "key": "Secret-Key", "value": "{{secret_key}}" }
            ],
            "url": { "raw": "{{base_url}}/file/1", "host": ["{{base_url}}"], "path": ["file","1"] }
          }
        },
        {
          "name": "Delete File",
          "request": {
            "method": "POST",
            "header": [
              { "key": "Client-Id",  "value": "{{client_id}}" },
              { "key": "Secret-Key", "value": "{{secret_key}}" }
            ],
            "url": { "raw": "{{base_url}}/file/delete/1", "host": ["{{base_url}}"], "path": ["file","delete","1"] }
          }
        }
      ]
    },
    {
      "name": "Contact",
      "item": [
        {
          "name": "List Contacts",
          "request": {
            "method": "GET",
            "header": [
              { "key": "Client-Id",  "value": "{{client_id}}" },
              { "key": "Secret-Key", "value": "{{secret_key}}" }
            ],
            "url": {
              "raw": "{{base_url}}/contact?limit=10&offset=1",
              "host": ["{{base_url}}"],
              "path": ["contact"],
              "query": [
                { "key": "limit",  "value": "10" },
                { "key": "offset", "value": "1" },
                { "key": "filter[search]", "value": "", "disabled": true }
              ]
            }
          }
        },
        {
          "name": "Get Contact Detail",
          "request": {
            "method": "GET",
            "header": [
              { "key": "Client-Id",  "value": "{{client_id}}" },
              { "key": "Secret-Key", "value": "{{secret_key}}" }
            ],
            "url": { "raw": "{{base_url}}/contact/1", "host": ["{{base_url}}"], "path": ["contact","1"] }
          }
        },
        {
          "name": "Create Contact",
          "request": {
            "method": "POST",
            "header": [
              { "key": "Client-Id",   "value": "{{client_id}}" },
              { "key": "Secret-Key",  "value": "{{secret_key}}" },
              { "key": "Content-Type","value": "application/json" }
            ],
            "body": {
              "mode": "raw",
              "raw": "{\n  \"name\": \"John Doe\",\n  \"phone\": \"628123456789\",\n  \"email\": \"john@example.com\"\n}",
              "options": { "raw": { "language": "json" } }
            },
            "url": { "raw": "{{base_url}}/contact/create", "host": ["{{base_url}}"], "path": ["contact","create"] }
          }
        },
        {
          "name": "Create Contacts Bulk",
          "request": {
            "method": "POST",
            "header": [
              { "key": "Client-Id",   "value": "{{client_id}}" },
              { "key": "Secret-Key",  "value": "{{secret_key}}" },
              { "key": "Content-Type","value": "application/json" }
            ],
            "body": {
              "mode": "raw",
              "raw": "[\n  { \"name\": \"John Doe\", \"phone\": \"628123456789\" },\n  { \"name\": \"Jane Doe\", \"phone\": \"628987654321\" }\n]",
              "options": { "raw": { "language": "json" } }
            },
            "url": { "raw": "{{base_url}}/contact/create/bulk", "host": ["{{base_url}}"], "path": ["contact","create","bulk"] }
          }
        },
        {
          "name": "Update Contact",
          "request": {
            "method": "POST",
            "header": [
              { "key": "Client-Id",   "value": "{{client_id}}" },
              { "key": "Secret-Key",  "value": "{{secret_key}}" },
              { "key": "Content-Type","value": "application/json" }
            ],
            "body": {
              "mode": "raw",
              "raw": "{\n  \"name\": \"John Updated\",\n  \"phone\": \"628123456789\"\n}",
              "options": { "raw": { "language": "json" } }
            },
            "url": { "raw": "{{base_url}}/contact/update/1", "host": ["{{base_url}}"], "path": ["contact","update","1"] }
          }
        },
        {
          "name": "Delete Contact",
          "request": {
            "method": "POST",
            "header": [
              { "key": "Client-Id",  "value": "{{client_id}}" },
              { "key": "Secret-Key", "value": "{{secret_key}}" }
            ],
            "url": { "raw": "{{base_url}}/contact/delete/1", "host": ["{{base_url}}"], "path": ["contact","delete","1"] }
          }
        },
        {
          "name": "Add Tag to Contact",
          "request": {
            "method": "POST",
            "header": [
              { "key": "Client-Id",   "value": "{{client_id}}" },
              { "key": "Secret-Key",  "value": "{{secret_key}}" },
              { "key": "Content-Type","value": "application/json" }
            ],
            "body": {
              "mode": "raw",
              "raw": "{\n  \"tag\": \"vip\"\n}",
              "options": { "raw": { "language": "json" } }
            },
            "url": { "raw": "{{base_url}}/contact/assign/add/tag/1", "host": ["{{base_url}}"], "path": ["contact","assign","add","tag","1"] }
          }
        },
        {
          "name": "Remove Tag from Contact",
          "request": {
            "method": "POST",
            "header": [
              { "key": "Client-Id",   "value": "{{client_id}}" },
              { "key": "Secret-Key",  "value": "{{secret_key}}" },
              { "key": "Content-Type","value": "application/json" }
            ],
            "body": {
              "mode": "raw",
              "raw": "{\n  \"tag\": \"vip\"\n}",
              "options": { "raw": { "language": "json" } }
            },
            "url": { "raw": "{{base_url}}/contact/assign/delete/tag/1", "host": ["{{base_url}}"], "path": ["contact","assign","delete","tag","1"] }
          }
        }
      ]
    },
    {
      "name": "Contact List",
      "item": [
        {
          "name": "List Contact Lists",
          "request": {
            "method": "GET",
            "header": [
              { "key": "Client-Id",  "value": "{{client_id}}" },
              { "key": "Secret-Key", "value": "{{secret_key}}" }
            ],
            "url": {
              "raw": "{{base_url}}/contactlist?limit=10&offset=1",
              "host": ["{{base_url}}"],
              "path": ["contactlist"],
              "query": [
                { "key": "limit",  "value": "10" },
                { "key": "offset", "value": "1" }
              ]
            }
          }
        },
        {
          "name": "Get Contact List Detail",
          "request": {
            "method": "GET",
            "header": [
              { "key": "Client-Id",  "value": "{{client_id}}" },
              { "key": "Secret-Key", "value": "{{secret_key}}" }
            ],
            "url": { "raw": "{{base_url}}/contactlist/1", "host": ["{{base_url}}"], "path": ["contactlist","1"] }
          }
        },
        {
          "name": "Create Contact List",
          "request": {
            "method": "POST",
            "header": [
              { "key": "Client-Id",   "value": "{{client_id}}" },
              { "key": "Secret-Key",  "value": "{{secret_key}}" },
              { "key": "Content-Type","value": "application/json" }
            ],
            "body": {
              "mode": "raw",
              "raw": "{\n  \"name\": \"VIP Customers\",\n  \"description\": \"Our top tier customers\"\n}",
              "options": { "raw": { "language": "json" } }
            },
            "url": { "raw": "{{base_url}}/contactlist/create", "host": ["{{base_url}}"], "path": ["contactlist","create"] }
          }
        },
        {
          "name": "Update Contact List",
          "request": {
            "method": "POST",
            "header": [
              { "key": "Client-Id",   "value": "{{client_id}}" },
              { "key": "Secret-Key",  "value": "{{secret_key}}" },
              { "key": "Content-Type","value": "application/json" }
            ],
            "body": {
              "mode": "raw",
              "raw": "{\n  \"name\": \"VIP Customers Updated\",\n  \"description\": \"Updated description\"\n}",
              "options": { "raw": { "language": "json" } }
            },
            "url": { "raw": "{{base_url}}/contactlist/update/1", "host": ["{{base_url}}"], "path": ["contactlist","update","1"] }
          }
        },
        {
          "name": "Delete Contact List",
          "request": {
            "method": "POST",
            "header": [
              { "key": "Client-Id",  "value": "{{client_id}}" },
              { "key": "Secret-Key", "value": "{{secret_key}}" }
            ],
            "url": { "raw": "{{base_url}}/contactlist/delete/1", "host": ["{{base_url}}"], "path": ["contactlist","delete","1"] }
          }
        },
        {
          "name": "Add Contact to List",
          "request": {
            "method": "POST",
            "header": [
              { "key": "Client-Id",   "value": "{{client_id}}" },
              { "key": "Secret-Key",  "value": "{{secret_key}}" },
              { "key": "Content-Type","value": "application/json" }
            ],
            "body": {
              "mode": "raw",
              "raw": "{\n  \"idcontact\": 1\n}",
              "options": { "raw": { "language": "json" } }
            },
            "url": { "raw": "{{base_url}}/contactlist/assign/add/1", "host": ["{{base_url}}"], "path": ["contactlist","assign","add","1"] },
            "description": "Add a contact to contact list. Path: /contactlist/assign/add/{idcontactlist}"
          }
        },
        {
          "name": "Remove Contact from List",
          "request": {
            "method": "POST",
            "header": [
              { "key": "Client-Id",   "value": "{{client_id}}" },
              { "key": "Secret-Key",  "value": "{{secret_key}}" },
              { "key": "Content-Type","value": "application/json" }
            ],
            "body": {
              "mode": "raw",
              "raw": "{\n  \"idcontact\": 1\n}",
              "options": { "raw": { "language": "json" } }
            },
            "url": { "raw": "{{base_url}}/contactlist/assign/delete/1", "host": ["{{base_url}}"], "path": ["contactlist","assign","delete","1"] }
          }
        }
      ]
    },
    {
      "name": "Report",
      "item": [
        {
          "name": "Transaction List",
          "request": {
            "method": "GET",
            "header": [
              { "key": "Client-Id",  "value": "{{client_id}}" },
              { "key": "Secret-Key", "value": "{{secret_key}}" }
            ],
            "url": { "raw": "{{base_url}}/report/transaction/list", "host": ["{{base_url}}"], "path": ["report","transaction","list"] }
          }
        },
        {
          "name": "Transaction Chart",
          "request": {
            "method": "GET",
            "header": [
              { "key": "Client-Id",  "value": "{{client_id}}" },
              { "key": "Secret-Key", "value": "{{secret_key}}" }
            ],
            "url": { "raw": "{{base_url}}/report/transaction/chart", "host": ["{{base_url}}"], "path": ["report","transaction","chart"] }
          }
        },
        {
          "name": "Fund Balance",
          "request": {
            "method": "GET",
            "header": [
              { "key": "Client-Id",  "value": "{{client_id}}" },
              { "key": "Secret-Key", "value": "{{secret_key}}" }
            ],
            "url": { "raw": "{{base_url}}/report/transaction/fund", "host": ["{{base_url}}"], "path": ["report","transaction","fund"] }
          }
        },
        {
          "name": "Pricing",
          "request": {
            "method": "GET",
            "header": [
              { "key": "Client-Id",  "value": "{{client_id}}" },
              { "key": "Secret-Key", "value": "{{secret_key}}" }
            ],
            "url": { "raw": "{{base_url}}/report/transaction/pricing", "host": ["{{base_url}}"], "path": ["report","transaction","pricing"] }
          }
        }
      ]
    }
  ]
}
