{
  "info": {
    "name": "TelcoMW API",
    "description": "The calls of the TelcoMW API. Put your API key in the api_key variable of the collection (Variables tab). Documentation: https://telcomw.com/docx",
    "schema": "https://schema.getpostman.com/json/collection/v2.1.0/collection.json"
  },
  "variable": [
    {
      "key": "api_key",
      "value": "YOUR_API_KEY",
      "type": "string"
    }
  ],
  "item": [
    {
      "name": "SMS V3 APIs",
      "description": "The new generation of our SMS API. Send single, broadcast and personalised messages with just your API key, and follow delivery.",
      "item": [
        {
          "name": "Send a Single SMS",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "X-API-Key",
                "value": "{{api_key}}",
                "type": "text"
              },
              {
                "key": "Idempotency-Key",
                "value": "order-1042-confirmation",
                "type": "text"
              },
              {
                "key": "Content-Type",
                "value": "application/json",
                "type": "text"
              }
            ],
            "url": {
              "raw": "https://telcomw.com/api/v3/sms/send",
              "protocol": "https",
              "host": [
                "telcomw",
                "com"
              ],
              "path": [
                "api",
                "v3",
                "sms",
                "send"
              ]
            },
            "description": "Send one message to one phone number.\n\nSend a JSON body with the header Content-Type: application/json. Your API key goes in the X-API-Key header.\n\n**Parameters**\n\n- `X-API-Key` (required): Your API key, sent as a header. You can also send it as Authorization: Bearer YOUR_API_KEY.\n- `Idempotency-Key` (optional): A unique value you make for this request (8 to 64 letters, digits, dots, dashes or underscores). If you send the same request again with the same key, for example after a timeout, you get the first answer back and are not charged twice. Keys are kept for 24 hours.\n- `to` (required): The phone number, for example 0999123456, 265999123456 or +265999123456.\n- `message` (required): The text of the message.\n- `sender_id` (required): The sender ID the message shows as, for example WGIT. It must be approved on your account, see Sender IDs.\n- `scheduled_at` (optional): Send later: a date and time with its time zone, like 2026-11-05T14:30:00+02:00. It cannot be in the past or more than a year ahead. Leave it out to send now.\n\n**Notes**\n\n- The message is queued for delivery, so the answer says pending. Read the delivery status with Message Status or Delivery Reports.\n- The cost is taken from your balance when the message is queued.",
            "body": {
              "mode": "raw",
              "raw": "{\n  \"to\": \"0999123456\",\n  \"message\": \"Your order 1042 is ready for pickup.\",\n  \"sender_id\": \"WGIT\"\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            }
          },
          "response": [
            {
              "name": "Accepted (202)",
              "originalRequest": {
                "method": "POST",
                "header": [
                  {
                    "key": "X-API-Key",
                    "value": "{{api_key}}",
                    "type": "text"
                  },
                  {
                    "key": "Idempotency-Key",
                    "value": "order-1042-confirmation",
                    "type": "text"
                  },
                  {
                    "key": "Content-Type",
                    "value": "application/json",
                    "type": "text"
                  }
                ],
                "url": {
                  "raw": "https://telcomw.com/api/v3/sms/send",
                  "protocol": "https",
                  "host": [
                    "telcomw",
                    "com"
                  ],
                  "path": [
                    "api",
                    "v3",
                    "sms",
                    "send"
                  ]
                },
                "description": "Send one message to one phone number.\n\nSend a JSON body with the header Content-Type: application/json. Your API key goes in the X-API-Key header.\n\n**Parameters**\n\n- `X-API-Key` (required): Your API key, sent as a header. You can also send it as Authorization: Bearer YOUR_API_KEY.\n- `Idempotency-Key` (optional): A unique value you make for this request (8 to 64 letters, digits, dots, dashes or underscores). If you send the same request again with the same key, for example after a timeout, you get the first answer back and are not charged twice. Keys are kept for 24 hours.\n- `to` (required): The phone number, for example 0999123456, 265999123456 or +265999123456.\n- `message` (required): The text of the message.\n- `sender_id` (required): The sender ID the message shows as, for example WGIT. It must be approved on your account, see Sender IDs.\n- `scheduled_at` (optional): Send later: a date and time with its time zone, like 2026-11-05T14:30:00+02:00. It cannot be in the past or more than a year ahead. Leave it out to send now.\n\n**Notes**\n\n- The message is queued for delivery, so the answer says pending. Read the delivery status with Message Status or Delivery Reports.\n- The cost is taken from your balance when the message is queued.",
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"to\": \"0999123456\",\n  \"message\": \"Your order 1042 is ready for pickup.\",\n  \"sender_id\": \"WGIT\"\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "status": "OK",
              "code": 202,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"success\": true,\n  \"request_id\": \"req_5f2c9a1d0e7b4a63\",\n  \"data\": {\n    \"batch_id\": \"k3m9x2p7q1ab\",\n    \"status\": \"pending\",\n    \"sender_id\": \"WGIT\",\n    \"recipients\": 1,\n    \"pages\": 1,\n    \"cost\": 20,\n    \"balance\": 980,\n    \"currency\": \"MWK\",\n    \"scheduled_at\": null,\n    \"message_id\": \"ke4wz6fydbtj\",\n    \"to\": \"265999123456\"\n  }\n}"
            },
            {
              "name": "Not enough balance (402)",
              "originalRequest": {
                "method": "POST",
                "header": [
                  {
                    "key": "X-API-Key",
                    "value": "{{api_key}}",
                    "type": "text"
                  },
                  {
                    "key": "Idempotency-Key",
                    "value": "order-1042-confirmation",
                    "type": "text"
                  },
                  {
                    "key": "Content-Type",
                    "value": "application/json",
                    "type": "text"
                  }
                ],
                "url": {
                  "raw": "https://telcomw.com/api/v3/sms/send",
                  "protocol": "https",
                  "host": [
                    "telcomw",
                    "com"
                  ],
                  "path": [
                    "api",
                    "v3",
                    "sms",
                    "send"
                  ]
                },
                "description": "Send one message to one phone number.\n\nSend a JSON body with the header Content-Type: application/json. Your API key goes in the X-API-Key header.\n\n**Parameters**\n\n- `X-API-Key` (required): Your API key, sent as a header. You can also send it as Authorization: Bearer YOUR_API_KEY.\n- `Idempotency-Key` (optional): A unique value you make for this request (8 to 64 letters, digits, dots, dashes or underscores). If you send the same request again with the same key, for example after a timeout, you get the first answer back and are not charged twice. Keys are kept for 24 hours.\n- `to` (required): The phone number, for example 0999123456, 265999123456 or +265999123456.\n- `message` (required): The text of the message.\n- `sender_id` (required): The sender ID the message shows as, for example WGIT. It must be approved on your account, see Sender IDs.\n- `scheduled_at` (optional): Send later: a date and time with its time zone, like 2026-11-05T14:30:00+02:00. It cannot be in the past or more than a year ahead. Leave it out to send now.\n\n**Notes**\n\n- The message is queued for delivery, so the answer says pending. Read the delivery status with Message Status or Delivery Reports.\n- The cost is taken from your balance when the message is queued.",
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"to\": \"0999123456\",\n  \"message\": \"Your order 1042 is ready for pickup.\",\n  \"sender_id\": \"WGIT\"\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "status": "Error",
              "code": 402,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"success\": false,\n  \"request_id\": \"req_5f2c9a1d0e7b4a63\",\n  \"error\": {\n    \"code\": \"INSUFFICIENT_BALANCE\",\n    \"message\": \"You do not have enough balance for these messages, please top up\",\n    \"details\": {\n      \"required\": 20,\n      \"balance\": 5,\n      \"currency\": \"MWK\"\n    }\n  }\n}"
            }
          ]
        },
        {
          "name": "Broadcast the Same SMS to Many Numbers",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "X-API-Key",
                "value": "{{api_key}}",
                "type": "text"
              },
              {
                "key": "Idempotency-Key",
                "value": "newsletter-2026-11",
                "type": "text"
              },
              {
                "key": "Content-Type",
                "value": "application/json",
                "type": "text"
              }
            ],
            "url": {
              "raw": "https://telcomw.com/api/v3/sms/broadcast",
              "protocol": "https",
              "host": [
                "telcomw",
                "com"
              ],
              "path": [
                "api",
                "v3",
                "sms",
                "broadcast"
              ]
            },
            "description": "Send one message to many phone numbers in a single request. The message is written once.\n\nSend a JSON body with the header Content-Type: application/json. Your API key goes in the X-API-Key header.\n\n**Parameters**\n\n- `X-API-Key` (required): Your API key, sent as a header. You can also send it as Authorization: Bearer YOUR_API_KEY.\n- `Idempotency-Key` (optional): A unique value you make for this request (8 to 64 letters, digits, dots, dashes or underscores). If you send the same request again with the same key, for example after a timeout, you get the first answer back and are not charged twice. Keys are kept for 24 hours.\n- `to` (required): A list of phone numbers. Up to 10,000 in one request.\n- `message` (required): The text sent to every number.\n- `sender_id` (required): The sender ID the message shows as, for example WGIT. It must be approved on your account, see Sender IDs.\n- `skip_invalid` (optional): true to leave out the phone numbers that are not valid and send to the rest. By default one invalid number rejects the whole request, and nothing is sent or charged.\n- `scheduled_at` (optional): Send later: a date and time with its time zone, like 2026-11-05T14:30:00+02:00. It cannot be in the past or more than a year ahead. Leave it out to send now.\n\n**Notes**\n\n- A repeated number is sent once.\n- To send a different message to each number, use Personalised Batch SMS.",
            "body": {
              "mode": "raw",
              "raw": "{\n  \"to\": [\n    \"0999123456\",\n    \"0888123456\",\n    \"0991234567\"\n  ],\n  \"message\": \"Our sale starts today. Visit us!\",\n  \"sender_id\": \"WGIT\"\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            }
          },
          "response": [
            {
              "name": "Accepted (202)",
              "originalRequest": {
                "method": "POST",
                "header": [
                  {
                    "key": "X-API-Key",
                    "value": "{{api_key}}",
                    "type": "text"
                  },
                  {
                    "key": "Idempotency-Key",
                    "value": "newsletter-2026-11",
                    "type": "text"
                  },
                  {
                    "key": "Content-Type",
                    "value": "application/json",
                    "type": "text"
                  }
                ],
                "url": {
                  "raw": "https://telcomw.com/api/v3/sms/broadcast",
                  "protocol": "https",
                  "host": [
                    "telcomw",
                    "com"
                  ],
                  "path": [
                    "api",
                    "v3",
                    "sms",
                    "broadcast"
                  ]
                },
                "description": "Send one message to many phone numbers in a single request. The message is written once.\n\nSend a JSON body with the header Content-Type: application/json. Your API key goes in the X-API-Key header.\n\n**Parameters**\n\n- `X-API-Key` (required): Your API key, sent as a header. You can also send it as Authorization: Bearer YOUR_API_KEY.\n- `Idempotency-Key` (optional): A unique value you make for this request (8 to 64 letters, digits, dots, dashes or underscores). If you send the same request again with the same key, for example after a timeout, you get the first answer back and are not charged twice. Keys are kept for 24 hours.\n- `to` (required): A list of phone numbers. Up to 10,000 in one request.\n- `message` (required): The text sent to every number.\n- `sender_id` (required): The sender ID the message shows as, for example WGIT. It must be approved on your account, see Sender IDs.\n- `skip_invalid` (optional): true to leave out the phone numbers that are not valid and send to the rest. By default one invalid number rejects the whole request, and nothing is sent or charged.\n- `scheduled_at` (optional): Send later: a date and time with its time zone, like 2026-11-05T14:30:00+02:00. It cannot be in the past or more than a year ahead. Leave it out to send now.\n\n**Notes**\n\n- A repeated number is sent once.\n- To send a different message to each number, use Personalised Batch SMS.",
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"to\": [\n    \"0999123456\",\n    \"0888123456\",\n    \"0991234567\"\n  ],\n  \"message\": \"Our sale starts today. Visit us!\",\n  \"sender_id\": \"WGIT\"\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "status": "OK",
              "code": 202,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"success\": true,\n  \"request_id\": \"req_5f2c9a1d0e7b4a63\",\n  \"data\": {\n    \"batch_id\": \"k3m9x2p7q1ab\",\n    \"status\": \"pending\",\n    \"sender_id\": \"WGIT\",\n    \"recipients\": 3,\n    \"pages\": 3,\n    \"cost\": 60,\n    \"balance\": 920,\n    \"currency\": \"MWK\",\n    \"scheduled_at\": null,\n    \"messages\": [\n      {\n        \"message_id\": \"ke4wz6fydbtj\",\n        \"to\": \"265999123456\",\n        \"pages\": 1,\n        \"cost\": 20\n      },\n      {\n        \"message_id\": \"p8d2ncs0q3vx\",\n        \"to\": \"265888123456\",\n        \"pages\": 1,\n        \"cost\": 20\n      },\n      {\n        \"message_id\": \"z1h7lw5b9yrm\",\n        \"to\": \"265991234567\",\n        \"pages\": 1,\n        \"cost\": 20\n      }\n    ]\n  }\n}"
            },
            {
              "name": "A number is not valid (400)",
              "originalRequest": {
                "method": "POST",
                "header": [
                  {
                    "key": "X-API-Key",
                    "value": "{{api_key}}",
                    "type": "text"
                  },
                  {
                    "key": "Idempotency-Key",
                    "value": "newsletter-2026-11",
                    "type": "text"
                  },
                  {
                    "key": "Content-Type",
                    "value": "application/json",
                    "type": "text"
                  }
                ],
                "url": {
                  "raw": "https://telcomw.com/api/v3/sms/broadcast",
                  "protocol": "https",
                  "host": [
                    "telcomw",
                    "com"
                  ],
                  "path": [
                    "api",
                    "v3",
                    "sms",
                    "broadcast"
                  ]
                },
                "description": "Send one message to many phone numbers in a single request. The message is written once.\n\nSend a JSON body with the header Content-Type: application/json. Your API key goes in the X-API-Key header.\n\n**Parameters**\n\n- `X-API-Key` (required): Your API key, sent as a header. You can also send it as Authorization: Bearer YOUR_API_KEY.\n- `Idempotency-Key` (optional): A unique value you make for this request (8 to 64 letters, digits, dots, dashes or underscores). If you send the same request again with the same key, for example after a timeout, you get the first answer back and are not charged twice. Keys are kept for 24 hours.\n- `to` (required): A list of phone numbers. Up to 10,000 in one request.\n- `message` (required): The text sent to every number.\n- `sender_id` (required): The sender ID the message shows as, for example WGIT. It must be approved on your account, see Sender IDs.\n- `skip_invalid` (optional): true to leave out the phone numbers that are not valid and send to the rest. By default one invalid number rejects the whole request, and nothing is sent or charged.\n- `scheduled_at` (optional): Send later: a date and time with its time zone, like 2026-11-05T14:30:00+02:00. It cannot be in the past or more than a year ahead. Leave it out to send now.\n\n**Notes**\n\n- A repeated number is sent once.\n- To send a different message to each number, use Personalised Batch SMS.",
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"to\": [\n    \"0999123456\",\n    \"0888123456\",\n    \"0991234567\"\n  ],\n  \"message\": \"Our sale starts today. Visit us!\",\n  \"sender_id\": \"WGIT\"\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "status": "Error",
              "code": 400,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"success\": false,\n  \"request_id\": \"req_5f2c9a1d0e7b4a63\",\n  \"error\": {\n    \"code\": \"INVALID_PHONE_NUMBERS\",\n    \"message\": \"1 number is not valid\",\n    \"details\": {\n      \"invalid_numbers\": [\n        \"0999\"\n      ],\n      \"invalid_count\": 1\n    }\n  }\n}"
            }
          ]
        },
        {
          "name": "Send Different Messages to Different Numbers",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "X-API-Key",
                "value": "{{api_key}}",
                "type": "text"
              },
              {
                "key": "Idempotency-Key",
                "value": "otp-batch-20261105-01",
                "type": "text"
              },
              {
                "key": "Content-Type",
                "value": "application/json",
                "type": "text"
              }
            ],
            "url": {
              "raw": "https://telcomw.com/api/v3/sms/batch",
              "protocol": "https",
              "host": [
                "telcomw",
                "com"
              ],
              "path": [
                "api",
                "v3",
                "sms",
                "batch"
              ]
            },
            "description": "Send a different message to each phone number in a single request, for example a name or a code in every message.\n\nSend a JSON body with the header Content-Type: application/json. Your API key goes in the X-API-Key header.\n\n**Parameters**\n\n- `X-API-Key` (required): Your API key, sent as a header. You can also send it as Authorization: Bearer YOUR_API_KEY.\n- `Idempotency-Key` (optional): A unique value you make for this request (8 to 64 letters, digits, dots, dashes or underscores). If you send the same request again with the same key, for example after a timeout, you get the first answer back and are not charged twice. Keys are kept for 24 hours.\n- `messages` (required): A list of { \"to\", \"message\" }. Up to 10,000 in one request.\n- `messages[].to` (required): The phone number of this message.\n- `messages[].message` (required): The text of this message.\n- `sender_id` (required): The sender ID the message shows as, for example WGIT. It must be approved on your account, see Sender IDs.\n- `skip_invalid` (optional): true to leave out the phone numbers that are not valid and send to the rest. By default one invalid number rejects the whole request, and nothing is sent or charged.\n- `scheduled_at` (optional): Send later: a date and time with its time zone, like 2026-11-05T14:30:00+02:00. It cannot be in the past or more than a year ahead. Leave it out to send now.\n\n**Notes**\n\n- The price of each message depends on its length and its network, so the cost of a batch is the sum of its messages.\n- The same number with the same text is sent once.",
            "body": {
              "mode": "raw",
              "raw": "{\n  \"sender_id\": \"WGIT\",\n  \"messages\": [\n    {\n      \"to\": \"0999123456\",\n      \"message\": \"Hi Mary, your code is 4821\"\n    },\n    {\n      \"to\": \"0888123456\",\n      \"message\": \"Hi John, your code is 7305\"\n    }\n  ]\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            }
          },
          "response": [
            {
              "name": "Accepted (202)",
              "originalRequest": {
                "method": "POST",
                "header": [
                  {
                    "key": "X-API-Key",
                    "value": "{{api_key}}",
                    "type": "text"
                  },
                  {
                    "key": "Idempotency-Key",
                    "value": "otp-batch-20261105-01",
                    "type": "text"
                  },
                  {
                    "key": "Content-Type",
                    "value": "application/json",
                    "type": "text"
                  }
                ],
                "url": {
                  "raw": "https://telcomw.com/api/v3/sms/batch",
                  "protocol": "https",
                  "host": [
                    "telcomw",
                    "com"
                  ],
                  "path": [
                    "api",
                    "v3",
                    "sms",
                    "batch"
                  ]
                },
                "description": "Send a different message to each phone number in a single request, for example a name or a code in every message.\n\nSend a JSON body with the header Content-Type: application/json. Your API key goes in the X-API-Key header.\n\n**Parameters**\n\n- `X-API-Key` (required): Your API key, sent as a header. You can also send it as Authorization: Bearer YOUR_API_KEY.\n- `Idempotency-Key` (optional): A unique value you make for this request (8 to 64 letters, digits, dots, dashes or underscores). If you send the same request again with the same key, for example after a timeout, you get the first answer back and are not charged twice. Keys are kept for 24 hours.\n- `messages` (required): A list of { \"to\", \"message\" }. Up to 10,000 in one request.\n- `messages[].to` (required): The phone number of this message.\n- `messages[].message` (required): The text of this message.\n- `sender_id` (required): The sender ID the message shows as, for example WGIT. It must be approved on your account, see Sender IDs.\n- `skip_invalid` (optional): true to leave out the phone numbers that are not valid and send to the rest. By default one invalid number rejects the whole request, and nothing is sent or charged.\n- `scheduled_at` (optional): Send later: a date and time with its time zone, like 2026-11-05T14:30:00+02:00. It cannot be in the past or more than a year ahead. Leave it out to send now.\n\n**Notes**\n\n- The price of each message depends on its length and its network, so the cost of a batch is the sum of its messages.\n- The same number with the same text is sent once.",
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"sender_id\": \"WGIT\",\n  \"messages\": [\n    {\n      \"to\": \"0999123456\",\n      \"message\": \"Hi Mary, your code is 4821\"\n    },\n    {\n      \"to\": \"0888123456\",\n      \"message\": \"Hi John, your code is 7305\"\n    }\n  ]\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "status": "OK",
              "code": 202,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"success\": true,\n  \"request_id\": \"req_5f2c9a1d0e7b4a63\",\n  \"data\": {\n    \"batch_id\": \"k3m9x2p7q1ab\",\n    \"status\": \"pending\",\n    \"sender_id\": \"WGIT\",\n    \"recipients\": 2,\n    \"pages\": 2,\n    \"cost\": 40,\n    \"balance\": 940,\n    \"currency\": \"MWK\",\n    \"scheduled_at\": null,\n    \"messages\": [\n      {\n        \"message_id\": \"ke4wz6fydbtj\",\n        \"to\": \"265999123456\",\n        \"pages\": 1,\n        \"cost\": 20\n      },\n      {\n        \"message_id\": \"p8d2ncs0q3vx\",\n        \"to\": \"265888123456\",\n        \"pages\": 1,\n        \"cost\": 20\n      }\n    ]\n  }\n}"
            }
          ]
        },
        {
          "name": "Delivery Reports",
          "request": {
            "method": "GET",
            "header": [
              {
                "key": "X-API-Key",
                "value": "{{api_key}}",
                "type": "text"
              }
            ],
            "url": {
              "raw": "https://telcomw.com/api/v3/sms/delivery-reports?batch_id=k3m9x2p7q1ab&status=delivered&page=1&per_page=50",
              "protocol": "https",
              "host": [
                "telcomw",
                "com"
              ],
              "path": [
                "api",
                "v3",
                "sms",
                "delivery-reports"
              ],
              "query": [
                {
                  "key": "batch_id",
                  "value": "k3m9x2p7q1ab"
                },
                {
                  "key": "status",
                  "value": "delivered"
                },
                {
                  "key": "page",
                  "value": "1"
                },
                {
                  "key": "per_page",
                  "value": "50"
                }
              ]
            },
            "description": "List your messages and whether they were delivered. Filter by batch, status, period or number.\n\nSend the filters in the URL (query parameters). Your API key goes in the X-API-Key header.\n\n**Parameters**\n\n- `X-API-Key` (required): Your API key, sent as a header. You can also send it as Authorization: Bearer YOUR_API_KEY.\n- `batch_id` (optional): Only the messages of one send. Without it the report covers the last 7 days.\n- `status` (optional): pending, delivered or failed.\n- `from` (optional): The first day, like 2026-11-01.\n- `to` (optional): The last day, like 2026-11-05. The period can be one year at most.\n- `to_number` (optional): A phone number, or the start of one.\n- `sender_id` (optional): Only the messages sent as this sender ID.\n- `order` (optional): desc (newest first, the default) or asc.\n- `page` (optional): The page number, starting at 1.\n- `per_page` (optional): Messages in a page, 1 to 100. The default is 50.\n\n**Notes**\n\n- A message stays pending until the network reports it. Check again a little later.\n- Only your own messages are listed."
          },
          "response": [
            {
              "name": "Response (200)",
              "originalRequest": {
                "method": "GET",
                "header": [
                  {
                    "key": "X-API-Key",
                    "value": "{{api_key}}",
                    "type": "text"
                  }
                ],
                "url": {
                  "raw": "https://telcomw.com/api/v3/sms/delivery-reports?batch_id=k3m9x2p7q1ab&status=delivered&page=1&per_page=50",
                  "protocol": "https",
                  "host": [
                    "telcomw",
                    "com"
                  ],
                  "path": [
                    "api",
                    "v3",
                    "sms",
                    "delivery-reports"
                  ],
                  "query": [
                    {
                      "key": "batch_id",
                      "value": "k3m9x2p7q1ab"
                    },
                    {
                      "key": "status",
                      "value": "delivered"
                    },
                    {
                      "key": "page",
                      "value": "1"
                    },
                    {
                      "key": "per_page",
                      "value": "50"
                    }
                  ]
                },
                "description": "List your messages and whether they were delivered. Filter by batch, status, period or number.\n\nSend the filters in the URL (query parameters). Your API key goes in the X-API-Key header.\n\n**Parameters**\n\n- `X-API-Key` (required): Your API key, sent as a header. You can also send it as Authorization: Bearer YOUR_API_KEY.\n- `batch_id` (optional): Only the messages of one send. Without it the report covers the last 7 days.\n- `status` (optional): pending, delivered or failed.\n- `from` (optional): The first day, like 2026-11-01.\n- `to` (optional): The last day, like 2026-11-05. The period can be one year at most.\n- `to_number` (optional): A phone number, or the start of one.\n- `sender_id` (optional): Only the messages sent as this sender ID.\n- `order` (optional): desc (newest first, the default) or asc.\n- `page` (optional): The page number, starting at 1.\n- `per_page` (optional): Messages in a page, 1 to 100. The default is 50.\n\n**Notes**\n\n- A message stays pending until the network reports it. Check again a little later.\n- Only your own messages are listed."
              },
              "status": "OK",
              "code": 200,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"success\": true,\n  \"request_id\": \"req_5f2c9a1d0e7b4a63\",\n  \"data\": {\n    \"summary\": {\n      \"total\": 3,\n      \"pending\": 1,\n      \"delivered\": 2,\n      \"failed\": 0\n    },\n    \"messages\": [\n      {\n        \"message_id\": \"ke4wz6fydbtj\",\n        \"batch_id\": \"k3m9x2p7q1ab\",\n        \"to\": \"265999123456\",\n        \"sender_id\": \"WGIT\",\n        \"message\": \"Our sale starts today. Visit us!\",\n        \"status\": \"delivered\",\n        \"sent_at\": \"2026-11-02T08:15:02.000Z\",\n        \"delivered_at\": \"2026-11-02T08:15:09.000Z\"\n      }\n    ],\n    \"pagination\": {\n      \"page\": 1,\n      \"per_page\": 50,\n      \"total\": 2,\n      \"pages\": 1\n    },\n    \"period\": null\n  }\n}"
            }
          ]
        },
        {
          "name": "Message Status",
          "request": {
            "method": "GET",
            "header": [
              {
                "key": "X-API-Key",
                "value": "{{api_key}}",
                "type": "text"
              }
            ],
            "url": {
              "raw": "https://telcomw.com/api/v3/sms/ke4wz6fydbtj",
              "protocol": "https",
              "host": [
                "telcomw",
                "com"
              ],
              "path": [
                "api",
                "v3",
                "sms",
                "ke4wz6fydbtj"
              ]
            },
            "description": "The delivery status of one message, by the message_id you got when you sent it.\n\nPut the message_id in the URL. Your API key goes in the X-API-Key header.\n\n**Parameters**\n\n- `X-API-Key` (required): Your API key, sent as a header. You can also send it as Authorization: Bearer YOUR_API_KEY.\n- `message_id` (required): The id of the message, from the send response or from Delivery Reports."
          },
          "response": [
            {
              "name": "Response (200)",
              "originalRequest": {
                "method": "GET",
                "header": [
                  {
                    "key": "X-API-Key",
                    "value": "{{api_key}}",
                    "type": "text"
                  }
                ],
                "url": {
                  "raw": "https://telcomw.com/api/v3/sms/ke4wz6fydbtj",
                  "protocol": "https",
                  "host": [
                    "telcomw",
                    "com"
                  ],
                  "path": [
                    "api",
                    "v3",
                    "sms",
                    "ke4wz6fydbtj"
                  ]
                },
                "description": "The delivery status of one message, by the message_id you got when you sent it.\n\nPut the message_id in the URL. Your API key goes in the X-API-Key header.\n\n**Parameters**\n\n- `X-API-Key` (required): Your API key, sent as a header. You can also send it as Authorization: Bearer YOUR_API_KEY.\n- `message_id` (required): The id of the message, from the send response or from Delivery Reports."
              },
              "status": "OK",
              "code": 200,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"success\": true,\n  \"request_id\": \"req_5f2c9a1d0e7b4a63\",\n  \"data\": {\n    \"message_id\": \"ke4wz6fydbtj\",\n    \"batch_id\": \"k3m9x2p7q1ab\",\n    \"to\": \"265999123456\",\n    \"sender_id\": \"WGIT\",\n    \"message\": \"Our sale starts today. Visit us!\",\n    \"status\": \"delivered\",\n    \"sent_at\": \"2026-11-02T08:15:02.000Z\",\n    \"delivered_at\": \"2026-11-02T08:15:09.000Z\"\n  }\n}"
            },
            {
              "name": "No such message (404)",
              "originalRequest": {
                "method": "GET",
                "header": [
                  {
                    "key": "X-API-Key",
                    "value": "{{api_key}}",
                    "type": "text"
                  }
                ],
                "url": {
                  "raw": "https://telcomw.com/api/v3/sms/ke4wz6fydbtj",
                  "protocol": "https",
                  "host": [
                    "telcomw",
                    "com"
                  ],
                  "path": [
                    "api",
                    "v3",
                    "sms",
                    "ke4wz6fydbtj"
                  ]
                },
                "description": "The delivery status of one message, by the message_id you got when you sent it.\n\nPut the message_id in the URL. Your API key goes in the X-API-Key header.\n\n**Parameters**\n\n- `X-API-Key` (required): Your API key, sent as a header. You can also send it as Authorization: Bearer YOUR_API_KEY.\n- `message_id` (required): The id of the message, from the send response or from Delivery Reports."
              },
              "status": "Error",
              "code": 404,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"success\": false,\n  \"request_id\": \"req_5f2c9a1d0e7b4a63\",\n  \"error\": {\n    \"code\": \"MESSAGE_NOT_FOUND\",\n    \"message\": \"No message with this id on your account.\"\n  }\n}"
            }
          ]
        },
        {
          "name": "Account Balance",
          "request": {
            "method": "GET",
            "header": [
              {
                "key": "X-API-Key",
                "value": "{{api_key}}",
                "type": "text"
              }
            ],
            "url": {
              "raw": "https://telcomw.com/api/v3/account/balance",
              "protocol": "https",
              "host": [
                "telcomw",
                "com"
              ],
              "path": [
                "api",
                "v3",
                "account",
                "balance"
              ]
            },
            "description": "Your SMS balance, to check before a large send.\n\nYour API key goes in the X-API-Key header. There are no parameters.\n\n**Parameters**\n\n- `X-API-Key` (required): Your API key, sent as a header. You can also send it as Authorization: Bearer YOUR_API_KEY."
          },
          "response": [
            {
              "name": "Response (200)",
              "originalRequest": {
                "method": "GET",
                "header": [
                  {
                    "key": "X-API-Key",
                    "value": "{{api_key}}",
                    "type": "text"
                  }
                ],
                "url": {
                  "raw": "https://telcomw.com/api/v3/account/balance",
                  "protocol": "https",
                  "host": [
                    "telcomw",
                    "com"
                  ],
                  "path": [
                    "api",
                    "v3",
                    "account",
                    "balance"
                  ]
                },
                "description": "Your SMS balance, to check before a large send.\n\nYour API key goes in the X-API-Key header. There are no parameters.\n\n**Parameters**\n\n- `X-API-Key` (required): Your API key, sent as a header. You can also send it as Authorization: Bearer YOUR_API_KEY."
              },
              "status": "OK",
              "code": 200,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"success\": true,\n  \"request_id\": \"req_5f2c9a1d0e7b4a63\",\n  \"data\": {\n    \"balance\": 4250.5,\n    \"currency\": \"MWK\",\n    \"low_balance\": false,\n    \"sms_available\": true\n  }\n}"
            }
          ]
        },
        {
          "name": "Sender IDs",
          "request": {
            "method": "GET",
            "header": [
              {
                "key": "X-API-Key",
                "value": "{{api_key}}",
                "type": "text"
              }
            ],
            "url": {
              "raw": "https://telcomw.com/api/v3/sender-ids",
              "protocol": "https",
              "host": [
                "telcomw",
                "com"
              ],
              "path": [
                "api",
                "v3",
                "sender-ids"
              ]
            },
            "description": "The sender IDs you can send from. Ask for new ones in the dashboard, under Account.\n\nYour API key goes in the X-API-Key header. There are no parameters.\n\n**Parameters**\n\n- `X-API-Key` (required): Your API key, sent as a header. You can also send it as Authorization: Bearer YOUR_API_KEY."
          },
          "response": [
            {
              "name": "Response (200)",
              "originalRequest": {
                "method": "GET",
                "header": [
                  {
                    "key": "X-API-Key",
                    "value": "{{api_key}}",
                    "type": "text"
                  }
                ],
                "url": {
                  "raw": "https://telcomw.com/api/v3/sender-ids",
                  "protocol": "https",
                  "host": [
                    "telcomw",
                    "com"
                  ],
                  "path": [
                    "api",
                    "v3",
                    "sender-ids"
                  ]
                },
                "description": "The sender IDs you can send from. Ask for new ones in the dashboard, under Account.\n\nYour API key goes in the X-API-Key header. There are no parameters.\n\n**Parameters**\n\n- `X-API-Key` (required): Your API key, sent as a header. You can also send it as Authorization: Bearer YOUR_API_KEY."
              },
              "status": "OK",
              "code": 200,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"success\": true,\n  \"request_id\": \"req_5f2c9a1d0e7b4a63\",\n  \"data\": {\n    \"sender_ids\": [\n      \"WGIT\",\n      \"MYSHOP\"\n    ]\n  }\n}"
            }
          ]
        }
      ]
    },
    {
      "name": "Legacy APIs - SMS",
      "description": "The original SMS APIs. They are stable and used by existing integrations, so they keep working as they are.",
      "item": [
        {
          "name": "Send SMS",
          "request": {
            "method": "POST",
            "header": [],
            "url": {
              "raw": "https://telcomw.com/api-v2/send",
              "protocol": "https",
              "host": [
                "telcomw",
                "com"
              ],
              "path": [
                "api-v2",
                "send"
              ]
            },
            "description": "Send an SMS to one phone number, or to many numbers separated by a comma.\n\nSend the parameters as form-data.\n\n**Parameters**\n\n- `api_key` (required): Your API key.\n- `password` (required): Your account password.\n- `text` (required): The message to send.\n- `numbers` (required): The phone number to send to. Many numbers can be separated by a comma.\n- `from` (required): The sender ID, for example WGIT.",
            "body": {
              "mode": "urlencoded",
              "urlencoded": [
                {
                  "key": "api_key",
                  "value": "{{api_key}}",
                  "type": "text"
                },
                {
                  "key": "password",
                  "value": "YOUR_PASSWORD",
                  "type": "text"
                },
                {
                  "key": "text",
                  "value": "Text message",
                  "type": "text"
                },
                {
                  "key": "numbers",
                  "value": "0992026866",
                  "type": "text"
                },
                {
                  "key": "from",
                  "value": "WGIT",
                  "type": "text"
                }
              ]
            }
          },
          "response": [
            {
              "name": "Response",
              "originalRequest": {
                "method": "POST",
                "header": [],
                "url": {
                  "raw": "https://telcomw.com/api-v2/send",
                  "protocol": "https",
                  "host": [
                    "telcomw",
                    "com"
                  ],
                  "path": [
                    "api-v2",
                    "send"
                  ]
                },
                "description": "Send an SMS to one phone number, or to many numbers separated by a comma.\n\nSend the parameters as form-data.\n\n**Parameters**\n\n- `api_key` (required): Your API key.\n- `password` (required): Your account password.\n- `text` (required): The message to send.\n- `numbers` (required): The phone number to send to. Many numbers can be separated by a comma.\n- `from` (required): The sender ID, for example WGIT.",
                "body": {
                  "mode": "urlencoded",
                  "urlencoded": [
                    {
                      "key": "api_key",
                      "value": "{{api_key}}",
                      "type": "text"
                    },
                    {
                      "key": "password",
                      "value": "YOUR_PASSWORD",
                      "type": "text"
                    },
                    {
                      "key": "text",
                      "value": "Text message",
                      "type": "text"
                    },
                    {
                      "key": "numbers",
                      "value": "0992026866",
                      "type": "text"
                    },
                    {
                      "key": "from",
                      "value": "WGIT",
                      "type": "text"
                    }
                  ]
                }
              },
              "status": "OK",
              "code": 200,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"type\": \"success\",\n  \"msg\": \"send\",\n  \"code\": \"200\",\n  \"feedback\": [\n    {\n      \"status\": 2,\n      \"cost\": 18,\n      \"msdn\": \"265884113450\",\n      \"chars\": 12,\n      \"code\": 200,\n      \"id\": \"ke4wz6fydbtj\"\n    }\n  ]\n}"
            }
          ]
        },
        {
          "name": "Bulk SMS",
          "request": {
            "method": "POST",
            "header": [],
            "url": {
              "raw": "https://telcomw.com/api-v2/send",
              "protocol": "https",
              "host": [
                "telcomw",
                "com"
              ],
              "path": [
                "api-v2",
                "send"
              ]
            },
            "description": "Send a different message to each phone number in one request.\n\nSend the parameters as form-data. This is the same /send call, with advance set to true.\n\n**Parameters**\n\n- `api_key` (required): Your API key.\n- `password` (required): Your account password.\n- `text` (required): A JSON object of phone number and message, for example {\"099xxxxxxx\":\"Hello message 1\",\"088xxxxxxx\":\"Hello message 2\"}.\n- `numbers` (required): true (or null).\n- `from` (required): The sender ID, for example WGIT.\n- `advance` (required): true. It tells the API that text holds a message for each number.\n\n**Notes**\n\n- The response has the same fields as Send SMS.",
            "body": {
              "mode": "urlencoded",
              "urlencoded": [
                {
                  "key": "api_key",
                  "value": "{{api_key}}",
                  "type": "text"
                },
                {
                  "key": "password",
                  "value": "YOUR_PASSWORD",
                  "type": "text"
                },
                {
                  "key": "text",
                  "value": "{\"099xxxxxxx\":\"Hello message 1\",\"088xxxxxxx\":\"Hello message 2\"}",
                  "type": "text"
                },
                {
                  "key": "numbers",
                  "value": "true",
                  "type": "text"
                },
                {
                  "key": "from",
                  "value": "WGIT",
                  "type": "text"
                },
                {
                  "key": "advance",
                  "value": "true",
                  "type": "text"
                }
              ]
            }
          },
          "response": [
            {
              "name": "Response",
              "originalRequest": {
                "method": "POST",
                "header": [],
                "url": {
                  "raw": "https://telcomw.com/api-v2/send",
                  "protocol": "https",
                  "host": [
                    "telcomw",
                    "com"
                  ],
                  "path": [
                    "api-v2",
                    "send"
                  ]
                },
                "description": "Send a different message to each phone number in one request.\n\nSend the parameters as form-data. This is the same /send call, with advance set to true.\n\n**Parameters**\n\n- `api_key` (required): Your API key.\n- `password` (required): Your account password.\n- `text` (required): A JSON object of phone number and message, for example {\"099xxxxxxx\":\"Hello message 1\",\"088xxxxxxx\":\"Hello message 2\"}.\n- `numbers` (required): true (or null).\n- `from` (required): The sender ID, for example WGIT.\n- `advance` (required): true. It tells the API that text holds a message for each number.\n\n**Notes**\n\n- The response has the same fields as Send SMS.",
                "body": {
                  "mode": "urlencoded",
                  "urlencoded": [
                    {
                      "key": "api_key",
                      "value": "{{api_key}}",
                      "type": "text"
                    },
                    {
                      "key": "password",
                      "value": "YOUR_PASSWORD",
                      "type": "text"
                    },
                    {
                      "key": "text",
                      "value": "{\"099xxxxxxx\":\"Hello message 1\",\"088xxxxxxx\":\"Hello message 2\"}",
                      "type": "text"
                    },
                    {
                      "key": "numbers",
                      "value": "true",
                      "type": "text"
                    },
                    {
                      "key": "from",
                      "value": "WGIT",
                      "type": "text"
                    },
                    {
                      "key": "advance",
                      "value": "true",
                      "type": "text"
                    }
                  ]
                }
              },
              "status": "OK",
              "code": 200,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"type\": \"success\",\n  \"msg\": \"send\",\n  \"code\": \"200\",\n  \"feedback\": [\n    {\n      \"status\": 2,\n      \"cost\": 18,\n      \"msdn\": \"265884113450\",\n      \"chars\": 12,\n      \"code\": 200,\n      \"id\": \"ke4wz6fydbtj\"\n    }\n  ]\n}"
            }
          ]
        },
        {
          "name": "Send SMS with GET",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "https://telcomw.com/api-v2/text?message=Hello&phone=0992026866&api_key=YOUR_API_KEY&password=YOUR_PASSWORD&from=WGIT",
              "protocol": "https",
              "host": [
                "telcomw",
                "com"
              ],
              "path": [
                "api-v2",
                "text"
              ],
              "query": [
                {
                  "key": "message",
                  "value": "Hello"
                },
                {
                  "key": "phone",
                  "value": "0992026866"
                },
                {
                  "key": "api_key",
                  "value": "YOUR_API_KEY"
                },
                {
                  "key": "password",
                  "value": "YOUR_PASSWORD"
                },
                {
                  "key": "from",
                  "value": "WGIT"
                }
              ]
            },
            "description": "Send a text message to a phone number with a GET request. It needs your API key and password, and it replies with the status of the message.\n\nSend the parameters in the URL (query parameters).\n\n**Parameters**\n\n- `message` (required): The content of the text message to be sent.\n- `phone` (required): The recipient's phone number.\n- `api_key` (required): Your unique API key for authentication.\n- `password` (required): Your account password for authentication.\n- `from` (required): The sender's identifier or name.\n\n**Notes**\n\n- Keep the api_key and password secure and do not expose them publicly.\n- The response varies with the success or failure of sending. Check the status field in feedback."
          },
          "response": [
            {
              "name": "Response",
              "originalRequest": {
                "method": "GET",
                "header": [],
                "url": {
                  "raw": "https://telcomw.com/api-v2/text?message=Hello&phone=0992026866&api_key=YOUR_API_KEY&password=YOUR_PASSWORD&from=WGIT",
                  "protocol": "https",
                  "host": [
                    "telcomw",
                    "com"
                  ],
                  "path": [
                    "api-v2",
                    "text"
                  ],
                  "query": [
                    {
                      "key": "message",
                      "value": "Hello"
                    },
                    {
                      "key": "phone",
                      "value": "0992026866"
                    },
                    {
                      "key": "api_key",
                      "value": "YOUR_API_KEY"
                    },
                    {
                      "key": "password",
                      "value": "YOUR_PASSWORD"
                    },
                    {
                      "key": "from",
                      "value": "WGIT"
                    }
                  ]
                },
                "description": "Send a text message to a phone number with a GET request. It needs your API key and password, and it replies with the status of the message.\n\nSend the parameters in the URL (query parameters).\n\n**Parameters**\n\n- `message` (required): The content of the text message to be sent.\n- `phone` (required): The recipient's phone number.\n- `api_key` (required): Your unique API key for authentication.\n- `password` (required): Your account password for authentication.\n- `from` (required): The sender's identifier or name.\n\n**Notes**\n\n- Keep the api_key and password secure and do not expose them publicly.\n- The response varies with the success or failure of sending. Check the status field in feedback."
              },
              "status": "OK",
              "code": 200,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"type\": \"success\",\n  \"msg\": \"send\",\n  \"code\": \"200\",\n  \"feedback\": [\n    {\n      \"status\": 2,\n      \"cost\": 18,\n      \"msdn\": \"265884113450\",\n      \"chars\": 12,\n      \"code\": 200,\n      \"id\": \"ke4wz6fydbtj\"\n    }\n  ]\n}"
            }
          ]
        },
        {
          "name": "Extended SMS",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "from",
                "value": "WGIT",
                "type": "text"
              },
              {
                "key": "api_key",
                "value": "{{api_key}}",
                "type": "text"
              },
              {
                "key": "password",
                "value": "YOUR_PASSWORD",
                "type": "text"
              },
              {
                "key": "Content-Type",
                "value": "application/json",
                "type": "text"
              }
            ],
            "url": {
              "raw": "https://telcomw.com/api-v2/extended/send",
              "protocol": "https",
              "host": [
                "telcomw",
                "com"
              ],
              "path": [
                "api-v2",
                "extended",
                "send"
              ]
            },
            "description": "Send a message to a phone number, or a different message to many numbers, with a JSON body. The credentials go in the headers.\n\nSend from, api_key and password as headers, and the messages as a JSON array in the body.\n\n**Parameters**\n\n- `from` (required): The sender ID, for example WGIT.\n- `api_key` (required): Your API key.\n- `password` (required): Your account password.\n- `[].message` (required): The content of the message that you want to send.\n- `[].phone` (required): The recipient's phone number in international format.\n\n**Notes**\n\n- Use the correct international format for the phone numbers so the messages are delivered.\n- The response tells you the status of each message, so you can check it was sent.",
            "body": {
              "mode": "raw",
              "raw": "[\n  {\n    \"message\": \"Hello\",\n    \"phone\": \"265992026866\"\n  },\n  {\n    \"message\": \"Hello 2\",\n    \"phone\": \"265884113450\"\n  }\n]",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            }
          },
          "response": [
            {
              "name": "Success",
              "originalRequest": {
                "method": "POST",
                "header": [
                  {
                    "key": "from",
                    "value": "WGIT",
                    "type": "text"
                  },
                  {
                    "key": "api_key",
                    "value": "{{api_key}}",
                    "type": "text"
                  },
                  {
                    "key": "password",
                    "value": "YOUR_PASSWORD",
                    "type": "text"
                  },
                  {
                    "key": "Content-Type",
                    "value": "application/json",
                    "type": "text"
                  }
                ],
                "url": {
                  "raw": "https://telcomw.com/api-v2/extended/send",
                  "protocol": "https",
                  "host": [
                    "telcomw",
                    "com"
                  ],
                  "path": [
                    "api-v2",
                    "extended",
                    "send"
                  ]
                },
                "description": "Send a message to a phone number, or a different message to many numbers, with a JSON body. The credentials go in the headers.\n\nSend from, api_key and password as headers, and the messages as a JSON array in the body.\n\n**Parameters**\n\n- `from` (required): The sender ID, for example WGIT.\n- `api_key` (required): Your API key.\n- `password` (required): Your account password.\n- `[].message` (required): The content of the message that you want to send.\n- `[].phone` (required): The recipient's phone number in international format.\n\n**Notes**\n\n- Use the correct international format for the phone numbers so the messages are delivered.\n- The response tells you the status of each message, so you can check it was sent.",
                "body": {
                  "mode": "raw",
                  "raw": "[\n  {\n    \"message\": \"Hello\",\n    \"phone\": \"265992026866\"\n  },\n  {\n    \"message\": \"Hello 2\",\n    \"phone\": \"265884113450\"\n  }\n]",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "status": "OK",
              "code": 200,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"type\": \"success\",\n  \"msg\": \"send\",\n  \"code\": \"200\",\n  \"advance\": \"1\",\n  \"feedback\": [\n    {\n      \"status\": 2,\n      \"cost\": 20,\n      \"msdn\": \"265992026866\",\n      \"chars\": 5,\n      \"code\": 200,\n      \"id\": \"nexp7hdwhmfu\"\n    },\n    {\n      \"status\": 2,\n      \"cost\": 20,\n      \"msdn\": \"265884113450\",\n      \"chars\": 7,\n      \"code\": 200,\n      \"id\": \"iqenjjepnum5\"\n    }\n  ]\n}"
            }
          ]
        },
        {
          "name": "Batch delivery report",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "https://telcomw.com/api-v2/delivery/batch?id=BATCH_ID&api_key=YOUR_API_KEY",
              "protocol": "https",
              "host": [
                "telcomw",
                "com"
              ],
              "path": [
                "api-v2",
                "delivery",
                "batch"
              ],
              "query": [
                {
                  "key": "id",
                  "value": "BATCH_ID"
                },
                {
                  "key": "api_key",
                  "value": "YOUR_API_KEY"
                }
              ]
            },
            "description": "Get the delivery report of every message in a batch (one bulk send).\n\nSend the parameters in the URL (query parameters).\n\n**Parameters**\n\n- `id` (required): The batch id of the messages.\n- `api_key` (required): Your API key."
          },
          "response": [
            {
              "name": "Response",
              "originalRequest": {
                "method": "GET",
                "header": [],
                "url": {
                  "raw": "https://telcomw.com/api-v2/delivery/batch?id=BATCH_ID&api_key=YOUR_API_KEY",
                  "protocol": "https",
                  "host": [
                    "telcomw",
                    "com"
                  ],
                  "path": [
                    "api-v2",
                    "delivery",
                    "batch"
                  ],
                  "query": [
                    {
                      "key": "id",
                      "value": "BATCH_ID"
                    },
                    {
                      "key": "api_key",
                      "value": "YOUR_API_KEY"
                    }
                  ]
                },
                "description": "Get the delivery report of every message in a batch (one bulk send).\n\nSend the parameters in the URL (query parameters).\n\n**Parameters**\n\n- `id` (required): The batch id of the messages.\n- `api_key` (required): Your API key."
              },
              "status": "OK",
              "code": 200,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"msg\": \"Batch details retrieved successfully\",\n  \"type\": \"success\",\n  \"code\": \"200\",\n  \"data\": [\n    {\n      \"to\": \"265992026866\",\n      \"from\": \"WGIT\",\n      \"text\": \"Your message\",\n      \"status\": 4,\n      \"state\": \"Delivered\",\n      \"sent_at\": \"2024-11-12 12:07:54\",\n      \"delivered_at\": \"2024-11-12 10:13:07\"\n    },\n    {\n      \"to\": \"265884113450\",\n      \"from\": \"WGIT\",\n      \"text\": \"Your message\",\n      \"status\": 4,\n      \"state\": \"Delivered\",\n      \"sent_at\": \"2024-11-12 12:07:54\",\n      \"delivered_at\": null\n    }\n  ]\n}"
            }
          ]
        },
        {
          "name": "Reference delivery report",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "https://telcomw.com/api-v2/delivery/reference?id=reference_id&api_key=your_api_key",
              "protocol": "https",
              "host": [
                "telcomw",
                "com"
              ],
              "path": [
                "api-v2",
                "delivery",
                "reference"
              ],
              "query": [
                {
                  "key": "id",
                  "value": "reference_id"
                },
                {
                  "key": "api_key",
                  "value": "your_api_key"
                }
              ]
            },
            "description": "Get the delivery report of one message with its reference.\n\nSend the parameters in the URL (query parameters).\n\n**Parameters**\n\n- `id` (required): The reference of the message (the id returned when the message was sent).\n- `api_key` (required): Your API key."
          },
          "response": [
            {
              "name": "Response",
              "originalRequest": {
                "method": "GET",
                "header": [],
                "url": {
                  "raw": "https://telcomw.com/api-v2/delivery/reference?id=reference_id&api_key=your_api_key",
                  "protocol": "https",
                  "host": [
                    "telcomw",
                    "com"
                  ],
                  "path": [
                    "api-v2",
                    "delivery",
                    "reference"
                  ],
                  "query": [
                    {
                      "key": "id",
                      "value": "reference_id"
                    },
                    {
                      "key": "api_key",
                      "value": "your_api_key"
                    }
                  ]
                },
                "description": "Get the delivery report of one message with its reference.\n\nSend the parameters in the URL (query parameters).\n\n**Parameters**\n\n- `id` (required): The reference of the message (the id returned when the message was sent).\n- `api_key` (required): Your API key."
              },
              "status": "OK",
              "code": 200,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"msg\": \"Message details retrieved successfully\",\n  \"type\": \"success\",\n  \"code\": \"200\",\n  \"data\": {\n    \"to\": \"265992026866\",\n    \"from\": \"WGIT\",\n    \"text\": \"Your message\",\n    \"status\": 4,\n    \"state\": \"Delivered\",\n    \"sent_at\": \"2024-11-12 12:07:54\",\n    \"delivered_at\": \"2024-11-12 10:13:07\",\n    \"message_batch\": \"mrj6tfmtzguk\"\n  }\n}"
            }
          ]
        },
        {
          "name": "Check balance",
          "request": {
            "method": "POST",
            "header": [],
            "url": {
              "raw": "https://telcomw.com/api-v2/balance",
              "protocol": "https",
              "host": [
                "telcomw",
                "com"
              ],
              "path": [
                "api-v2",
                "balance"
              ]
            },
            "description": "Check your account balance with your API key and password.\n\nSend the parameters as form-data.\n\n**Parameters**\n\n- `api_key` (required): The unique API key of your account.\n- `password` (required): The password of your account.",
            "body": {
              "mode": "urlencoded",
              "urlencoded": [
                {
                  "key": "api_key",
                  "value": "{{api_key}}",
                  "type": "text"
                },
                {
                  "key": "password",
                  "value": "YOUR_PASSWORD",
                  "type": "text"
                }
              ]
            }
          },
          "response": []
        }
      ]
    },
    {
      "name": "Legacy APIs - WhatsApp",
      "description": "WhatsApp messages, files and OTP through our own WhatsApp connection. Offered only on request, we have moved to the official WhatsApp.",
      "item": [
        {
          "name": "Send WhatsApp text",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "https://whatsapp.telcomw.com/send?recipient=265992026866&message=Hello&password=YOUR_PASSWORD",
              "protocol": "https",
              "host": [
                "whatsapp",
                "telcomw",
                "com"
              ],
              "path": [
                "send"
              ],
              "query": [
                {
                  "key": "recipient",
                  "value": "265992026866"
                },
                {
                  "key": "message",
                  "value": "Hello"
                },
                {
                  "key": "password",
                  "value": "YOUR_PASSWORD"
                }
              ]
            },
            "description": "Send a WhatsApp text message.\n\nSend the parameters in the URL (query parameters).\n\n**Parameters**\n\n- `recipient` (required): The phone number to send to, for example 265992026866.\n- `message` (required): The message.\n- `password` (required): The password for your WhatsApp app. Ask us for it."
          },
          "response": []
        },
        {
          "name": "Send many WhatsApp texts",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "x-api-key",
                "value": "{{api_key}}",
                "type": "text"
              },
              {
                "key": "x-app-id",
                "value": "YOUR_APP_ID",
                "type": "text"
              },
              {
                "key": "Content-Type",
                "value": "application/json",
                "type": "text"
              }
            ],
            "url": {
              "raw": "https://telcomw.com/api-v2/whatsapp/text",
              "protocol": "https",
              "host": [
                "telcomw",
                "com"
              ],
              "path": [
                "api-v2",
                "whatsapp",
                "text"
              ]
            },
            "description": "Send several WhatsApp text messages in one request. Each item has its own recipient and message.\n\nSend x-api-key and x-app-id as headers, and the messages as a JSON array in the body.\n\n**Parameters**\n\n- `x-api-key` (required): Your API key.\n- `x-app-id` (required): The id of your WhatsApp app.\n- `[].recipient` (required): The phone number to send to.\n- `[].message` (required): The message.",
            "body": {
              "mode": "raw",
              "raw": "[\n  {\n    \"recipient\": \"265992026866\",\n    \"message\": \"message\"\n  },\n  {\n    \"recipient\": \"265992026866\",\n    \"message\": \"message 2\"\n  },\n  {\n    \"recipient\": \"265884113450\",\n    \"message\": \"message\"\n  }\n]",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            }
          },
          "response": [
            {
              "name": "Response",
              "originalRequest": {
                "method": "POST",
                "header": [
                  {
                    "key": "x-api-key",
                    "value": "{{api_key}}",
                    "type": "text"
                  },
                  {
                    "key": "x-app-id",
                    "value": "YOUR_APP_ID",
                    "type": "text"
                  },
                  {
                    "key": "Content-Type",
                    "value": "application/json",
                    "type": "text"
                  }
                ],
                "url": {
                  "raw": "https://telcomw.com/api-v2/whatsapp/text",
                  "protocol": "https",
                  "host": [
                    "telcomw",
                    "com"
                  ],
                  "path": [
                    "api-v2",
                    "whatsapp",
                    "text"
                  ]
                },
                "description": "Send several WhatsApp text messages in one request. Each item has its own recipient and message.\n\nSend x-api-key and x-app-id as headers, and the messages as a JSON array in the body.\n\n**Parameters**\n\n- `x-api-key` (required): Your API key.\n- `x-app-id` (required): The id of your WhatsApp app.\n- `[].recipient` (required): The phone number to send to.\n- `[].message` (required): The message.",
                "body": {
                  "mode": "raw",
                  "raw": "[\n  {\n    \"recipient\": \"265992026866\",\n    \"message\": \"message\"\n  },\n  {\n    \"recipient\": \"265992026866\",\n    \"message\": \"message 2\"\n  },\n  {\n    \"recipient\": \"265884113450\",\n    \"message\": \"message\"\n  }\n]",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "status": "OK",
              "code": 200,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"message\": \"Request to send messages was successful\",\n  \"status\": 200,\n  \"success\": true,\n  \"data\": [\n    {\n      \"success\": true,\n      \"message\": \"Message sent\",\n      \"data\": {\n        \"recipient\": \"265992026866\",\n        \"message\": \"message\"\n      }\n    },\n    {\n      \"success\": true,\n      \"message\": \"Message sent\",\n      \"data\": {\n        \"recipient\": \"265992026866\",\n        \"message\": \"message 2\"\n      }\n    },\n    {\n      \"success\": true,\n      \"message\": \"Message sent\",\n      \"data\": {\n        \"recipient\": \"265884113450\",\n        \"message\": \"message\"\n      }\n    }\n  ]\n}"
            }
          ]
        },
        {
          "name": "Send WhatsApp text (v1)",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "key",
                "value": "{{api_key}}",
                "type": "text"
              },
              {
                "key": "password",
                "value": "YOUR_PASSWORD",
                "type": "text"
              },
              {
                "key": "appid",
                "value": "YOUR_APP_ID",
                "type": "text"
              },
              {
                "key": "Content-Type",
                "value": "application/json",
                "type": "text"
              }
            ],
            "url": {
              "raw": "https://telcomw.com/api-v2/v1.wa.text",
              "protocol": "https",
              "host": [
                "telcomw",
                "com"
              ],
              "path": [
                "api-v2",
                "v1.wa.text"
              ]
            },
            "description": "Send a WhatsApp text message to a phone number.\n\nSend key, password and appid as headers, and the message as a JSON body.\n\n**Parameters**\n\n- `key` (required): Your API key.\n- `password` (required): Your account password.\n- `appid` (required): The id of your WhatsApp app.\n- `phone` (required): The phone number to send to, with the country code.\n- `message` (required): The message.",
            "body": {
              "mode": "raw",
              "raw": "{\n  \"phone\": \"+265992026866\",\n  \"message\": \"Boss?\"\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            }
          },
          "response": [
            {
              "name": "Response",
              "originalRequest": {
                "method": "POST",
                "header": [
                  {
                    "key": "key",
                    "value": "{{api_key}}",
                    "type": "text"
                  },
                  {
                    "key": "password",
                    "value": "YOUR_PASSWORD",
                    "type": "text"
                  },
                  {
                    "key": "appid",
                    "value": "YOUR_APP_ID",
                    "type": "text"
                  },
                  {
                    "key": "Content-Type",
                    "value": "application/json",
                    "type": "text"
                  }
                ],
                "url": {
                  "raw": "https://telcomw.com/api-v2/v1.wa.text",
                  "protocol": "https",
                  "host": [
                    "telcomw",
                    "com"
                  ],
                  "path": [
                    "api-v2",
                    "v1.wa.text"
                  ]
                },
                "description": "Send a WhatsApp text message to a phone number.\n\nSend key, password and appid as headers, and the message as a JSON body.\n\n**Parameters**\n\n- `key` (required): Your API key.\n- `password` (required): Your account password.\n- `appid` (required): The id of your WhatsApp app.\n- `phone` (required): The phone number to send to, with the country code.\n- `message` (required): The message.",
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"phone\": \"+265992026866\",\n  \"message\": \"Boss?\"\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "status": "OK",
              "code": 200,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"status\": 200,\n  \"message\": \"Your message was sent successfully!\",\n  \"ref\": null\n}"
            }
          ]
        },
        {
          "name": "Generate OTP",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "key",
                "value": "{{api_key}}",
                "type": "text"
              },
              {
                "key": "password",
                "value": "YOUR_PASSWORD",
                "type": "text"
              },
              {
                "key": "length",
                "value": "5",
                "type": "text"
              },
              {
                "key": "expire",
                "value": "4",
                "type": "text"
              },
              {
                "key": "for",
                "value": "+265992026866",
                "type": "text"
              },
              {
                "key": "name",
                "value": "SMS DELIVERY API",
                "type": "text"
              }
            ],
            "url": {
              "raw": "https://telcomw.com/api-v2/v1.generate_otp",
              "protocol": "https",
              "host": [
                "telcomw",
                "com"
              ],
              "path": [
                "api-v2",
                "v1.generate_otp"
              ]
            },
            "description": "Generate a one time password and send it to a phone number on WhatsApp.\n\nSend the parameters as headers.\n\n**Parameters**\n\n- `key` (required): Your API key.\n- `password` (required): Your account password.\n- `for` (required): The phone number that receives the OTP, with the country code, for example +265992026866.\n- `length` (optional): How many characters the OTP has, for example 5.\n- `expire` (optional): How long the OTP is valid, in minutes, for example 4.\n- `name` (optional): Your organisation name, shown in the OTP message."
          },
          "response": [
            {
              "name": "Response",
              "originalRequest": {
                "method": "POST",
                "header": [
                  {
                    "key": "key",
                    "value": "{{api_key}}",
                    "type": "text"
                  },
                  {
                    "key": "password",
                    "value": "YOUR_PASSWORD",
                    "type": "text"
                  },
                  {
                    "key": "length",
                    "value": "5",
                    "type": "text"
                  },
                  {
                    "key": "expire",
                    "value": "4",
                    "type": "text"
                  },
                  {
                    "key": "for",
                    "value": "+265992026866",
                    "type": "text"
                  },
                  {
                    "key": "name",
                    "value": "SMS DELIVERY API",
                    "type": "text"
                  }
                ],
                "url": {
                  "raw": "https://telcomw.com/api-v2/v1.generate_otp",
                  "protocol": "https",
                  "host": [
                    "telcomw",
                    "com"
                  ],
                  "path": [
                    "api-v2",
                    "v1.generate_otp"
                  ]
                },
                "description": "Generate a one time password and send it to a phone number on WhatsApp.\n\nSend the parameters as headers.\n\n**Parameters**\n\n- `key` (required): Your API key.\n- `password` (required): Your account password.\n- `for` (required): The phone number that receives the OTP, with the country code, for example +265992026866.\n- `length` (optional): How many characters the OTP has, for example 5.\n- `expire` (optional): How long the OTP is valid, in minutes, for example 4.\n- `name` (optional): Your organisation name, shown in the OTP message."
              },
              "status": "OK",
              "code": 200,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"status\": 200,\n  \"message\": \"Your OTP was generated and sent successfully!\",\n  \"ref\": 230955,\n  \"expire\": \"4-mins\",\n  \"org\": \"SMS DELIVERY API\"\n}"
            }
          ]
        },
        {
          "name": "Verify generated OTP",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "code",
                "value": "20698",
                "type": "text"
              },
              {
                "key": "ref",
                "value": "103495",
                "type": "text"
              },
              {
                "key": "key",
                "value": "{{api_key}}",
                "type": "text"
              },
              {
                "key": "password",
                "value": "YOUR_PASSWORD",
                "type": "text"
              }
            ],
            "url": {
              "raw": "https://telcomw.com/api-v2/v1.verify_otp",
              "protocol": "https",
              "host": [
                "telcomw",
                "com"
              ],
              "path": [
                "api-v2",
                "v1.verify_otp"
              ]
            },
            "description": "Check an OTP that was generated with Generate OTP.\n\nSend the parameters as headers.\n\n**Parameters**\n\n- `code` (required): The OTP the user typed in.\n- `ref` (required): The reference returned when the OTP was generated.\n- `key` (required): Your API key.\n- `password` (required): Your account password."
          },
          "response": [
            {
              "name": "Response",
              "originalRequest": {
                "method": "POST",
                "header": [
                  {
                    "key": "code",
                    "value": "20698",
                    "type": "text"
                  },
                  {
                    "key": "ref",
                    "value": "103495",
                    "type": "text"
                  },
                  {
                    "key": "key",
                    "value": "{{api_key}}",
                    "type": "text"
                  },
                  {
                    "key": "password",
                    "value": "YOUR_PASSWORD",
                    "type": "text"
                  }
                ],
                "url": {
                  "raw": "https://telcomw.com/api-v2/v1.verify_otp",
                  "protocol": "https",
                  "host": [
                    "telcomw",
                    "com"
                  ],
                  "path": [
                    "api-v2",
                    "v1.verify_otp"
                  ]
                },
                "description": "Check an OTP that was generated with Generate OTP.\n\nSend the parameters as headers.\n\n**Parameters**\n\n- `code` (required): The OTP the user typed in.\n- `ref` (required): The reference returned when the OTP was generated.\n- `key` (required): Your API key.\n- `password` (required): Your account password."
              },
              "status": "OK",
              "code": 200,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"status\": 200,\n  \"message\": \"OTP successfully verified\",\n  \"feedback\": {\n    \"otp_code\": \"92187\",\n    \"otp_ref\": \"460940\",\n    \"otp_status\": true,\n    \"otp_msisdn\": \"+265992026866\",\n    \"otp_elapse\": 4\n  }\n}"
            }
          ]
        }
      ]
    },
    {
      "name": "OTP Services",
      "description": "Send one time passwords on several channels (WhatsApp voice, WhatsApp text, voice call and SMS) and verify them.",
      "item": [
        {
          "name": "Request OTP",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "https://otp_api.telcomw.com/request?id=123456&client=265992026866&channels=[wa.audio,wa.text,phone.call,phone.text]",
              "protocol": "https",
              "host": [
                "otp_api",
                "telcomw",
                "com"
              ],
              "path": [
                "request"
              ],
              "query": [
                {
                  "key": "id",
                  "value": "123456"
                },
                {
                  "key": "client",
                  "value": "265992026866"
                },
                {
                  "key": "channels",
                  "value": "[wa.audio,wa.text,phone.call,phone.text]"
                }
              ]
            },
            "description": "Send an OTP to a phone number on the channels you choose.\n\nSend the parameters in the URL (query parameters).\n\n**Parameters**\n\n- `id` (required): Your id for the request. Use the same id when you verify the OTP.\n- `client` (required): The phone number that receives the OTP, for example 265992026866.\n- `channels` (required): The channels to deliver the OTP on, as a list: wa.audio, wa.text, phone.call, phone.text.\n\n**Notes**\n\n- Channels: wa.audio (WhatsApp voice), wa.text (WhatsApp text), phone.call (voice call), phone.text (SMS)."
          },
          "response": [
            {
              "name": "Response",
              "originalRequest": {
                "method": "GET",
                "header": [],
                "url": {
                  "raw": "https://otp_api.telcomw.com/request?id=123456&client=265992026866&channels=[wa.audio,wa.text,phone.call,phone.text]",
                  "protocol": "https",
                  "host": [
                    "otp_api",
                    "telcomw",
                    "com"
                  ],
                  "path": [
                    "request"
                  ],
                  "query": [
                    {
                      "key": "id",
                      "value": "123456"
                    },
                    {
                      "key": "client",
                      "value": "265992026866"
                    },
                    {
                      "key": "channels",
                      "value": "[wa.audio,wa.text,phone.call,phone.text]"
                    }
                  ]
                },
                "description": "Send an OTP to a phone number on the channels you choose.\n\nSend the parameters in the URL (query parameters).\n\n**Parameters**\n\n- `id` (required): Your id for the request. Use the same id when you verify the OTP.\n- `client` (required): The phone number that receives the OTP, for example 265992026866.\n- `channels` (required): The channels to deliver the OTP on, as a list: wa.audio, wa.text, phone.call, phone.text.\n\n**Notes**\n\n- Channels: wa.audio (WhatsApp voice), wa.text (WhatsApp text), phone.call (voice call), phone.text (SMS)."
              },
              "status": "OK",
              "code": 200,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"status\": \"success\",\n  \"message\": \"The OTP has been sent successfully\",\n  \"route\": \"request\",\n  \"ref\": \"99CF5784EFF0A32F508ABDD446723C46\",\n  \"cost\": 50,\n  \"channelsUsed\": {\n    \"wa.audio\": \"successful\",\n    \"wa.text\": \"successful\",\n    \"phone.call\": \"successful\",\n    \"phone.text\": \"successful\"\n  }\n}"
            }
          ]
        },
        {
          "name": "Verify OTP",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "https://otp_api.telcomw.com/verify?id=123456&ref=D3F66B481CA89BD9C5F6E47F4645EEDC&otp=2337",
              "protocol": "https",
              "host": [
                "otp_api",
                "telcomw",
                "com"
              ],
              "path": [
                "verify"
              ],
              "query": [
                {
                  "key": "id",
                  "value": "123456"
                },
                {
                  "key": "ref",
                  "value": "D3F66B481CA89BD9C5F6E47F4645EEDC"
                },
                {
                  "key": "otp",
                  "value": "2337"
                }
              ]
            },
            "description": "Check the OTP a user typed in.\n\nSend the parameters in the URL (query parameters).\n\n**Parameters**\n\n- `id` (required): The id you used when you requested the OTP.\n- `ref` (required): The reference returned when the OTP was requested.\n- `otp` (required): The OTP the user typed in."
          },
          "response": [
            {
              "name": "Verified",
              "originalRequest": {
                "method": "GET",
                "header": [],
                "url": {
                  "raw": "https://otp_api.telcomw.com/verify?id=123456&ref=D3F66B481CA89BD9C5F6E47F4645EEDC&otp=2337",
                  "protocol": "https",
                  "host": [
                    "otp_api",
                    "telcomw",
                    "com"
                  ],
                  "path": [
                    "verify"
                  ],
                  "query": [
                    {
                      "key": "id",
                      "value": "123456"
                    },
                    {
                      "key": "ref",
                      "value": "D3F66B481CA89BD9C5F6E47F4645EEDC"
                    },
                    {
                      "key": "otp",
                      "value": "2337"
                    }
                  ]
                },
                "description": "Check the OTP a user typed in.\n\nSend the parameters in the URL (query parameters).\n\n**Parameters**\n\n- `id` (required): The id you used when you requested the OTP.\n- `ref` (required): The reference returned when the OTP was requested.\n- `otp` (required): The OTP the user typed in."
              },
              "status": "OK",
              "code": 200,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"status\": \"success\",\n  \"message\": \"The OTP has been verified successfully\",\n  \"route\": \"verify\"\n}"
            },
            {
              "name": "Not verified",
              "originalRequest": {
                "method": "GET",
                "header": [],
                "url": {
                  "raw": "https://otp_api.telcomw.com/verify?id=123456&ref=D3F66B481CA89BD9C5F6E47F4645EEDC&otp=2337",
                  "protocol": "https",
                  "host": [
                    "otp_api",
                    "telcomw",
                    "com"
                  ],
                  "path": [
                    "verify"
                  ],
                  "query": [
                    {
                      "key": "id",
                      "value": "123456"
                    },
                    {
                      "key": "ref",
                      "value": "D3F66B481CA89BD9C5F6E47F4645EEDC"
                    },
                    {
                      "key": "otp",
                      "value": "2337"
                    }
                  ]
                },
                "description": "Check the OTP a user typed in.\n\nSend the parameters in the URL (query parameters).\n\n**Parameters**\n\n- `id` (required): The id you used when you requested the OTP.\n- `ref` (required): The reference returned when the OTP was requested.\n- `otp` (required): The OTP the user typed in."
              },
              "status": "OK",
              "code": 200,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"status\": \"error\",\n  \"message\": \"The OTP submitted is invalid, please double check\",\n  \"route\": \"verify\"\n}"
            }
          ]
        },
        {
          "name": "Get secure form",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "https://otp_api.telcomw.com/form?channels=[wa.audio,wa.text,phone.call,phone.text]&loginURL=https://telcomw.com/login2.php",
              "protocol": "https",
              "host": [
                "otp_api",
                "telcomw",
                "com"
              ],
              "path": [
                "form"
              ],
              "query": [
                {
                  "key": "channels",
                  "value": "[wa.audio,wa.text,phone.call,phone.text]"
                },
                {
                  "key": "loginURL",
                  "value": "https://telcomw.com/login2.php"
                }
              ]
            },
            "description": "Get a ready made sign in page where the visitor types a phone number and picks how to receive the OTP.\n\nSend the parameters in the URL (query parameters).\n\n**Parameters**\n\n- `channels` (required): The channels the visitor can choose from, as a list: wa.audio, wa.text, phone.call, phone.text.\n- `loginURL` (required): The address of your page that receives the form when it is submitted.\n\n**Notes**\n\n- The response is an HTML page, not JSON. The form asks for the phone number (phone) and how to receive the OTP (channel), and posts them to your loginURL."
          },
          "response": []
        }
      ]
    },
    {
      "name": "Payment Gateways",
      "description": "Receive TNM Mpamba, Airtel Money and Visa payments from your customers. Visa is provided by Standard Bank.",
      "item": [
        {
          "name": "Receive payment",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Authorization",
                "value": "Bearer {{api_key}}",
                "type": "text"
              },
              {
                "key": "Content-Type",
                "value": "application/json",
                "type": "text"
              }
            ],
            "url": {
              "raw": "https://telcomw.com/api-v2/payments/receive",
              "protocol": "https",
              "host": [
                "telcomw",
                "com"
              ],
              "path": [
                "api-v2",
                "payments",
                "receive"
              ]
            },
            "description": "Start a payment from a customer. It supports mobile wallet payments and Visa card payments.\n\nSend a JSON body. Authenticate with a Bearer token, which is your TelcoMW API key.\n\n**Parameters**\n\n- `Authorization` (required): Bearer YOUR_API_KEY (your TelcoMW API key).\n- `reference` (required): A unique transaction reference, 7 to 20 characters.\n- `description` (required): A description of the payment.\n- `amount` (required): The amount in MWK. The minimum is MWK 50 and the maximum is MWK 750,000.\n- `channel` (required): \"wallet\" for mobile wallet payments (TNM Mpamba or Airtel Money), \"card\" for Visa card payments (provided by Standard Bank).\n- `ipn` (required): The address where we send the payment notifications. A valid URL of up to 100 characters.\n- `subscriber` (optional): The phone number, 9 to 13 digits, numbers only. Required when channel is wallet.\n\n**Notes**\n\n- Success: the payment request is accepted, with the operator. Error: validation errors or service failures.\n- A duplicate transaction reference is rejected, and so is an invalid phone number for wallet payments.\n- The ipn address must be publicly reachable, so we can send you the payment notifications.\n- All amounts are in Malawian Kwacha (MWK). Transaction references must be unique across all payments.\n- Every response has message (a readable message), feedback (the details) and status (success, error or info).\n- HTTP status codes: 200 success, 400 bad request (validation errors), 404 endpoint not found, 500 internal server error.\n- Common validation errors: missing required fields, an amount out of range, a wrong phone number or URL format, a reference of the wrong length, and duplicate references.\n- Mobile wallet payments (TNM Mpamba and Airtel Money) need a valid subscriber phone number and are processed in real time.\n- Visa payments are credit or debit card payments with international support, provided by Standard Bank.\n- The base URL of this API is shown under your transactions on the TelcoMW website. Standard rate limiting applies, contact support for specific limits.",
            "body": {
              "mode": "raw",
              "raw": "{\n  \"reference\": \"RE920369746454\",\n  \"description\": \"Some Items\",\n  \"amount\": 50,\n  \"subscriber\": \"0992026866\",\n  \"channel\": \"wallet\",\n  \"ipn\": \"https://yourdomain.com/notifications\"\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            }
          },
          "response": [
            {
              "name": "Success",
              "originalRequest": {
                "method": "POST",
                "header": [
                  {
                    "key": "Authorization",
                    "value": "Bearer {{api_key}}",
                    "type": "text"
                  },
                  {
                    "key": "Content-Type",
                    "value": "application/json",
                    "type": "text"
                  }
                ],
                "url": {
                  "raw": "https://telcomw.com/api-v2/payments/receive",
                  "protocol": "https",
                  "host": [
                    "telcomw",
                    "com"
                  ],
                  "path": [
                    "api-v2",
                    "payments",
                    "receive"
                  ]
                },
                "description": "Start a payment from a customer. It supports mobile wallet payments and Visa card payments.\n\nSend a JSON body. Authenticate with a Bearer token, which is your TelcoMW API key.\n\n**Parameters**\n\n- `Authorization` (required): Bearer YOUR_API_KEY (your TelcoMW API key).\n- `reference` (required): A unique transaction reference, 7 to 20 characters.\n- `description` (required): A description of the payment.\n- `amount` (required): The amount in MWK. The minimum is MWK 50 and the maximum is MWK 750,000.\n- `channel` (required): \"wallet\" for mobile wallet payments (TNM Mpamba or Airtel Money), \"card\" for Visa card payments (provided by Standard Bank).\n- `ipn` (required): The address where we send the payment notifications. A valid URL of up to 100 characters.\n- `subscriber` (optional): The phone number, 9 to 13 digits, numbers only. Required when channel is wallet.\n\n**Notes**\n\n- Success: the payment request is accepted, with the operator. Error: validation errors or service failures.\n- A duplicate transaction reference is rejected, and so is an invalid phone number for wallet payments.\n- The ipn address must be publicly reachable, so we can send you the payment notifications.\n- All amounts are in Malawian Kwacha (MWK). Transaction references must be unique across all payments.\n- Every response has message (a readable message), feedback (the details) and status (success, error or info).\n- HTTP status codes: 200 success, 400 bad request (validation errors), 404 endpoint not found, 500 internal server error.\n- Common validation errors: missing required fields, an amount out of range, a wrong phone number or URL format, a reference of the wrong length, and duplicate references.\n- Mobile wallet payments (TNM Mpamba and Airtel Money) need a valid subscriber phone number and are processed in real time.\n- Visa payments are credit or debit card payments with international support, provided by Standard Bank.\n- The base URL of this API is shown under your transactions on the TelcoMW website. Standard rate limiting applies, contact support for specific limits.",
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"reference\": \"RE920369746454\",\n  \"description\": \"Some Items\",\n  \"amount\": 50,\n  \"subscriber\": \"0992026866\",\n  \"channel\": \"wallet\",\n  \"ipn\": \"https://yourdomain.com/notifications\"\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "status": "OK",
              "code": 200,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"message\": \"Service request accepted\",\n  \"feedback\": {\n    \"subscriber\": \"0992026866\",\n    \"reference\": \"RE320369746450\",\n    \"amount\": 50,\n    \"operator\": \"airtel\"\n  },\n  \"status\": \"success\"\n}"
            }
          ]
        },
        {
          "name": "Receiving status",
          "request": {
            "method": "GET",
            "header": [
              {
                "key": "Authorization",
                "value": "Bearer {{api_key}}",
                "type": "text"
              }
            ],
            "url": {
              "raw": "https://telcomw.com/api-v2/payments/receive/RE17482494250458921",
              "protocol": "https",
              "host": [
                "telcomw",
                "com"
              ],
              "path": [
                "api-v2",
                "payments",
                "receive",
                "RE17482494250458921"
              ]
            },
            "description": "Get the status of a payment with its reference.\n\nPut the reference in the URL. Authenticate with a Bearer token, which is your TelcoMW API key.\n\n**Parameters**\n\n- `Authorization` (required): Bearer YOUR_API_KEY (your TelcoMW API key).\n- `reference` (required): The unique reference of the payment transaction."
          },
          "response": [
            {
              "name": "Response",
              "originalRequest": {
                "method": "GET",
                "header": [
                  {
                    "key": "Authorization",
                    "value": "Bearer {{api_key}}",
                    "type": "text"
                  }
                ],
                "url": {
                  "raw": "https://telcomw.com/api-v2/payments/receive/RE17482494250458921",
                  "protocol": "https",
                  "host": [
                    "telcomw",
                    "com"
                  ],
                  "path": [
                    "api-v2",
                    "payments",
                    "receive",
                    "RE17482494250458921"
                  ]
                },
                "description": "Get the status of a payment with its reference.\n\nPut the reference in the URL. Authenticate with a Bearer token, which is your TelcoMW API key.\n\n**Parameters**\n\n- `Authorization` (required): Bearer YOUR_API_KEY (your TelcoMW API key).\n- `reference` (required): The unique reference of the payment transaction."
              },
              "status": "OK",
              "code": 200,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"message\": \"Service request accepted\",\n  \"feedback\": {\n    \"reference\": \"RE17482494250458921\",\n    \"status\": true,\n    \"message\": \"Payment status Accessed\",\n    \"operator\": \"airtel\",\n    \"third_party_reference\": null,\n    \"payment_status\": \"RQD\",\n    \"payment_comment\": \"WAITING_ACTION\",\n    \"payment_ipn\": \"https://yourdomain.com/notifications\"\n  },\n  \"status\": \"success\"\n}"
            }
          ]
        },
        {
          "name": "Receive update status",
          "request": {
            "method": "GET",
            "header": [
              {
                "key": "Authorization",
                "value": "Bearer {{api_key}}",
                "type": "text"
              }
            ],
            "url": {
              "raw": "https://telcomw.com/api-v2/payments/update/RE1748204068886599",
              "protocol": "https",
              "host": [
                "telcomw",
                "com"
              ],
              "path": [
                "api-v2",
                "payments",
                "update",
                "RE1748204068886599"
              ]
            },
            "description": "Ask us to refresh the status of a payment. The result is sent to the ipn address you gave when you started the payment. It is useful when you missed the first notification.\n\nPut the transaction id in the URL. Authenticate with a Bearer token, which is your TelcoMW API key.\n\n**Parameters**\n\n- `Authorization` (required): Bearer YOUR_API_KEY (your TelcoMW API key).\n- `transaction_id` (required): The unique identifier of the transaction to update (the reference)."
          },
          "response": [
            {
              "name": "Response",
              "originalRequest": {
                "method": "GET",
                "header": [
                  {
                    "key": "Authorization",
                    "value": "Bearer {{api_key}}",
                    "type": "text"
                  }
                ],
                "url": {
                  "raw": "https://telcomw.com/api-v2/payments/update/RE1748204068886599",
                  "protocol": "https",
                  "host": [
                    "telcomw",
                    "com"
                  ],
                  "path": [
                    "api-v2",
                    "payments",
                    "update",
                    "RE1748204068886599"
                  ]
                },
                "description": "Ask us to refresh the status of a payment. The result is sent to the ipn address you gave when you started the payment. It is useful when you missed the first notification.\n\nPut the transaction id in the URL. Authenticate with a Bearer token, which is your TelcoMW API key.\n\n**Parameters**\n\n- `Authorization` (required): Bearer YOUR_API_KEY (your TelcoMW API key).\n- `transaction_id` (required): The unique identifier of the transaction to update (the reference)."
              },
              "status": "OK",
              "code": 200,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"message\": \"Service request accepted\",\n  \"feedback\": {\n    \"reference\": \"RE17481522190173324\",\n    \"message\": \"A request to check transaction status has been sent\",\n    \"operator\": \"airtel\",\n    \"narration\": \"You'll receive a callback notification through your call back url\",\n    \"payment_ipn\": \"https://yourdomain.com/notifications\"\n  },\n  \"status\": \"success\"\n}"
            }
          ]
        }
      ]
    }
  ]
}