Infobip Zalo API

Zalo offers businesses a dynamic tool - Zalo Notification Service. This solution is designed to revolutionize customer engagement and communication strategies, providing businesses with a direct and effective means of connecting with their audience. — 8 operation path(s) and 2 webhook(s) in Infobip's published OpenAPI.

OpenAPI Specification

infobip-zalo-openapi.json Raw ↑
{
 "openapi":"3.1.0",
 "info":{
  "title":"Infobip OpenAPI Specification",
  "description":"OpenAPI Specification that contains all public endpoints and webhooks.",
  "contact":{
   "name":"Infobip support",
   "email":"support@infobip.com"
  },
  "version":"3.210.0",
  "x-generatedAt":"2026-07-23T15:23:53.024921366Z"
 },
 "tags":[
  {
   "name":"channels",
   "description":"Create a perfect customer experience by using the channels your customer already use and love.\n",
   "x-type":"category",
   "x-displayName":"Channels"
  },
  {
   "name":"zalo",
   "description":"Zalo offers businesses a dynamic tool - Zalo Notification Service.\nThis solution is designed to revolutionize customer engagement and communication strategies,\nproviding businesses with a direct and effective means of connecting with their audience.\n\nTo utilize Zalo Notification Service in combination with other channels, check out [Messages API](https://www.infobip.com/docs/api/platform/messages-api).\n",
   "x-type":"product",
   "x-displayName":"Zalo"
  },
  {
   "name":"zalo-outbound-messages",
   "description":"Send messages to multiple recipients. Only notification template messages registered with Zalo can be sent.\nThe API response will not contain the final delivery status, use Delivery Reports instead.\n",
   "x-type":"module",
   "x-displayName":"Outbound Messages"
  },
  {
   "name":"zalo-inbound-messages",
   "description":"Incoming messages will be forwarded in real time to the end-point client provided during the setup.\nThis way, 2-way communication will be established, and the enterprise is enabled to create a certain logic for processing incoming messages.\n",
   "x-type":"module",
   "x-displayName":"Inbound Messages"
  },
  {
   "name":"zalo-message-status-reports",
   "description":"Status Reports (webhooks) tell you what happened to the Zalo message you sent, whether it was successfully delivered or failed to be delivered.\nIn case of Zalo message delivery failure, you'll receive a timestamp and a status code indicating the reason behind it.\nStatus Reports can be pushed in real-time to a Customer's webhook or can be retrieved by an API call.\nLogs provide similar information to Status Reports but are available to query for 48hrs.\n",
   "x-type":"module",
   "x-displayName":"Message Status Reports"
  },
  {
   "name":"zalo-service-management",
   "description":"Manage your Zalo templates, sender quota, and encryption keys.\n",
   "x-type":"module",
   "x-displayName":"Service Management"
  },
  {
   "name":"zalo-template-management",
   "description":"",
   "x-type":"section",
   "x-displayName":"Template Management"
  },
  {
   "name":"zalo-media-management",
   "description":"",
   "x-type":"section",
   "x-displayName":"Media Management"
  },
  {
   "name":"zalo-sender-management",
   "description":"",
   "x-type":"section",
   "x-displayName":"Sender Management"
  }
 ],
 "paths":{
  "/zalo/2/messages":{
   "post":{
    "tags":[
     "channels",
     "zalo",
     "zalo-outbound-messages"
    ],
    "summary":"Send Zalo messages",
    "description":"Send messages to multiple recipients. Only [template messages](https://www.infobip.com/docs/zalo/message-types) registered with Zalo can be sent. The API response will not contain the final delivery status, use [Delivery Reports](/docs/api/channels/zalo/zalo-logs-and-status-reports/receive-outbound-zalo-delivery-reports) instead.",
    "externalDocs":{
     "description":"Learn more about Zalo channel and use cases",
     "url":"https://www.infobip.com/docs/zalo"
    },
    "operationId":"send-zalo-message",
    "requestBody":{
     "content":{
      "application/json":{
       "schema":{
        "$ref":"#/components/schemas/6a8bbdacebad88e7e0de8bdfd30e29e04d114b9f00175a0482b9e26b742d85d5.ZaloRequest"
       },
       "examples":{
        "Template message without validity period and without SMS failover":{
         "summary":"Template message without validity period and without SMS failover",
         "value":{
          "messages":[
           {
            "sender":"OFFICIAL-ACCOUNT-ID-XY12Z3",
            "destinations":[
             {
              "to":"41793026727"
             }
            ],
            "content":{
             "templateName":322307,
             "templateData":{
              "customer_name":"John Smith",
              "date":"20/03/2018"
             },
             "type":"TEMPLATE"
            }
           }
          ]
         }
        },
        "Encrypted template message without validity period and without SMS failover":{
         "summary":"Encrypted template message without validity period and without SMS failover",
         "value":{
          "messages":[
           {
            "sender":"OFFICIAL-ACCOUNT-ID-XY12Z3",
            "destinations":[
             {
              "to":"41793026727"
             }
            ],
            "content":{
             "templateName":322307,
             "templateData":{
              "customer_name":"MCCCIjANB***hidden***Mvb0CAwEHHQ==",
              "date":"MKKCIjANB***hidden***Mvb0CAwEBBQ=="
             },
             "type":"TEMPLATE"
            },
            "options":{
             "encrypted":true
            }
           }
          ]
         }
        },
        "Template message with validity period and without SMS failover":{
         "summary":"Template message with validity period and without SMS failover",
         "value":{
          "messages":[
           {
            "sender":"OFFICIAL-ACCOUNT-ID-XY12Z3",
            "destinations":[
             {
              "to":"41793026727"
             }
            ],
            "content":{
             "templateName":322307,
             "templateData":{
              "customer_name":"John Smith",
              "date":"20/03/2018"
             },
             "type":"TEMPLATE"
            },
            "options":{
             "validityPeriod":{
              "amount":30,
              "timeUnit":"MINUTES"
             }
            }
           }
          ]
         }
        },
        "Encrypted template message with validity period and with SMS failover":{
         "summary":"Encrypted template message with validity period and with SMS failover",
         "value":{
          "messages":[
           {
            "sender":"OFFICIAL-ACCOUNT-ID-XY12Z3",
            "destinations":[
             {
              "to":"41793026727"
             }
            ],
            "content":{
             "templateName":322307,
             "templateData":{
              "customer_name":"MCCCIjANB***hidden***Mvb0CAwEHHQ==",
              "date":"MKKCIjANB***hidden***Mvb0CAwEBBQ=="
             },
             "type":"TEMPLATE"
            },
            "options":{
             "validityPeriod":{
              "amount":30,
              "timeUnit":"MINUTES"
             },
             "smsFailover":{
              "sender":"41793026726",
              "text":"Failover message text",
              "validityPeriod":{
               "amount":2,
               "timeUnit":"HOURS"
              }
             },
             "encrypted":true
            }
           }
          ]
         }
        },
        "UID template message with validity period and with SMS failover with destination matching":{
         "summary":"UID template message with validity period and with SMS failover with destination matching",
         "value":{
          "messages":[
           {
            "sender":"OFFICIAL-ACCOUNT-ID-XY12Z3",
            "destinations":[
             {
              "to":"1234567890123456789"
             }
            ],
            "content":{
             "templateName":322307,
             "templateData":{
              "customer_name":"John Smith",
              "date":"20/03/2018"
             },
             "type":"TEMPLATE"
            },
            "options":{
             "validityPeriod":{
              "amount":30,
              "timeUnit":"MINUTES"
             },
             "smsFailover":{
              "sender":"41793026726",
              "text":"Failover message text",
              "validityPeriod":{
               "amount":2,
               "timeUnit":"HOURS"
              },
              "destinationMatching":[
               {
                "initial":"1234567890123456789",
                "failover":"41793026727"
               }
              ]
             }
            }
           }
          ]
         }
        },
        "Template message without validity period and without SMS failover and with sending mode":{
         "summary":"Template message without validity period and without SMS failover and with sending mode",
         "value":{
          "messages":[
           {
            "sender":"OFFICIAL-ACCOUNT-ID-XY12Z3",
            "destinations":[
             {
              "to":"41793026727"
             }
            ],
            "content":{
             "templateName":322307,
             "templateData":{
              "customer_name":"John Smith",
              "date":"20/03/2018"
             },
             "type":"TEMPLATE"
            },
            "options":{
             "sendingMode":"AUTO"
            }
           }
          ]
         }
        },
        "Text message to user":{
         "summary":"Text message to user",
         "value":{
          "messages":[
           {
            "sender":"OFFICIAL-ACCOUNT-ID-XY12Z3",
            "destinations":[
             {
              "to":"1234567890123456789"
             }
            ],
            "content":{
             "text":"Hello! Thank you for following our Official Account.",
             "type":"TEXT"
            }
           }
          ]
         }
        },
        "Image message to user":{
         "summary":"Image message to user",
         "value":{
          "messages":[
           {
            "sender":"OFFICIAL-ACCOUNT-ID-XY12Z3",
            "destinations":[
             {
              "to":"1234567890123456789"
             }
            ],
            "content":{
             "caption":"Check out our latest promotion!",
             "url":"https://example.com/promotion.png",
             "type":"IMAGE"
            }
           }
          ]
         }
        },
        "GIF message to user":{
         "summary":"GIF message to user",
         "value":{
          "messages":[
           {
            "sender":"OFFICIAL-ACCOUNT-ID-XY12Z3",
            "destinations":[
             {
              "to":"1234567890123456789"
             }
            ],
            "content":{
             "caption":"Enjoy this animation!",
             "url":"https://example.com/animation.gif",
             "width":400,
             "height":300,
             "type":"GIF"
            }
           }
          ]
         }
        },
        "Sticker message to user":{
         "summary":"Sticker message to user",
         "value":{
          "messages":[
           {
            "sender":"OFFICIAL-ACCOUNT-ID-XY12Z3",
            "destinations":[
             {
              "to":"1234567890123456789"
             }
            ],
            "content":{
             "id":"e1540df031b5deb81a4",
             "type":"STICKER"
            }
           }
          ]
         }
        },
        "Quote consultation message to user":{
         "summary":"Quote consultation message to user",
         "value":{
          "messages":[
           {
            "sender":"OFFICIAL-ACCOUNT-ID-XY12Z3",
            "destinations":[
             {
              "to":"1234567890123456789"
             }
            ],
            "content":{
             "text":"We are open Monday to Friday, 9am to 6pm.",
             "quoteMessageId":"85f7bfaf11b4dfed86a2",
             "type":"QUOTE_CONSULTATION"
            }
           }
          ]
         }
        },
        "User information request form to user":{
         "summary":"User information request form to user",
         "value":{
          "messages":[
           {
            "sender":"OFFICIAL-ACCOUNT-ID-XY12Z3",
            "destinations":[
             {
              "to":"1234567890123456789"
             }
            ],
            "content":{
             "title":"Please share your contact details",
             "subtitle":"We'll use this to send you personalized offers",
             "imageUrl":"https://example.com/form-banner.png",
             "type":"USER_INFORMATION_REQUEST_FORM"
            }
           }
          ]
         }
        },
        "File message to user":{
         "summary":"File message to user",
         "value":{
          "messages":[
           {
            "sender":"OFFICIAL-ACCOUNT-ID-XY12Z3",
            "destinations":[
             {
              "to":"1234567890123456789"
             }
            ],
            "content":{
             "url":"https://example.com/invoice.pdf",
             "type":"FILE"
            }
           }
          ]
         }
        },
        "Reaction to user message":{
         "summary":"Reaction to user message",
         "value":{
          "messages":[
           {
            "sender":"OFFICIAL-ACCOUNT-ID-XY12Z3",
            "destinations":[
             {
              "to":"1234567890123456789"
             }
            ],
            "content":{
             "reactIcon":"HEART",
             "reactMessageId":"d2e222a71207d35e8a11",
             "type":"REACTION"
            }
           }
          ]
         }
        }
       }
      }
     },
     "required":true
    },
    "responses":{
     "200":{
      "description":"OK",
      "content":{
       "application/json":{
        "schema":{
         "$ref":"#/components/schemas/6a8bbdacebad88e7e0de8bdfd30e29e04d114b9f00175a0482b9e26b742d85d5.ResponseEnvelopeMessageResponseMessageResponseDetails"
        },
        "examples":{
         "Successful response":{
          "summary":"Successful response",
          "value":{
           "bulkId":"a28dd97c-2222-4fcf-99f1-0b557ed381da",
           "messages":[
            {
             "messageId":"a28dd97c-1ffb-4fcf-99f1-0b557ed381da",
             "status":{
              "groupId":1,
              "groupName":"PENDING",
              "id":7,
              "name":"PENDING_ENROUTE",
              "description":"Message sent to next instance"
             },
             "destination":"41793026727"
            }
           ]
          }
         }
        }
       }
      }
     },
     "400":{
      "description":"Bad Request",
      "content":{
       "application/json":{
        "schema":{
         "$ref":"#/components/schemas/ApiError"
        },
        "examples":{
         "Bad request":{
          "summary":"Bad request",
          "value":{
           "errorCode":"E400",
           "description":"Request cannot be processed.",
           "action":"Check the syntax, violations and adjust the request.",
           "violations":[
            {
             "property":"property.path",
             "violation":"Violation message."
            }
           ],
           "resources":[]
          }
         }
        }
       }
      }
     },
     "401":{
      "$ref":"#/components/responses/ApiError401"
     },
     "403":{
      "$ref":"#/components/responses/ApiError403"
     },
     "500":{
      "$ref":"#/components/responses/ApiError500"
     }
    },
    "security":[
     {
      "IBSSOTokenHeader":[]
     },
     {
      "APIKeyHeader":[]
     },
     {
      "Basic":[]
     },
     {
      "OAuth2":[]
     }
    ],
    "x-scopes":[
     "message:send",
     "zalo:message:send",
     "zalo:manage"
    ]
   }
  },
  "/zalo/1/logs":{
   "get":{
    "tags":[
     "channels",
     "zalo",
     "zalo-message-status-reports"
    ],
    "summary":"Get Zalo logs",
    "description":"You should use this method for displaying logs in the user interface or for some other less frequent usage.",
    "operationId":"get-zalo-logs",
    "parameters":[
     {
      "name":"from",
      "in":"query",
      "description":"Message sender.",
      "required":false,
      "style":"form",
      "explode":true,
      "schema":{
       "type":"string",
       "description":"Message sender."
      }
     },
     {
      "name":"to",
      "in":"query",
      "description":"Message destination.",
      "required":false,
      "style":"form",
      "explode":true,
      "schema":{
       "type":"string",
       "description":"Message destination."
      }
     },
     {
      "name":"messageId",
      "in":"query",
      "description":"List of message IDs (separated by comma) for which logs are requested.",
      "required":false,
      "style":"form",
      "explode":true,
      "schema":{
       "type":"array",
       "description":"List of message IDs (separated by comma) for which logs are requested.",
       "example":"1,2,3",
       "items":{
        "type":"string",
        "description":"List of message IDs (separated by comma) for which logs are requested.",
        "example":"1,2,3"
       }
      }
     },
     {
      "name":"generalStatus",
      "in":"query",
      "description":"Sent Message status.",
      "required":false,
      "style":"form",
      "explode":true,
      "schema":{
       "$ref":"#/components/schemas/6a8bbdacebad88e7e0de8bdfd30e29e04d114b9f00175a0482b9e26b742d85d5.IpCoreGeneralStatus"
      }
     },
     {
      "name":"sentSince",
      "in":"query",
      "description":"Lower limit on date and time of sending message. Has the following format: `yyyy-MM-dd'T'HH:mm:ss.SSSZ`.",
      "required":false,
      "style":"form",
      "explode":true,
      "schema":{
       "type":"string",
       "format":"date-time",
       "description":"Lower limit on date and time of sending message. Has the following format: `yyyy-MM-dd'T'HH:mm:ss.SSSZ`."
      }
     },
     {
      "name":"sentUntil",
      "in":"query",
      "description":"Upper limit on date and time of sending message. Has the following format: `yyyy-MM-dd'T'HH:mm:ss.SSSZ`.",
      "required":false,
      "style":"form",
      "explode":true,
      "schema":{
       "type":"string",
       "format":"date-time",
       "description":"Upper limit on date and time of sending message. Has the following format: `yyyy-MM-dd'T'HH:mm:ss.SSSZ`."
      }
     },
     {
      "name":"limit",
      "in":"query",
      "description":"Maximal number of messages in returned logs. If you want to fetch more than 1000 logs you can retrieve them in pages using `sentSince` and `sentUntil` parameters.",
      "required":false,
      "style":"form",
      "explode":true,
      "schema":{
       "type":"integer",
       "format":"int32",
       "default":50,
       "description":"Maximal number of messages in returned logs. If you want to fetch more than 1000 logs you can retrieve them in pages using `sentSince` and `sentUntil` parameters.",
       "maximum":1000,
       "minimum":1
      }
     }
    ],
    "responses":{
     "200":{
      "description":"Logs for given criteria are being fetched.",
      "content":{
       "application/json":{
        "schema":{
         "$ref":"#/components/schemas/6a8bbdacebad88e7e0de8bdfd30e29e04d114b9f00175a0482b9e26b742d85d5.LogsResponse"
        }
       }
      }
     },
     "400":{
      "description":"Bad Request.",
      "content":{
       "application/json":{
        "schema":{
         "$ref":"#/components/schemas/e2e56e613b621c92a292daf20c76b6dbff0520ca1b47769205b02fa7192a30b4.ApiException"
        },
        "examples":{
         "Bad request":{
          "summary":"Bad request",
          "value":{
           "requestError":{
            "serviceException":{
             "messageId":"BAD_REQUEST",
             "text":"Bad request"
            }
           }
          }
         }
        }
       }
      }
     },
     "401":{
      "$ref":"#/components/responses/ApiException401"
     },
     "403":{
      "$ref":"#/components/responses/ApiException403"
     },
     "429":{
      "$ref":"#/components/responses/ApiException429"
     },
     "500":{
      "$ref":"#/components/responses/ApiException500"
     }
    },
    "security":[
     {
      "IBSSOTokenHeader":[]
     },
     {
      "APIKeyHeader":[]
     },
     {
      "Basic":[]
     },
     {
      "OAuth2":[]
     }
    ],
    "x-scopes":[
     "zalo:logs:read",
     "zalo:manage"
    ],
    "x-throttling-info":[
     {
      "type":"time",
      "numberOfRequests":10,
      "numberOfTimeUnits":0,
      "timeUnit":"m"
     }
    ]
   }
  },
  "/zalo/1/sender/{sender}/templates":{
   "get":{
    "tags":[
     "channels",
     "zalo",
     "zalo-service-management",
     "zalo-template-management"
    ],
    "summary":"Get Zalo templates",
    "description":"Returns all templates for a given sender filtered by status.",
    "operationId":"get-zalo-templates",
    "parameters":[
     {
      "name":"sender",
      "in":"path",
      "description":"Sender ID.",
      "required":true,
      "style":"simple",
      "explode":false,
      "schema":{
       "type":"integer",
       "format":"int64",
       "description":"Sender ID."
      }
     },
     {
      "name":"page",
      "in":"query",
      "description":"Results page to retrieve (0..N).",
      "required":false,
      "style":"form",
      "explode":true,
      "schema":{
       "type":"integer",
       "format":"int32",
       "default":0
      }
     },
     {
      "name":"size",
      "in":"query",
      "description":"Number of records per page.",
      "required":false,
      "style":"form",
      "explode":true,
      "schema":{
       "type":"integer",
       "format":"int32",
       "default":100,
       "maximum":100,
       "minimum":1
      }
     },
     {
      "name":"status",
      "in":"query",
      "description":"Filter templates by status. Use ALL to return all templates regardless of status. Defaults to ENABLE.",
      "required":false,
      "style":"form",
      "explode":true,
      "schema":{
       "$ref":"#/components/schemas/6a8bbdacebad88e7e0de8bdfd30e29e04d114b9f00175a0482b9e26b742d85d5.TemplateStatus"
      }
     }
    ],
    "responses":{
     "200":{
      "description":"OK",
      "content":{
       "application/json":{
        "schema":{
         "$ref":"#/components/schemas/6a8bbdacebad88e7e0de8bdfd30e29e04d114b9f00175a0482b9e26b742d85d5.PageTemplate"
        },
        "examples":{
         "Successful response":{
          "summary":"Successful response",
          "value":{
           "results":[
            {
             "templateName":900025,
             "displayName":"Template_1",
             "status":"PENDING_REVIEW",
             "createdTime":"2022-12-31T23:59:59.000+0000"
            },
            {
             "templateName":900026,
             "displayName":"Template_2",
             "status":"ENABLE",
             "createdTime":"2023-01-01T08:19:59.000+0000"
            }
           ],
           "paging":{
            "page":0,
            "size":2,
            "totalPages":1,
            "totalResults":2
           }
          }
         }
        }
       }
      }
     },
     "400":{
      "description":"Bad Request",
      "content":{
       "application/json":{
        "schema":{
         "$ref":"#/components/schemas/ApiError"
        },
        "examples":{
         "Bad request":{
          "summary":"Bad request",
          "value":{
           "errorCode":"E400",
           "description":"Request cannot be processed.",
           "action":"Check the syntax, violations and adjust the request.",
           "violations":[
            {
             "property":"property.path",
             "violation":"Violation message."
            }
           ],
           "resources":[]
          }
         }
        }
       }
      }
     },
     "401":{
      "$ref":"#/components/responses/ApiError401"
     },
     "403":{
      "$ref":"#/components/responses/ApiError403"
     },
     "404":{
      "description":"Not Found",
      "content":{
       "application/json":{
        "schema":{
         "$ref":"#/components/schemas/ApiError"
        }
       }
      }
     },
     "429":{
      "$ref":"#/components/responses/ApiError429"
     },
     "500":{
      "$ref":"#/components/responses/ApiError500"
     },
     "502":{
      "description":"Bad Gateway",
      "content":{
       "application/json":{
        "schema":{
         "$ref":"#/components/schemas/ApiError"
        }
       }
      }
     }
    },
    "security":[
     {
      "IBSSOTokenHeader":[]
     },
     {
      "APIKeyHeader":[]
     },
     {
      "Basic":[]
     },
     {
      "OAuth2":[]
     }
    ],
    "x-scopes":[
     "message:send",
     "zalo:message:send",
     "zalo:manage"
    ],
    "x-is-early-access":true,
    "x-throttling-info":[
     {
      "type":"time",
      "numberOfRequests":10,
      "numberOfTimeUnits":0,
      "timeUnit":"s"
     }
    ]
   }
  },
  "/zalo/1/sender/{sender}/templates/{templateName}":{
   "get":{
    "tags":[
     "channels",
     "zalo",
     "zalo-service-management",
     "zalo-template-management"
    ],
    "summary":"Get Zalo template",
    "description":"Returns template's info for given template name.",
    "operationId":"get-zalo-template",
    "parameters":[
     {
      "name":"sender",
      "in":"path",
      "description":"Sender ID.",
      "required":true,
      "style":"simple",
      "explode":false,
      "schema":{
       "type":"integer",
       "format":"int64",
       "description":"Sender ID."
      }
     },
     {
      "name":"templateName",
      "in":"path",
      "description":"Name identifying the template. Must be the same as registered template_id.",
      "required":true,
      "style":"simple",
      "explode":false,
      "schema":{
       "type":"integer",
       "format":"int64",
       "description":"Name identifying the template. Must be the same as registered template_id."
      }
     }
    ],
    "responses":{
     "200":{
      "description":"OK",
      "content":{
       "*/*":{
        "schema":{
         "$ref":"#/components/schemas/6a8bbdacebad88e7e0de8bdfd30e29e04d114b9f00175a0482b9e26b742d85d5.TemplateInfo"
        }
       }
      }
     },
     "400":{
      "description":"Bad Request",
      "content":{
       "application/json":{
        "schema":{
         "$ref":"#/components/schemas/ApiError"
        },
        "examples":{
         "Bad request":{
          "summary":"Bad request",
          "value":{
           "errorCode":"E400",
           "description":"Request cannot be processed.",
           "action":"Check the syntax, violations and adjust the request.",
           "violations":[
            {
             "property":"property.path",
             "violation":"Violation message."
            }
           ],
           "resources":[]
          }
         }
        }
       }
      }
     },
     "401":{
      "$ref":"#/components/responses/ApiError401"
     },
     "403":{
      "$ref":"#/components/responses/ApiError403"
     },
     "404":{
      "description":"Not Found",
      "content":{
       "application/json":{
        "schema":{
         "$ref":"#/components/schemas/ApiError"
        }
       }
      }
     },
     "429":{
      "$ref":"#/components/responses/ApiError429"
     },
     "500":{
      "$ref":"#/components/responses/ApiError500"
     },
     "502":{
      "description":"Bad Gateway",
      "content":{
       "application/json":{
        "schema":{
         "$ref":"#/components/schemas/ApiError"
        },
        "examples":{
         "Zalo API error":{
          "summary":"Zalo API error",
          "value":{
           "errorCode":"ZALO-RSA502",
           "description":"Zalo API responded with an error.",
           "action":"Try again later. If the error persists, contact Infobip support.",
           "violations":[],
           "resources":[
            {
             "name":"Get Zalo quota API endpoint documentation",
             "url":"https://www.infobip.com/docs/api/get-zalo-quota"
            },
            {
             "name":"Get Zalo template API endpoint documentation",
             "url":"https://www.infobip.com/docs/api/get-zalo-template"
            },
            {
             "name":"Get Zalo templates API endpoint documentation",
             "url":"https://www.infobip.com/docs/api/get-zalo-templates"
            }
           ]
          }
         }
        }
       }
      }
     }
    },
    "security":[
     {
      "IBSSOTokenHeader":[]
     },
     {
      "APIKeyHeader":[]
     },
     {
      "Basic":[]
     },
     {
      "OAuth2":[]
     }
    ],
    "x-scopes":[
     "message:send",
     "zalo:message:send",
     "zalo:manage"
    ],
    "x-is-early-access":true,
    "x-throttling-info":[
     {
      "type":"time",
      "numberOfRequests":10,
      "numberOfTimeUnits":0,
      "timeUnit":"s"
     }
    ]
   }
  },
  "/zalo/2/sender/{sender}/templates":{
   "put":{
    "tags":[
     "channels",
     "zalo",
     "zalo-service-management",
     "zalo-template-management"
    ],
    "summary":"Edit Zalo template",
    "description":"Edits an existing template that has REJECTED status. The template will be resubmitted for review.",
    "operationId":"edit-zalo-template",
    "parameters":[
     {
      "name":"sender",
      "in":"path",
      "description":"Sender ID.",
      "required":true,
      "style":"simple",
      "explode":false,
      "schema":{
       "type":"integer",
       "format":"int64",
       "description":"Sender ID."
      }
     }
    ],
    "requestBody":{
     "content":{
      "application/json":{
       "schema":{
        "$ref":"#/components/schemas/6a8bbdacebad88e7e0de8bdfd30e29e04d114b9f00175a0482b9e26b742d85d5.EditTemplateRequest"
       },
       "examples":{
        "Edit custom template":{
         "summary":"Edit custom template",
         "value":{
          "note":"Updated template for shipment notifications",
          "templateContent":{
           "buttons":{
            "items":[
             {
              "content":"https://example.com/tracking",
              "title":"Track Shipment",
              "type":"GO_TO_COMPANY_PAGE"
             }
            ]
           },
           "logo":{
            "dark":{
             "mediaId":"dbuzvadgdaaq9jjam8",
             "type":"IMAGE"
            },
            "light":{
             "mediaId":"dbuzvadgdaaq9jjam8",
             "type":"IMAGE"
            }
           },
           "tag":"TRANSACTION",
           "title":{
            "value":"Order Successfully Shipped"
           },
           "type":"CUSTOM"
          },
          "templateId":900025
         }
        },
        "Edit payment request template":{
         "summary":"Edit payment request template",
         "value":{
          "note":"Updated payment template",
          "templateContent":{
           "buttons":{
            "items":[
             {
              "content":"https://example.com/invoice",
              "title":"View Invoice",
              "type":"GO_TO_COMPANY_PAGE"
             }
            ]
           },
           "logo":{
            "dark":{
             "mediaId":"dbuzvadgdaaq9jjam9",
             "type":"IMAGE"
            },
            "light":{
             "mediaId":"dbuzvadgdaaq9jjam9",
             "type":"IMAGE"
            }
           },
           "payment":{
            "accountName":"John Doe",
            "amount":"200000",
            "bankAccount":"1234567890",
            "bankCode":"970425",
            "note":"Payment received"
           },
           "title":{
            "value":"Payment Confirmation"
           },
           "type":"PAYMENT_REQUEST"
          },
          "templateId":900026
         }
        }
       }
      }
     },
     "required":true
    },
    "responses":{
     "200":{
      "description":"OK",
      "content":{
       "application/json":{
        "schema":{
         "$ref":"#/components/schemas/6a8bbdacebad88e7e0de8bdfd30e29e04d114b9f00175a0482b9e26b742d85d5.EditTemplateResponse"
        },
        "examples":{
         "Template edited successfully":{
          "summary":"Template edited successfully",
          "value":{
           "appId":"1234567890",
           "oaId":"9876543210",
           "previewUrl":"https://example.com/preview/template/900025",
           "status":"PENDING_REVIEW",
           "tag":"TRANSACTION",
           "templateId":"900025",
           "templateName":"Order Successfully Shipped",
           "templateType":"CUSTOM",
           "timeout":86400
          }
         }
        }
       }
      }
     },
     "400":{
      "description":"Bad Request",
      "content":{
       "application/json":{
        "schema":{
         "$ref":"#/components/schemas/ApiError"
 

# --- truncated at 32 KB (176 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/infobip/refs/heads/main/openapi/infobip-zalo-openapi.json