{
  "info": {
    "name": "WA2Notify Customer API",
    "_postman_id": "e2e94f87-ea9a-4f18-9d09-0fe5be9f4b92",
    "description": "WA2Notify public customer API collection. Covers only customer-facing operations: messages, campaigns, contact lists, templates, webhooks and secure message assets.",
    "schema": "https://schema.getpostman.com/json/collection/v2.1.0/collection.json"
  },
  "variable": [
    { "key": "base_url", "value": "https://api.wa2notify.com" },
    { "key": "api_key", "value": "" },
    { "key": "jwt_token", "value": "" },
    { "key": "device_id", "value": "" },
    { "key": "template_id", "value": "" },
    { "key": "contact_list_id", "value": "" },
    { "key": "asset_id", "value": "" },
    { "key": "message_id", "value": "" },
    { "key": "batch_id", "value": "" },
    { "key": "group_id", "value": "" },
    { "key": "webhook_id", "value": "" },
    { "key": "delivery_id", "value": "" }
  ],
  "item": [
    {
      "name": "Messages",
      "item": [
        {
          "name": "Upload Message Asset",
          "request": {
            "method": "POST",
            "header": [
              { "key": "X-API-Key", "value": "{{api_key}}" }
            ],
            "body": {
              "mode": "formdata",
              "formdata": [
                { "key": "file", "type": "file", "src": "" }
              ]
            },
            "url": { "raw": "{{base_url}}/v1/message-assets" },
            "description": "Secure asset upload. Pro supports image/document, Growth supports video as well."
          }
        },
        {
          "name": "Get Message Asset",
          "request": {
            "method": "GET",
            "header": [
              { "key": "X-API-Key", "value": "{{api_key}}" }
            ],
            "url": { "raw": "{{base_url}}/v1/message-assets/{{asset_id}}" }
          }
        },
        {
          "name": "Delete Message Asset",
          "request": {
            "method": "DELETE",
            "header": [
              { "key": "X-API-Key", "value": "{{api_key}}" }
            ],
            "url": { "raw": "{{base_url}}/v1/message-assets/{{asset_id}}" }
          }
        },
        {
          "name": "Send Message",
          "request": {
            "method": "POST",
            "header": [
              { "key": "X-API-Key", "value": "{{api_key}}" },
              { "key": "Content-Type", "value": "application/json" },
              { "key": "Idempotency-Key", "value": "{{$guid}}", "description": "Optional: safe retry within 24h; reuse the same key to avoid duplicate sends." }
            ],
            "body": {
              "mode": "raw",
              "raw": "{\n  \"device_id\": \"{{device_id}}\",\n  \"to\": [\"+905551112233\"],\n  \"text\": \"Merhaba {{ad}}\",\n  \"asset_id\": \"{{asset_id}}\",\n  \"variables\": {\n    \"ad\": \"Ayşe\"\n  }\n}"
            },
            "url": { "raw": "{{base_url}}/v1/messages/send" }
          }
        },
        {
          "name": "Send OTP",
          "request": {
            "method": "POST",
            "header": [
              { "key": "X-API-Key", "value": "{{api_key}}" },
              { "key": "Content-Type", "value": "application/json" }
            ],
            "body": {
              "mode": "raw",
              "raw": "{\n  \"device_id\": \"{{device_id}}\",\n  \"phone\": \"+905551112233\",\n  \"code\": \"482951\",\n  \"ttl\": 10\n}"
            },
            "url": { "raw": "{{base_url}}/v1/messages/otp" }
          }
        },
        {
          "name": "List Messages",
          "request": {
            "method": "GET",
            "header": [
              { "key": "X-API-Key", "value": "{{api_key}}" }
            ],
            "url": { "raw": "{{base_url}}/v1/messages?status=all&page=1&limit=20" }
          }
        },
        {
          "name": "Get Message",
          "request": {
            "method": "GET",
            "header": [
              { "key": "X-API-Key", "value": "{{api_key}}" }
            ],
            "url": { "raw": "{{base_url}}/v1/messages/{{message_id}}" }
          }
        },
        {
          "name": "Get Message Details",
          "request": {
            "method": "GET",
            "header": [
              { "key": "X-API-Key", "value": "{{api_key}}" }
            ],
            "url": { "raw": "{{base_url}}/v1/messages/{{message_id}}/details" }
          }
        },
        {
          "name": "Resend Message",
          "request": {
            "method": "POST",
            "header": [
              { "key": "X-API-Key", "value": "{{api_key}}" }
            ],
            "url": { "raw": "{{base_url}}/v1/messages/{{message_id}}/resend" }
          }
        },
        {
          "name": "Schedule Message",
          "request": {
            "method": "POST",
            "header": [
              { "key": "X-API-Key", "value": "{{api_key}}" },
              { "key": "Content-Type", "value": "application/json" }
            ],
            "body": {
              "mode": "raw",
              "raw": "{\n  \"device_id\": \"{{device_id}}\",\n  \"to\": [\"+905551112233\"],\n  \"text\": \"Yarın görüşmek üzere.\",\n  \"scheduled_at\": \"2026-04-12T09:00:00Z\"\n}"
            },
            "url": { "raw": "{{base_url}}/v1/messages/schedule" }
          }
        },
        {
          "name": "List Scheduled Messages",
          "request": {
            "method": "GET",
            "header": [
              { "key": "X-API-Key", "value": "{{api_key}}" }
            ],
            "url": { "raw": "{{base_url}}/v1/messages/scheduled?status=pending" }
          }
        },
        {
          "name": "Cancel Message",
          "request": {
            "method": "POST",
            "header": [
              { "key": "X-API-Key", "value": "{{api_key}}" }
            ],
            "url": { "raw": "{{base_url}}/v1/messages/{{message_id}}/cancel" }
          }
        }
      ]
    },
    {
      "name": "Campaigns",
      "item": [
        {
          "name": "Create Bulk Campaign",
          "request": {
            "method": "POST",
            "header": [
              { "key": "X-API-Key", "value": "{{api_key}}" },
              { "key": "Content-Type", "value": "application/json" }
            ],
            "body": {
              "mode": "raw",
              "raw": "{\n  \"device_id\": \"{{device_id}}\",\n  \"name\": \"Nisan Kampanyası\",\n  \"contact_list_id\": \"{{contact_list_id}}\",\n  \"template_id\": \"{{template_id}}\",\n  \"asset_id\": \"{{asset_id}}\",\n  \"default_message\": \"Merhaba {{ad}}, kampanyanız hazır.\"\n}"
            },
            "url": { "raw": "{{base_url}}/v1/messages/bulk" }
          }
        },
        {
          "name": "List Campaigns",
          "request": {
            "method": "GET",
            "header": [
              { "key": "X-API-Key", "value": "{{api_key}}" }
            ],
            "url": { "raw": "{{base_url}}/v1/messages/bulk" }
          }
        },
        {
          "name": "Get Campaign",
          "request": {
            "method": "GET",
            "header": [
              { "key": "X-API-Key", "value": "{{api_key}}" }
            ],
            "url": { "raw": "{{base_url}}/v1/messages/bulk/{{batch_id}}" }
          }
        },
        {
          "name": "Get Campaign Stats",
          "request": {
            "method": "GET",
            "header": [
              { "key": "X-API-Key", "value": "{{api_key}}" }
            ],
            "url": { "raw": "{{base_url}}/v1/messages/bulk/{{batch_id}}/stats" }
          }
        },
        {
          "name": "Cancel Campaign",
          "request": {
            "method": "POST",
            "header": [
              { "key": "X-API-Key", "value": "{{api_key}}" }
            ],
            "url": { "raw": "{{base_url}}/v1/messages/bulk/{{batch_id}}/cancel" }
          }
        },
        {
          "name": "Schedule Bulk Campaign",
          "request": {
            "method": "POST",
            "header": [
              { "key": "X-API-Key", "value": "{{api_key}}" },
              { "key": "Content-Type", "value": "application/json" }
            ],
            "body": {
              "mode": "raw",
              "raw": "{\n  \"device_id\": \"{{device_id}}\",\n  \"group_name\": \"Bayram Kampanyası\",\n  \"recipients\": [\"+905551112233\", \"+4915112345678\"],\n  \"text\": \"Bayram fırsatlarımız hazır.\",\n  \"asset_id\": \"{{asset_id}}\",\n  \"scheduled_at\": \"2026-04-12T09:00:00Z\"\n}"
            },
            "url": { "raw": "{{base_url}}/v1/messages/schedule/bulk" }
          }
        },
        {
          "name": "Get Scheduled Group",
          "request": {
            "method": "GET",
            "header": [
              { "key": "X-API-Key", "value": "{{api_key}}" }
            ],
            "url": { "raw": "{{base_url}}/v1/messages/scheduled/group/{{group_id}}" }
          }
        },
        {
          "name": "Cancel Scheduled Group",
          "request": {
            "method": "DELETE",
            "header": [
              { "key": "X-API-Key", "value": "{{api_key}}" }
            ],
            "url": { "raw": "{{base_url}}/v1/messages/scheduled/group/{{group_id}}" }
          }
        },
        {
          "name": "Cancel Scheduled Group Selective",
          "request": {
            "method": "POST",
            "header": [
              { "key": "X-API-Key", "value": "{{api_key}}" },
              { "key": "Content-Type", "value": "application/json" }
            ],
            "body": {
              "mode": "raw",
              "raw": "{\n  \"group_id\": \"{{group_id}}\",\n  \"message_ids\": [\"{{message_id}}\"]\n}"
            },
            "url": { "raw": "{{base_url}}/v1/messages/scheduled/group/cancel-selective" }
          }
        }
      ]
    },
    {
      "name": "Contact Lists",
      "item": [
        {
          "name": "Create Contact List",
          "request": {
            "method": "POST",
            "header": [
              { "key": "X-API-Key", "value": "{{api_key}}" },
              { "key": "Content-Type", "value": "application/json" }
            ],
            "body": {
              "mode": "raw",
              "raw": "{\n  \"name\": \"Ankara Musterileri\",\n  \"description\": \"Nisan bulteni alici listesi\",\n  \"source\": \"manual\",\n  \"contacts\": [\n    {\n      \"phone\": \"+905551112233\",\n      \"name\": \"Ayşe\",\n      \"variables\": {\n        \"ad\": \"Ayşe\",\n        \"sehir\": \"Ankara\"\n      }\n    }\n  ]\n}"
            },
            "url": { "raw": "{{base_url}}/v1/contact-lists" }
          }
        },
        {
          "name": "Import Contact List",
          "request": {
            "method": "POST",
            "header": [
              { "key": "X-API-Key", "value": "{{api_key}}" }
            ],
            "body": {
              "mode": "formdata",
              "formdata": [
                { "key": "name", "value": "Ankara Musterileri", "type": "text" },
                { "key": "description", "value": "CRM exportu", "type": "text" },
                { "key": "file", "type": "file", "src": "" }
              ]
            },
            "url": { "raw": "{{base_url}}/v1/contact-lists/import" }
          }
        },
        {
          "name": "List Contact Lists",
          "request": {
            "method": "GET",
            "header": [
              { "key": "X-API-Key", "value": "{{api_key}}" }
            ],
            "url": { "raw": "{{base_url}}/v1/contact-lists" }
          }
        },
        {
          "name": "Get Contact List",
          "request": {
            "method": "GET",
            "header": [
              { "key": "X-API-Key", "value": "{{api_key}}" }
            ],
            "url": { "raw": "{{base_url}}/v1/contact-lists/{{contact_list_id}}" }
          }
        },
        {
          "name": "Delete Contact List",
          "request": {
            "method": "DELETE",
            "header": [
              { "key": "X-API-Key", "value": "{{api_key}}" }
            ],
            "url": { "raw": "{{base_url}}/v1/contact-lists/{{contact_list_id}}" }
          }
        }
      ]
    },
    {
      "name": "Templates",
      "item": [
        {
          "name": "Create Template",
          "request": {
            "method": "POST",
            "header": [
              { "key": "X-API-Key", "value": "{{api_key}}" },
              { "key": "Content-Type", "value": "application/json" }
            ],
            "body": {
              "mode": "raw",
              "raw": "{\n  \"name\": \"Sipariş Hazır\",\n  \"category\": \"bildirim\",\n  \"language\": \"tr\",\n  \"content\": \"Merhaba {{ad}}, siparişiniz hazır.\",\n  \"content_type\": \"text\"\n}"
            },
            "url": { "raw": "{{base_url}}/v1/templates" }
          }
        },
        {
          "name": "List Templates",
          "request": {
            "method": "GET",
            "header": [
              { "key": "X-API-Key", "value": "{{api_key}}" }
            ],
            "url": { "raw": "{{base_url}}/v1/templates" }
          }
        },
        {
          "name": "Get Template",
          "request": {
            "method": "GET",
            "header": [
              { "key": "X-API-Key", "value": "{{api_key}}" }
            ],
            "url": { "raw": "{{base_url}}/v1/templates/{{template_id}}" }
          }
        },
        {
          "name": "Update Template",
          "request": {
            "method": "PUT",
            "header": [
              { "key": "X-API-Key", "value": "{{api_key}}" },
              { "key": "Content-Type", "value": "application/json" }
            ],
            "body": {
              "mode": "raw",
              "raw": "{\n  \"content\": \"Merhaba {{ad}}, siparişiniz mağazada hazır.\",\n  \"is_active\": true\n}"
            },
            "url": { "raw": "{{base_url}}/v1/templates/{{template_id}}" }
          }
        },
        {
          "name": "Delete Template",
          "request": {
            "method": "DELETE",
            "header": [
              { "key": "X-API-Key", "value": "{{api_key}}" }
            ],
            "url": { "raw": "{{base_url}}/v1/templates/{{template_id}}" }
          }
        }
      ]
    },
    {
      "name": "Webhooks",
      "item": [
        {
          "name": "Create Webhook",
          "request": {
            "method": "POST",
            "header": [
              { "key": "X-API-Key", "value": "{{api_key}}" },
              { "key": "Content-Type", "value": "application/json" }
            ],
            "body": {
              "mode": "raw",
              "raw": "{\n  \"url\": \"https://erp.ornek.com/hooks/wa2notify\",\n  \"events\": [\"message.delivered\", \"message.read\", \"message.failed\"]\n}"
            },
            "url": { "raw": "{{base_url}}/v1/webhooks" },
            "description": "The response returns a one-time `secret`; store it to verify the X-WA2Notify-Signature header on incoming deliveries. Valid events: message.sent, message.delivered, message.read, message.failed, message.received, device.connected, device.disconnected, device.status, subscription.renewed, subscription.cancelled."
          }
        },
        {
          "name": "List Webhooks",
          "request": {
            "method": "GET",
            "header": [
              { "key": "X-API-Key", "value": "{{api_key}}" }
            ],
            "url": { "raw": "{{base_url}}/v1/webhooks" }
          }
        },
        {
          "name": "List Webhook Deliveries",
          "request": {
            "method": "GET",
            "header": [
              { "key": "X-API-Key", "value": "{{api_key}}" }
            ],
            "url": {
              "raw": "{{base_url}}/v1/webhooks/deliveries?status=failed&limit=20",
              "host": ["{{base_url}}"],
              "path": ["v1", "webhooks", "deliveries"],
              "query": [
                { "key": "status", "value": "failed" },
                { "key": "limit", "value": "20" }
              ]
            },
            "description": "Lists delivery attempts. Filter with status/limit/offset query params."
          }
        },
        {
          "name": "Replay Webhook Delivery",
          "request": {
            "method": "POST",
            "header": [
              { "key": "X-API-Key", "value": "{{api_key}}" }
            ],
            "url": { "raw": "{{base_url}}/v1/webhooks/deliveries/{{delivery_id}}/replay" },
            "description": "Requeues a failed delivery for another attempt."
          }
        },
        {
          "name": "Delete Webhook",
          "request": {
            "method": "DELETE",
            "header": [
              { "key": "X-API-Key", "value": "{{api_key}}" }
            ],
            "url": { "raw": "{{base_url}}/v1/webhooks/{{webhook_id}}" }
          }
        }
      ]
    }
  ]
}
