{"openapi":"3.0.3","info":{"title":"Transmit Message API","description":"Transmit APIs","version":"20250101","x-go-package":"github.com/oapi-codegen/runtime"},"servers":[{"url":"https://api.transmitmessage.com"}],"security":[{"ApiKeyAuth":[]}],"tags":[{"name":"MMS","description":"The primary method of sending MMS"},{"name":"SMS","description":"The primary method of sending SMS.\n\nYou can elect to pass us the recipient numbers from your database each time you make an API call.\n\nIn order to send to a local number for a recipient the Sender virtual number needs to be in the same country.\n\nYou can pass us the recipient number in international format and we will deliver your message with the Sender virtual number on your account for the same country.\n\nIf you do not have a Sender virtual number for the same country we will use a local number for the country you are sending to in order to deliver your message.\n\nList of countries we currently deliver to: [Global Delivery List](https://help.kudosity.com/support/solutions/articles/44001077065-global-sms-delivery-list)"},{"name":"Webhook","description":"Our webhooks API allows you to subscribe to events for SMS, MMS, and RCS messages. Using them requires you to have URLs (https) configured on your account that can receive POST requests over the internet.\n\nThe `event_type` field is an enum that specifies which event to subscribe to:\n\n- LINK_HIT\n- OPT_OUT\n- MMS_STATUS\n- MMS_INBOUND\n- SMS_INBOUND\n- SMS_STATUS\n- RCS_STATUS\n \n\nFor status events, the nested `status` field is an enum with these values:\n\n- FAILED: Failed because of an error from the carrier or handset.\n \n- SENT: Submitted to the carrier.\n- ACCEPTED: Accepted by the carrier and delivery may have been attempted (but is not confirmed).\n- DELIVERED: Delivered to handset.\n- SOFT_BOUNCE: Undeliverable due to handset being switched off, out of range or other temporary deliverability issue.\n- HARD_BOUNCE: Handset was disconnected.\n- OTHER: Any other status from the carrier.\n \n\n## Link Hit\n\nThe `LINK_HIT` event is triggered any time a recipient visits a link that is tracked. Track Links is an optional flag on the send message API calls. Along with the URL that was being tracked is a hits field indicating how many visits this tracked link has in total and a source_message which contains the track link sent to the recipient.\n\n###### Example Payloads\n\n```json Hit link in MMS {\n \"event_type\": \"LINK_HIT\",\n \"timestamp\": \"2021-05-06T05:19:42Z\",\n \"link_hit\": {\n \"hits\": 1,\n \"url\": \"https://www.example.com/abc\",\n \"source_message\": {\n \"type\": \"MMS\",\n \"id\": \"b50e4dc1-e57f-459c-a15c-526bee00a4c4\",\n \"message\": \"Hey, Check this out! http://clckme.info/KYhSsuIH Opt-out reply STOP\",\n \"message_ref\": \"D701\",\n \"recipient\": \"61435790000\",\n \"sender\": \"61481074191\",\n \"subject\": \"Hello\",\n \"content_urls\": [\n \"https://res.cloudinary.com/burstsms/image/upload/v1618798563/284KB_qgqtbe.jpg\"\n ]\n }\n }\n} ``` ```json Hit link in SMS {\n \"event_type\": \"LINK_HIT\",\n \"timestamp\": \"2021-07-20T23:14:04Z\",\n \"link_hit\": {\n \"hits\": 1,\n \"url\": \"https://www.example.com/abc\",\n \"source_message\": {\n \"type\": \"SMS\",\n \"id\": \"faf68308-16cd-4cf9-aef7-47342bd405be\",\n \"message\": \"Hey, Check this out! http://clckme.info/KYhSsuIH for Opt-out reply STOP or hit opt out link - http://nsub.me/vqHTcCsh \",\n \"message_ref\": \"D301\",\n \"recipient\": \"61435795809\",\n \"sender\": \"61481074185\"\n }\n }\n} ```\n## Opt Out\n\nThe `OPT_OUT` event is triggered when a recipient has visited an opt-out link in a message they have received or by sending a message with the text \"STOP\".\n\nUsing parameter \\[opt-out-link\\] in message body, inserts the opt-out link.\n\nThe source field will be set according to the method a recipient has used to opt-out and contain a value of either link or SMS.\n \n\n###### Example Payloads\n\n```json Opt out via link {\n \"event_type\": \"OPT_OUT\",\n \"timestamp\": \"2021-05-06T05:16:20Z\",\n \"opt_out\": {\n \"source\": \"LINK_HIT\",\n \"source_message\": {\n \"type\": \"SMS\",\n \"id\": \"a51ebe4e-a412-440e-a8d9-464e68a521cc\",\n \"message\": \"Hey, Check this out! http://clckme.info/KYhSsuIH for Opt-out reply STOP or hit opt out link - http://nsub.me/vqHTcCsh\",\n \"message_ref\": \"ncc5009d\",\n \"recipient\": \"61435790000\",\n \"sender\": \"61481074190\" \n }\n }\n} ``` ```json Opt out via message {\n \"event_type\": \"OPT_OUT\",\n \"timestamp\": \"2021-05-06T05:16:20Z\",\n \"opt_out\": {\n \"source\": \"SMS_INBOUND\",\n \"source_message\": {\n \"type\": \"SMS\",\n \"id\": \"a51ebe4e-a412-440e-a8d9-464e68a521cc\",\n \"message\": \"Hey, Check this out! http://clckme.info/KYhSsuIH for Opt-out reply STOP or hit opt out link - http://nsub.me/vqHTcCsh\",\n \"message_ref\": \"ncc5009d\",\n \"recipient\": \"61435790000\",\n \"sender\": \"61481074190\"\n }\n }\n} ```\n## MMS Status\n\nThe `MMS_STATUS` event data is posted to you for changes to an MMS message status. These are currently only comprised of internal statuses (SENT, FAILED).\n\n###### Example Payload\n\n```json {\n \"event_type\": \"MMS_STATUS\",\n \"timestamp\": \"2021-05-06T05:19:33Z\",\n \"status\": {\n \"type\": \"MMS\",\n \"id\": \"b50e4dc1-e57f-459c-a15c-526bee00a4c4\",\n \"message_ref\": \"D7001\",\n \"recipient\": \"61435790000\",\n \"sender\": \"61481074191\",\n \"status\": \"SENT\"\n }\n} ```\n## SMS Inbound\n\nThe `SMS_INBOUND` event is posted to you on receipt of an SMS sent from a recipient to one of the senders listed on your account. For convenience we will try and find a message that you have sent to this recipient from that sender and supply it as the `last_message` field. This is useful for determining if an inbound message is potentially a reply. The `routed_via` field will display when a shared local number has been used to deliver your message.\n\n###### Example Payload\n\n```json {\n \"event_type\": \"SMS_INBOUND\",\n \"timestamp\": \"2021-05-06T05:16:33Z\",\n \"mo\": {\n \"type\":\"SMS\",\n \"id\": \"alss-2way-605b31c7-d2c49104\",\n \"message\": \"Stop\",\n \"recipient\": \"61481074190\",\n \"routed_via\": \"447507333300\",\n \"sender\": \"447507222200\",\n \"last_message\": {\n \"type\":\"SMS\",\n \"id\": \"a51ebe4e-a412-440e-a8d9-464e68a521cc\", \n \"message\": \"Hey, check this out!\",\n \"message_ref\": \"ncc5009d\",\n \"recipient\": \"447507222200\",\n \"routed_via\": \"447507333300\",\n \"sender\": \"61481074190\"\n }\n }\n} ```\n## SMS Status\n\nThe `SMS_STATUS` event data is posted to you for changes to a SMS message status. Multiple status events can be triggered for a single message.\n\nThe `routed_via` field will display when a shared local number has been used to deliver your message.\n\n###### Example Payload\n\n```json {\n \"event_type\": \"SMS_STATUS\",\n \"timestamp\": \"2021-05-06T05:16:07Z\",\n \"status\": {\n \"type\": \"SMS\",\n \"id\": \"a51ebe4e-a412-440e-a8d9-464e68a521cc\",\n \"message_ref\": \"ncc5009d\",\n \"recipient\": \"447507222200\",\n \"routed_via\": \"447507333300\",\n \"sender\": \"61481074190\",\n \"status\": \"SENT\"\n }\n} ```\n## RCS Status\n\nThe `RCS_STATUS` event data is posted to you for changes to an RCS message status. RCS supports enhanced status tracking including read receipts.\n\nRCS-specific statuses include:\n\n- SENT: Submitted to the carrier.\n- DELIVERED: Delivered to handset.\n- FAILED: Failed because of an error from the carrier or handset.\n- READ: Message was read by the recipient (RCS-specific feature).\n\n###### Example Payload\n\n```json {\n \"event_type\": \"RCS_STATUS\",\n \"timestamp\": \"2025-01-07T05:16:07Z\",\n \"webhook_id\": \"fd0e6485-b905-44c1-bd55-fee1d0d6d864\",\n \"webhook_name\": \"RCS Status Webhook\",\n \"status\": {\n \"type\": \"RCS\",\n \"id\": \"6fdae71c-dad7-4c36-9734-a69693ecf3b4\",\n \"message_ref\": \"order-12345\",\n \"recipient\": \"+447903749662\",\n \"sender\": \"DemoSender\",\n \"status\": \"READ\"\n }\n} ```"}],"paths":{"/v2/whatsapp/messages":{"get":{"tags":["WhatsApp"],"summary":"List WhatsApp messages","description":"Retrieves a list of WhatsApp messages for your account with flexible date filtering.\n\nMessages are returned in reverse chronological order (newest first).\n\n**Date Filtering:**\n- Preset ranges (last_week, last_thirty, last_month): Calculated using your account timezone\n- Custom date ranges: Use RFC3339 timestamps (max 90 days)\n- The 'all' option provides up to 365 days of history\n- All timestamps in responses are returned in UTC format\n\n**Pagination:**\n- Cursor-based pagination for efficient data retrieval\n- Control page size with the limit parameter (1-100 messages per page)\n","security":[{"ApiKeyAuth":[]}],"parameters":[{"name":"date_range","in":"query","description":"Predefined date range filter. Preset ranges use your account timezone to calculate relative dates:\n- 'last_week': Last 7 days from midnight in your account timezone\n- 'last_thirty': Last 30 days from midnight in your account timezone\n- 'last_month': Previous calendar month in your account timezone\n- 'all': All dates (limited to last 365 days) - default\n- 'custom_date': Use start_date and end_date parameters with explicit RFC3339 timestamps\n","schema":{"type":"string","enum":["last_week","last_thirty","last_month","all","custom_date"],"default":"all","x-go-type-skip-optional-pointer":true},"example":"all"},{"name":"start_date","in":"query","description":"Start date for custom date range in RFC3339 format (e.g., 2025-08-26T10:30:00Z).\nRequired when date_range is 'custom_date'.\nMust be before end_date.\n","schema":{"type":"string","x-go-type-skip-optional-pointer":true},"example":"2025-12-01T00:00:00Z"},{"name":"end_date","in":"query","description":"End date for custom date range in RFC3339 format (e.g., 2025-08-26T23:59:59Z).\nRequired when date_range is 'custom_date'.\nMust be after start_date.\nThe range between start_date and end_date cannot exceed 90 days.\n","schema":{"type":"string","x-go-type-skip-optional-pointer":true},"example":"2025-12-31T23:59:59Z"},{"name":"limit","in":"query","required":false,"description":"Maximum number of messages to return per page (1-100, default 25).","schema":{"type":"integer","format":"int32","minimum":1,"maximum":100,"default":25,"x-go-type-skip-optional-pointer":true},"example":25},{"name":"cursor","in":"query","required":false,"description":"Pagination cursor returned from a previous request.\nPass the next_cursor or prev_cursor value from a previous response\nto fetch the next or previous page of results. Omit for the first page.\n","schema":{"type":"string","x-go-type-skip-optional-pointer":true},"example":"MTIzNDU2"},{"name":"direction","in":"query","description":"Pagination direction when using a cursor:\n- 'next': Get older messages (default, moves forward through history)\n- 'prev': Get newer messages (moves backward through history)\n","schema":{"type":"string","enum":["next","prev"],"default":"next","x-go-type-skip-optional-pointer":true},"example":"next"},{"name":"campaign_id","in":"query","required":false,"description":"Restrict results to messages belonging to a single campaign (UUID).\nOmit to return messages across all campaigns.\n","schema":{"type":"string","format":"uuid","x-go-type":"string","x-go-type-skip-optional-pointer":true},"example":"9b2e4c1a-7f3d-4a8b-9c5e-2d1f6a8b3c4d"}],"responses":{"200":{"$ref":"#/components/responses/ListWhatsappMessagesSuccessResponse"},"400":{"$ref":"#/components/responses/InputValidationResponse"},"401":{"$ref":"#/components/responses/UnauthorizedErrorResponse"},"500":{"$ref":"#/components/responses/InternalServerErrorResponse"}}},"post":{"tags":["WhatsApp"],"summary":"Send WhatsApp message","description":"Sends a single templated message to a single recipient. Templates need to be registered and pre-approved by WhatsApp.","security":[{"ApiKeyAuth":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/WhatsappRequest"}}}},"responses":{"200":{"$ref":"#/components/responses/SuccessResponse"},"400":{"$ref":"#/components/responses/InputValidationResponse"},"429":{"$ref":"#/components/responses/TooManyRequestsErrorResponse"},"500":{"$ref":"#/components/responses/InternalServerErrorResponse"}}}},"/v2/whatsapp/messages/{id}":{"get":{"tags":["WhatsApp"],"summary":"Get WhatsApp message","description":"Retrieves details of a previously sent WhatsApp message by its unique identifier.\nReturns message content, delivery status, and metadata.\n","security":[{"ApiKeyAuth":[]}],"parameters":[{"name":"id","in":"path","required":true,"description":"Unique identifier of the WhatsApp message to retrieve","schema":{"type":"string","format":"uuid","example":"550e8400-e29b-41d4-a716-446655440000"}}],"responses":{"200":{"$ref":"#/components/responses/GetWhatsappSuccessResponse"},"401":{"$ref":"#/components/responses/UnauthorizedErrorResponse"},"404":{"$ref":"#/components/responses/NotFoundErrorResponse"},"500":{"$ref":"#/components/responses/InternalServerErrorResponse"}}}},"/v2/rcs/messages":{"get":{"tags":["RCS"],"summary":"List RCS messages","description":"Retrieves a list of RCS messages for your account with flexible date filtering.\n\nMessages are returned in reverse chronological order (newest first).\n\n**Date Filtering:**\n- Preset ranges (last_week, last_thirty, last_month): Calculated using your account timezone\n- Custom date ranges: Use RFC3339 timestamps (max 90 days)\n- The 'all' option provides up to 365 days of history\n- All timestamps in responses are returned in UTC format\n\n**Pagination:**\n- Cursor-based pagination for efficient data retrieval\n- Control page size with the limit parameter (1-100 messages per page)\n","security":[{"ApiKeyAuth":[]}],"parameters":[{"name":"date_range","in":"query","description":"Predefined date range filter. Preset ranges use your account timezone to calculate relative dates:\n- 'last_week': Last 7 days from midnight in your account timezone\n- 'last_thirty': Last 30 days from midnight in your account timezone\n- 'last_month': Previous calendar month in your account timezone\n- 'all': All dates (limited to last 365 days) - default\n- 'custom_date': Use start_date and end_date parameters with explicit RFC3339 timestamps\n","schema":{"type":"string","enum":["last_week","last_thirty","last_month","all","custom_date"],"default":"all","x-go-type-skip-optional-pointer":true},"example":"all"},{"name":"start_date","in":"query","description":"Start date for custom date range in RFC3339 format (e.g., 2025-08-26T10:30:00Z).\nRequired when date_range is 'custom_date'.\nMust be before end_date.\n","schema":{"type":"string","x-go-type-skip-optional-pointer":true},"example":"2025-12-01T00:00:00Z"},{"name":"end_date","in":"query","description":"End date for custom date range in RFC3339 format (e.g., 2025-08-26T23:59:59Z).\nRequired when date_range is 'custom_date'.\nMust be after start_date.\nThe range between start_date and end_date cannot exceed 90 days.\n","schema":{"type":"string","x-go-type-skip-optional-pointer":true},"example":"2025-12-31T23:59:59Z"},{"name":"limit","in":"query","required":false,"description":"Maximum number of messages to return per page (1-100, default 25).","schema":{"type":"integer","format":"int32","minimum":1,"maximum":100,"default":25,"x-go-type-skip-optional-pointer":true},"example":25},{"name":"cursor","in":"query","required":false,"description":"Pagination cursor returned from a previous request.\nPass the next_cursor or prev_cursor value from a previous response\nto fetch the next or previous page of results. Omit for the first page.\n","schema":{"type":"string","x-go-type-skip-optional-pointer":true},"example":"MTIzNDU2"},{"name":"direction","in":"query","description":"Pagination direction when using a cursor:\n- 'next': Get older messages (default, moves forward through history)\n- 'prev': Get newer messages (moves backward through history)\n","schema":{"type":"string","enum":["next","prev"],"default":"next","x-go-type-skip-optional-pointer":true},"example":"next"}],"responses":{"200":{"$ref":"#/components/responses/ListRcsMessagesSuccessResponse"},"400":{"$ref":"#/components/responses/InputValidationResponse"},"401":{"$ref":"#/components/responses/UnauthorizedErrorResponse"},"500":{"$ref":"#/components/responses/InternalServerErrorResponse"}}},"post":{"tags":["RCS"],"summary":"Send RCS message","description":"This endpoint is in beta and may change in future versions.\nSends an RCS message to a single recipient.\n","security":[{"ApiKeyAuth":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RcsRequest"}}}},"responses":{"200":{"$ref":"#/components/responses/RCSSuccessResponse"},"400":{"$ref":"#/components/responses/InputValidationResponse"},"401":{"$ref":"#/components/responses/UnauthorizedErrorResponse"},"500":{"$ref":"#/components/responses/InternalServerErrorResponse"}}}},"/v2/rcs/capabilities":{"post":{"tags":["RCS"],"summary":"Check RCS capability for phone numbers","description":"Synchronously checks whether a list of phone numbers can receive RCS from your sender.\n\nUse this **before** sending to decide between RCS and SMS fallback. Designed for routing-time lookups: small batches (1–10 numbers recommended for best latency), immediate response.\n\nResults are best-effort and reflect capability at the moment of the lookup. **Do not use this as a hard gate** on sending — treat `UNKNOWN` as reachable and rely on SMS fallback for hard delivery guarantees.\n","security":[{"ApiKeyAuth":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RcsCapabilityCheckRequest"}}}},"responses":{"200":{"$ref":"#/components/responses/RcsCapabilityCheckSuccessResponse"},"400":{"$ref":"#/components/responses/InputValidationResponse"},"401":{"$ref":"#/components/responses/UnauthorizedErrorResponse"},"403":{"$ref":"#/components/responses/ForbiddenErrorResponse"},"429":{"$ref":"#/components/responses/TooManyRequestsErrorResponse"},"500":{"$ref":"#/components/responses/InternalServerErrorResponse"}}}},"/v2/rcs/messages/{id}":{"get":{"tags":["RCS"],"summary":"Get RCS message","description":"Retrieves details of a previously sent RCS message by its unique identifier.\nReturns message content, delivery status, and metadata.\n","security":[{"ApiKeyAuth":[]}],"parameters":[{"name":"id","in":"path","required":true,"description":"Unique identifier of the RCS message to retrieve","schema":{"type":"string","format":"uuid","example":"550e8400-e29b-41d4-a716-446655440000"}}],"responses":{"200":{"$ref":"#/components/responses/GetSuccessResponse"},"401":{"$ref":"#/components/responses/UnauthorizedErrorResponse"},"404":{"$ref":"#/components/responses/NotFoundErrorResponse"},"500":{"$ref":"#/components/responses/InternalServerErrorResponse"}}}},"/v2/sms/{id}":{"get":{"tags":["SMS"],"summary":"Get SMS","description":"Retrieves information about an existing SMS message. You only need to supply the unique message id that was returned upon message creation.","security":[{"ApiKeyAuth":[]}],"parameters":[{"name":"id","in":"path","description":"Unique ID of the sent SMS","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"A single SMS message","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SMSResponse"}}}},"404":{"description":"SMS not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","example":"SMS not found"}}}}}}}}},"/v2/sms":{"get":{"tags":["SMS"],"summary":"List SMS","description":"Retrieves a list of SMS messages. You can limit the number of messages returned and filter by properties listed in the parameters section.","security":[{"ApiKeyAuth":[]}],"parameters":[{"name":"query","in":"query","description":"Filter query parameters are added to the URL. Use as:\n?limit=1&page=2&start_date=2024-01-01T00:00:00Z\n","schema":{"$ref":"#/components/schemas/ListSMSRequest"}}],"responses":{"200":{"description":"A list of SMS messages","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListSMSResponse"}}}}}},"post":{"tags":["SMS"],"summary":"Send SMS","description":"Send a message from sender to recipient using the values shown in the parameters section.","security":[{"ApiKeyAuth":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SendSMSRequest"}}}},"responses":{"200":{"description":"The SMS that was sent","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SMSResponse"}}}}}}},"/v2/mms":{"post":{"tags":["MMS"],"summary":"Send MMS","description":"The Send MMS endpoint allows you to send multimedia messages (MMS) to recipients. ","security":[{"ApiKeyAuth":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/MMSSendRequest"}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MMSResponse"},"example":{"id":"6fdae71c-dad7-4c36-9734-a69693ec2318","recipient":"61435795809","sender":"61481074185","country":"AU","subject":"USS Enterprise","message":"Check out this amazing specimen.","message_ref":"ncc1701d","content_urls":["http://res.cloudinary.com/burstsms/image/upload/v1590111670/enterprise-d_ghf9t8.jpg"],"status":"pending","track_links":true,"created_at":"2022-03-29T04:42:01.631708761Z","updated_at":"2022-03-29T04:42:01.631708761Z"}}}}}}},"/v2/mms/{id}":{"get":{"tags":["MMS"],"summary":"Get MMS","description":"This request retrieves the information of an existing sent MMS message. You only need to supply the unique message id that was returned upon creation.","security":[{"ApiKeyAuth":[]}],"parameters":[{"name":"id","in":"path","required":true,"description":"Unique ID of the sent MMS","schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"A single MMS message","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MMSResponse"},"example":{"id":"6fdae71c-dad7-4c36-9734-a69693ec2318","recipient":"61435795809","sender":"61481074185","country":"AU","subject":"USS Enterprise","message":"Check out this amazing specimen.","message_ref":"ncc1701d","content_urls":["http://res.cloudinary.com/burstsms/image/upload/v1590111670/enterprise-d_ghf9t8.jpg"],"status":"sent","track_links":true,"created_at":"2022-03-29T04:42:01.631708Z","updated_at":"2022-03-29T04:42:01.776094Z"}}}},"400":{"description":"Invalid MMS ID","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","example":"invalid MMS ID"}}}}}},"404":{"description":"MMS not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","example":"MMS not found"}}}}}}}}},"/v2/webhook":{"post":{"tags":["Webhook"],"summary":"Create Webhook","security":[{"ApiKeyAuth":[]}],"description":"We use webhooks to let your application know when events happen, such as receiving an SMS message. When the event occurs, the system makes an HTTP request (usually a POST) to the URL you configured for the webhook. The request will include details of the event such as the incoming phone number or the body of an incoming message.","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/WebhookRequest"}}}},"responses":{"201":{"description":"Webhook created successfully","content":{"application/json":{"schema":{"$ref":"#/components/schemas/WebhookResponse"}}}},"400":{"description":"Validation error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","example":"Validation Error: rate_limit: greater than the maximum value of 10000"}}}}}}}},"get":{"tags":["Webhook"],"summary":"Retrieve all webhooks","security":[{"ApiKeyAuth":[]}],"responses":{"200":{"description":"A list of webhooks","content":{"application/json":{"schema":{"$ref":"#/components/schemas/WebhookListResponse"}}}}}}},"/v2/webhook/{id}":{"get":{"tags":["Webhook"],"summary":"Get a webhook by ID","security":[{"ApiKeyAuth":[]}],"parameters":[{"name":"id","in":"path","description":"Unique ID of the webhook","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"A single webhook","content":{"application/json":{"schema":{"$ref":"#/components/schemas/WebhookResponse"}}}},"404":{"description":"Webhook not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","example":"Webhook not found"}}}}}}}},"put":{"tags":["Webhook"],"summary":"Update Webhook","description":"Updates the webhook. Any fields not provided in the request body will reset to their default values.","security":[{"ApiKeyAuth":[]}],"parameters":[{"name":"id","in":"path","description":"Unique identifier for the webhook","required":true,"schema":{"type":"string","format":"uuid"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/WebhookRequest"}}}},"responses":{"200":{"description":"Webhook updated successfully","content":{"application/json":{"schema":{"$ref":"#/components/schemas/WebhookResponse"}}}},"400":{"description":"Validation error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","example":"Validation Error: event_type: required"}}}}}}}},"delete":{"tags":["Webhook"],"summary":"Delete Webhook","parameters":[{"name":"id","in":"path","schema":{"type":"string","format":"uuid"},"required":true,"description":"Unique ID of the webhook"}],"responses":{"200":{"description":"Webhook deletion confirmation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/WebhookDeleteResponse"}}}},"400":{"description":"Invalid webhook ID","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","example":"invalid webhook ID"}}}}}},"404":{"description":"Webhook not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","example":"Webhook not found"}}}}}}}}},"/v2/senders/registrations":{"get":{"tags":["Senders"],"summary":"List sender registrations","security":[{"ApiKeyAuth":[]}],"description":"Returns a paginated list of sender registrations for the authenticated account.\n\n - If the account does not use parent/child accounts, the API returns registrations for the authenticated account.\n - If the account is a parent account, the API returns registrations for the parent account and all child accounts.\n","parameters":[{"name":"page","in":"query","required":false,"description":"Page number to return (1-based). Default 1.","schema":{"type":"integer","minimum":1,"default":1,"x-go-type-skip-optional-pointer":true},"example":1},{"name":"limit","in":"query","required":false,"description":"Maximum number of results per page. Default 25, maximum 100.","schema":{"type":"integer","minimum":1,"maximum":100,"default":25,"x-go-type-skip-optional-pointer":true},"example":25},{"name":"child_account_id","in":"query","required":false,"description":"Filter registrations by child account ID. Returns only registrations belonging to the specified child account.","schema":{"type":"string","x-go-type-skip-optional-pointer":true},"example":"1234"},{"name":"sender","in":"query","required":false,"description":"Filter registrations by sender phone number in E.164 format (e.g., 61412312312).","schema":{"type":"string","x-go-type-skip-optional-pointer":true},"example":"61412312312"},{"name":"status","in":"query","required":false,"description":"Filter registrations by status. Accepts one or more comma-separated values. Valid values: PENDING_APPROVAL, VERIFIED, REJECTED, CANCELLED.\n","schema":{"type":"string","x-go-type-skip-optional-pointer":true},"example":"VERIFIED"}],"responses":{"200":{"$ref":"#/components/responses/ListSenderRegistrationsSuccessResponse"},"400":{"$ref":"#/components/responses/InputValidationResponse"},"401":{"$ref":"#/components/responses/UnauthorizedErrorResponse"},"500":{"$ref":"#/components/responses/InternalServerErrorResponse"}}},"post":{"tags":["Senders"],"summary":"Create a sender registration","security":[{"ApiKeyAuth":[]}],"description":"Creates a sender registration and sets `status` to `PENDING_APPROVAL`.\n\n - If the account does not use parent/child accounts, the API ignores `child_account_id` and registers the sender for the authenticated account.\n - If the account is a parent account and you omit `child_account_id`, the API registers the sender for the parent account.\n - If you provide `child_account_id`, the API registers the sender for that child account.\n - If a registration for the same sender was already created within the last 30 minutes (for the same account or child account), the API returns `429 Too Many Requests`. This prevents abuse of the verification retry limit.\n - Any existing `PENDING_APPROVAL` registration for the same sender (for the same account or child account) is automatically cancelled before the new one is created.\n","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SenderRegistrationRequest"},"example":{"sender":"61412312312","country":"AU","type":"PERSONAL_MOBILE_NUMBER","child_account_id":"1234"}}}},"responses":{"201":{"$ref":"#/components/responses/SenderRegistrationSuccessResponse"},"400":{"$ref":"#/components/responses/InputValidationResponse"},"401":{"$ref":"#/components/responses/UnauthorizedErrorResponse"},"409":{"$ref":"#/components/responses/ConflictErrorResponse"},"429":{"$ref":"#/components/responses/TooManyRequestsErrorResponse"},"500":{"$ref":"#/components/responses/InternalServerErrorResponse"}}}},"/v2/senders/phone-numbers/{phone_number}":{"delete":{"tags":["Senders"],"summary":"Delete a sender by phone number","security":[{"ApiKeyAuth":[]}],"description":"Deletes a sender phone number from the account.\n\n - If the account does not use parent/child accounts, the API ignores `child_account_id` and deletes the sender from the authenticated account.\n - If the account is a parent account and you omit `child_account_id`, the API deletes the sender from the parent account.\n - If you provide `child_account_id`, the API deletes the sender from that child account.\n","parameters":[{"name":"phone_number","in":"path","required":true,"description":"The phone number to delete in E.164 international format, for example 61412312312.","schema":{"type":"string"},"example":"61412312312"},{"name":"child_account_id","in":"query","required":false,"description":"Child account ID to delete the sender from. Ignored for accounts without parent/child accounts. If omitted for a parent account, the API deletes the sender from the parent account.","schema":{"type":"string"},"example":"456"}],"responses":{"204":{"$ref":"#/components/responses/SenderDeleteNoContentResponse"},"400":{"$ref":"#/components/responses/InputValidationResponse"},"401":{"$ref":"#/components/responses/UnauthorizedErrorResponse"},"404":{"$ref":"#/components/responses/NotFoundErrorResponse"},"500":{"$ref":"#/components/responses/InternalServerErrorResponse"}}}},"/v2/senders/registrations/{registration_id}/verifications":{"post":{"tags":["Senders"],"summary":"Request a verification code","security":[{"ApiKeyAuth":[]}],"description":"Requests a verification code for a sender registration. This endpoint supports registrations with `type` = `PERSONAL_MOBILE_NUMBER` only.\n\n - The API delivers the code to the registered sender number using the selected `method`, such as `SMS`.\n - Codes expire after 30 minutes.\n - You have a maximum of 5 attempts to confirm the code.\n","parameters":[{"name":"registration_id","in":"path","required":true,"description":"Unique identifier for the sender registration.","schema":{"type":"string","format":"uuid"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VerificationRequest"},"example":{"method":"SMS","originating_sender":"61400000000"}}}},"responses":{"201":{"$ref":"#/components/responses/VerificationSuccessResponse"},"400":{"$ref":"#/components/responses/InputValidationResponse"},"401":{"$ref":"#/components/responses/UnauthorizedErrorResponse"},"404":{"$ref":"#/components/responses/NotFoundErrorResponse"},"409":{"description":"A verification already exists for this registration. Create a new sender registration to request a new code.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/CommonErrorResponse"},{"type":"object","properties":{"error":{"$ref":"#/components/schemas/ConflictProblem"}}}]},"example":{"error":{"detail":"a verification code has already been sent for this registration; wait 30 minutes and create a new sender registration to request a new code","status":409,"title":"Conflict","type":"https://developers.kudosity.com/reference/errors#conflict"}}}}},"500":{"$ref":"#/components/responses/InternalServerErrorResponse"}}}},"/v2/senders/registrations/{registration_id}/verifications/confirmation":{"post":{"tags":["Senders"],"summary":"Confirm a verification code","security":[{"ApiKeyAuth":[]}],"description":"Confirms a sender registration by submitting the verification code.\nOn success, the verification `status` becomes `CONFIRMED` and the sender registration `status` becomes `VERIFIED`.\nIf you exceed the allowed attempts, the verification becomes `FAILED`. Request a new verification code to try again.\n","parameters":[{"name":"registration_id","in":"path","required":true,"description":"Unique identifier of the sender registration.","schema":{"type":"string","format":"uuid"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VerificationConfirmRequest"},"example":{"code":"123456"}}}},"responses":{"200":{"$ref":"#/components/responses/VerificationConfirmationSuccessResponse"},"400":{"$ref":"#/components/responses/VerificationConfirmationInputValidationResponse"},"401":{"$ref":"#/components/responses/UnauthorizedErrorResponse"},"404":{"$ref":"#/components/responses/NotFoundErrorResponse"},"409":{"$ref":"#/components/responses/ConflictErrorResponse"},"429":{"$ref":"#/components/responses/TooManyRequestsErrorResponse"},"500":{"$ref":"#/components/responses/InternalServerErrorResponse"}}}}},"components":{"schemas":{"CampaignAudienceSourceType":{"type":"string","description":"The type of audience source.\n- `contact_list` — an audience sourced from a saved contact list\n","enum":["contact_list"],"x-enum-varnames":["ContactList"]},"CampaignContactListSource":{"type":"object","description":"An audience source backed by a saved contact list.","required":["id"],"properties":{"id":{"type":"string","description":"The unique identifier of the contact list.","example":"123456","x-oapi-codegen-extra-tags":{"valid":"required"}}}},"CampaignAudienceSource":{"type":"object","description":"A single source contributing contacts to the campaign audience.","required":["source_type","source"],"properties":{"source_type":{"$ref":"#/components/schemas/CampaignAudienceSourceType"},"source":{"type":"object","description":"The audience source details. Populate the field matching `source_type`:\n- `contact_list` when `source_type` is `contact_list`\n","properties":{"contact_list":{"$ref":"#/components/schemas/CampaignContactListSource"}}}}},"CampaignAudience":{"type":"object","description":"Defines the set of contacts who will receive campaign messages.","required":["include"],"properties":{"include":{"type":"array","description":"Exactly one audience source whose contacts are included in the campaign.\nOnly a single contact list is supported in v1; requests with multiple sources will be rejected.\n","minItems":1,"maxItems":1,"items":{"$ref":"#/components/schemas/CampaignAudienceSource"}}}},"CampaignWhatsappTemplateContent":{"type":"object","description":"A pre-approved WhatsApp message template.","required":["name"],"properties":{"name":{"type":"string","description":"The name of the WhatsApp message template configured in your Kudosity account.\nThe template must be registered and approved in your account before sending.\n","example":"june_sale_2026","x-oapi-codegen-extra-tags":{"valid":"required"}},"variable_mappings":{"type":"array","description":"Maps the template's dynamic BODY variables to contact fields. Required when the\ntemplate's BODY component has variables (must match them exactly, no extras or\nmissing); omit for fully static templates. Variables in the header, buttons, or\ncarousel are not supported and are rejected.\n","items":{"$ref":"#/components/schemas/CampaignWhatsAppTemplateVariableMapping"}}}},"CampaignWhatsAppTemplateVariableMapping":{"type":"object","description":"Maps a single template variable placeholder to a contact field. Only\n`component: \"body\"` is supported currently; header/button/carousel variables are\nrejected.\n","required":["component","parameter","source"],"properties":{"component":{"type":"string","description":"The template component the variable belongs to. Only `\"body\"` is supported\nfor this ticket.\n","enum":["body"],"example":"body"},"parameter":{"type":"string","description":"The variable placeholder identifier as written in the template's own body\ntext: `\"1\"` for `{{1}}` (positional), or `\"name\"` for `{{name}}` (named).\n","example":"1"},"source":{"$ref":"#/components/schemas/CampaignWhatsAppTemplateVariableSource"}}},"CampaignWhatsAppTemplateVariableSource":{"type":"object","description":"Where the substituted value comes from.","required":["type","value"],"properties":{"type":{"type":"string","description":"Only `\"contact_list\"` is supported currently.","enum":["contact_list"],"x-enum-varnames":["ContactListSource"],"example":"contact_list"},"value":{"type":"string","description":"A system contact field key (`first_name`, `last_name`, `mobile`) or a\ncustom field key.\n","example":"first_name"}}},"CampaignWhatsAppChannelType":{"type":"string","description":"The WhatsApp messaging channel identifier.","enum":["WHATSAPP"]},"CampaignWhatsAppChannelContentType":{"type":"string","description":"The type of content to send via WhatsApp.\n- `template` — a WhatsApp message template configured in your Kudosity account\n","enum":["template"]},"CampaignChannelBase":{"type":"object","description":"Common properties shared by all channel configurations.","required":["channel","sender","content_type","content"],"properties":{"channel":{"type":"string","description":"The messaging channel (e.g. `WHATSAPP`)."},"sender":{"type":"string","description":"The sender ID or phone number registered on the channel.","x-oapi-codegen-extra-tags":{"valid":"required"}},"content_type":{"type":"string","description":"The type of content being sent. Determines which field inside `content` is used."},"content":{"type":"object","description":"The message content. The relevant field is determined by `content_type`."}}},"CampaignChannel":{"description":"Configuration for a single messaging channel used in the campaign.\nThe `channel` field determines which schema applies:\n- `channel: WHATSAPP` — WhatsApp template message\n","oneOf":[{"$ref":"#/components/schemas/CampaignWhatsAppChannel"}],"discriminator":{"propertyName":"channel","mapping":{"WHATSAPP":"#/components/schemas/CampaignWhatsAppChannel"}}},"CampaignWhatsAppChannel":{"allOf":[{"$ref":"#/components/schemas/CampaignChannelBase"},{"type":"object","description":"A WhatsApp channel. Sends template messages configured in your Kudosity account.","properties":{"channel":{"$ref":"#/components/schemas/CampaignWhatsAppChannelType"},"sender":{"type":"string","description":"The phone number registered as a sender in your Kudosity account.\nUse E.164 international format (e.g. `61438000000` for an Australian number).\n","example":"61438000000"},"content_type":{"$ref":"#/components/schemas/CampaignWhatsAppChannelContentType"},"content":{"type":"object","description":"The message content. Populate the field matching `content_type`:\n- `template` when `content_type` is `template`\n","properties":{"template":{"$ref":"#/components/schemas/CampaignWhatsappTemplateContent"}}}}}]},"CampaignSendMethod":{"type":"string","description":"Controls when campaign messages are sent.\n- `IMMEDIATE` — messages are sent as soon as the campaign is accepted\n","enum":["IMMEDIATE"]},"CampaignSendStrategy":{"type":"object","description":"Defines when and how campaign messages are sent.","required":["method_type"],"properties":{"method_type":{"$ref":"#/components/schemas/CampaignSendMethod"}}},"CampaignStatus":{"type":"string","description":"Current lifecycle status of the campaign.\n- `PENDING` — received and awaiting processing\n- `RUNNING` — actively sending messages to recipients\n- `COMPLETED` — all messages have been dispatched\n- `FAILED` — the campaign could not be sent\n- `CANCELLED` — the campaign was cancelled before sending\n","enum":["PENDING","RUNNING","COMPLETED","FAILED","CANCELLED"]},"CampaignResponse":{"type":"object","description":"A campaign resource returned after creation.","required":["id","name","status","audience","channels","send_strategy","created_at"],"properties":{"id":{"type":"string","description":"The unique identifier of the campaign.","example":"a1b2c3d4-e5f6-7890-abcd-ef1234567890"},"name":{"type":"string","description":"The name of the campaign.","example":"June Sale"},"status":{"$ref":"#/components/schemas/CampaignStatus"},"audience":{"$ref":"#/components/schemas/CampaignAudience"},"channels":{"type":"array","description":"Channel configurations for the campaign.","items":{"$ref":"#/components/schemas/CampaignChannel"}},"send_strategy":{"$ref":"#/components/schemas/CampaignSendStrategy"},"created_at":{"type":"string","format":"date-time","description":"Timestamp in RFC3339 format when the campaign was created.","example":"2026-06-16T10:00:00Z"}}},"CommonResponseMeta":{"type":"object","properties":{"request":{"type":"object","description":"Optional metadata (e.g. requestId, traceId)"},"meta":{"type":"object","description":"Optional pagination, feature flags, etc."}}},"CommonSuccessResponse":{"allOf":[{"type":"object","properties":{"data":{"type":"object","description":"Success response payload"}},"required":["data"]},{"$ref":"#/components/schemas/CommonResponseMeta"}]},"Uri":{"type":"string","description":"string providing an URI formatted according to IETF RFC 3986.","format":"uri"},"ProblemDetails":{"description":"A Problem Details object (RFC 9457).\n\nAdditional properties specific to the problem type may be present.\n","type":"object","properties":{"type":{"$ref":"#/components/schemas/Uri"},"title":{"type":"string","description":"A short summary of the problem type. Written in English and readable for engineers (usually not suited for non technical stakeholders and not localized)."},"detail":{"type":"string","description":"A human-readable explanation specific to this occurrence of the problem"},"status":{"type":"integer","description":"The HTTP status code corresponding to this error."}},"required":["type","title","detail","status"],"example":{"type":"https://developers.kudosity.com/reference/errors","title":"Description of the type of problem that occurred","detail":"Description of specific occurrence of the problem","status":400}},"CommonErrorResponse":{"allOf":[{"type":"object","properties":{"error":{"$ref":"#/components/schemas/ProblemDetails"}},"required":["error"]},{"$ref":"#/components/schemas/CommonResponseMeta"}]},"InputValidationIssue":{"type":"object","description":"An issue detected during input validation.\n","properties":{"name":{"type":"string","description":"The name of the param or field that failed validation.","x-go-type-skip-optional-pointer":true},"code":{"type":"integer","description":"The internal api specific error code.","x-go-type-skip-optional-pointer":true},"message":{"description":"The error message","type":"string","x-go-type-skip-optional-pointer":true}}},"InputValidationProblem":{"description":"This problem occurs when the request is deemed unprocessable.\n\nYour client issued a request that failed validation. Certain validation libraries return multi-errors and cannot be easily parsed into discreet types. This problem type, afforded the provider with the ability to surface all validation errors and negate the need for a trial and error workflow on your side.\n","type":"object","allOf":[{"$ref":"#/components/schemas/ProblemDetails"},{"properties":{"issues":{"description":"An array of issues detected during input validation.","type":"array","x-go-type-skip-optional-pointer":true,"items":{"$ref":"#/components/schemas/InputValidationIssue"}}}}],"example":{"type":"https://developers.kudosity.com/reference/errors#input-validation","title":"Invalid Request","detail":"Request validation failed","status":400,"issues":[{"name":"field_name","message":"field_name is required"}]}},"UnauthorizedProblem":{"description":"HTTP 401 Unauthorized - API authentication failed.\n\nThe request was rejected because the API key is missing, invalid, expired, or lacks sufficient permissions for this resource. Check your Authorization header and API key configuration.\n","type":"object","allOf":[{"$ref":"#/components/schemas/ProblemDetails"}],"example":{"type":"https://developers.kudosity.com/reference/errors#unauthorized","title":"API Authentication Failed","detail":"Missing or invalid API key in Authorization header. Verify your API key is correct and has the required permissions","status":401}},"ConflictProblem":{"description":"HTTP 409 Conflict - The request conflicts with the current state of the resource.\n\nYour client application attempted an operation that conflicts with an existing resource or an operation already in progress. Review the current state of the resource before retrying.\n","type":"object","allOf":[{"$ref":"#/components/schemas/ProblemDetails"}],"example":{"type":"https://developers.kudosity.com/reference/errors#conflict","title":"Conflict","detail":"The request conflicts with the current state of the resource","status":409}},"InternalServerErrorProblem":{"description":"This problem occurs when the server encounters an unexpected condition that prevents it from fulfilling the request.\n\nYour client application did everything correct. Unfortunately our API encountered a condition that resulted in this problem.\n","type":"object","allOf":[{"$ref":"#/components/schemas/ProblemDetails"}],"example":{"type":"https://developers.kudosity.com/reference/errors#server-error","title":"Server Error","detail":"The server encountered an unexpected error","status":500}},"WhatsappContentType":{"type":"string","description":"Type of the message content.","enum":["text","template","custom"]},"Text":{"type":"object","description":"Text content for the message.","properties":{"message":{"type":"string","minLength":1,"description":"The text message body."}},"required":["message"]},"Template":{"type":"object","description":"Template details for the message content.","properties":{"name":{"type":"string","description":"The **exact name** of the WhatsApp template.\n\n- **Format:** Lowercase, alphanumeric, underscores only.\n- **Example:** `order_confirmation`\n- **Must be pre-approved** in your WhatsApp Business account.\n"},"parameters":{"type":"array","description":"The **dynamic values** to populate placeholdes in the template message.\n\n- The number of parameters **must match** the template placeholders.\n- Supports **text only** (strings). Other types (e.g., images, documents) are not allowed.\n- **Example Usage:**\n - Template: `\"Hello, {1}! Your order {2} has been shipped.\"`\n - Parameters: `[\"Tony\", \"#12345\"]`\n - Final message: `\"Hello, Tony! Your order #12345 has been shipped.\"`\n","items":{"type":"string"}},"locale":{"type":"string","x-go-type-skip-optional-pointer":true,"description":"Optional locale for the template (e.g., en_US), if not provided, the default locale is `en`."}},"required":["name"]},"TextContent":{"type":"object","properties":{"text":{"$ref":"#/components/schemas/Text"}},"required":["text"]},"TemplateContent":{"type":"object","properties":{"template":{"$ref":"#/components/schemas/Template"}},"required":["template"]},"Custom":{"type":"object","description":"Custom content following the Meta Cloud API guidelines.","additionalProperties":true},"CustomContent":{"type":"object","properties":{"custom":{"$ref":"#/components/schemas/Custom"}},"required":["custom"]},"SMSFallback":{"type":"object","description":"SMS fallback message details.","properties":{"sender":{"type":"string","description":"The sender number to use for SMS fallback, which can be in [E.164](http://en.wikipedia.org/wiki/E.164) international format or an alphanumeric sender ID.","x-go-type-skip-optional-pointer":true},"message":{"type":"string","description":"The message to send via SMS."}},"required":["message"]},"WhatsappRequest":{"type":"object","properties":{"sender":{"type":"string","x-go-type-skip-optional-pointer":true,"description":"Registered WhatsApp sender number.\n\n- Must be in **international format** following the [E.164 standard](http://en.wikipedia.org/wiki/E.164) (e.g., +14155238886).\n- Number must be registered with the WhatsApp Business API.\n- **Optional.** When omitted, the account's sender is used automatically. Accounts with multiple senders must specify one.\n"},"recipient":{"type":"string","format":"phone","description":"Recipient phone number in international format.\n\n- Must follow **E.164 format** (e.g., `+14155238886` for a US number).\n- No spaces, dashes, or special characters.\n- The recipient must **have an active WhatsApp account**.\n- Ensure the recipient **has opted in** to receive WhatsApp messages.\n"},"content_type":{"$ref":"#/components/schemas/WhatsappContentType"},"content":{"type":"object","description":"The message content to be sent.\n\n- Must follow the WhastApp-approved **template format** or be a **custom object** following the Meta Cloud API guidelines.\n- **Example JSON (Text Content):**\n ```json\n {\n \"text\": {\n \"message\": \"hello, world!\",\n }\n }\n ```\n- **Example JSON (Template Content):**\n ```json\n {\n \"template\": {\n \"name\": \"order_update\",\n \"parameters\": [\"123456\"]\n }\n }\n ```\n- **Example JSON (Custom Content):**\n ```json\n {\n \"custom\": {\n \"type\": \"template\",\n \"template\": {\n \"name\": \"template_img_simple_1\",\n \"language\": {\n \"code\": \"en\",\n \"policy\": \"deterministic\"\n },\n \"components\": [\n {\n \"type\": \"HEADER\",\n \"parameters\": [\n {\n \"type\": \"image\",\n \"image\": {\n \"link\": \"https://image-test.jpg\"\n }\n }\n ]\n }\n ]\n }\n }\n }\n ```\n","oneOf":[{"$ref":"#/components/schemas/TextContent"},{"$ref":"#/components/schemas/TemplateContent"},{"$ref":"#/components/schemas/CustomContent"}]},"sms_fallback":{"$ref":"#/components/schemas/SMSFallback"},"message_ref":{"type":"string","x-go-type-skip-optional-pointer":true,"description":"A unique reference ID supplied by your system to track messages.\n\n- **Maximum Length:** 500 characters.\n- This `message_ref` will be included in webhook events, allowing you to correlate sent messages with received events.\n\n**Example Usage:**\n - Sending a message with `message_ref: \"order-12345\"`\n - Receiving a delivery webhook containing `message_ref: \"order-12345\"`, confirming it was delivered.\n"}},"required":["recipient","content_type","content"],"example":{"sender":"14155238886","recipient":"61411122211","content_type":"template","content":{"template":{"name":"welcome_new_customer","parameters":["Joe"]}},"message_ref":"optional-ref-123"}},"WhatsappResponse":{"type":"object","properties":{"id":{"type":"string","description":"Unique identifier for the message."},"message_ref":{"type":"string","x-go-type-skip-optional-pointer":true,"description":"Optional reference ID set by the user for the message."},"sender":{"type":"string","format":"phone","description":"Registered WhatsApp sender number in international format."},"recipient":{"type":"string","format":"phone","description":"WhatsApp recipient phone number in international format."},"content_type":{"$ref":"#/components/schemas/WhatsappContentType"},"content":{"type":"object","description":"Content details for the message.","oneOf":[{"$ref":"#/components/schemas/TextContent"},{"$ref":"#/components/schemas/TemplateContent"},{"$ref":"#/components/schemas/CustomContent"}]},"sms_fallback":{"$ref":"#/components/schemas/SMSFallback"},"created_at":{"type":"string","format":"date-time","description":"Timestamp in RFC3339 format (e.g., 2025-08-26T10:30:00Z) when the message was created on the server."}},"required":["id","sender","recipient","content_type","content","created_at"],"example":{"id":"6fdae71c-dad7-4c36-9734-a69693ecf3b4","message_ref":"optional-ref-123","sender":"14155238886","recipient":"61411122211","content_type":"template","content":{"template":{"name":"welcome_new_customer","parameters":["Joe"]}},"created_at":"2021-01-01T00:00:00Z"}},"WhatsappMessageStatus":{"type":"string","description":"Current status of a WhatsApp message.","enum":["QUEUED","SENT","DELIVERED","READ","FAILED"]},"WhatsappMessageEvent":{"type":"object","description":"Lifecycle event for a WhatsApp message.","properties":{"event_type":{"type":"string","description":"Type of event that occurred.","enum":["SENT","DELIVERED","READ","FAILED"]},"created_at":{"type":"string","format":"date-time","description":"Timestamp in RFC3339 format (e.g., 2025-08-26T10:30:00Z) when the event occurred."},"details":{"type":"string","description":"Description of the event."}},"required":["event_type","created_at","details"],"example":{"event_type":"DELIVERED","created_at":"2024-01-15T14:31:42Z","details":"Message delivered to recipient device"}},"WhatsappGetResponse":{"type":"object","properties":{"id":{"type":"string","description":"Unique identifier for the message."},"account_id":{"type":"string","description":"Account identifier that sent the message."},"message_ref":{"type":"string","x-go-type-skip-optional-pointer":true,"description":"Optional reference ID set by the user for the message."},"campaign_id":{"type":"string","x-go-type-skip-optional-pointer":true,"description":"UUID of the campaign that produced this message.\nOmitted when the message is not associated with a campaign.\n"},"sender":{"type":"string","format":"phone","description":"Registered WhatsApp sender number in international format."},"recipient":{"type":"string","format":"phone","description":"WhatsApp recipient phone number in international format."},"content_type":{"$ref":"#/components/schemas/WhatsappContentType"},"content":{"type":"object","description":"Content details for the message.","oneOf":[{"$ref":"#/components/schemas/TextContent"},{"$ref":"#/components/schemas/TemplateContent"},{"$ref":"#/components/schemas/CustomContent"}]},"sms_fallback":{"$ref":"#/components/schemas/SMSFallback"},"created_at":{"type":"string","format":"date-time","description":"Timestamp in RFC3339 format (e.g., 2025-08-26T10:30:00Z) when the message was created on the server."},"status":{"$ref":"#/components/schemas/WhatsappMessageStatus"},"events":{"type":"array","x-go-type-skip-optional-pointer":true,"x-oapi-codegen-extra-tags":{"json":"events,omitempty"},"description":"Array of events showing the message history.","items":{"$ref":"#/components/schemas/WhatsappMessageEvent"}}},"required":["id","account_id","sender","recipient","content_type","content","created_at","status"],"example":{"id":"6fdae71c-dad7-4c36-9734-a69693ecf3b4","account_id":"123123","message_ref":"optional-ref-123","campaign_id":"9b2e4c1a-7f3d-4a8b-9c5e-2d1f6a8b3c4d","sender":"14155238886","recipient":"61411122211","content_type":"template","content":{"template":{"name":"welcome_new_customer","parameters":["Joe"]}},"sms_fallback":{"message":"Welcome Joe! Your account is now active."},"created_at":"2021-01-01T00:00:00Z","status":"DELIVERED","events":[{"event_type":"SENT","created_at":"2021-01-01T00:00:30Z","details":"Message sent to WhatsApp gateway"},{"event_type":"DELIVERED","created_at":"2021-01-01T00:01:15Z","details":"Message delivered to recipient device"}]}},"WhatsappStatsResponse":{"type":"object","properties":{"start_at":{"type":"string","format":"date-time","description":"Start date for statistics period in RFC3339 format (e.g., 2025-08-26T10:30:00Z)."},"end_at":{"type":"string","format":"date-time","description":"End date for statistics period in RFC3339 format (e.g., 2025-08-26T23:59:59Z)."},"totals":{"type":"object","description":"Aggregated totals for WhatsApp messages.","properties":{"sent":{"type":"integer","description":"Total number of messages sent."},"delivered":{"type":"integer","description":"Total number of messages successfully delivered."},"failed":{"type":"integer","description":"Total number of messages that failed to deliver."},"read":{"type":"integer","description":"Total number of messages read by recipients."}},"required":["sent","delivered","failed","read"]}},"required":["totals","start_at","end_at"],"example":{"start_at":"2025-01-01T00:00:00Z","end_at":"2025-01-01T01:00:00Z","totals":{"sent":10,"delivered":9,"failed":1,"read":8}}},"WhatsappListMessageItem":{"type":"object","description":"Summary representation of a WhatsApp message for list responses.","properties":{"id":{"type":"string","description":"Unique identifier for the message."},"message_ref":{"type":"string","x-go-type-skip-optional-pointer":true,"description":"Optional reference ID set by the user for the message."},"campaign_id":{"type":"string","x-go-type-skip-optional-pointer":true,"description":"UUID of the campaign that produced this message.\nOmitted when the message is not associated with a campaign.\n"},"sender":{"type":"string","format":"phone","description":"Registered WhatsApp sender number in international format."},"recipient":{"type":"string","format":"phone","description":"WhatsApp recipient phone number in international format."},"content_type":{"$ref":"#/components/schemas/WhatsappContentType"},"content":{"type":"object","description":"Content details for the message.","oneOf":[{"$ref":"#/components/schemas/TextContent"},{"$ref":"#/components/schemas/TemplateContent"},{"$ref":"#/components/schemas/CustomContent"}]},"status":{"$ref":"#/components/schemas/WhatsappMessageStatus"},"created_at":{"type":"string","format":"date-time","description":"Timestamp in RFC3339 format (e.g., 2025-08-26T10:30:00Z) when the message was created on the server."}},"required":["id","sender","recipient","content_type","content","status","created_at"],"example":{"id":"6fdae71c-dad7-4c36-9734-a69693ecf3b4","message_ref":"optional-ref-123","sender":"14155238886","recipient":"61411122211","content_type":"template","content":{"template":{"name":"welcome_new_customer","parameters":["Joe"]}},"status":"DELIVERED","created_at":"2021-01-01T00:00:00Z","campaign_id":"9b2e4c1a-7f3d-4a8b-9c5e-2d1f6a8b3c4d"}},"WhatsappListMessagesData":{"type":"object","description":"Container for the list of WhatsApp messages.","properties":{"messages":{"type":"array","description":"Array of WhatsApp messages.","items":{"$ref":"#/components/schemas/WhatsappListMessageItem"}}},"required":["messages"]},"WhatsappListMessagesMeta":{"type":"object","description":"Metadata for the list messages response including pagination details.","properties":{"pagination":{"$ref":"#/components/schemas/PaginationMeta"}},"required":["pagination"]},"PaginationMeta":{"title":"Pagination Metadata","description":"Pagination metadata for cursor-based pagination.\nReusable across all paginated API endpoints.\n","type":"object","required":["type","has_next","has_prev"],"properties":{"type":{"type":"string","description":"The pagination strategy being used.","enum":["cursor"],"example":"cursor","x-oapi-codegen-extra-tags":{"valid":"required"}},"next_cursor":{"type":"string","description":"Cursor to fetch the next page of results. Omitted if there are no more results.","nullable":true,"example":"MTIzNDU2","x-oapi-codegen-extra-tags":{"json":"next_cursor,omitempty"}},"prev_cursor":{"type":"string","description":"Cursor to fetch the previous page of results. Omitted if on the first page.","nullable":true,"example":"MTIzNDkw","x-oapi-codegen-extra-tags":{"json":"prev_cursor,omitempty"}},"has_next":{"type":"boolean","description":"Indicates whether there are more results available after the current page.","example":true,"x-oapi-codegen-extra-tags":{"valid":"required"}},"has_prev":{"type":"boolean","description":"Indicates whether there are results available before the current page.","example":false,"x-oapi-codegen-extra-tags":{"valid":"required"}}}},"TooManyRequestsProblem":{"description":"HTTP 429 Too Many Requests - Rate limit exceeded.\n\nYour client application has sent too many requests in a given amount of time and should retry later.\n","type":"object","allOf":[{"$ref":"#/components/schemas/ProblemDetails"}],"example":{"type":"https://developers.kudosity.com/reference/errors#too-many-requests","title":"Too Many Requests","detail":"Rate limit exceeded","status":429}},"NotFoundProblem":{"description":"This problem occurs when the requested resource could not be found.\n\nYour client application tried to access a resource that does not exist (or could not be found). Please review how your users initiated such a request.\n","type":"object","allOf":[{"$ref":"#/components/schemas/ProblemDetails"}],"example":{"type":"https://developers.kudosity.com/reference/errors#not-found","title":"Not Found","detail":"The requested resource was not found","status":404}},"RcsContentType":{"type":"string","description":"Type of the message content.","enum":["text"]},"RcsMessageStatus":{"type":"string","description":"Current status of an RCS message.","enum":["QUEUED","SENT","DELIVERED","READ","FAILED"]},"RCSText":{"type":"object","description":"Text content for the message.","properties":{"message":{"type":"string","minLength":1,"maxLength":3072,"description":"The text message body.\n\n**Message Types:**\n- **Basic RCS Messages**: Up to 160 characters (SMS format in RCS)\n- **Simple RCS Messages**: Up to 3072 characters with emoji and UTF-8 support\n"}},"required":["message"]},"RCSTextContent":{"type":"object","properties":{"text":{"$ref":"#/components/schemas/RCSText"}},"required":["text"]},"RCSSMSFallback":{"type":"object","description":"Provides intelligent fallback for non-RCS capable devices and carrier delivery issues. If the RCS message fails, the SMS will send the configured message to the recipient instead.\n","properties":{"sender":{"type":"string","description":"The sender number to use for SMS fallback, which can be in [E.164](http://en.wikipedia.org/wiki/E.164) international format or an alphanumeric sender ID.","x-go-type-skip-optional-pointer":true},"message":{"type":"string","description":"The message to send through SMS. SMS messages are subject to certain character limitations, please read our SMS documentation for details."}},"required":["message"]},"RCSMessageEvent":{"type":"object","description":"Lifecycle event for an RCS message.","properties":{"event_type":{"type":"string","description":"Type of event: one of `SENT`, `DELIVERED`, `READ`, `FAILED`.","enum":["SENT","DELIVERED","READ","FAILED"]},"created_at":{"type":"string","format":"date-time","description":"Timestamp in RFC3339 format (e.g., 2025-08-26T10:30:00Z) when the event occurred."},"details":{"type":"string","description":"Description of the event."}},"required":["event_type","created_at","details"],"example":{"event_type":"DELIVERED","created_at":"2024-01-15T14:31:42Z","details":"Message delivered to recipient device"}},"RcsRequest":{"type":"object","properties":{"sender":{"type":"string","description":"The RCS agent ID assigned to your registered agent.\n\nUnlike SMS, WhatsApp, and MMS, RCS messages do not come from a phone number.\nThey are always sent through an agent.\n\n- Must be a registered RCS agent identifier.\n- Example: `DemoSender`\n- Can be alphanumeric or numeric.\n"},"recipient":{"type":"string","format":"phone","description":"The destination number for delivery.\nCan be either in local format or in international format.\nFor international format, it should follow the [E.164 standard](http://en.wikipedia.org/wiki/E.164).\n\nExamples of conversions to E.164 format:\n- Australia: 0438 333 061 → 61438333061\n- UK: 07123 456 789 → 447123456789\n"},"content_type":{"type":"string","description":"Type of the message content (currently only text supported).","enum":["text"]},"content":{"type":"object","description":"The message content to be sent.\n\n- Supports both Basic RCS messages (160 characters) and Simple RCS messages (3072 characters)\n- UTF-8 and emoji support included\n","oneOf":[{"$ref":"#/components/schemas/RCSTextContent"}]},"sms_fallback":{"$ref":"#/components/schemas/RCSSMSFallback"},"message_ref":{"type":"string","x-go-type-skip-optional-pointer":true,"description":"A reference supplied by your system. Maximum length of 500 characters.\n\nThis reference is included in webhook events so you can relate events with the original message.\n\nFor example, being able to relate a Link Hit event to a specific sent message.\n"}},"required":["sender","recipient","content_type","content"],"example":{"sender":"DemoSender","recipient":"447903749662","content_type":"text","content":{"text":{"message":"Hi Michael,\nJust a quick reminder. You are amazing!!\nReply STOP to opt out."}},"message_ref":"order-12345"}},"RcsResponse":{"type":"object","properties":{"id":{"type":"string","description":"Unique identifier for the message."},"message_ref":{"type":"string","x-go-type-skip-optional-pointer":true,"description":"Optional reference ID set by the user for the message."},"sender":{"type":"string","description":"Registered RCS Agent ID."},"recipient":{"type":"string","description":"Recipient phone number in international format."},"content_type":{"type":"string","description":"Type of the message content.","enum":["text"]},"content":{"type":"object","description":"Content of the message.","oneOf":[{"$ref":"#/components/schemas/RCSTextContent"}]},"sms_fallback":{"$ref":"#/components/schemas/RCSSMSFallback"},"created_at":{"type":"string","format":"date-time","description":"Timestamp in RFC3339 format (e.g., 2025-08-26T10:30:00Z) when the message was created on the server."}},"required":["id","sender","recipient","content_type","content","created_at"],"example":{"id":"6fdae71c-dad7-4c36-9734-a69693ecf3b4","message_ref":"order-12345","sender":"DemoSender","recipient":"447903749662","content_type":"text","content":{"text":{"message":"Hi Michael,\nJust a quick reminder. You are amazing!!\nReply STOP to opt out."}},"created_at":"2021-01-01T00:00:00Z"}},"RcsGetResponse":{"type":"object","properties":{"id":{"type":"string","description":"Unique identifier for the message."},"account_id":{"type":"string","description":"Account identifier that sent the message."},"message_ref":{"type":"string","x-go-type-skip-optional-pointer":true,"description":"Optional reference ID set by the user for the message."},"sender":{"type":"string","description":"Registered RCS Agent ID."},"recipient":{"type":"string","description":"Recipient phone number in international format."},"content_type":{"type":"string","description":"Type of the message content.","enum":["text"]},"content":{"type":"object","description":"Content of the message.","oneOf":[{"$ref":"#/components/schemas/RCSTextContent"}]},"sms_fallback":{"$ref":"#/components/schemas/RCSSMSFallback"},"created_at":{"type":"string","format":"date-time","description":"Timestamp in RFC3339 format (e.g., 2025-08-26T10:30:00Z) when the message was created on the server."},"status":{"$ref":"#/components/schemas/RcsMessageStatus"},"events":{"type":"array","x-go-type-skip-optional-pointer":true,"x-oapi-codegen-extra-tags":{"json":"events,omitempty"},"description":"Array of lifecycle events for the message.","items":{"$ref":"#/components/schemas/RCSMessageEvent"}}},"required":["id","account_id","sender","recipient","content_type","content","created_at","status"],"example":{"id":"6fdae71c-dad7-4c36-9734-a69693ecf3b4","account_id":"123123","message_ref":"order-12345","sender":"DemoSender","recipient":"447903749662","content_type":"text","content":{"text":{"message":"Hi Michael,\nJust a quick reminder. You are amazing!!\nReply STOP to opt out."}},"created_at":"2021-01-01T00:00:00Z","status":"DELIVERED","events":[{"event_type":"SENT","created_at":"2021-01-01T00:00:30Z","details":"Message sent to Google RCS gateway"},{"event_type":"DELIVERED","created_at":"2021-01-01T00:01:15Z","details":"Message delivered to recipient device"}]}},"RcsListMessageItem":{"type":"object","description":"Summary representation of an RCS message for list responses.","properties":{"id":{"type":"string","description":"Unique identifier for the message."},"message_ref":{"type":"string","x-go-type-skip-optional-pointer":true,"description":"Optional reference ID set by the user for the message."},"sender":{"type":"string","description":"Registered RCS Agent ID."},"recipient":{"type":"string","format":"phone","description":"RCS recipient phone number in international format."},"content_type":{"$ref":"#/components/schemas/RcsContentType"},"content":{"type":"object","description":"Content details for the message.","oneOf":[{"$ref":"#/components/schemas/RCSTextContent"}]},"status":{"$ref":"#/components/schemas/RcsMessageStatus"},"created_at":{"type":"string","format":"date-time","description":"Timestamp in RFC3339 format (e.g., 2025-08-26T10:30:00Z) when the message was created on the server."}},"required":["id","sender","recipient","content_type","content","status","created_at"],"example":{"id":"6fdae71c-dad7-4c36-9734-a69693ecf3b4","message_ref":"optional-ref-123","sender":"DemoSender","recipient":"61411122211","content_type":"text","content":{"text":{"message":"Hi Michael, just a quick reminder. You are amazing!"}},"status":"DELIVERED","created_at":"2021-01-01T00:00:00Z"}},"RcsListMessagesData":{"type":"object","description":"Container for the list of RCS messages.","properties":{"messages":{"type":"array","description":"Array of RCS messages.","items":{"$ref":"#/components/schemas/RcsListMessageItem"}}},"required":["messages"]},"RcsListMessagesMeta":{"type":"object","description":"Metadata for the list messages response including pagination details.","properties":{"pagination":{"$ref":"#/components/schemas/PaginationMeta"}},"required":["pagination"]},"RcsStatsResponse":{"type":"object","properties":{"start_at":{"type":"string","format":"date-time","description":"Start date for statistics period in RFC3339 format (e.g., 2025-08-26T10:30:00Z)."},"end_at":{"type":"string","format":"date-time","description":"End date for statistics period in RFC3339 format (e.g., 2025-08-26T23:59:59Z)."},"totals":{"type":"object","description":"Aggregated totals for RCS messages.","properties":{"sent":{"type":"integer","description":"Total number of messages sent."},"delivered":{"type":"integer","description":"Total number of messages successfully delivered."},"failed":{"type":"integer","description":"Total number of messages that failed to deliver."},"read":{"type":"integer","description":"Total number of messages read by recipients."}},"required":["sent","delivered","failed","read"]}},"required":["totals","start_at","end_at"],"example":{"start_at":"2025-01-01T00:00:00Z","end_at":"2025-01-01T01:00:00Z","totals":{"sent":10,"delivered":9,"failed":1,"read":8}}},"RcsCapabilityCheckRequest":{"type":"object","description":"Request payload for the synchronous RCS capability check.","properties":{"sender":{"type":"string","description":"The RCS sender assigned to your account.\n\n- Example: `DemoSender`\n"},"phone_numbers":{"type":"array","description":"Phone numbers to check, in [E.164](http://en.wikipedia.org/wiki/E.164) format without the leading `+`.\n\nFor best latency we recommend batches of 1–10. The endpoint accepts up to 100 numbers per request.\n","minItems":1,"maxItems":100,"items":{"type":"string","format":"phone","example":"61400000000"}}},"required":["sender","phone_numbers"],"example":{"sender":"DemoSender","phone_numbers":["61400000000","61400000001"]}},"RcsCapabilityResult":{"type":"object","description":"RCS capability result for a single phone number.","properties":{"phone_number":{"type":"string","description":"The phone number that was checked, in E.164 format without the leading `+`."},"code":{"type":"string","enum":["ENABLED","UNREACHABLE","REJECTED_NETWORK","REJECTED_ROUTE_NOT_AVAILABLE","REQUEST_FAILED","PROCESSING_ERROR","INVALID_DESTINATION_ADDRESS","UNKNOWN"],"description":"RCS capability for the number.\n\n- `ENABLED` — the number can receive RCS messages from the specified sender.\n- `UNREACHABLE` — the number cannot receive RCS messages from the specified sender.\n- `REJECTED_NETWORK` — message not sent, network not allowed.\n- `REJECTED_ROUTE_NOT_AVAILABLE` — route not available for that sender.\n- `REQUEST_FAILED` — external problems during capability check.\n- `PROCESSING_ERROR` — the results for the number couldn't be processed; the caller should retry.\n- `INVALID_DESTINATION_ADDRESS` — number provided in wrong format.\n- `UNKNOWN` — unknown error from upstream, or any value the API did not otherwise recognise; contact support if it persists.\n"}},"required":["phone_number","code"],"example":{"phone_number":"61400000000","code":"ENABLED"}},"RcsCapabilityCheckData":{"type":"object","description":"Capability check results for the requested phone numbers.","properties":{"results":{"type":"array","description":"One entry per phone number from the request, in the same order.","items":{"$ref":"#/components/schemas/RcsCapabilityResult"}}},"required":["results"]},"ForbiddenProblem":{"description":"HTTP 403 Forbidden - Access to the requested resource is forbidden.\n\nYour client application is authenticated but does not have permission to access this resource.\n","type":"object","allOf":[{"$ref":"#/components/schemas/ProblemDetails"}],"example":{"type":"https://developers.kudosity.com/reference/errors#forbidden","title":"Forbidden","detail":"Access to this resource is forbidden","status":403}},"ListSMSRequest":{"type":"object","properties":{"limit":{"type":"string","description":"Limit the number of SMS. Defaults to 100 for JSON.","x-go-type-skip-optional-pointer":true},"page":{"type":"string","description":"Page number in combination with limit. Defaults to 1 for JSON.","x-go-type-skip-optional-pointer":true},"start_date":{"type":"string","format":"string","description":"Start date for SMS created, in RFC3339 format.","x-go-type-skip-optional-pointer":true},"end_date":{"type":"string","format":"string","description":"End date for SMS created date, in RFC3339 format.","x-go-type-skip-optional-pointer":true},"recipient":{"type":"string","description":"Recipient filter.","x-go-type-skip-optional-pointer":true},"sender":{"type":"string","description":"Sender filter.","x-go-type-skip-optional-pointer":true},"message_ref":{"type":"string","description":"Message reference filter.","x-go-type-skip-optional-pointer":true},"status":{"$ref":"#/components/schemas/Status"},"format":{"$ref":"#/components/schemas/Format"},"recipient_countries":{"type":"array","items":{"type":"string"},"description":"ISO 3166 country codes. https://www.iso.org/iso-3166-country-codes.html"},"direction":{"$ref":"#/components/schemas/Direction"},"order_by":{"type":"array","items":{"$ref":"#/components/schemas/OrderByField"},"description":"Sort order. Default is CREATED_AT_ASC."}}},"Status":{"type":"string","description":"Message status.\n- PENDING: Queued for processing.\n- SENT: Submitted to the provider.\n- FAILED: Failed because of an error from the provider, a carrier, or the handset.\n- DELIVERED: Delivered to handset.\n- ACCEPTED: Accepted by the provider and delivery might have been attempted (but is not confirmed).\n- SOFT_BOUNCE: Undeliverable due to handset being switched off, out of range or other temporary deliverability issue.\n- HARD_BOUNCE: Handset was disconnected.\n- OTHER: Any other DLR status from the provider.\n- REJECTED: Message pending approval was rejected by the Kudosity support team.\n- PENDING_APPROVAL: Message is pending approval by the Kudosity support team.\n- SUBMITTED: Message is submitted to the provider.\n- UNDELIVERABLE: Message is undeliverable.\n- READ: Message is read by the recipient.\n","nullable":true,"enum":["PENDING","SENT","FAILED","DELIVERED","ACCEPTED","SOFT_BOUNCE","HARD_BOUNCE","OTHER","REJECTED","PENDING_APPROVAL","SUBMITTED","UNDELIVERABLE","READ"]},"OrderByField":{"type":"string","description":"Sort order. Default is CREATED_AT_ASC.\n- CREATED_AT_ASC: Created at ascending.\n- CREATED_AT_DESC: Created at descending.\n","enum":["CREATED_AT_ASC","CREATED_AT_DESC"]},"Format":{"type":"string","description":"Response format","nullable":true,"enum":["JSON","CSV"]},"Direction":{"type":"string","description":"Message direction.\n- OUT: Sent to the provider.\n- IN: Sent from the provider.\n","nullable":true,"enum":["OUT","IN"]},"SendSMSRequest":{"type":"object","properties":{"message":{"type":"string","description":"Body text of the message.\nThe message will be split into multiple parts if required. A part is 160 characters for a single SMS or 153 characters per part for multi-part SMS. If the message contains Unicode UTF8 encoded characters such as emoji’s or non latin character sets, then a single part is 70 characters or 67 characters for multiple parts.\n\nMore information on message length and encoding: https://support.transmitsms.com/s/article/44001076957-how-many-characters-can-i-have-in-my-text-message\n\nIf opt-out is required, insert parameter [opt-out-link] into the message and a link will be generated.\n","x-oapi-codegen-extra-tags":{"valid":"required"}},"message_ref":{"type":"string","maxLength":500,"description":"A reference supplied by your system. This reference will be passed back in webhooks so that you can relate events to messages you sent. For example, being able to relate a Link Hit event to a specific sent message.\n","x-go-type-skip-optional-pointer":true,"x-oapi-codegen-extra-tags":{"valid":"length(0|500)"}},"sender":{"type":"string","description":"Sender is the number (or alphanumeric) that the message appears from on the handset.\nSender number must be assigned to your account for the country you are sending to. Contact us to get sender number(s) registered to your account.\nSender number functionality varies by country. You can send from an alphanumeric sender if it is available for the destination country.\nGlobal SMS delivery list: https://support.transmitsms.com/s/article/page-products-connectivity-global-delivery-list\n\nAlphanumeric senders (which cannot be replied to) have a maximum of 11 characters. Only letters, numbers, underscore, hyphen or space are allowed and they are included in the total character count. (Consecutive underscore, hyphen, space is not allowed.)\n","x-oapi-codegen-extra-tags":{"valid":"required"}},"recipient":{"type":"string","description":"The destination number for delivery.\nCan be either in local format or in international format. Must be in the same country as the sender.\nFor international format, it should follow E.164 standard. http://en.wikipedia.org/wiki/E.164\n\nExamples of conversions to E.164 format:\n Australia 0438 333 061 => 61438333061\n New Zealand 0212172782 => 64212172782\n USA (281) 869-1226 => 12818691226\n","x-oapi-codegen-extra-tags":{"valid":"required"}},"track_links":{"type":"boolean","description":"Enable the link tracking feature which replaces links in outbound messages with shortened links. This allows us to track when recipients view links.\n","x-go-type-skip-optional-pointer":true}},"required":["message","sender","recipient"]},"SMSResponse":{"type":"object","description":"SMS message details.","properties":{"id":{"type":"string","description":"Unique identifier for the SMS message.","example":"2d2c8fb6-e514-4f5f-9706-0672b0259218"},"recipient":{"type":"string","description":"The destination number for delivery.","example":"61478038915"},"recipient_country":{"type":"string","description":"Recipient country code.","example":"AU"},"sender":{"type":"string","description":"The sender number.","example":"61481074185"},"sender_country":{"type":"string","description":"Sender country code.","example":"AU"},"message_ref":{"type":"string","description":"Reference supplied by your system.","example":"ncc1701d","x-go-type-skip-optional-pointer":true},"message":{"type":"string","description":"Body text of the SMS message.","example":"Report to the ready room! Opt-out reply STOP"},"status":{"type":"string","description":"Status of the message.","example":"delivered"},"sms_count":{"type":"string","description":"Number of SMS parts the message was split into.","example":"1"},"is_gsm":{"type":"boolean","description":"Whether the message uses GSM encoding.","example":true},"is_sandbox":{"type":"boolean","deprecated":true,"description":"Deprecated. Will be removed in a future version."},"routed_via":{"type":"string","description":"The route used to send the message.","example":""},"track_links":{"type":"boolean","description":"Whether link tracking is enabled.","example":true},"direction":{"type":"string","description":"Direction of the message (IN/OUT).","example":"OUT"},"created_at":{"type":"string","description":"Timestamp when the SMS was created.","example":"2022-03-28T06:12:52.450674000Z"},"updated_at":{"type":"string","description":"Timestamp when the SMS was last updated.","example":"2022-03-28T06:12:52.450674000Z"}},"required":["id","recipient","recipient_country","sender","sender_country","message_ref","message","status","sms_count","is_gsm","is_sandbox","routed_via","track_links","direction","created_at","updated_at"],"example":{"id":"2d2c8fb6-e514-4f5f-9706-0672b0259218","recipient":"61478038915","recipient_country":"AU","sender":"61481074185","sender_country":"AU","message_ref":"ncc1701d","message":"Report to the ready room! Opt-out reply STOP","status":"delivered","sms_count":"1","is_gsm":true,"routed_via":"","track_links":true,"direction":"OUT","created_at":"2022-03-28T06:12:52.450674000Z","updated_at":"2022-03-28T06:12:52.450674000Z"}},"ListSMSResponse":{"type":"object","description":"List of SMS messages.","properties":{"smses":{"type":"array","items":{"$ref":"#/components/schemas/SMSResponse"}},"total_records":{"type":"string"},"total_segments":{"type":"string"}},"required":["smses","total_records","total_segments"]},"MMSResponse":{"type":"object","description":"MMS message details.","properties":{"id":{"type":"string","description":"Unique identifier for the MMS message.","example":"6fdae71c-dad7-4c36-9734-a69693ec2318"},"recipient":{"type":"string","description":"The destination number for delivery.","example":"61435795809"},"sender":{"type":"string","description":"The sender number.","example":"61481074185"},"country":{"type":"string","description":"Country code.","example":"AU","x-go-type-skip-optional-pointer":true},"subject":{"type":"string","description":"Subject of the message.","example":"USS Enterprise","x-go-type-skip-optional-pointer":true},"message":{"type":"string","description":"Body text of the message.","example":"Check out this amazing specimen.","x-go-type-skip-optional-pointer":true},"message_ref":{"type":"string","description":"Reference supplied by your system.","example":"ncc1701d","x-go-type-skip-optional-pointer":true},"content_urls":{"type":"array","description":"List of media file URLs.","items":{"type":"string"},"example":["http://res.cloudinary.com/burstsms/image/upload/v1590111670/enterprise-d_ghf9t8.jpg"]},"status":{"type":"string","description":"Status of the message.","example":"sent"},"track_links":{"type":"boolean","description":"Whether link tracking is enabled.","example":true},"is_sandbox":{"type":"boolean","deprecated":true,"description":"Deprecated. Will be removed in a future version.","x-go-type-skip-optional-pointer":true},"created_at":{"type":"string","format":"date-time","description":"Timestamp when the MMS was created.","example":"2022-03-29T04:42:01.631708Z"},"updated_at":{"type":"string","format":"date-time","description":"Timestamp when the MMS was last updated.","example":"2022-03-29T04:42:01.776094Z"}},"required":["id","recipient","sender","country","subject","message","message_ref","content_urls","status","track_links","created_at","updated_at","is_sandbox"]},"MMSSendRequest":{"type":"object","properties":{"subject":{"type":"string","description":"Subject of the message. Maximum length of 20 characters.","pattern":"^[\\x00-\\x7F]*$","example":"USS Enterprise","maxLength":20,"x-oapi-codegen-extra-tags":{"valid":"ascii"},"x-go-type-skip-optional-pointer":true},"message":{"type":"string","description":"Body text of the message. Maximum length of 1,000 characters.\nIf opt-out is required, insert parameter [opt-out-link]\ninto the message and a link will be generated.\n","x-go-type-skip-optional-pointer":true},"message_ref":{"type":"string","description":"A reference supplied by your system. Maximum length of 500 characters.\nThis reference will be passed back in webhooks so that you can\nrelate events to messages you sent.\nFor example, being able to relate a Link Hit event to a specific\nsent message.\n","maxLength":500,"x-oapi-codegen-extra-tags":{"valid":"length(0|500)"},"x-go-type-skip-optional-pointer":true},"sender":{"type":"string","description":"The sender is the number that shows recipients who sent the message.","x-oapi-codegen-extra-tags":{"valid":"required"}},"recipient":{"type":"string","description":"The destination number for delivery.\nCan be either in local format or in international format.\nFor international format, it should follow E.164 standard.\n[http://en.wikipedia.org/wiki/E.164](http://en.wikipedia.org/wiki/E.164)\nCan only send to Australia currently.\nExamples of conversions to E.164 format:\nAustralia 0438 333 061 => 61438333061\n","x-oapi-codegen-extra-tags":{"valid":"required"}},"content_urls":{"type":"array","items":{"type":"string"},"description":"Specify a list of URLs of the media file(s) that you are trying to send. \nSupported file formats include jpg, gif, png, MP3, and video MP4. Only one image up to 400 KB can be attached at a time.\nURLs must be absolute paths to the media file, they cannot be relative paths. For example, https://outbound-mms.smsbump.com/2024/fashion.gif.\n","x-oapi-codegen-extra-tags":{"valid":"required"}},"track_links":{"type":"boolean","description":"Enable the link tracking feature which replaces links in outbound messages\nwith shortened links.\nThis allows us to track when recipients view links.\n","x-go-type-skip-optional-pointer":true},"is_sandbox":{"type":"boolean","deprecated":true,"description":"Deprecated. Will be removed in a future version.","x-go-type-skip-optional-pointer":true}},"required":["sender","recipient","content_urls"]},"Filter":{"type":"object","nullable":true,"description":"Filter applied to webhook events","properties":{"event_type":{"type":"array","description":"Types of events to subscribe to","items":{"$ref":"#/components/schemas/EventType"},"example":["SMS_STATUS","SMS_INBOUND"]},"sender":{"type":"array","description":"Filter by sender","items":{"type":"string"},"example":["+61412345678","+61487654321"]},"status":{"type":"array","description":"Filter by message status (only applicable for status events)","items":{"type":"string"},"example":["DELIVERED","FAILED"]},"message_ref":{"type":"array","description":"Filter by message ref","items":{"type":"string"},"example":["ref123","ref456"]},"campaign_id":{"type":"array","description":"Filter by campaign ID","items":{"type":"string"},"example":["campaign_123","campaign_456"]}}},"WebhookResponse":{"type":"object","description":"Webhook details.","properties":{"id":{"type":"string","description":"Unique identifier for the webhook.","example":"67e3e4af-62e8-4515-8b67-6f20d0c51ffb"},"filter":{"$ref":"#/components/schemas/Filter"},"name":{"type":"string","description":"Name of the webhook.","example":"Hook"},"url":{"type":"string","description":"URL (https) that accepts JSON encoded POST requests.","format":"uri","example":"https://webhook.site/uuid"},"rate_limit":{"type":"integer","description":"Rate limit for the webhook in requests per second.","example":10},"is_sandbox":{"type":"boolean","deprecated":true,"description":"Deprecated. Will be removed in a future version.","example":false},"created_at":{"type":"string","format":"date-time","description":"Timestamp when the webhook was created.","example":"2025-04-14T00:59:32.75819Z"},"updated_at":{"type":"string","format":"date-time","description":"Timestamp when the webhook was last updated.","example":"2025-04-14T00:59:32.75819Z"}},"required":["id","name","url","rate_limit","is_sandbox","created_at","updated_at"]},"WebhookDeleteResponse":{"type":"object","description":"Webhook deletion confirmation response.","properties":{"message":{"type":"string","description":"Confirmation message","example":"deleted"}},"required":["message"]},"WebhookListResponse":{"type":"object","description":"List of webhooks response.","properties":{"webhooks":{"type":"array","items":{"$ref":"#/components/schemas/WebhookResponse"}}}},"WebhookRequest":{"type":"object","properties":{"event_type":{"allOf":[{"$ref":"#/components/schemas/EventType"}],"description":"Type of event to subscribe to. Deprecated - use filter.event_type instead.","example":"SMS_STATUS","deprecated":true},"filter":{"type":"object","description":"Filter to apply to webhook events. The filters are applied differently based on the event type:\n- For status events (`SMS_STATUS`, `MMS_STATUS`, etc.): `sender`, `status`,\n `message_ref`, and `campaign_id` filters are applied to the **status** payload.\n- For `LINK_HIT` events: `sender` and `message_ref` filters are applied to\n the `source_message` in the link-hit payload.\n- For `OPT_OUT` events: `sender` and `message_ref` filters are applied to\n the `source_message` in the opt-out payload.\n- For inbound events (`SMS_INBOUND`, `MMS_INBOUND`, etc.): `sender` filter is\n applied to the `recipient` field (the sender address that received the inbound message),\n while `message_ref` and `campaign_id` filters are applied to `last_message` if available.\n\nWithin each filter array (e.g., sender, status, message_ref), the conditions are combined using an OR logic. For example, if multiple senders are specified, the webhook will trigger if the event matches any of the specified senders. Between different filters (e.g., sender and status), the conditions are combined using an AND logic. For example, the webhook will trigger only if the event matches both the specified sender and the specified status.","properties":{"event_type":{"type":"array","description":"Types of events to subscribe to","items":{"$ref":"#/components/schemas/EventType"},"example":["SMS_STATUS","SMS_INBOUND"]},"sender":{"type":"array","description":"Filter by sender. For outbound events (status, link-hit, opt-out), this filters by the sender of the outbound message. For inbound events, this filters by the recipient of the inbound message (the sender address that received it).","items":{"type":"string"},"example":["+61412345678","+61487654321"]},"status":{"type":"array","description":"Filter by message status (only applicable for status events)","items":{"type":"string"},"example":["DELIVERED","FAILED"]},"message_ref":{"type":"array","description":"Filter by message ref","items":{"type":"string"},"example":["ref123","ref456"]},"campaign_id":{"type":"array","description":"Filter by campaign ID","items":{"type":"string"},"example":["campaign_123","campaign_456"]}}},"name":{"type":"string","description":"Name of the webhook","minLength":2,"maxLength":100,"example":"My Webhook","x-oapi-codegen-extra-tags":{"valid":"length(2|100)"}},"url":{"type":"string","description":"URL (https) that accepts JSON encoded POST requests","format":"uri","example":"https://example.com/webhook","x-oapi-codegen-extra-tags":{"valid":"required,webhook_url"}},"rate_limit":{"type":"integer","description":"Rate limit for your URL in requests per second. Max 10,000/sec. If set to 0 or not specified, the default system limit will be applied.","x-go-type-skip-optional-pointer":true,"x-oapi-codegen-extra-tags":{"valid":"range(0|10000)"}},"is_sandbox":{"type":"boolean","deprecated":true,"description":"Deprecated. Will be removed in a future version.","x-go-type-skip-optional-pointer":true}},"required":["name","url"]},"EventType":{"type":"string","enum":["LINK_HIT","OPT_OUT","MMS_STATUS","SMS_INBOUND","SMS_STATUS","MMS_INBOUND","WHATSAPP_STATUS","WHATSAPP_INBOUND","RCS_STATUS","RCS_INBOUND"],"description":"Event type string values:\n- LINK_HIT: Link hit event when a recipient visits a tracked link\n- OPT_OUT: Opt out event when a recipient visits an opt-out link or by sending a message with the text \"STOP\"\n- MMS_STATUS: Status change for a MMS messages. Currently only comprised of internal statuses (sent, failed)\n- SMS_INBOUND: Inbound SMS sent from a recipient back to the sender\n- SMS_STATUS: Status change for a SMS message. Includes internal statuses (sent, failed) and delivery receipts (soft_bounce, hard_bounce, delivered, undelivered). Multiple status events can be triggered for a single message\n- MMS_INBOUND: Inbound MMS sent from a recipient back to the sender\n- WHATSAPP_STATUS: Status change for Whatsapp messages\n- WHATSAPP_INBOUND: Inbound Whatsapp sent from a recipient back to the sender\n- RCS_STATUS: Status change for RCS messages\n- RCS_INBOUND: Inbound RCS sent from a recipient back to the sender\n"},"MessageType":{"type":"string","enum":["MMS","SMS","WHATSAPP","RCS"],"description":"Message type values:\n- MMS: Multimedia Messaging Service\n- SMS: Short Message Service\n- WHATSAPP: WhatsApp message\n- RCS: Rich Communication Services\n"},"MessageStatus":{"type":"string","enum":["INVALID","PENDING","SENT","FAILED","DELIVERED","ACCEPTED","SOFT_BOUNCE","HARD_BOUNCE","OTHER","REJECTED","PENDING_APPROVAL","SUBMITTED","UNDELIVERABLE","READ"],"description":"Message delivery status values:\n- INVALID: Invalid status\n- PENDING: Queued for processing\n- SENT: Submitted to the provider\n- FAILED: Failed because of an error from the provider, a carrier, or the handset\n- DELIVERED: Delivered to handset\n- ACCEPTED: Accepted by the provider and delivery might have been attempted (but is not confirmed)\n- SOFT_BOUNCE: Undeliverable due to handset being switched off, out of range or other temporary deliverability issue\n- HARD_BOUNCE: Handset was disconnected\n- OTHER: Any other DLR status from the provider\n- REJECTED: Message pending approval was rejected by the Kudosity support team\n- PENDING_APPROVAL: Message is pending approval by the Kudosity support team\n- SUBMITTED: Message is submitted to the provider\n- UNDELIVERABLE: Message is undeliverable\n- READ: Message is read by the recipient\n"},"V1Message":{"type":"object","description":"V1 message data used in source_message and last_message fields.\nAll fields are always included for backward compatibility, even if empty.\n","properties":{"type":{"type":"string","description":"Message type"},"id":{"type":"string","description":"Message ID"},"sender":{"type":"string","description":"Sender address"},"recipient":{"type":"string","description":"Recipient number"},"subject":{"type":"string","description":"Message subject (empty string if not set)"},"message_ref":{"type":"string","description":"Custom reference set by the customer (empty string if not set)"},"message":{"type":"string","description":"Message text"},"content_urls":{"type":"array","items":{"type":"string"},"description":"Content URLs (empty array if none)"}},"required":["type","id","sender","recipient","subject","message_ref","message","content_urls"]},"V2LinkHit":{"type":"object","description":"V2 link hit notification","properties":{"url":{"type":"string","description":"Tracked URL that was clicked"},"hits":{"type":"integer","format":"int32","description":"Number of hits"},"source_message":{"$ref":"#/components/schemas/V2Message"}},"required":["url","hits","source_message"]},"V2MO":{"type":"object","description":"V2 mobile originating (inbound) message from the receiver","properties":{"type":{"$ref":"#/components/schemas/MessageType","description":"Message Type"},"id":{"type":"string","description":"Message ID"},"sender":{"type":"string","description":"Sender number"},"recipient":{"type":"string","description":"Recipient number"},"routed_via":{"type":"string","x-go-type-skip-optional-pointer":true,"description":"Number in sender's country that this MO is routed through due to global routing"},"message":{"type":"string","x-go-type-skip-optional-pointer":true,"description":"Message text"},"subject":{"type":"string","x-go-type-skip-optional-pointer":true,"description":"Message subject (for MMS)"},"media":{"type":"array","items":{"$ref":"#/components/schemas/Medium"},"x-go-type-skip-optional-pointer":true,"description":"Base64-encoded MMS media"},"last_message":{"$ref":"#/components/schemas/V2Message","x-go-type-skip-optional-pointer":true},"content_type":{"type":"string","x-go-type-skip-optional-pointer":true,"enum":["INVALID","TEXT","LOCATION","FILE","VIDEO","AUDIO","IMAGE","REPLY","STICKER","BUTTON","REACTION","CONTACT"],"description":"Rich content type values (only present for WhatsApp/RCS messages):\n- INVALID: Invalid content type\n- TEXT: Text message\n- LOCATION: Location message\n- FILE: File attachment\n- VIDEO: Video attachment\n- AUDIO: Audio attachment\n- IMAGE: Image attachment\n- REPLY: Reply to another message\n- STICKER: Sticker message\n- BUTTON: Button message\n- REACTION: Reaction to another message\n- CONTACT: Contact card\n"},"content":{"$ref":"#/components/schemas/RichContent"}},"required":["type","id","sender","recipient"]},"V2OptOut":{"type":"object","description":"V2 opt-out message from the receiver","properties":{"source":{"$ref":"#/components/schemas/EventType"},"source_message":{"$ref":"#/components/schemas/V2Message"}},"required":["source","source_message"]},"V2Status":{"type":"object","description":"V2 status update from the provider (delivery receipt)","properties":{"id":{"type":"string","description":"Message ID"},"type":{"$ref":"#/components/schemas/MessageType","description":"Message Type"},"message_ref":{"type":"string","x-go-type-skip-optional-pointer":true,"description":"Custom reference set by the customer"},"sender":{"type":"string","description":"Sender address"},"routed_via":{"type":"string","x-go-type-skip-optional-pointer":true,"description":"Number in recipient's country that this message is routed through due to global routing"},"recipient":{"type":"string","description":"Recipient number"},"status":{"$ref":"#/components/schemas/MessageStatus","description":"DLR status fom the provider"},"description":{"type":"string","x-go-type-skip-optional-pointer":true,"description":"Description of the status"},"campaign_id":{"type":"string","x-go-type-skip-optional-pointer":true,"description":"Campaign ID"}},"required":["id","type","sender","recipient","status"]},"V2Message":{"type":"object","description":"V2 message information in payload data","properties":{"id":{"type":"string","description":"Message ID"},"type":{"$ref":"#/components/schemas/MessageType","description":"Message Type"},"sender":{"type":"string","description":"Sender address"},"routed_via":{"type":"string","x-go-type-skip-optional-pointer":true,"description":"Number in recipient's country that this message is routed through due to global routing"},"recipient":{"type":"string","description":"Recipient number"},"message":{"type":"string","description":"Message text"},"message_ref":{"type":"string","x-go-type-skip-optional-pointer":true,"description":"Custom reference set by the customer"},"subject":{"type":"string","x-go-type-skip-optional-pointer":true,"description":"Subject"},"content_urls":{"type":"array","items":{"type":"string"},"x-go-type-skip-optional-pointer":true,"description":"Content URLs"},"campaign_id":{"type":"string","x-go-type-skip-optional-pointer":true,"description":"Campaign ID"}},"required":["id","type","sender","recipient","message"]},"RichContent":{"type":"object","description":"Rich content data with flattened structure","properties":{"text":{"$ref":"#/components/schemas/RichContentText"},"location":{"$ref":"#/components/schemas/RichContentLocation"},"file":{"$ref":"#/components/schemas/RichContentFile"},"video":{"$ref":"#/components/schemas/RichContentVideo"},"audio":{"$ref":"#/components/schemas/RichContentAudio"},"image":{"$ref":"#/components/schemas/RichContentImage"},"reply":{"$ref":"#/components/schemas/RichContentReply"},"sticker":{"$ref":"#/components/schemas/RichContentSticker"},"button":{"$ref":"#/components/schemas/RichContentButton"},"reaction":{"$ref":"#/components/schemas/RichContentReaction"},"contact":{"$ref":"#/components/schemas/RichContentContact"}}},"RichContentText":{"type":"object","description":"Rich content text data","properties":{"message":{"type":"string","description":"Text content"}},"required":["message"]},"RichContentLocation":{"type":"object","description":"Rich content location data","properties":{"lat":{"type":"number","format":"double","description":"Latitude"},"long":{"type":"number","format":"double","description":"Longitude"},"name":{"type":"string","x-go-type-skip-optional-pointer":true,"description":"Location name"},"address":{"type":"string","x-go-type-skip-optional-pointer":true,"description":"Location address"}},"required":["lat","long"]},"RichContentFile":{"type":"object","description":"Rich content file data","properties":{"url":{"type":"string","description":"File URL"},"name":{"type":"string","x-go-type-skip-optional-pointer":true,"description":"File name"}},"required":["url"]},"RichContentVideo":{"type":"object","description":"Rich content video data","properties":{"url":{"type":"string","description":"Video URL"},"name":{"type":"string","x-go-type-skip-optional-pointer":true,"description":"Video name"}},"required":["url"]},"RichContentAudio":{"type":"object","description":"Rich content audio data","properties":{"url":{"type":"string","description":"Audio URL"},"name":{"type":"string","x-go-type-skip-optional-pointer":true,"description":"Audio name"}},"required":["url"]},"RichContentImage":{"type":"object","description":"Rich content image data","properties":{"url":{"type":"string","description":"Image URL"},"name":{"type":"string","x-go-type-skip-optional-pointer":true,"description":"Image name"},"caption":{"type":"string","x-go-type-skip-optional-pointer":true,"description":"Image caption"}},"required":["url"]},"RichContentReply":{"type":"object","description":"Rich content reply data","properties":{"id":{"type":"string","description":"Reply ID"},"title":{"type":"string","x-go-type-skip-optional-pointer":true,"description":"Reply title"},"description":{"type":"string","x-go-type-skip-optional-pointer":true,"description":"Reply description"}},"required":["id"]},"RichContentSticker":{"type":"object","description":"Rich content sticker data","properties":{"url":{"type":"string","description":"Sticker URL"},"name":{"type":"string","x-go-type-skip-optional-pointer":true,"description":"Sticker name"}},"required":["url"]},"RichContentButton":{"type":"object","description":"Rich content button data","properties":{"text":{"type":"string","description":"Button text"},"payload":{"type":"string","description":"Button payload"}},"required":["text","payload"]},"RichContentReaction":{"type":"object","description":"Rich content reaction data","properties":{"action":{"type":"string","description":"Reaction action"},"emoji":{"type":"string","x-go-type-skip-optional-pointer":true,"description":"Reaction emoji"}},"required":["action"]},"RichContentContact":{"type":"object","description":"Rich content contact data","properties":{"emails":{"type":"array","items":{"$ref":"#/components/schemas/RichContentContactEmail"},"description":"Contact email addresses"},"name":{"$ref":"#/components/schemas/RichContentContactName"},"phones":{"type":"array","items":{"$ref":"#/components/schemas/RichContentContactPhone"},"description":"Contact phone numbers"}},"required":["emails","name","phones"]},"RichContentContactEmail":{"type":"object","description":"Contact email information","properties":{"email":{"type":"string","description":"Email address"},"type":{"type":"string","x-go-type-skip-optional-pointer":true,"description":"Type of email (e.g., \"work\", \"home\")"}},"required":["email"]},"RichContentContactName":{"type":"object","description":"Contact name information","properties":{"formatted_name":{"type":"string","x-go-type-skip-optional-pointer":true,"description":"Full name"},"first_name":{"type":"string","x-go-type-skip-optional-pointer":true,"description":"First name"},"last_name":{"type":"string","x-go-type-skip-optional-pointer":true,"description":"Last name"}}},"RichContentContactPhone":{"type":"object","description":"Contact phone information","properties":{"phone":{"type":"string","description":"Phone number in international format (E.164 standard)"},"type":{"type":"string","x-go-type-skip-optional-pointer":true,"description":"Type of phone (e.g., \"mobile\", \"home\")"}},"required":["phone"]},"Medium":{"type":"object","description":"MMS media content","properties":{"name":{"type":"string","description":"Name is usually the filename with extension"},"content":{"type":"string","format":"byte","description":"Base64 encoded media data"}},"required":["name","content"]},"VerificationConfirmationInputValidationProblem":{"description":"Input-validation problem (RFC 9457) specific to the verification confirmation endpoint.\nExtends the standard `InputValidationProblem` with a structured `attempts_remaining` field,\nso clients can display the remaining attempt count without string parsing.\n","type":"object","properties":{"type":{"type":"string","description":"A URI that identifies the problem type."},"title":{"type":"string","description":"A short summary of the problem type."},"detail":{"type":"string","description":"A human-readable explanation specific to this occurrence of the problem."},"status":{"type":"integer","description":"The HTTP status code."},"issues":{"type":"array","description":"An array of issues detected during input validation.","x-go-type-skip-optional-pointer":true,"items":{"$ref":"#/components/schemas/InputValidationIssue"}},"attempts_remaining":{"type":"integer","description":"Number of remaining attempts after this failed attempt."}},"required":["type","title","detail","status","attempts_remaining"]},"ListSenderRegistrationsResponse":{"type":"object","description":"Paginated list of sender registrations.","properties":{"registrations":{"type":"array","description":"Array of sender registrations.","items":{"$ref":"#/components/schemas/SenderRegistration"}}},"required":["registrations"]},"SenderRegistrationType":{"type":"string","description":"Type of a sender registration record (as returned by the API).\n- `PERSONAL_MOBILE_NUMBER` — a personal mobile number registered as a sender.\n- `ALPHANUMERIC` — an alphanumeric (alpha) sender ID. Type-specific fields are\n returned under `details.alphanumeric`. Alpha registrations are created through\n the registration backoffice, not this public API.\n","enum":["PERSONAL_MOBILE_NUMBER","ALPHANUMERIC"]},"SenderRegistrationRequestType":{"type":"string","description":"Type of sender registration that can be created through the public API. Only\n`PERSONAL_MOBILE_NUMBER` is supported here; alpha (`ALPHANUMERIC`) registrations are\ncreated through the registration backoffice and are read-only on this API.\n","enum":["PERSONAL_MOBILE_NUMBER"]},"SenderRegistrationStatus":{"type":"string","description":"Status of a sender registration. The same coarse set of statuses applies to every\nregistration `type`:\n- `PERSONAL_MOBILE_NUMBER` — `PENDING_APPROVAL`, `VERIFIED`, `REJECTED`, `CANCELLED`.\n- `ALPHANUMERIC` — `PENDING_APPROVAL`, `VERIFIED`, `REJECTED`. The finer alpha\n registry lifecycle is surfaced separately and is not part of this coarse enum.\n","enum":["PENDING_APPROVAL","VERIFIED","REJECTED","CANCELLED"]},"Registry":{"type":"string","description":"The registry body an alphanumeric sender registration is submitted to.\n- `ACMA` — Australian Communications and Media Authority.\n","enum":["ACMA"]},"AlphanumericStatus":{"type":"string","description":"Fine-grained registry lifecycle status for an alphanumeric registration — the state the\ncustomer sees on screen, distinct from the coarse root `status`.\n\nThis enum is **expected to grow** as a registry (e.g. ACMA) introduces new states. The\nserver only ever returns a value it has explicitly mapped, and new values are added here\nadditively — so **clients must render a graceful fallback for any value they don't yet\nrecognise** rather than treating the set as fixed.\n\nValue → display label:\n- `NEW` — Initial Review\n- `SUBMITTED_TO_REGISTRY` — Submitted\n- `PENDING_CUSTOMER` — Awaiting Confirmation\n- `PENDING_APPROVAL` — In ACMA Review\n- `VERIFIED` — Provisioning\n- `READY_TO_USE` — Ready to Use\n- `FAILED` — Failed\n- `REVOKED` — Revoked\n- `CANCELLED` — Cancelled\n","enum":["NEW","SUBMITTED_TO_REGISTRY","PENDING_CUSTOMER","PENDING_APPROVAL","VERIFIED","READY_TO_USE","FAILED","REVOKED","CANCELLED"],"example":"PENDING_CUSTOMER"},"AlphanumericDetails":{"type":"object","description":"Details specific to an alphanumeric (alpha) sender registration.","properties":{"registry":{"$ref":"#/components/schemas/Registry"},"status":{"$ref":"#/components/schemas/AlphanumericStatus"},"status_reason":{"type":"string","description":"Optional human-readable reason for the current `status` (verbatim registry status\ndescription), suitable for tooltips. May be absent or blank.\n","example":"Customer has not taken any actions"}},"required":["registry"]},"SenderRegistrationDetails":{"type":"object","description":"Type-specific details for a sender registration. The populated sub-object matches the\nregistration `type` — for an `ALPHANUMERIC` registration, `alphanumeric` is present.\n","properties":{"alphanumeric":{"$ref":"#/components/schemas/AlphanumericDetails"}}},"SenderRegistrationRequest":{"type":"object","description":"Request body for creating a sender registration.","properties":{"sender":{"type":"string","description":"The sender number to register, for example a phone number."},"country":{"type":"string","description":"ISO 3166-1 alpha-2 country code for the sender, for example AU.","minLength":2,"maxLength":2,"pattern":"^[A-Z]{2}$"},"type":{"$ref":"#/components/schemas/SenderRegistrationRequestType"},"child_account_id":{"type":"string","description":"Child account ID to register the sender for. Ignored for accounts without parent/child accounts. If omitted for a parent account, the API registers the sender for the parent account.\n"}},"required":["sender","country","type"]},"SenderRegistration":{"type":"object","description":"A sender registration record.","properties":{"registration_id":{"type":"string","format":"uuid","description":"Unique identifier for the registration."},"sender":{"type":"string","description":"The registered sender number."},"country":{"type":"string","description":"ISO 3166-1 alpha-2 country code for the sender."},"type":{"$ref":"#/components/schemas/SenderRegistrationType"},"status":{"$ref":"#/components/schemas/SenderRegistrationStatus"},"created_at":{"type":"string","format":"date-time","description":"Timestamp in RFC3339 format (e.g., 2025-08-26T10:30:00Z) when the registration was created."},"child_account_id":{"type":"string","description":"Child account ID the sender is registered for. Only present for registrations created under a child account.","x-oapi-codegen-extra-tags":{"json":"child_account_id,omitempty"}},"updated_at":{"type":"string","format":"date-time","description":"Timestamp in RFC3339 format (e.g., 2025-08-26T10:32:00Z) when the registration was last updated."},"details":{"allOf":[{"$ref":"#/components/schemas/SenderRegistrationDetails"}],"description":"Type-specific details for the registration. Present only for registration types\nthat carry extra fields — for an `ALPHANUMERIC` registration, `details.alphanumeric`\nis populated. Omitted for `PERSONAL_MOBILE_NUMBER`.\n","x-oapi-codegen-extra-tags":{"json":"details,omitempty"}}},"required":["registration_id","sender","country","type","status","created_at","updated_at"]},"VerificationMethod":{"type":"string","description":"Method used to deliver the verification code.","enum":["SMS"]},"VerificationStatus":{"type":"string","description":"Status of a sender registration verification.","enum":["SENT","CONFIRMED","EXPIRED","FAILED"]},"VerificationRequest":{"type":"object","description":"Request body for requesting a verification code.","properties":{"method":{"$ref":"#/components/schemas/VerificationMethod"},"originating_sender":{"type":"string","description":"Verified sender owned by the account that the API uses to send the verification code."}},"required":["method","originating_sender"]},"Verification":{"type":"object","description":"A verification record for a sender registration.","properties":{"registration_id":{"type":"string","format":"uuid","description":"The registration this verification belongs to."},"method":{"$ref":"#/components/schemas/VerificationMethod"},"originating_sender":{"type":"string","description":"The sender number used to deliver the verification code."},"status":{"$ref":"#/components/schemas/VerificationStatus"},"expires_at":{"type":"string","format":"date-time","description":"Timestamp in RFC3339 format (e.g., 2025-08-26T10:35:00Z) when the verification code expires."},"attempts_remaining":{"type":"integer","description":"Number of remaining attempts to submit the verification code."}},"required":["registration_id","method","originating_sender","status","expires_at","attempts_remaining"]},"VerificationConfirmRequest":{"type":"object","description":"Request body for confirming a verification code.","properties":{"code":{"type":"string","description":"The verification code received via the selected verification method.","minLength":6,"maxLength":6,"pattern":"^[0-9]{6}$"}},"required":["code"]},"VerificationConfirmation":{"type":"object","description":"The result of a successful verification code confirmation.","properties":{"registration_id":{"type":"string","format":"uuid","description":"The registration this verification belongs to."},"status":{"$ref":"#/components/schemas/VerificationStatus"},"verified_at":{"type":"string","format":"date-time","description":"Timestamp in RFC3339 format (e.g., 2025-08-26T10:32:00Z) when the verification was confirmed."}},"required":["registration_id","status","verified_at"]},"PagePaginationMeta":{"title":"Page Pagination Metadata","description":"Pagination metadata for page-based pagination.\nReusable across all paginated API endpoints that use page/limit pagination.\n","type":"object","required":["type","page","limit","total_count"],"properties":{"type":{"type":"string","description":"The pagination strategy being used.","enum":["page"],"example":"page","x-oapi-codegen-extra-tags":{"valid":"required"}},"page":{"type":"integer","description":"The current page number (1-based).","example":1,"x-oapi-codegen-extra-tags":{"valid":"required"}},"limit":{"type":"integer","description":"The maximum number of results per page.","example":25,"x-oapi-codegen-extra-tags":{"valid":"required"}},"total_count":{"type":"integer","description":"The total number of results across all pages.","example":123,"x-oapi-codegen-extra-tags":{"valid":"required"}}}},"CardAddSession":{"type":"object","description":"A short-lived hosted session where the customer can add a card.","properties":{"url":{"type":"string","format":"uri","description":"The hosted URL the integrator opens or redirects the customer to in order to add a card.","example":"https://pay.example.com/c/session/abc123"},"expires_at":{"type":"string","format":"date-time","description":"Timestamp in RFC3339 format (e.g. 2026-06-11T10:30:00Z) after which the URL is no longer valid.","example":"2026-06-11T10:30:00Z"},"session_id":{"type":"string","description":"Identifier of the underlying checkout session.","example":"cs_a1b2c3d4e5f6"}},"required":["url","expires_at","session_id"]},"AddCredit":{"type":"object","description":"The result of a credit top-up charge.","properties":{"payment_id":{"type":"string","description":"Identifier for the resulting payment, for reconciliation and support.","example":"pay_1a2b3c4d5e6f"},"status":{"type":"string","description":"Outcome of the charge (e.g. succeeded, processing).","example":"succeeded"}},"required":["payment_id","status"]},"PaymentMethodList":{"type":"object","description":"The account's saved payment methods.","properties":{"payment_methods":{"type":"array","description":"Saved payment methods for the account. Empty when none have been added.","items":{"$ref":"#/components/schemas/StoredPaymentMethod"}}},"required":["payment_methods"]},"StoredPaymentMethod":{"type":"object","description":"A saved payment method on the account.","properties":{"id":{"type":"string","description":"Unique identifier for the payment method. Pass this as `payment_method_id` when adding credit to charge this payment method.","example":"pm_1234567890abcdef"},"type":{"type":"string","description":"The type of payment method (e.g. card, link). Other types may appear as new payment options become available. Card details are only included when the type is `card`, and Link details when the type is `link`.","example":"card"},"is_default":{"type":"boolean","description":"Whether this is the account's default payment method. The default is charged when adding credit without a `payment_method_id`.","example":true},"card":{"$ref":"#/components/schemas/PaymentMethodCard","x-go-type-skip-optional-pointer":true,"description":"Card details. Only present when `type` is `card`."},"link":{"$ref":"#/components/schemas/PaymentMethodLink","x-go-type-skip-optional-pointer":true,"description":"Link account details. Only present when `type` is `link`."}},"required":["id","type","is_default"]},"PaymentMethodCard":{"type":"object","description":"Details of a saved card.","properties":{"brand":{"type":"string","description":"Card brand (e.g. visa, mastercard, amex).","example":"visa"},"last4":{"type":"string","description":"Last four digits of the card number.","example":"4242"},"exp_month":{"type":"integer","format":"int64","description":"Two-digit number representing the card's expiration month.","example":12},"exp_year":{"type":"integer","format":"int64","description":"Four-digit number representing the card's expiration year.","example":2028},"funding":{"type":"string","description":"How the card is funded — credit, debit, prepaid, or unknown.","example":"credit"},"name":{"type":"string","x-go-type-skip-optional-pointer":true,"description":"Cardholder name, when available.","example":"John Smith"}},"required":["brand","last4","exp_month","exp_year"]},"PaymentMethodLink":{"type":"object","description":"Details of a saved Link payment method.","properties":{"email":{"type":"string","description":"Partially masked email address of the Link account, for identifying which Link account is attached without exposing the full address.","example":"j***@example.com"}},"required":["email"]}},"responses":{"InputValidationResponse":{"description":"Input Validation Error","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/CommonErrorResponse"},{"type":"object","properties":{"error":{"$ref":"#/components/schemas/InputValidationProblem"}}}]}}}},"UnauthorizedErrorResponse":{"description":"Unauthorized","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/CommonErrorResponse"},{"type":"object","properties":{"error":{"$ref":"#/components/schemas/UnauthorizedProblem"}}}]}}}},"ConflictErrorResponse":{"description":"Conflict","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/CommonErrorResponse"},{"type":"object","properties":{"error":{"$ref":"#/components/schemas/ConflictProblem"}}}]}}}},"InternalServerErrorResponse":{"description":"Internal Server Error","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/CommonErrorResponse"},{"type":"object","properties":{"error":{"$ref":"#/components/schemas/InternalServerErrorProblem"}}}]}}}},"SuccessResponse":{"description":"OK","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/CommonSuccessResponse"},{"type":"object","properties":{"data":{"$ref":"#/components/schemas/WhatsappResponse"}}}]},"example":{"data":{"id":"6fdae71c-dad7-4c36-9734-a69693ecf3b4","message_ref":"optional-ref-123","sender":"14155238886","recipient":"61411122211","content_type":"template","content":{"template":{"name":"welcome_new_customer","parameters":["Joe"]}},"created_at":"2021-01-01T00:00:00Z"},"request":{},"meta":{}}}}},"GetWhatsappSuccessResponse":{"description":"OK","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/CommonSuccessResponse"},{"type":"object","properties":{"data":{"$ref":"#/components/schemas/WhatsappGetResponse"}}}]},"example":{"data":{"id":"6fdae71c-dad7-4c36-9734-a69693ecf3b4","account_id":"123123","message_ref":"optional-ref-123","sender":"14155238886","recipient":"61411122211","content_type":"template","content":{"template":{"name":"welcome_new_customer","parameters":["Joe"]}},"sms_fallback":{"message":"Welcome Joe! Your account is now active."},"created_at":"2021-01-01T00:00:00Z","status":"DELIVERED","events":[{"event_type":"SENT","created_at":"2021-01-01T00:00:30Z","details":"Message sent to WhatsApp gateway"},{"event_type":"DELIVERED","created_at":"2021-01-01T00:01:15Z","details":"Message delivered to recipient device"}]},"request":{},"meta":{}}}}},"ListWhatsappMessagesSuccessResponse":{"description":"OK","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/CommonSuccessResponse"},{"type":"object","properties":{"data":{"$ref":"#/components/schemas/WhatsappListMessagesData"},"meta":{"$ref":"#/components/schemas/WhatsappListMessagesMeta"}}}]},"example":{"data":{"messages":[{"id":"6fdae71c-dad7-4c36-9734-a69693ecf3b4","message_ref":"optional-ref-123","sender":"14155238886","recipient":"61411122211","content_type":"template","content":{"template":{"name":"welcome_new_customer","parameters":["Joe"]}},"status":"DELIVERED","created_at":"2021-01-01T00:00:00Z"}]},"request":{},"meta":{"pagination":{"type":"cursor","next_cursor":"MTIzNDU2","prev_cursor":null,"has_next":true,"has_prev":false}}}}}},"TooManyRequestsErrorResponse":{"description":"Too Many Requests","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/CommonErrorResponse"},{"type":"object","properties":{"error":{"$ref":"#/components/schemas/TooManyRequestsProblem"}}}]}}}},"NotFoundErrorResponse":{"description":"Not Found","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/CommonErrorResponse"},{"type":"object","properties":{"error":{"$ref":"#/components/schemas/NotFoundProblem"}}}]}}}},"RCSSuccessResponse":{"description":"OK","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/CommonSuccessResponse"},{"type":"object","properties":{"data":{"$ref":"#/components/schemas/RcsResponse"}}}]},"example":{"data":{"id":"6fdae71c-dad7-4c36-9734-a69693ecf3b4","message_ref":"order-12345","sender":"DemoSender","recipient":"447903749662","content_type":"text","content":{"text":{"message":"Hi Michael,\nJust a quick reminder. You are amazing!!\nReply STOP to opt out."}},"created_at":"2021-01-01T00:00:00Z"},"request":{},"meta":{}}}}},"GetSuccessResponse":{"description":"OK","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/CommonSuccessResponse"},{"type":"object","properties":{"data":{"$ref":"#/components/schemas/RcsGetResponse"}}}]},"example":{"data":{"id":"6fdae71c-dad7-4c36-9734-a69693ecf3b4","account_id":"123123","message_ref":"order-12345","sender":"DemoSender","recipient":"447903749662","content_type":"text","content":{"text":{"message":"Hi Michael,\nJust a quick reminder. You are amazing!!\nReply STOP to opt out."}},"created_at":"2021-01-01T00:00:00Z","status":"DELIVERED","events":[{"event_type":"SENT","created_at":"2021-01-01T00:00:30Z","details":"Message sent to Google RCS gateway"},{"event_type":"DELIVERED","created_at":"2021-01-01T00:01:15Z","details":"Message delivered to recipient device"}]},"request":{},"meta":{}}}}},"ListRcsMessagesSuccessResponse":{"description":"OK","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/CommonSuccessResponse"},{"type":"object","properties":{"data":{"$ref":"#/components/schemas/RcsListMessagesData"},"meta":{"$ref":"#/components/schemas/RcsListMessagesMeta"}}}]},"example":{"data":{"messages":[{"id":"6fdae71c-dad7-4c36-9734-a69693ecf3b4","message_ref":"optional-ref-123","sender":"DemoSender","recipient":"61411122211","content_type":"text","content":{"text":{"message":"Hi Michael, just a quick reminder. You are amazing!"}},"status":"DELIVERED","created_at":"2021-01-01T00:00:00Z"}]},"request":{},"meta":{"pagination":{"type":"cursor","next_cursor":"MTIzNDU2","prev_cursor":null,"has_next":true,"has_prev":false}}}}}},"RcsCapabilityCheckSuccessResponse":{"description":"OK","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/CommonSuccessResponse"},{"type":"object","properties":{"data":{"$ref":"#/components/schemas/RcsCapabilityCheckData"}}}]},"example":{"data":{"results":[{"phone_number":"61400000000","code":"ENABLED"},{"phone_number":"61400000001","code":"UNREACHABLE"}]},"request":{},"meta":{}}}}},"ForbiddenErrorResponse":{"description":"Forbidden","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/CommonErrorResponse"},{"type":"object","properties":{"error":{"$ref":"#/components/schemas/ForbiddenProblem"}}}]}}}},"SenderRegistrationSuccessResponse":{"description":"Successful response containing the new sender registration details.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/CommonSuccessResponse"},{"type":"object","properties":{"data":{"$ref":"#/components/schemas/SenderRegistration"}}}]},"example":{"data":{"registration_id":"a1b2c3d4-e5f6-7890-abcd-ef1234567890","sender":"61412312312","country":"AU","type":"PERSONAL_MOBILE_NUMBER","status":"PENDING_APPROVAL","created_at":"2025-08-26T10:30:00Z","updated_at":"2025-08-26T10:30:00Z"}}}}},"VerificationSuccessResponse":{"description":"Successful response containing the verification details.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/CommonSuccessResponse"},{"type":"object","properties":{"data":{"$ref":"#/components/schemas/Verification"}}}]},"example":{"data":{"registration_id":"a1b2c3d4-e5f6-7890-abcd-ef1234567890","method":"SMS","originating_sender":"61400000000","status":"SENT","expires_at":"2025-08-26T10:35:00Z","attempts_remaining":5}}}}},"VerificationConfirmationSuccessResponse":{"description":"Successful response containing the verification confirmation details.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/CommonSuccessResponse"},{"type":"object","properties":{"data":{"$ref":"#/components/schemas/VerificationConfirmation"}}}]},"example":{"data":{"registration_id":"a1b2c3d4-e5f6-7890-abcd-ef1234567890","status":"CONFIRMED","verified_at":"2025-08-26T10:32:00Z"}}}}},"ListSenderRegistrationsSuccessResponse":{"description":"Successful response containing a paginated list of sender registrations.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/CommonSuccessResponse"},{"type":"object","required":["data","meta"],"properties":{"data":{"$ref":"#/components/schemas/ListSenderRegistrationsResponse"},"meta":{"type":"object","required":["pagination"],"properties":{"pagination":{"$ref":"#/components/schemas/PagePaginationMeta"}}}}}]},"example":{"data":{"registrations":[{"registration_id":"a1b2c3d4-e5f6-7890-abcd-ef1234567890","sender":"61412312312","country":"AU","type":"PERSONAL_MOBILE_NUMBER","status":"VERIFIED","created_at":"2025-08-26T10:30:00Z","updated_at":"2025-08-26T10:32:00Z"},{"registration_id":"b2c3d4e5-f6a7-8901-bcde-f12345678901","sender":"61498765432","country":"AU","type":"PERSONAL_MOBILE_NUMBER","status":"PENDING_APPROVAL","child_account_id":"1234","created_at":"2025-09-01T14:00:00Z","updated_at":"2025-09-01T14:00:00Z"}]},"meta":{"pagination":{"type":"page","page":1,"limit":25,"total_count":2}}}}}},"SenderDeleteNoContentResponse":{"description":"Sender deleted successfully. No content is returned."},"VerificationConfirmationInputValidationResponse":{"description":"400 response specific to the verification confirmation endpoint. The response includes\n`attempts_remaining` as a structured integer field alongside the standard `detail` and\n`issues` fields, so clients can display the remaining attempt count without string parsing.\n","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"$ref":"#/components/schemas/VerificationConfirmationInputValidationProblem"}}},"example":{"error":{"type":"https://developers.kudosity.com/reference/errors#input-validation","title":"Invalid Request","detail":"Request validation failed","status":400,"issues":[{"name":"code","message":"invalid verification code, you have 4 attempts remaining"}],"attempts_remaining":4}}}}}},"securitySchemes":{"ApiKeyAuth":{"type":"apiKey","in":"header","name":"x-api-key","description":"All API requests require your API credentials, you will find them once logged into your account on the SETTINGS page. Scroll down to API Settings to find your API key.\n"}}}}