{
  "basePath": "/",
  "definitions": {
    "BulkEmailRequest": {
      "properties": {
        "contact_tag": {
          "type": "string"
        },
        "recipients": {
          "items": {
            "$ref": "#/definitions/EmailRecipient"
          },
          "type": "array"
        },
        "scheduled_at": {
          "type": "string"
        },
        "subject": {
          "type": "string"
        },
        "template_id": {
          "type": "string"
        },
        "track": {
          "type": "boolean"
        }
      },
      "type": "object"
    },
    "CloudBulkSendRequest": {
      "example": {
        "message": "Your order is ready.",
        "recipients": [
          "254700000000",
          "254711111111"
        ],
        "scheduled_at": "2026-09-18T09:00:00Z",
        "type": "text"
      },
      "properties": {
        "caption": {
          "type": "string"
        },
        "file_name": {
          "type": "string"
        },
        "media_id": {
          "type": "string"
        },
        "message": {
          "type": "string"
        },
        "params": {
          "additionalProperties": true,
          "type": "object"
        },
        "preview_url": {
          "type": "boolean"
        },
        "recipients": {
          "items": {
            "type": "string"
          },
          "type": "array"
        },
        "scheduled_at": {
          "type": "string"
        },
        "template_components": {
          "items": {
            "additionalProperties": true,
            "type": "object"
          },
          "type": "array"
        },
        "template_language": {
          "type": "string"
        },
        "template_name": {
          "type": "string"
        },
        "time_delay": {
          "type": "integer"
        },
        "type": {
          "type": "string"
        },
        "url": {
          "type": "string"
        }
      },
      "type": "object"
    },
    "CloudSendRequest": {
      "example": {
        "template_language": "en_US",
        "template_name": "hello_world",
        "to": "254700000000",
        "type": "template"
      },
      "properties": {
        "address": {
          "type": "string"
        },
        "buttons": {
          "items": {
            "additionalProperties": true,
            "type": "object"
          },
          "type": "array"
        },
        "caption": {
          "type": "string"
        },
        "contact_name": {
          "type": "string"
        },
        "contact_phone": {
          "type": "string"
        },
        "emoji": {
          "type": "string"
        },
        "file_name": {
          "type": "string"
        },
        "latitude": {
          "type": "number"
        },
        "location_name": {
          "type": "string"
        },
        "longitude": {
          "type": "number"
        },
        "media_id": {
          "type": "string"
        },
        "message": {
          "type": "string"
        },
        "message_id": {
          "type": "string"
        },
        "phone": {
          "type": "string"
        },
        "preview_url": {
          "type": "boolean"
        },
        "template_components": {
          "items": {
            "additionalProperties": true,
            "type": "object"
          },
          "type": "array"
        },
        "template_language": {
          "type": "string"
        },
        "template_name": {
          "type": "string"
        },
        "to": {
          "type": "string"
        },
        "type": {
          "type": "string"
        },
        "url": {
          "type": "string"
        }
      },
      "type": "object"
    },
    "EmailRecipient": {
      "properties": {
        "email": {
          "type": "string"
        },
        "name": {
          "type": "string"
        },
        "variables": {
          "additionalProperties": true,
          "type": "object"
        }
      },
      "type": "object"
    },
    "InteractiveButton": {
      "properties": {
        "id": {
          "type": "string"
        },
        "title": {
          "type": "string"
        }
      },
      "type": "object"
    },
    "MarkAsReadRequest": {
      "properties": {
        "phone": {
          "type": "string"
        }
      },
      "type": "object"
    },
    "MessageRequest": {
      "properties": {
        "phone": {
          "type": "string"
        }
      },
      "type": "object"
    },
    "ReactMessageRequest": {
      "properties": {
        "emoji": {
          "type": "string"
        },
        "phone": {
          "type": "string"
        }
      },
      "type": "object"
    },
    "Recipient": {
      "properties": {
        "countryCode": {
          "type": "string"
        },
        "phoneNumber": {
          "type": "string"
        },
        "variables": {
          "additionalProperties": true,
          "type": "object"
        }
      },
      "type": "object"
    },
    "RevokeMessageRequest": {
      "properties": {
        "phone": {
          "type": "string"
        }
      },
      "type": "object"
    },
    "SendAudioRequest": {
      "properties": {
        "audio": {
          "type": "string"
        },
        "phone": {
          "type": "string"
        }
      },
      "type": "object"
    },
    "SendContactRequest": {
      "properties": {
        "contact_name": {
          "type": "string"
        },
        "contact_phone": {
          "type": "string"
        },
        "phone": {
          "type": "string"
        }
      },
      "type": "object"
    },
    "SendDocumentRequest": {
      "properties": {
        "document": {
          "type": "string"
        },
        "file_name": {
          "type": "string"
        },
        "phone": {
          "type": "string"
        }
      },
      "type": "object"
    },
    "SendEmailAPIRequest": {
      "example": {
        "html_body": "<p>Your order is ready.</p>",
        "subject": "Order confirmation",
        "to": "customer@example.com"
      },
      "properties": {
        "body": {
          "type": "string"
        },
        "scheduled_at": {
          "type": "string"
        },
        "subject": {
          "type": "string"
        },
        "template_id": {
          "type": "string"
        },
        "to": {
          "type": "string"
        },
        "to_name": {
          "type": "string"
        },
        "track": {
          "type": "boolean"
        },
        "variables": {
          "additionalProperties": true,
          "type": "object"
        }
      },
      "type": "object"
    },
    "SendImageRequest": {
      "properties": {
        "caption": {
          "type": "string"
        },
        "image": {
          "type": "string"
        },
        "phone": {
          "type": "string"
        }
      },
      "type": "object"
    },
    "SendInteractiveRequest": {
      "properties": {
        "body": {
          "type": "string"
        },
        "buttons": {
          "items": {
            "$ref": "#/definitions/InteractiveButton"
          },
          "type": "array"
        },
        "footer": {
          "type": "string"
        },
        "header": {
          "type": "string"
        },
        "phone": {
          "type": "string"
        }
      },
      "type": "object"
    },
    "SendLinkRequest": {
      "properties": {
        "caption": {
          "type": "string"
        },
        "link": {
          "type": "string"
        },
        "phone": {
          "type": "string"
        }
      },
      "type": "object"
    },
    "SendListRequest": {
      "properties": {
        "button_text": {
          "type": "string"
        },
        "description": {
          "type": "string"
        },
        "phone": {
          "type": "string"
        },
        "sections": {
          "items": {
            "additionalProperties": true,
            "type": "object"
          },
          "type": "array"
        },
        "title": {
          "type": "string"
        }
      },
      "type": "object"
    },
    "SendLocationRequest": {
      "properties": {
        "latitude": {
          "type": "number"
        },
        "longitude": {
          "type": "number"
        },
        "phone": {
          "type": "string"
        }
      },
      "type": "object"
    },
    "SendPollRequest": {
      "properties": {
        "max_answer": {
          "type": "integer"
        },
        "options": {
          "items": {
            "type": "string"
          },
          "type": "array"
        },
        "phone": {
          "type": "string"
        },
        "question": {
          "type": "string"
        }
      },
      "type": "object"
    },
    "SendRequest": {
      "example": {
        "allowDefaultSenderFallback": false,
        "message": "Your order is ready.",
        "phoneNumber": "+254712345678",
        "senderID": "GENIUS"
      },
      "properties": {
        "allowDefaultSenderFallback": {
          "type": "boolean"
        },
        "clientReference": {
          "type": "string"
        },
        "countryCode": {
          "type": "string"
        },
        "message": {
          "type": "string"
        },
        "phoneNumber": {
          "type": "string"
        },
        "quoteID": {
          "type": "string"
        },
        "recipients": {
          "items": {
            "$ref": "#/definitions/Recipient"
          },
          "type": "array"
        },
        "scheduledAt": {
          "format": "date-time",
          "type": "string"
        },
        "senderID": {
          "type": "string"
        }
      },
      "type": "object"
    },
    "SendVideoRequest": {
      "properties": {
        "caption": {
          "type": "string"
        },
        "phone": {
          "type": "string"
        },
        "video": {
          "type": "string"
        }
      },
      "type": "object"
    },
    "SmsRecipient": {
      "properties": {
        "name": {
          "type": "string"
        },
        "phone": {
          "type": "string"
        },
        "variables": {
          "additionalProperties": true,
          "type": "object"
        }
      },
      "type": "object"
    },
    "UnifiedSendRequest": {
      "example": {
        "channel": "sms",
        "message": "Your order is ready.",
        "recipient": "254700000000"
      },
      "properties": {
        "channel": {
          "type": "string"
        },
        "device_id": {
          "type": "string"
        },
        "message": {
          "type": "string"
        },
        "name": {
          "type": "string"
        },
        "provider_id": {
          "type": "string"
        },
        "recipient": {
          "type": "string"
        },
        "senderID": {
          "type": "string"
        },
        "subject": {
          "type": "string"
        },
        "template_id": {
          "type": "string"
        },
        "type": {
          "type": "string"
        },
        "variables": {
          "additionalProperties": true,
          "type": "object"
        }
      },
      "type": "object"
    },
    "bulkDeviceSmsRequest": {
      "properties": {
        "message": {
          "type": "string"
        },
        "priority": {
          "type": "integer"
        },
        "recipients": {
          "items": {
            "$ref": "#/definitions/SmsRecipient"
          },
          "type": "array"
        },
        "scheduled_at": {
          "type": "string"
        },
        "sim": {
          "type": "integer"
        }
      },
      "type": "object"
    },
    "sendDeviceSmsRequest": {
      "properties": {
        "attachment": {
          "type": "string"
        },
        "message": {
          "type": "string"
        },
        "phone": {
          "type": "string"
        },
        "priority": {
          "type": "integer"
        },
        "scheduled_at": {
          "type": "string"
        },
        "sim": {
          "type": "integer"
        }
      },
      "type": "object"
    }
  },
  "info": {
    "description": "Send WhatsApp, SMS and email from your own systems. Create an API key in the dashboard, then pass it as Authorization: Bearer YOUR_API_KEY. Every response uses the envelope { success, message, data }. Connect devices, Cloud accounts and email providers in the dashboard first; the IDs it shows are the ones these endpoints expect.",
    "title": "WhatsAPI \u00b7 Integration API",
    "version": "1.0"
  },
  "paths": {
    "/api/v1/email/send": {
      "post": {
        "consumes": [
          "application/json"
        ],
        "description": "Authenticate with Authorization: Bearer YOUR_API_KEY. IDs in paths are the record ID suffix (the ID property), without the table prefix.",
        "operationId": "postEmailSend",
        "parameters": [
          {
            "in": "body",
            "name": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/SendEmailAPIRequest"
            }
          }
        ],
        "produces": [
          "application/json"
        ],
        "responses": {
          "200": {
            "description": "Success"
          },
          "400": {
            "description": "Invalid request",
            "schema": {
              "properties": {
                "message": {
                  "type": "string"
                }
              },
              "type": "object"
            }
          },
          "401": {
            "description": "Missing or invalid authentication",
            "schema": {
              "properties": {
                "message": {
                  "type": "string"
                }
              },
              "type": "object"
            }
          },
          "402": {
            "description": "Insufficient wallet balance",
            "schema": {
              "properties": {
                "message": {
                  "type": "string"
                }
              },
              "type": "object"
            }
          },
          "403": {
            "description": "API key lacks the required permission",
            "schema": {
              "properties": {
                "message": {
                  "type": "string"
                }
              },
              "type": "object"
            }
          },
          "404": {
            "description": "Record not found or not owned by this account",
            "schema": {
              "properties": {
                "message": {
                  "type": "string"
                }
              },
              "type": "object"
            }
          },
          "409": {
            "description": "Idempotency key conflict",
            "schema": {
              "properties": {
                "message": {
                  "type": "string"
                }
              },
              "type": "object"
            }
          },
          "422": {
            "description": "Request could not be routed, priced, or authorized",
            "schema": {
              "properties": {
                "message": {
                  "type": "string"
                }
              },
              "type": "object"
            }
          },
          "429": {
            "description": "Rate limit exceeded",
            "schema": {
              "properties": {
                "message": {
                  "type": "string"
                }
              },
              "type": "object"
            }
          },
          "500": {
            "description": "Internal error",
            "schema": {
              "properties": {
                "message": {
                  "type": "string"
                }
              },
              "type": "object"
            }
          }
        },
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "summary": "Send Email Message",
        "tags": [
          "Email"
        ]
      }
    },
    "/api/v1/email/send-bulk": {
      "post": {
        "consumes": [
          "application/json"
        ],
        "description": "Authenticate with Authorization: Bearer YOUR_API_KEY. IDs in paths are the record ID suffix (the ID property), without the table prefix.",
        "operationId": "postEmailSendBulk",
        "parameters": [
          {
            "in": "body",
            "name": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/BulkEmailRequest"
            }
          }
        ],
        "produces": [
          "application/json"
        ],
        "responses": {
          "200": {
            "description": "Success"
          },
          "400": {
            "description": "Invalid request",
            "schema": {
              "properties": {
                "message": {
                  "type": "string"
                }
              },
              "type": "object"
            }
          },
          "401": {
            "description": "Missing or invalid authentication",
            "schema": {
              "properties": {
                "message": {
                  "type": "string"
                }
              },
              "type": "object"
            }
          },
          "402": {
            "description": "Insufficient wallet balance",
            "schema": {
              "properties": {
                "message": {
                  "type": "string"
                }
              },
              "type": "object"
            }
          },
          "403": {
            "description": "API key lacks the required permission",
            "schema": {
              "properties": {
                "message": {
                  "type": "string"
                }
              },
              "type": "object"
            }
          },
          "404": {
            "description": "Record not found or not owned by this account",
            "schema": {
              "properties": {
                "message": {
                  "type": "string"
                }
              },
              "type": "object"
            }
          },
          "409": {
            "description": "Idempotency key conflict",
            "schema": {
              "properties": {
                "message": {
                  "type": "string"
                }
              },
              "type": "object"
            }
          },
          "422": {
            "description": "Request could not be routed, priced, or authorized",
            "schema": {
              "properties": {
                "message": {
                  "type": "string"
                }
              },
              "type": "object"
            }
          },
          "429": {
            "description": "Rate limit exceeded",
            "schema": {
              "properties": {
                "message": {
                  "type": "string"
                }
              },
              "type": "object"
            }
          },
          "500": {
            "description": "Internal error",
            "schema": {
              "properties": {
                "message": {
                  "type": "string"
                }
              },
              "type": "object"
            }
          }
        },
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "summary": "Send Bulk Email",
        "tags": [
          "Email"
        ]
      }
    },
    "/api/v1/messages/send": {
      "post": {
        "consumes": [
          "application/json"
        ],
        "description": "Authenticate with Authorization: Bearer YOUR_API_KEY. IDs in paths are the record ID suffix (the ID property), without the table prefix.",
        "operationId": "postMessagesSend",
        "parameters": [
          {
            "description": "Unique operation key. Reuse with the same payload returns the original batch; another payload returns 409.",
            "in": "header",
            "name": "Idempotency-Key",
            "required": true,
            "type": "string"
          },
          {
            "in": "body",
            "name": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/UnifiedSendRequest"
            }
          }
        ],
        "produces": [
          "application/json"
        ],
        "responses": {
          "200": {
            "description": "Success"
          },
          "400": {
            "description": "Invalid request",
            "schema": {
              "properties": {
                "message": {
                  "type": "string"
                }
              },
              "type": "object"
            }
          },
          "401": {
            "description": "Missing or invalid authentication",
            "schema": {
              "properties": {
                "message": {
                  "type": "string"
                }
              },
              "type": "object"
            }
          },
          "402": {
            "description": "Insufficient wallet balance",
            "schema": {
              "properties": {
                "message": {
                  "type": "string"
                }
              },
              "type": "object"
            }
          },
          "403": {
            "description": "API key lacks the required permission",
            "schema": {
              "properties": {
                "message": {
                  "type": "string"
                }
              },
              "type": "object"
            }
          },
          "404": {
            "description": "Record not found or not owned by this account",
            "schema": {
              "properties": {
                "message": {
                  "type": "string"
                }
              },
              "type": "object"
            }
          },
          "409": {
            "description": "Idempotency key conflict",
            "schema": {
              "properties": {
                "message": {
                  "type": "string"
                }
              },
              "type": "object"
            }
          },
          "422": {
            "description": "Request could not be routed, priced, or authorized",
            "schema": {
              "properties": {
                "message": {
                  "type": "string"
                }
              },
              "type": "object"
            }
          },
          "429": {
            "description": "Rate limit exceeded",
            "schema": {
              "properties": {
                "message": {
                  "type": "string"
                }
              },
              "type": "object"
            }
          },
          "500": {
            "description": "Internal error",
            "schema": {
              "properties": {
                "message": {
                  "type": "string"
                }
              },
              "type": "object"
            }
          }
        },
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "summary": "Send",
        "tags": [
          "Messages"
        ]
      }
    },
    "/api/v1/sms/batches/{id}": {
      "get": {
        "description": "Authenticate with Authorization: Bearer YOUR_API_KEY. IDs in paths are the record ID suffix (the ID property), without the table prefix.\nRequires the sms:read API-key permission.",
        "operationId": "getSmsBatchesId",
        "parameters": [
          {
            "description": "Record ID suffix or identifier returned by the corresponding list endpoint.",
            "in": "path",
            "name": "id",
            "required": true,
            "type": "string"
          }
        ],
        "produces": [
          "application/json"
        ],
        "responses": {
          "200": {
            "description": "Success"
          },
          "400": {
            "description": "Invalid request",
            "schema": {
              "properties": {
                "message": {
                  "type": "string"
                }
              },
              "type": "object"
            }
          },
          "401": {
            "description": "Missing or invalid authentication",
            "schema": {
              "properties": {
                "message": {
                  "type": "string"
                }
              },
              "type": "object"
            }
          },
          "402": {
            "description": "Insufficient wallet balance",
            "schema": {
              "properties": {
                "message": {
                  "type": "string"
                }
              },
              "type": "object"
            }
          },
          "403": {
            "description": "API key lacks the required permission",
            "schema": {
              "properties": {
                "message": {
                  "type": "string"
                }
              },
              "type": "object"
            }
          },
          "404": {
            "description": "Record not found or not owned by this account",
            "schema": {
              "properties": {
                "message": {
                  "type": "string"
                }
              },
              "type": "object"
            }
          },
          "409": {
            "description": "Idempotency key conflict",
            "schema": {
              "properties": {
                "message": {
                  "type": "string"
                }
              },
              "type": "object"
            }
          },
          "422": {
            "description": "Request could not be routed, priced, or authorized",
            "schema": {
              "properties": {
                "message": {
                  "type": "string"
                }
              },
              "type": "object"
            }
          },
          "429": {
            "description": "Rate limit exceeded",
            "schema": {
              "properties": {
                "message": {
                  "type": "string"
                }
              },
              "type": "object"
            }
          },
          "500": {
            "description": "Internal error",
            "schema": {
              "properties": {
                "message": {
                  "type": "string"
                }
              },
              "type": "object"
            }
          }
        },
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "summary": "Batch",
        "tags": [
          "SMS"
        ]
      }
    },
    "/api/v1/sms/catalog": {
      "get": {
        "description": "Authenticate with Authorization: Bearer YOUR_API_KEY. IDs in paths are the record ID suffix (the ID property), without the table prefix.\nRequires the sms:read API-key permission.",
        "operationId": "getSmsCatalog",
        "parameters": [],
        "produces": [
          "application/json"
        ],
        "responses": {
          "200": {
            "description": "Success"
          },
          "400": {
            "description": "Invalid request",
            "schema": {
              "properties": {
                "message": {
                  "type": "string"
                }
              },
              "type": "object"
            }
          },
          "401": {
            "description": "Missing or invalid authentication",
            "schema": {
              "properties": {
                "message": {
                  "type": "string"
                }
              },
              "type": "object"
            }
          },
          "402": {
            "description": "Insufficient wallet balance",
            "schema": {
              "properties": {
                "message": {
                  "type": "string"
                }
              },
              "type": "object"
            }
          },
          "403": {
            "description": "API key lacks the required permission",
            "schema": {
              "properties": {
                "message": {
                  "type": "string"
                }
              },
              "type": "object"
            }
          },
          "404": {
            "description": "Record not found or not owned by this account",
            "schema": {
              "properties": {
                "message": {
                  "type": "string"
                }
              },
              "type": "object"
            }
          },
          "409": {
            "description": "Idempotency key conflict",
            "schema": {
              "properties": {
                "message": {
                  "type": "string"
                }
              },
              "type": "object"
            }
          },
          "422": {
            "description": "Request could not be routed, priced, or authorized",
            "schema": {
              "properties": {
                "message": {
                  "type": "string"
                }
              },
              "type": "object"
            }
          },
          "429": {
            "description": "Rate limit exceeded",
            "schema": {
              "properties": {
                "message": {
                  "type": "string"
                }
              },
              "type": "object"
            }
          },
          "500": {
            "description": "Internal error",
            "schema": {
              "properties": {
                "message": {
                  "type": "string"
                }
              },
              "type": "object"
            }
          }
        },
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "summary": "Catalog",
        "tags": [
          "SMS"
        ]
      }
    },
    "/api/v1/sms/devices": {
      "get": {
        "description": "Authenticate with Authorization: Bearer YOUR_API_KEY. IDs in paths are the record ID suffix (the ID property), without the table prefix.",
        "operationId": "getSmsDevices",
        "parameters": [],
        "produces": [
          "application/json"
        ],
        "responses": {
          "200": {
            "description": "Success"
          },
          "400": {
            "description": "Invalid request",
            "schema": {
              "properties": {
                "message": {
                  "type": "string"
                }
              },
              "type": "object"
            }
          },
          "401": {
            "description": "Missing or invalid authentication",
            "schema": {
              "properties": {
                "message": {
                  "type": "string"
                }
              },
              "type": "object"
            }
          },
          "402": {
            "description": "Insufficient wallet balance",
            "schema": {
              "properties": {
                "message": {
                  "type": "string"
                }
              },
              "type": "object"
            }
          },
          "403": {
            "description": "API key lacks the required permission",
            "schema": {
              "properties": {
                "message": {
                  "type": "string"
                }
              },
              "type": "object"
            }
          },
          "404": {
            "description": "Record not found or not owned by this account",
            "schema": {
              "properties": {
                "message": {
                  "type": "string"
                }
              },
              "type": "object"
            }
          },
          "409": {
            "description": "Idempotency key conflict",
            "schema": {
              "properties": {
                "message": {
                  "type": "string"
                }
              },
              "type": "object"
            }
          },
          "422": {
            "description": "Request could not be routed, priced, or authorized",
            "schema": {
              "properties": {
                "message": {
                  "type": "string"
                }
              },
              "type": "object"
            }
          },
          "429": {
            "description": "Rate limit exceeded",
            "schema": {
              "properties": {
                "message": {
                  "type": "string"
                }
              },
              "type": "object"
            }
          },
          "500": {
            "description": "Internal error",
            "schema": {
              "properties": {
                "message": {
                  "type": "string"
                }
              },
              "type": "object"
            }
          }
        },
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "summary": "List Devices",
        "tags": [
          "SMS devices"
        ]
      }
    },
    "/api/v1/sms/devices/{id}": {
      "get": {
        "description": "Authenticate with Authorization: Bearer YOUR_API_KEY. IDs in paths are the record ID suffix (the ID property), without the table prefix.",
        "operationId": "getSmsDevicesId",
        "parameters": [
          {
            "description": "Record ID suffix or identifier returned by the corresponding list endpoint.",
            "in": "path",
            "name": "id",
            "required": true,
            "type": "string"
          }
        ],
        "produces": [
          "application/json"
        ],
        "responses": {
          "200": {
            "description": "Success"
          },
          "400": {
            "description": "Invalid request",
            "schema": {
              "properties": {
                "message": {
                  "type": "string"
                }
              },
              "type": "object"
            }
          },
          "401": {
            "description": "Missing or invalid authentication",
            "schema": {
              "properties": {
                "message": {
                  "type": "string"
                }
              },
              "type": "object"
            }
          },
          "402": {
            "description": "Insufficient wallet balance",
            "schema": {
              "properties": {
                "message": {
                  "type": "string"
                }
              },
              "type": "object"
            }
          },
          "403": {
            "description": "API key lacks the required permission",
            "schema": {
              "properties": {
                "message": {
                  "type": "string"
                }
              },
              "type": "object"
            }
          },
          "404": {
            "description": "Record not found or not owned by this account",
            "schema": {
              "properties": {
                "message": {
                  "type": "string"
                }
              },
              "type": "object"
            }
          },
          "409": {
            "description": "Idempotency key conflict",
            "schema": {
              "properties": {
                "message": {
                  "type": "string"
                }
              },
              "type": "object"
            }
          },
          "422": {
            "description": "Request could not be routed, priced, or authorized",
            "schema": {
              "properties": {
                "message": {
                  "type": "string"
                }
              },
              "type": "object"
            }
          },
          "429": {
            "description": "Rate limit exceeded",
            "schema": {
              "properties": {
                "message": {
                  "type": "string"
                }
              },
              "type": "object"
            }
          },
          "500": {
            "description": "Internal error",
            "schema": {
              "properties": {
                "message": {
                  "type": "string"
                }
              },
              "type": "object"
            }
          }
        },
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "summary": "List Device",
        "tags": [
          "SMS devices"
        ]
      }
    },
    "/api/v1/sms/devices/{id}/send": {
      "post": {
        "consumes": [
          "application/json"
        ],
        "description": "Authenticate with Authorization: Bearer YOUR_API_KEY. IDs in paths are the record ID suffix (the ID property), without the table prefix.",
        "operationId": "postSmsDevicesIdSend",
        "parameters": [
          {
            "description": "Record ID suffix or identifier returned by the corresponding list endpoint.",
            "in": "path",
            "name": "id",
            "required": true,
            "type": "string"
          },
          {
            "in": "body",
            "name": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/sendDeviceSmsRequest"
            }
          }
        ],
        "produces": [
          "application/json"
        ],
        "responses": {
          "200": {
            "description": "Success"
          },
          "400": {
            "description": "Invalid request",
            "schema": {
              "properties": {
                "message": {
                  "type": "string"
                }
              },
              "type": "object"
            }
          },
          "401": {
            "description": "Missing or invalid authentication",
            "schema": {
              "properties": {
                "message": {
                  "type": "string"
                }
              },
              "type": "object"
            }
          },
          "402": {
            "description": "Insufficient wallet balance",
            "schema": {
              "properties": {
                "message": {
                  "type": "string"
                }
              },
              "type": "object"
            }
          },
          "403": {
            "description": "API key lacks the required permission",
            "schema": {
              "properties": {
                "message": {
                  "type": "string"
                }
              },
              "type": "object"
            }
          },
          "404": {
            "description": "Record not found or not owned by this account",
            "schema": {
              "properties": {
                "message": {
                  "type": "string"
                }
              },
              "type": "object"
            }
          },
          "409": {
            "description": "Idempotency key conflict",
            "schema": {
              "properties": {
                "message": {
                  "type": "string"
                }
              },
              "type": "object"
            }
          },
          "422": {
            "description": "Request could not be routed, priced, or authorized",
            "schema": {
              "properties": {
                "message": {
                  "type": "string"
                }
              },
              "type": "object"
            }
          },
          "429": {
            "description": "Rate limit exceeded",
            "schema": {
              "properties": {
                "message": {
                  "type": "string"
                }
              },
              "type": "object"
            }
          },
          "500": {
            "description": "Internal error",
            "schema": {
              "properties": {
                "message": {
                  "type": "string"
                }
              },
              "type": "object"
            }
          }
        },
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "summary": "Send SMS",
        "tags": [
          "SMS devices"
        ]
      }
    },
    "/api/v1/sms/devices/{id}/send-bulk": {
      "post": {
        "consumes": [
          "application/json"
        ],
        "description": "Authenticate with Authorization: Bearer YOUR_API_KEY. IDs in paths are the record ID suffix (the ID property), without the table prefix.",
        "operationId": "postSmsDevicesIdSendBulk",
        "parameters": [
          {
            "description": "Record ID suffix or identifier returned by the corresponding list endpoint.",
            "in": "path",
            "name": "id",
            "required": true,
            "type": "string"
          },
          {
            "in": "body",
            "name": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/bulkDeviceSmsRequest"
            }
          }
        ],
        "produces": [
          "application/json"
        ],
        "responses": {
          "200": {
            "description": "Success"
          },
          "400": {
            "description": "Invalid request",
            "schema": {
              "properties": {
                "message": {
                  "type": "string"
                }
              },
              "type": "object"
            }
          },
          "401": {
            "description": "Missing or invalid authentication",
            "schema": {
              "properties": {
                "message": {
                  "type": "string"
                }
              },
              "type": "object"
            }
          },
          "402": {
            "description": "Insufficient wallet balance",
            "schema": {
              "properties": {
                "message": {
                  "type": "string"
                }
              },
              "type": "object"
            }
          },
          "403": {
            "description": "API key lacks the required permission",
            "schema": {
              "properties": {
                "message": {
                  "type": "string"
                }
              },
              "type": "object"
            }
          },
          "404": {
            "description": "Record not found or not owned by this account",
            "schema": {
              "properties": {
                "message": {
                  "type": "string"
                }
              },
              "type": "object"
            }
          },
          "409": {
            "description": "Idempotency key conflict",
            "schema": {
              "properties": {
                "message": {
                  "type": "string"
                }
              },
              "type": "object"
            }
          },
          "422": {
            "description": "Request could not be routed, priced, or authorized",
            "schema": {
              "properties": {
                "message": {
                  "type": "string"
                }
              },
              "type": "object"
            }
          },
          "429": {
            "description": "Rate limit exceeded",
            "schema": {
              "properties": {
                "message": {
                  "type": "string"
                }
              },
              "type": "object"
            }
          },
          "500": {
            "description": "Internal error",
            "schema": {
              "properties": {
                "message": {
                  "type": "string"
                }
              },
              "type": "object"
            }
          }
        },
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "summary": "Send Bulk SMS",
        "tags": [
          "SMS devices"
        ]
      }
    },
    "/api/v1/sms/logs": {
      "get": {
        "description": "Authenticate with Authorization: Bearer YOUR_API_KEY. IDs in paths are the record ID suffix (the ID property), without the table prefix.\nRequires the sms:read API-key permission.",
        "operationId": "getSmsLogs",
        "parameters": [],
        "produces": [
          "application/json"
        ],
        "responses": {
          "200": {
            "description": "Success"
          },
          "400": {
            "description": "Invalid request",
            "schema": {
              "properties": {
                "message": {
                  "type": "string"
                }
              },
              "type": "object"
            }
          },
          "401": {
            "description": "Missing or invalid authentication",
            "schema": {
              "properties": {
                "message": {
                  "type": "string"
                }
              },
              "type": "object"
            }
          },
          "402": {
            "description": "Insufficient wallet balance",
            "schema": {
              "properties": {
                "message": {
                  "type": "string"
                }
              },
              "type": "object"
            }
          },
          "403": {
            "description": "API key lacks the required permission",
            "schema": {
              "properties": {
                "message": {
                  "type": "string"
                }
              },
              "type": "object"
            }
          },
          "404": {
            "description": "Record not found or not owned by this account",
            "schema": {
              "properties": {
                "message": {
                  "type": "string"
                }
              },
              "type": "object"
            }
          },
          "409": {
            "description": "Idempotency key conflict",
            "schema": {
              "properties": {
                "message": {
                  "type": "string"
                }
              },
              "type": "object"
            }
          },
          "422": {
            "description": "Request could not be routed, priced, or authorized",
            "schema": {
              "properties": {
                "message": {
                  "type": "string"
                }
              },
              "type": "object"
            }
          },
          "429": {
            "description": "Rate limit exceeded",
            "schema": {
              "properties": {
                "message": {
                  "type": "string"
                }
              },
              "type": "object"
            }
          },
          "500": {
            "description": "Internal error",
            "schema": {
              "properties": {
                "message": {
                  "type": "string"
                }
              },
              "type": "object"
            }
          }
        },
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "summary": "Messages",
        "tags": [
          "SMS"
        ]
      }
    },
    "/api/v1/sms/messages": {
      "get": {
        "description": "Authenticate with Authorization: Bearer YOUR_API_KEY. IDs in paths are the record ID suffix (the ID property), without the table prefix.",
        "operationId": "getSmsMessages",
        "parameters": [
          {
            "in": "query",
            "name": "page",
            "required": false,
            "type": "string"
          },
          {
            "in": "query",
            "name": "limit",
            "required": false,
            "type": "string"
          },
          {
            "in": "query",
            "name": "status",
            "required": false,
            "type": "string"
          },
          {
            "in": "query",
            "name": "device_id",
            "required": false,
            "type": "string"
          }
        ],
        "produces": [
          "application/json"
        ],
        "responses": {
          "200": {
            "description": "Success"
          },
          "400": {
            "description": "Invalid request",
            "schema": {
              "properties": {
                "message": {
                  "type": "string"
                }
              },
              "type": "object"
            }
          },
          "401": {
            "description": "Missing or invalid authentication",
            "schema": {
              "properties": {
                "message": {
                  "type": "string"
                }
              },
              "type": "object"
            }
          },
          "402": {
            "description": "Insufficient wallet balance",
            "schema": {
              "properties": {
                "message": {
                  "type": "string"
                }
              },
              "type": "object"
            }
          },
          "403": {
            "description": "API key lacks the required permission",
            "schema": {
              "properties": {
                "message": {
                  "type": "string"
                }
              },
              "type": "object"
            }
          },
          "404": {
            "description": "Record not found or not owned by this account",
            "schema": {
              "properties": {
                "message": {
                  "type": "string"
                }
              },
              "type": "object"
            }
          },
          "409": {
            "description": "Idempotency key conflict",
            "schema": {
              "properties": {
                "message": {
                  "type": "string"
                }
              },
              "type": "object"
            }
          },
          "422": {
            "description": "Request could not be routed, priced, or authorized",
            "schema": {
              "properties": {
                "message": {
                  "type": "string"
                }
              },
              "type": "object"
            }
          },
          "429": {
            "description": "Rate limit exceeded",
            "schema": {
              "properties": {
                "message": {
                  "type": "string"
                }
              },
              "type": "object"
            }
          },
          "500": {
            "description": "Internal error",
            "schema": {
              "properties": {
                "message": {
                  "type": "string"
                }
              },
              "type": "object"
            }
          }
        },
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "summary": "List Messages",
        "tags": [
          "SMS devices"
        ]
      }
    },
    "/api/v1/sms/quote": {
      "post": {
        "consumes": [
          "application/json"
        ],
        "description": "Authenticate with Authorization: Bearer YOUR_API_KEY. IDs in paths are the record ID suffix (the ID property), without the table prefix.\nRequires the sms:send API-key permission. Sending also requires an Idempotency-Key header.",
        "operationId": "postSmsQuote",
        "parameters": [
          {
            "in": "body",
            "name": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/SendRequest"
            }
          }
        ],
        "produces": [
          "application/json"
        ],
        "responses": {
          "200": {
            "description": "Success"
          },
          "400": {
            "description": "Invalid request",
            "schema": {
              "properties": {
                "message": {
                  "type": "string"
                }
              },
              "type": "object"
            }
          },
          "401": {
            "description": "Missing or invalid authentication",
            "schema": {
              "properties": {
                "message": {
                  "type": "string"
                }
              },
              "type": "object"
            }
          },
          "402": {
            "description": "Insufficient wallet balance",
            "schema": {
              "properties": {
                "message": {
                  "type": "string"
                }
              },
              "type": "object"
            }
          },
          "403": {
            "description": "API key lacks the required permission",
            "schema": {
              "properties": {
                "message": {
                  "type": "string"
                }
              },
              "type": "object"
            }
          },
          "404": {
            "description": "Record not found or not owned by this account",
            "schema": {
              "properties": {
                "message": {
                  "type": "string"
                }
              },
              "type": "object"
            }
          },
          "409": {
            "description": "Idempotency key conflict",
            "schema": {
              "properties": {
                "message": {
                  "type": "string"
                }
              },
              "type": "object"
            }
          },
          "422": {
            "description": "Request could not be routed, priced, or authorized",
            "schema": {
              "properties": {
                "message": {
                  "type": "string"
                }
              },
              "type": "object"
            }
          },
          "429": {
            "description": "Rate limit exceeded",
            "schema": {
              "properties": {
                "message": {
                  "type": "string"
                }
              },
              "type": "object"
            }
          },
          "500": {
            "description": "Internal error",
            "schema": {
              "properties": {
                "message": {
                  "type": "string"
                }
              },
              "type": "object"
            }
          }
        },
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "summary": "Quote",
        "tags": [
          "SMS"
        ]
      }
    },
    "/api/v1/sms/received": {
      "get": {
        "description": "Authenticate with Authorization: Bearer YOUR_API_KEY. IDs in paths are the record ID suffix (the ID property), without the table prefix.",
        "operationId": "getSmsReceived",
        "parameters": [
          {
            "in": "query",
            "name": "page",
            "required": false,
            "type": "string"
          },
          {
            "in": "query",
            "name": "limit",
            "required": false,
            "type": "string"
          }
        ],
        "produces": [
          "application/json"
        ],
        "responses": {
          "200": {
            "description": "Success"
          },
          "400": {
            "description": "Invalid request",
            "schema": {
              "properties": {
                "message": {
                  "type": "string"
                }
              },
              "type": "object"
            }
          },
          "401": {
            "description": "Missing or invalid authentication",
            "schema": {
              "properties": {
                "message": {
                  "type": "string"
                }
              },
              "type": "object"
            }
          },
          "402": {
            "description": "Insufficient wallet balance",
            "schema": {
              "properties": {
                "message": {
                  "type": "string"
                }
              },
              "type": "object"
            }
          },
          "403": {
            "description": "API key lacks the required permission",
            "schema": {
              "properties": {
                "message": {
                  "type": "string"
                }
              },
              "type": "object"
            }
          },
          "404": {
            "description": "Record not found or not owned by this account",
            "schema": {
              "properties": {
                "message": {
                  "type": "string"
                }
              },
              "type": "object"
            }
          },
          "409": {
            "description": "Idempotency key conflict",
            "schema": {
              "properties": {
                "message": {
                  "type": "string"
                }
              },
              "type": "object"
            }
          },
          "422": {
            "description": "Request could not be routed, priced, or authorized",
            "schema": {
              "properties": {
                "message": {
                  "type": "string"
                }
              },
              "type": "object"
            }
          },
          "429": {
            "description": "Rate limit exceeded",
            "schema": {
              "properties": {
                "message": {
                  "type": "string"
                }
              },
              "type": "object"
            }
          },
          "500": {
            "description": "Internal error",
            "schema": {
              "properties": {
                "message": {
                  "type": "string"
                }
              },
              "type": "object"
            }
          }
        },
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "summary": "List Received",
        "tags": [
          "SMS devices"
        ]
      }
    },
    "/api/v1/sms/reports/{id}": {
      "get": {
        "description": "Authenticate with Authorization: Bearer YOUR_API_KEY. IDs in paths are the record ID suffix (the ID property), without the table prefix.\nRequires the sms:read API-key permission.",
        "operationId": "getSmsReportsId",
        "parameters": [
          {
            "description": "Record ID suffix or identifier returned by the corresponding list endpoint.",
            "in": "path",
            "name": "id",
            "required": true,
            "type": "string"
          }
        ],
        "produces": [
          "application/json"
        ],
        "responses": {
          "200": {
            "description": "Success"
          },
          "400": {
            "description": "Invalid request",
            "schema": {
              "properties": {
                "message": {
                  "type": "string"
                }
              },
              "type": "object"
            }
          },
          "401": {
            "description": "Missing or invalid authentication",
            "schema": {
              "properties": {
                "message": {
                  "type": "string"
                }
              },
              "type": "object"
            }
          },
          "402": {
            "description": "Insufficient wallet balance",
            "schema": {
              "properties": {
                "message": {
                  "type": "string"
                }
              },
              "type": "object"
            }
          },
          "403": {
            "description": "API key lacks the required permission",
            "schema": {
              "properties": {
                "message": {
                  "type": "string"
                }
              },
              "type": "object"
            }
          },
          "404": {
            "description": "Record not found or not owned by this account",
            "schema": {
              "properties": {
                "message": {
                  "type": "string"
                }
              },
              "type": "object"
            }
          },
          "409": {
            "description": "Idempotency key conflict",
            "schema": {
              "properties": {
                "message": {
                  "type": "string"
                }
              },
              "type": "object"
            }
          },
          "422": {
            "description": "Request could not be routed, priced, or authorized",
            "schema": {
              "properties": {
                "message": {
                  "type": "string"
                }
              },
              "type": "object"
            }
          },
          "429": {
            "description": "Rate limit exceeded",
            "schema": {
              "properties": {
                "message": {
                  "type": "string"
                }
              },
              "type": "object"
            }
          },
          "500": {
            "description": "Internal error",
            "schema": {
              "properties": {
                "message": {
                  "type": "string"
                }
              },
              "type": "object"
            }
          }
        },
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "summary": "Message",
        "tags": [
          "SMS"
        ]
      }
    },
    "/api/v1/sms/reports/{id}/cancel": {
      "post": {
        "description": "Authenticate with Authorization: Bearer YOUR_API_KEY. IDs in paths are the record ID suffix (the ID property), without the table prefix.\nRequires the sms:read API-key permission.\nRequires the sms:cancel API-key permission.",
        "operationId": "postSmsReportsIdCancel",
        "parameters": [
          {
            "description": "Record ID suffix or identifier returned by the corresponding list endpoint.",
            "in": "path",
            "name": "id",
            "required": true,
            "type": "string"
          }
        ],
        "produces": [
          "application/json"
        ],
        "responses": {
          "200": {
            "description": "Success"
          },
          "400": {
            "description": "Invalid request",
            "schema": {
              "properties": {
                "message": {
                  "type": "string"
                }
              },
              "type": "object"
            }
          },
          "401": {
            "description": "Missing or invalid authentication",
            "schema": {
              "properties": {
                "message": {
                  "type": "string"
                }
              },
              "type": "object"
            }
          },
          "402": {
            "description": "Insufficient wallet balance",
            "schema": {
              "properties": {
                "message": {
                  "type": "string"
                }
              },
              "type": "object"
            }
          },
          "403": {
            "description": "API key lacks the required permission",
            "schema": {
              "properties": {
                "message": {
                  "type": "string"
                }
              },
              "type": "object"
            }
          },
          "404": {
            "description": "Record not found or not owned by this account",
            "schema": {
              "properties": {
                "message": {
                  "type": "string"
                }
              },
              "type": "object"
            }
          },
          "409": {
            "description": "Idempotency key conflict",
            "schema": {
              "properties": {
                "message": {
                  "type": "string"
                }
              },
              "type": "object"
            }
          },
          "422": {
            "description": "Request could not be routed, priced, or authorized",
            "schema": {
              "properties": {
                "message": {
                  "type": "string"
                }
              },
              "type": "object"
            }
          },
          "429": {
            "description": "Rate limit exceeded",
            "schema": {
              "properties": {
                "message": {
                  "type": "string"
                }
              },
              "type": "object"
            }
          },
          "500": {
            "description": "Internal error",
            "schema": {
              "properties": {
                "message": {
                  "type": "string"
                }
              },
              "type": "object"
            }
          }
        },
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "summary": "Cancel",
        "tags": [
          "SMS"
        ]
      }
    },
    "/api/v1/sms/send": {
      "post": {
        "consumes": [
          "application/json"
        ],
        "description": "Authenticate with Authorization: Bearer YOUR_API_KEY. IDs in paths are the record ID suffix (the ID property), without the table prefix.\nRequires the sms:send API-key permission. Sending also requires an Idempotency-Key header.",
        "operationId": "postSmsSend",
        "parameters": [
          {
            "description": "Unique operation key. Reuse with the same payload returns the original batch; another payload returns 409.",
            "in": "header",
            "name": "Idempotency-Key",
            "required": true,
            "type": "string"
          },
          {
            "in": "body",
            "name": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/SendRequest"
            }
          }
        ],
        "produces": [
          "application/json"
        ],
        "responses": {
          "202": {
            "description": "Accepted for background processing"
          },
          "400": {
            "description": "Invalid request",
            "schema": {
              "properties": {
                "message": {
                  "type": "string"
                }
              },
              "type": "object"
            }
          },
          "401": {
            "description": "Missing or invalid authentication",
            "schema": {
              "properties": {
                "message": {
                  "type": "string"
                }
              },
              "type": "object"
            }
          },
          "402": {
            "description": "Insufficient wallet balance",
            "schema": {
              "properties": {
                "message": {
                  "type": "string"
                }
              },
              "type": "object"
            }
          },
          "403": {
            "description": "API key lacks the required permission",
            "schema": {
              "properties": {
                "message": {
                  "type": "string"
                }
              },
              "type": "object"
            }
          },
          "404": {
            "description": "Record not found or not owned by this account",
            "schema": {
              "properties": {
                "message": {
                  "type": "string"
                }
              },
              "type": "object"
            }
          },
          "409": {
            "description": "Idempotency key conflict",
            "schema": {
              "properties": {
                "message": {
                  "type": "string"
                }
              },
              "type": "object"
            }
          },
          "422": {
            "description": "Request could not be routed, priced, or authorized",
            "schema": {
              "properties": {
                "message": {
                  "type": "string"
                }
              },
              "type": "object"
            }
          },
          "429": {
            "description": "Rate limit exceeded",
            "schema": {
              "properties": {
                "message": {
                  "type": "string"
                }
              },
              "type": "object"
            }
          },
          "500": {
            "description": "Internal error",
            "schema": {
              "properties": {
                "message": {
                  "type": "string"
                }
              },
              "type": "object"
            }
          }
        },
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "summary": "Send",
        "tags": [
          "SMS"
        ]
      }
    },
    "/api/v1/sms/send-bulk": {
      "post": {
        "consumes": [
          "application/json"
        ],
        "description": "Authenticate with Authorization: Bearer YOUR_API_KEY. IDs in paths are the record ID suffix (the ID property), without the table prefix.\nRequires the sms:send API-key permission. Sending also requires an Idempotency-Key header.",
        "operationId": "postSmsSendBulk",
        "parameters": [
          {
            "description": "Unique operation key. Reuse with the same payload returns the original batch; another payload returns 409.",
            "in": "header",
            "name": "Idempotency-Key",
            "required": true,
            "type": "string"
          },
          {
            "in": "body",
            "name": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/SendRequest"
            }
          }
        ],
        "produces": [
          "application/json"
        ],
        "responses": {
          "202": {
            "description": "Accepted for background processing"
          },
          "400": {
            "description": "Invalid request",
            "schema": {
              "properties": {
                "message": {
                  "type": "string"
                }
              },
              "type": "object"
            }
          },
          "401": {
            "description": "Missing or invalid authentication",
            "schema": {
              "properties": {
                "message": {
                  "type": "string"
                }
              },
              "type": "object"
            }
          },
          "402": {
            "description": "Insufficient wallet balance",
            "schema": {
              "properties": {
                "message": {
                  "type": "string"
                }
              },
              "type": "object"
            }
          },
          "403": {
            "description": "API key lacks the required permission",
            "schema": {
              "properties": {
                "message": {
                  "type": "string"
                }
              },
              "type": "object"
            }
          },
          "404": {
            "description": "Record not found or not owned by this account",
            "schema": {
              "properties": {
                "message": {
                  "type": "string"
                }
              },
              "type": "object"
            }
          },
          "409": {
            "description": "Idempotency key conflict",
            "schema": {
              "properties": {
                "message": {
                  "type": "string"
                }
              },
              "type": "object"
            }
          },
          "422": {
            "description": "Request could not be routed, priced, or authorized",
            "schema": {
              "properties": {
                "message": {
                  "type": "string"
                }
              },
              "type": "object"
            }
          },
          "429": {
            "description": "Rate limit exceeded",
            "schema": {
              "properties": {
                "message": {
                  "type": "string"
                }
              },
              "type": "object"
            }
          },
          "500": {
            "description": "Internal error",
            "schema": {
              "properties": {
                "message": {
                  "type": "string"
                }
              },
              "type": "object"
            }
          }
        },
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "summary": "Send",
        "tags": [
          "SMS"
        ]
      }
    },
    "/api/v1/whatsapp/cloud/accounts": {
      "get": {
        "description": "Authenticate with Authorization: Bearer YOUR_API_KEY. IDs in paths are the record ID suffix (the ID property), without the table prefix.",
        "operationId": "getWhatsappCloudAccounts",
        "parameters": [],
        "produces": [
          "application/json"
        ],
        "responses": {
          "200": {
            "description": "Success"
          },
          "400": {
            "description": "Invalid request",
            "schema": {
              "properties": {
                "message": {
                  "type": "string"
                }
              },
              "type": "object"
            }
          },
          "401": {
            "description": "Missing or invalid authentication",
            "schema": {
              "properties": {
                "message": {
                  "type": "string"
                }
              },
              "type": "object"
            }
          },
          "402": {
            "description": "Insufficient wallet balance",
            "schema": {
              "properties": {
                "message": {
                  "type": "string"
                }
              },
              "type": "object"
            }
          },
          "403": {
            "description": "API key lacks the required permission",
            "schema": {
              "properties": {
                "message": {
                  "type": "string"
                }
              },
              "type": "object"
            }
          },
          "404": {
            "description": "Record not found or not owned by this account",
            "schema": {
              "properties": {
                "message": {
                  "type": "string"
                }
              },
              "type": "object"
            }
          },
          "409": {
            "description": "Idempotency key conflict",
            "schema": {
              "properties": {
                "message": {
                  "type": "string"
                }
              },
              "type": "object"
            }
          },
          "422": {
            "description": "Request could not be routed, priced, or authorized",
            "schema": {
              "properties": {
                "message": {
                  "type": "string"
                }
              },
              "type": "object"
            }
          },
          "429": {
            "description": "Rate limit exceeded",
            "schema": {
              "properties": {
                "message": {
                  "type": "string"
                }
              },
              "type": "object"
            }
          },
          "500": {
            "description": "Internal error",
            "schema": {
              "properties": {
                "message": {
                  "type": "string"
                }
              },
              "type": "object"
            }
          }
        },
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "summary": "List Accounts",
        "tags": [
          "WhatsApp Cloud"
        ]
      }
    },
    "/api/v1/whatsapp/cloud/accounts/{id}": {
      "get": {
        "description": "Authenticate with Authorization: Bearer YOUR_API_KEY. IDs in paths are the record ID suffix (the ID property), without the table prefix.",
        "operationId": "getWhatsappCloudAccountsId",
        "parameters": [
          {
            "description": "Record ID suffix or identifier returned by the corresponding list endpoint.",
            "in": "path",
            "name": "id",
            "required": true,
            "type": "string"
          }
        ],
        "produces": [
          "application/json"
        ],
        "responses": {
          "200": {
            "description": "Success"
          },
          "400": {
            "description": "Invalid request",
            "schema": {
              "properties": {
                "message": {
                  "type": "string"
                }
              },
              "type": "object"
            }
          },
          "401": {
            "description": "Missing or invalid authentication",
            "schema": {
              "properties": {
                "message": {
                  "type": "string"
                }
              },
              "type": "object"
            }
          },
          "402": {
            "description": "Insufficient wallet balance",
            "schema": {
              "properties": {
                "message": {
                  "type": "string"
                }
              },
              "type": "object"
            }
          },
          "403": {
            "description": "API key lacks the required permission",
            "schema": {
              "properties": {
                "message": {
                  "type": "string"
                }
              },
              "type": "object"
            }
          },
          "404": {
            "description": "Record not found or not owned by this account",
            "schema": {
              "properties": {
                "message": {
                  "type": "string"
                }
              },
              "type": "object"
            }
          },
          "409": {
            "description": "Idempotency key conflict",
            "schema": {
              "properties": {
                "message": {
                  "type": "string"
                }
              },
              "type": "object"
            }
          },
          "422": {
            "description": "Request could not be routed, priced, or authorized",
            "schema": {
              "properties": {
                "message": {
                  "type": "string"
                }
              },
              "type": "object"
            }
          },
          "429": {
            "description": "Rate limit exceeded",
            "schema": {
              "properties": {
                "message": {
                  "type": "string"
                }
              },
              "type": "object"
            }
          },
          "500": {
            "description": "Internal error",
            "schema": {
              "properties": {
                "message": {
                  "type": "string"
                }
              },
              "type": "object"
            }
          }
        },
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "summary": "List Account",
        "tags": [
          "WhatsApp Cloud"
        ]
      }
    },
    "/api/v1/whatsapp/cloud/accounts/{id}/mark-read": {
      "post": {
        "description": "Authenticate with Authorization: Bearer YOUR_API_KEY. IDs in paths are the record ID suffix (the ID property), without the table prefix.",
        "operationId": "postWhatsappCloudAccountsIdMarkRead",
        "parameters": [
          {
            "description": "Record ID suffix or identifier returned by the corresponding list endpoint.",
            "in": "path",
            "name": "id",
            "required": true,
            "type": "string"
          }
        ],
        "produces": [
          "application/json"
        ],
        "responses": {
          "200": {
            "description": "Success"
          },
          "400": {
            "description": "Invalid request",
            "schema": {
              "properties": {
                "message": {
                  "type": "string"
                }
              },
              "type": "object"
            }
          },
          "401": {
            "description": "Missing or invalid authentication",
            "schema": {
              "properties": {
                "message": {
                  "type": "string"
                }
              },
              "type": "object"
            }
          },
          "402": {
            "description": "Insufficient wallet balance",
            "schema": {
              "properties": {
                "message": {
                  "type": "string"
                }
              },
              "type": "object"
            }
          },
          "403": {
            "description": "API key lacks the required permission",
            "schema": {
              "properties": {
                "message": {
                  "type": "string"
                }
              },
              "type": "object"
            }
          },
          "404": {
            "description": "Record not found or not owned by this account",
            "schema": {
              "properties": {
                "message": {
                  "type": "string"
                }
              },
              "type": "object"
            }
          },
          "409": {
            "description": "Idempotency key conflict",
            "schema": {
              "properties": {
                "message": {
                  "type": "string"
                }
              },
              "type": "object"
            }
          },
          "422": {
            "description": "Request could not be routed, priced, or authorized",
            "schema": {
              "properties": {
                "message": {
                  "type": "string"
                }
              },
              "type": "object"
            }
          },
          "429": {
            "description": "Rate limit exceeded",
            "schema": {
              "properties": {
                "message": {
                  "type": "string"
                }
              },
              "type": "object"
            }
          },
          "500": {
            "description": "Internal error",
            "schema": {
              "properties": {
                "message": {
                  "type": "string"
                }
              },
              "type": "object"
            }
          }
        },
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "summary": "Mark Read",
        "tags": [
          "WhatsApp Cloud"
        ]
      }
    },
    "/api/v1/whatsapp/cloud/accounts/{id}/send": {
      "post": {
        "consumes": [
          "application/json"
        ],
        "description": "Authenticate with Authorization: Bearer YOUR_API_KEY. IDs in paths are the record ID suffix (the ID property), without the table prefix.",
        "operationId": "postWhatsappCloudAccountsIdSend",
        "parameters": [
          {
            "description": "Record ID suffix or identifier returned by the corresponding list endpoint.",
            "in": "path",
            "name": "id",
            "required": true,
            "type": "string"
          },
          {
            "in": "body",
            "name": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/CloudSendRequest"
            }
          }
        ],
        "produces": [
          "application/json"
        ],
        "responses": {
          "200": {
            "description": "Success"
          },
          "400": {
            "description": "Invalid request",
            "schema": {
              "properties": {
                "message": {
                  "type": "string"
                }
              },
              "type": "object"
            }
          },
          "401": {
            "description": "Missing or invalid authentication",
            "schema": {
              "properties": {
                "message": {
                  "type": "string"
                }
              },
              "type": "object"
            }
          },
          "402": {
            "description": "Insufficient wallet balance",
            "schema": {
              "properties": {
                "message": {
                  "type": "string"
                }
              },
              "type": "object"
            }
          },
          "403": {
            "description": "API key lacks the required permission",
            "schema": {
              "properties": {
                "message": {
                  "type": "string"
                }
              },
              "type": "object"
            }
          },
          "404": {
            "description": "Record not found or not owned by this account",
            "schema": {
              "properties": {
                "message": {
                  "type": "string"
                }
              },
              "type": "object"
            }
          },
          "409": {
            "description": "Idempotency key conflict",
            "schema": {
              "properties": {
                "message": {
                  "type": "string"
                }
              },
              "type": "object"
            }
          },
          "422": {
            "description": "Request could not be routed, priced, or authorized",
            "schema": {
              "properties": {
                "message": {
                  "type": "string"
                }
              },
              "type": "object"
            }
          },
          "429": {
            "description": "Rate limit exceeded",
            "schema": {
              "properties": {
                "message": {
                  "type": "string"
                }
              },
              "type": "object"
            }
          },
          "500": {
            "description": "Internal error",
            "schema": {
              "properties": {
                "message": {
                  "type": "string"
                }
              },
              "type": "object"
            }
          }
        },
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "summary": "Send Message",
        "tags": [
          "WhatsApp Cloud"
        ]
      }
    },
    "/api/v1/whatsapp/cloud/accounts/{id}/send-bulk": {
      "post": {
        "consumes": [
          "application/json"
        ],
        "description": "For immediate bulk sending omit scheduled_at. To schedule, set scheduled_at to a future RFC3339 timestamp. A queued response means the batch was accepted for processing.\nAuthenticate with Authorization: Bearer YOUR_API_KEY. IDs in paths are the record ID suffix (the ID property), without the table prefix.",
        "operationId": "postWhatsappCloudAccountsIdSendBulk",
        "parameters": [
          {
            "description": "Record ID suffix or identifier returned by the corresponding list endpoint.",
            "in": "path",
            "name": "id",
            "required": true,
            "type": "string"
          },
          {
            "in": "body",
            "name": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/CloudBulkSendRequest"
            }
          }
        ],
        "produces": [
          "application/json"
        ],
        "responses": {
          "200": {
            "description": "Success"
          },
          "400": {
            "description": "Invalid request",
            "schema": {
              "properties": {
                "message": {
                  "type": "string"
                }
              },
              "type": "object"
            }
          },
          "401": {
            "description": "Missing or invalid authentication",
            "schema": {
              "properties": {
                "message": {
                  "type": "string"
                }
              },
              "type": "object"
            }
          },
          "402": {
            "description": "Insufficient wallet balance",
            "schema": {
              "properties": {
                "message": {
                  "type": "string"
                }
              },
              "type": "object"
            }
          },
          "403": {
            "description": "API key lacks the required permission",
            "schema": {
              "properties": {
                "message": {
                  "type": "string"
                }
              },
              "type": "object"
            }
          },
          "404": {
            "description": "Record not found or not owned by this account",
            "schema": {
              "properties": {
                "message": {
                  "type": "string"
                }
              },
              "type": "object"
            }
          },
          "409": {
            "description": "Idempotency key conflict",
            "schema": {
              "properties": {
                "message": {
                  "type": "string"
                }
              },
              "type": "object"
            }
          },
          "422": {
            "description": "Request could not be routed, priced, or authorized",
            "schema": {
              "properties": {
                "message": {
                  "type": "string"
                }
              },
              "type": "object"
            }
          },
          "429": {
            "description": "Rate limit exceeded",
            "schema": {
              "properties": {
                "message": {
                  "type": "string"
                }
              },
              "type": "object"
            }
          },
          "500": {
            "description": "Internal error",
            "schema": {
              "properties": {
                "message": {
                  "type": "string"
                }
              },
              "type": "object"
            }
          }
        },
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "summary": "Send Bulk",
        "tags": [
          "WhatsApp Cloud"
        ]
      }
    },
    "/api/v1/whatsapp/cloud/accounts/{id}/templates": {
      "get": {
        "description": "Authenticate with Authorization: Bearer YOUR_API_KEY. IDs in paths are the record ID suffix (the ID property), without the table prefix.",
        "operationId": "getWhatsappCloudAccountsIdTemplates",
        "parameters": [
          {
            "description": "Record ID suffix or identifier returned by the corresponding list endpoint.",
            "in": "path",
            "name": "id",
            "required": true,
            "type": "string"
          }
        ],
        "produces": [
          "application/json"
        ],
        "responses": {
          "200": {
            "description": "Success"
          },
          "400": {
            "description": "Invalid request",
            "schema": {
              "properties": {
                "message": {
                  "type": "string"
                }
              },
              "type": "object"
            }
          },
          "401": {
            "description": "Missing or invalid authentication",
            "schema": {
              "properties": {
                "message": {
                  "type": "string"
                }
              },
              "type": "object"
            }
          },
          "402": {
            "description": "Insufficient wallet balance",
            "schema": {
              "properties": {
                "message": {
                  "type": "string"
                }
              },
              "type": "object"
            }
          },
          "403": {
            "description": "API key lacks the required permission",
            "schema": {
              "properties": {
                "message": {
                  "type": "string"
                }
              },
              "type": "object"
            }
          },
          "404": {
            "description": "Record not found or not owned by this account",
            "schema": {
              "properties": {
                "message": {
                  "type": "string"
                }
              },
              "type": "object"
            }
          },
          "409": {
            "description": "Idempotency key conflict",
            "schema": {
              "properties": {
                "message": {
                  "type": "string"
                }
              },
              "type": "object"
            }
          },
          "422": {
            "description": "Request could not be routed, priced, or authorized",
            "schema": {
              "properties": {
                "message": {
                  "type": "string"
                }
              },
              "type": "object"
            }
          },
          "429": {
            "description": "Rate limit exceeded",
            "schema": {
              "properties": {
                "message": {
                  "type": "string"
                }
              },
              "type": "object"
            }
          },
          "500": {
            "description": "Internal error",
            "schema": {
              "properties": {
                "message": {
                  "type": "string"
                }
              },
              "type": "object"
            }
          }
        },
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "summary": "List Templates",
        "tags": [
          "WhatsApp Cloud"
        ]
      }
    },
    "/api/v1/whatsapp/devices": {
      "get": {
        "description": "Authenticate with Authorization: Bearer YOUR_API_KEY. IDs in paths are the record ID suffix (the ID property), without the table prefix.",
        "operationId": "getWhatsappDevices",
        "parameters": [],
        "produces": [
          "application/json"
        ],
        "responses": {
          "200": {
            "description": "Success"
          },
          "400": {
            "description": "Invalid request",
            "schema": {
              "properties": {
                "message": {
                  "type": "string"
                }
              },
              "type": "object"
            }
          },
          "401": {
            "description": "Missing or invalid authentication",
            "schema": {
              "properties": {
                "message": {
                  "type": "string"
                }
              },
              "type": "object"
            }
          },
          "402": {
            "description": "Insufficient wallet balance",
            "schema": {
              "properties": {
                "message": {
                  "type": "string"
                }
              },
              "type": "object"
            }
          },
          "403": {
            "description": "API key lacks the required permission",
            "schema": {
              "properties": {
                "message": {
                  "type": "string"
                }
              },
              "type": "object"
            }
          },
          "404": {
            "description": "Record not found or not owned by this account",
            "schema": {
              "properties": {
                "message": {
                  "type": "string"
                }
              },
              "type": "object"
            }
          },
          "409": {
            "description": "Idempotency key conflict",
            "schema": {
              "properties": {
                "message": {
                  "type": "string"
                }
              },
              "type": "object"
            }
          },
          "422": {
            "description": "Request could not be routed, priced, or authorized",
            "schema": {
              "properties": {
                "message": {
                  "type": "string"
                }
              },
              "type": "object"
            }
          },
          "429": {
            "description": "Rate limit exceeded",
            "schema": {
              "properties": {
                "message": {
                  "type": "string"
                }
              },
              "type": "object"
            }
          },
          "500": {
            "description": "Internal error",
            "schema": {
              "properties": {
                "message": {
                  "type": "string"
                }
              },
              "type": "object"
            }
          }
        },
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "summary": "List Devices",
        "tags": [
          "WhatsApp devices"
        ]
      }
    },
    "/api/v1/whatsapp/devices/{id}": {
      "get": {
        "description": "Authenticate with Authorization: Bearer YOUR_API_KEY. IDs in paths are the record ID suffix (the ID property), without the table prefix.",
        "operationId": "getWhatsappDevicesId",
        "parameters": [
          {
            "description": "Record ID suffix or identifier returned by the corresponding list endpoint.",
            "in": "path",
            "name": "id",
            "required": true,
            "type": "string"
          }
        ],
        "produces": [
          "application/json"
        ],
        "responses": {
          "200": {
            "description": "Success"
          },
          "400": {
            "description": "Invalid request",
            "schema": {
              "properties": {
                "message": {
                  "type": "string"
                }
              },
              "type": "object"
            }
          },
          "401": {
            "description": "Missing or invalid authentication",
            "schema": {
              "properties": {
                "message": {
                  "type": "string"
                }
              },
              "type": "object"
            }
          },
          "402": {
            "description": "Insufficient wallet balance",
            "schema": {
              "properties": {
                "message": {
                  "type": "string"
                }
              },
              "type": "object"
            }
          },
          "403": {
            "description": "API key lacks the required permission",
            "schema": {
              "properties": {
                "message": {
                  "type": "string"
                }
              },
              "type": "object"
            }
          },
          "404": {
            "description": "Record not found or not owned by this account",
            "schema": {
              "properties": {
                "message": {
                  "type": "string"
                }
              },
              "type": "object"
            }
          },
          "409": {
            "description": "Idempotency key conflict",
            "schema": {
              "properties": {
                "message": {
                  "type": "string"
                }
              },
              "type": "object"
            }
          },
          "422": {
            "description": "Request could not be routed, priced, or authorized",
            "schema": {
              "properties": {
                "message": {
                  "type": "string"
                }
              },
              "type": "object"
            }
          },
          "429": {
            "description": "Rate limit exceeded",
            "schema": {
              "properties": {
                "message": {
                  "type": "string"
                }
              },
              "type": "object"
            }
          },
          "500": {
            "description": "Internal error",
            "schema": {
              "properties": {
                "message": {
                  "type": "string"
                }
              },
              "type": "object"
            }
          }
        },
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "summary": "List Device",
        "tags": [
          "WhatsApp devices"
        ]
      }
    },
    "/api/v1/whatsapp/devices/{id}/groups": {
      "get": {
        "description": "Authenticate with Authorization: Bearer YOUR_API_KEY. IDs in paths are the record ID suffix (the ID property), without the table prefix.",
        "operationId": "getWhatsappDevicesIdGroups",
        "parameters": [
          {
            "description": "Record ID suffix or identifier returned by the corresponding list endpoint.",
            "in": "path",
            "name": "id",
            "required": true,
            "type": "string"
          }
        ],
        "produces": [
          "application/json"
        ],
        "responses": {
          "200": {
            "description": "Success"
          },
          "400": {
            "description": "Invalid request",
            "schema": {
              "properties": {
                "message": {
                  "type": "string"
                }
              },
              "type": "object"
            }
          },
          "401": {
            "description": "Missing or invalid authentication",
            "schema": {
              "properties": {
                "message": {
                  "type": "string"
                }
              },
              "type": "object"
            }
          },
          "402": {
            "description": "Insufficient wallet balance",
            "schema": {
              "properties": {
                "message": {
                  "type": "string"
                }
              },
              "type": "object"
            }
          },
          "403": {
            "description": "API key lacks the required permission",
            "schema": {
              "properties": {
                "message": {
                  "type": "string"
                }
              },
              "type": "object"
            }
          },
          "404": {
            "description": "Record not found or not owned by this account",
            "schema": {
              "properties": {
                "message": {
                  "type": "string"
                }
              },
              "type": "object"
            }
          },
          "409": {
            "description": "Idempotency key conflict",
            "schema": {
              "properties": {
                "message": {
                  "type": "string"
                }
              },
              "type": "object"
            }
          },
          "422": {
            "description": "Request could not be routed, priced, or authorized",
            "schema": {
              "properties": {
                "message": {
                  "type": "string"
                }
              },
              "type": "object"
            }
          },
          "429": {
            "description": "Rate limit exceeded",
            "schema": {
              "properties": {
                "message": {
                  "type": "string"
                }
              },
              "type": "object"
            }
          },
          "500": {
            "description": "Internal error",
            "schema": {
              "properties": {
                "message": {
                  "type": "string"
                }
              },
              "type": "object"
            }
          }
        },
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "summary": "List Groups",
        "tags": [
          "WhatsApp devices"
        ]
      }
    },
    "/api/v1/whatsapp/devices/{id}/groups/{groupJid}": {
      "get": {
        "description": "Authenticate with Authorization: Bearer YOUR_API_KEY. IDs in paths are the record ID suffix (the ID property), without the table prefix.",
        "operationId": "getWhatsappDevicesIdGroupsGroupjid",
        "parameters": [
          {
            "description": "Record ID suffix or identifier returned by the corresponding list endpoint.",
            "in": "path",
            "name": "id",
            "required": true,
            "type": "string"
          },
          {
            "description": "Record ID suffix or identifier returned by the corresponding list endpoint.",
            "in": "path",
            "name": "groupJid",
            "required": true,
            "type": "string"
          }
        ],
        "produces": [
          "application/json"
        ],
        "responses": {
          "200": {
            "description": "Success"
          },
          "400": {
            "description": "Invalid request",
            "schema": {
              "properties": {
                "message": {
                  "type": "string"
                }
              },
              "type": "object"
            }
          },
          "401": {
            "description": "Missing or invalid authentication",
            "schema": {
              "properties": {
                "message": {
                  "type": "string"
                }
              },
              "type": "object"
            }
          },
          "402": {
            "description": "Insufficient wallet balance",
            "schema": {
              "properties": {
                "message": {
                  "type": "string"
                }
              },
              "type": "object"
            }
          },
          "403": {
            "description": "API key lacks the required permission",
            "schema": {
              "properties": {
                "message": {
                  "type": "string"
                }
              },
              "type": "object"
            }
          },
          "404": {
            "description": "Record not found or not owned by this account",
            "schema": {
              "properties": {
                "message": {
                  "type": "string"
                }
              },
              "type": "object"
            }
          },
          "409": {
            "description": "Idempotency key conflict",
            "schema": {
              "properties": {
                "message": {
                  "type": "string"
                }
              },
              "type": "object"
            }
          },
          "422": {
            "description": "Request could not be routed, priced, or authorized",
            "schema": {
              "properties": {
                "message": {
                  "type": "string"
                }
              },
              "type": "object"
            }
          },
          "429": {
            "description": "Rate limit exceeded",
            "schema": {
              "properties": {
                "message": {
                  "type": "string"
                }
              },
              "type": "object"
            }
          },
          "500": {
            "description": "Internal error",
            "schema": {
              "properties": {
                "message": {
                  "type": "string"
                }
              },
              "type": "object"
            }
          }
        },
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "summary": "List Group Info",
        "tags": [
          "WhatsApp devices"
        ]
      }
    },
    "/api/v1/whatsapp/devices/{id}/messages/{messageId}/react": {
      "post": {
        "consumes": [
          "application/json"
        ],
        "description": "Authenticate with Authorization: Bearer YOUR_API_KEY. IDs in paths are the record ID suffix (the ID property), without the table prefix.",
        "operationId": "postWhatsappDevicesIdMessagesMessageidReact",
        "parameters": [
          {
            "description": "Record ID suffix or identifier returned by the corresponding list endpoint.",
            "in": "path",
            "name": "id",
            "required": true,
            "type": "string"
          },
          {
            "description": "Record ID suffix or identifier returned by the corresponding list endpoint.",
            "in": "path",
            "name": "messageId",
            "required": true,
            "type": "string"
          },
          {
            "in": "body",
            "name": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/ReactMessageRequest"
            }
          }
        ],
        "produces": [
          "application/json"
        ],
        "responses": {
          "200": {
            "description": "Success"
          },
          "400": {
            "description": "Invalid request",
            "schema": {
              "properties": {
                "message": {
                  "type": "string"
                }
              },
              "type": "object"
            }
          },
          "401": {
            "description": "Missing or invalid authentication",
            "schema": {
              "properties": {
                "message": {
                  "type": "string"
                }
              },
              "type": "object"
            }
          },
          "402": {
            "description": "Insufficient wallet balance",
            "schema": {
              "properties": {
                "message": {
                  "type": "string"
                }
              },
              "type": "object"
            }
          },
          "403": {
            "description": "API key lacks the required permission",
            "schema": {
              "properties": {
                "message": {
                  "type": "string"
                }
              },
              "type": "object"
            }
          },
          "404": {
            "description": "Record not found or not owned by this account",
            "schema": {
              "properties": {
                "message": {
                  "type": "string"
                }
              },
              "type": "object"
            }
          },
          "409": {
            "description": "Idempotency key conflict",
            "schema": {
              "properties": {
                "message": {
                  "type": "string"
                }
              },
              "type": "object"
            }
          },
          "422": {
            "description": "Request could not be routed, priced, or authorized",
            "schema": {
              "properties": {
                "message": {
                  "type": "string"
                }
              },
              "type": "object"
            }
          },
          "429": {
            "description": "Rate limit exceeded",
            "schema": {
              "properties": {
                "message": {
                  "type": "string"
                }
              },
              "type": "object"
            }
          },
          "500": {
            "description": "Internal error",
            "schema": {
              "properties": {
                "message": {
                  "type": "string"
                }
              },
              "type": "object"
            }
          }
        },
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "summary": "React Message",
        "tags": [
          "WhatsApp devices"
        ]
      }
    },
    "/api/v1/whatsapp/devices/{id}/messages/{messageId}/read": {
      "post": {
        "consumes": [
          "application/json"
        ],
        "description": "Authenticate with Authorization: Bearer YOUR_API_KEY. IDs in paths are the record ID suffix (the ID property), without the table prefix.",
        "operationId": "postWhatsappDevicesIdMessagesMessageidRead",
        "parameters": [
          {
            "description": "Record ID suffix or identifier returned by the corresponding list endpoint.",
            "in": "path",
            "name": "id",
            "required": true,
            "type": "string"
          },
          {
            "description": "Record ID suffix or identifier returned by the corresponding list endpoint.",
            "in": "path",
            "name": "messageId",
            "required": true,
            "type": "string"
          },
          {
            "in": "body",
            "name": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/MarkAsReadRequest"
            }
          }
        ],
        "produces": [
          "application/json"
        ],
        "responses": {
          "200": {
            "description": "Success"
          },
          "400": {
            "description": "Invalid request",
            "schema": {
              "properties": {
                "message": {
                  "type": "string"
                }
              },
              "type": "object"
            }
          },
          "401": {
            "description": "Missing or invalid authentication",
            "schema": {
              "properties": {
                "message": {
                  "type": "string"
                }
              },
              "type": "object"
            }
          },
          "402": {
            "description": "Insufficient wallet balance",
            "schema": {
              "properties": {
                "message": {
                  "type": "string"
                }
              },
              "type": "object"
            }
          },
          "403": {
            "description": "API key lacks the required permission",
            "schema": {
              "properties": {
                "message": {
                  "type": "string"
                }
              },
              "type": "object"
            }
          },
          "404": {
            "description": "Record not found or not owned by this account",
            "schema": {
              "properties": {
                "message": {
                  "type": "string"
                }
              },
              "type": "object"
            }
          },
          "409": {
            "description": "Idempotency key conflict",
            "schema": {
              "properties": {
                "message": {
                  "type": "string"
                }
              },
              "type": "object"
            }
          },
          "422": {
            "description": "Request could not be routed, priced, or authorized",
            "schema": {
              "properties": {
                "message": {
                  "type": "string"
                }
              },
              "type": "object"
            }
          },
          "429": {
            "description": "Rate limit exceeded",
            "schema": {
              "properties": {
                "message": {
                  "type": "string"
                }
              },
              "type": "object"
            }
          },
          "500": {
            "description": "Internal error",
            "schema": {
              "properties": {
                "message": {
                  "type": "string"
                }
              },
              "type": "object"
            }
          }
        },
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "summary": "Mark As Read",
        "tags": [
          "WhatsApp devices"
        ]
      }
    },
    "/api/v1/whatsapp/devices/{id}/messages/{messageId}/revoke": {
      "post": {
        "consumes": [
          "application/json"
        ],
        "description": "Authenticate with Authorization: Bearer YOUR_API_KEY. IDs in paths are the record ID suffix (the ID property), without the table prefix.",
        "operationId": "postWhatsappDevicesIdMessagesMessageidRevoke",
        "parameters": [
          {
            "description": "Record ID suffix or identifier returned by the corresponding list endpoint.",
            "in": "path",
            "name": "id",
            "required": true,
            "type": "string"
          },
          {
            "description": "Record ID suffix or identifier returned by the corresponding list endpoint.",
            "in": "path",
            "name": "messageId",
            "required": true,
            "type": "string"
          },
          {
            "in": "body",
            "name": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/RevokeMessageRequest"
            }
          }
        ],
        "produces": [
          "application/json"
        ],
        "responses": {
          "200": {
            "description": "Success"
          },
          "400": {
            "description": "Invalid request",
            "schema": {
              "properties": {
                "message": {
                  "type": "string"
                }
              },
              "type": "object"
            }
          },
          "401": {
            "description": "Missing or invalid authentication",
            "schema": {
              "properties": {
                "message": {
                  "type": "string"
                }
              },
              "type": "object"
            }
          },
          "402": {
            "description": "Insufficient wallet balance",
            "schema": {
              "properties": {
                "message": {
                  "type": "string"
                }
              },
              "type": "object"
            }
          },
          "403": {
            "description": "API key lacks the required permission",
            "schema": {
              "properties": {
                "message": {
                  "type": "string"
                }
              },
              "type": "object"
            }
          },
          "404": {
            "description": "Record not found or not owned by this account",
            "schema": {
              "properties": {
                "message": {
                  "type": "string"
                }
              },
              "type": "object"
            }
          },
          "409": {
            "description": "Idempotency key conflict",
            "schema": {
              "properties": {
                "message": {
                  "type": "string"
                }
              },
              "type": "object"
            }
          },
          "422": {
            "description": "Request could not be routed, priced, or authorized",
            "schema": {
              "properties": {
                "message": {
                  "type": "string"
                }
              },
              "type": "object"
            }
          },
          "429": {
            "description": "Rate limit exceeded",
            "schema": {
              "properties": {
                "message": {
                  "type": "string"
                }
              },
              "type": "object"
            }
          },
          "500": {
            "description": "Internal error",
            "schema": {
              "properties": {
                "message": {
                  "type": "string"
                }
              },
              "type": "object"
            }
          }
        },
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "summary": "Revoke Message",
        "tags": [
          "WhatsApp devices"
        ]
      }
    },
    "/api/v1/whatsapp/devices/{id}/send": {
      "post": {
        "consumes": [
          "application/json"
        ],
        "description": "Authenticate with Authorization: Bearer YOUR_API_KEY. IDs in paths are the record ID suffix (the ID property), without the table prefix.",
        "operationId": "postWhatsappDevicesIdSend",
        "parameters": [
          {
            "description": "Record ID suffix or identifier returned by the corresponding list endpoint.",
            "in": "path",
            "name": "id",
            "required": true,
            "type": "string"
          },
          {
            "in": "body",
            "name": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/MessageRequest"
            }
          }
        ],
        "produces": [
          "application/json"
        ],
        "responses": {
          "200": {
            "description": "Success"
          },
          "400": {
            "description": "Invalid request",
            "schema": {
              "properties": {
                "message": {
                  "type": "string"
                }
              },
              "type": "object"
            }
          },
          "401": {
            "description": "Missing or invalid authentication",
            "schema": {
              "properties": {
                "message": {
                  "type": "string"
                }
              },
              "type": "object"
            }
          },
          "402": {
            "description": "Insufficient wallet balance",
            "schema": {
              "properties": {
                "message": {
                  "type": "string"
                }
              },
              "type": "object"
            }
          },
          "403": {
            "description": "API key lacks the required permission",
            "schema": {
              "properties": {
                "message": {
                  "type": "string"
                }
              },
              "type": "object"
            }
          },
          "404": {
            "description": "Record not found or not owned by this account",
            "schema": {
              "properties": {
                "message": {
                  "type": "string"
                }
              },
              "type": "object"
            }
          },
          "409": {
            "description": "Idempotency key conflict",
            "schema": {
              "properties": {
                "message": {
                  "type": "string"
                }
              },
              "type": "object"
            }
          },
          "422": {
            "description": "Request could not be routed, priced, or authorized",
            "schema": {
              "properties": {
                "message": {
                  "type": "string"
                }
              },
              "type": "object"
            }
          },
          "429": {
            "description": "Rate limit exceeded",
            "schema": {
              "properties": {
                "message": {
                  "type": "string"
                }
              },
              "type": "object"
            }
          },
          "500": {
            "description": "Internal error",
            "schema": {
              "properties": {
                "message": {
                  "type": "string"
                }
              },
              "type": "object"
            }
          }
        },
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "summary": "Send Message",
        "tags": [
          "WhatsApp devices"
        ]
      }
    },
    "/api/v1/whatsapp/devices/{id}/send-audio": {
      "post": {
        "consumes": [
          "application/json"
        ],
        "description": "Authenticate with Authorization: Bearer YOUR_API_KEY. IDs in paths are the record ID suffix (the ID property), without the table prefix.",
        "operationId": "postWhatsappDevicesIdSendAudio",
        "parameters": [
          {
            "description": "Record ID suffix or identifier returned by the corresponding list endpoint.",
            "in": "path",
            "name": "id",
            "required": true,
            "type": "string"
          },
          {
            "in": "body",
            "name": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/SendAudioRequest"
            }
          }
        ],
        "produces": [
          "application/json"
        ],
        "responses": {
          "200": {
            "description": "Success"
          },
          "400": {
            "description": "Invalid request",
            "schema": {
              "properties": {
                "message": {
                  "type": "string"
                }
              },
              "type": "object"
            }
          },
          "401": {
            "description": "Missing or invalid authentication",
            "schema": {
              "properties": {
                "message": {
                  "type": "string"
                }
              },
              "type": "object"
            }
          },
          "402": {
            "description": "Insufficient wallet balance",
            "schema": {
              "properties": {
                "message": {
                  "type": "string"
                }
              },
              "type": "object"
            }
          },
          "403": {
            "description": "API key lacks the required permission",
            "schema": {
              "properties": {
                "message": {
                  "type": "string"
                }
              },
              "type": "object"
            }
          },
          "404": {
            "description": "Record not found or not owned by this account",
            "schema": {
              "properties": {
                "message": {
                  "type": "string"
                }
              },
              "type": "object"
            }
          },
          "409": {
            "description": "Idempotency key conflict",
            "schema": {
              "properties": {
                "message": {
                  "type": "string"
                }
              },
              "type": "object"
            }
          },
          "422": {
            "description": "Request could not be routed, priced, or authorized",
            "schema": {
              "properties": {
                "message": {
                  "type": "string"
                }
              },
              "type": "object"
            }
          },
          "429": {
            "description": "Rate limit exceeded",
            "schema": {
              "properties": {
                "message": {
                  "type": "string"
                }
              },
              "type": "object"
            }
          },
          "500": {
            "description": "Internal error",
            "schema": {
              "properties": {
                "message": {
                  "type": "string"
                }
              },
              "type": "object"
            }
          }
        },
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "summary": "Send Audio",
        "tags": [
          "WhatsApp devices"
        ]
      }
    },
    "/api/v1/whatsapp/devices/{id}/send-contact": {
      "post": {
        "consumes": [
          "application/json"
        ],
        "description": "Authenticate with Authorization: Bearer YOUR_API_KEY. IDs in paths are the record ID suffix (the ID property), without the table prefix.",
        "operationId": "postWhatsappDevicesIdSendContact",
        "parameters": [
          {
            "description": "Record ID suffix or identifier returned by the corresponding list endpoint.",
            "in": "path",
            "name": "id",
            "required": true,
            "type": "string"
          },
          {
            "in": "body",
            "name": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/SendContactRequest"
            }
          }
        ],
        "produces": [
          "application/json"
        ],
        "responses": {
          "200": {
            "description": "Success"
          },
          "400": {
            "description": "Invalid request",
            "schema": {
              "properties": {
                "message": {
                  "type": "string"
                }
              },
              "type": "object"
            }
          },
          "401": {
            "description": "Missing or invalid authentication",
            "schema": {
              "properties": {
                "message": {
                  "type": "string"
                }
              },
              "type": "object"
            }
          },
          "402": {
            "description": "Insufficient wallet balance",
            "schema": {
              "properties": {
                "message": {
                  "type": "string"
                }
              },
              "type": "object"
            }
          },
          "403": {
            "description": "API key lacks the required permission",
            "schema": {
              "properties": {
                "message": {
                  "type": "string"
                }
              },
              "type": "object"
            }
          },
          "404": {
            "description": "Record not found or not owned by this account",
            "schema": {
              "properties": {
                "message": {
                  "type": "string"
                }
              },
              "type": "object"
            }
          },
          "409": {
            "description": "Idempotency key conflict",
            "schema": {
              "properties": {
                "message": {
                  "type": "string"
                }
              },
              "type": "object"
            }
          },
          "422": {
            "description": "Request could not be routed, priced, or authorized",
            "schema": {
              "properties": {
                "message": {
                  "type": "string"
                }
              },
              "type": "object"
            }
          },
          "429": {
            "description": "Rate limit exceeded",
            "schema": {
              "properties": {
                "message": {
                  "type": "string"
                }
              },
              "type": "object"
            }
          },
          "500": {
            "description": "Internal error",
            "schema": {
              "properties": {
                "message": {
                  "type": "string"
                }
              },
              "type": "object"
            }
          }
        },
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "summary": "Send Contact",
        "tags": [
          "WhatsApp devices"
        ]
      }
    },
    "/api/v1/whatsapp/devices/{id}/send-document": {
      "post": {
        "consumes": [
          "application/json"
        ],
        "description": "Authenticate with Authorization: Bearer YOUR_API_KEY. IDs in paths are the record ID suffix (the ID property), without the table prefix.",
        "operationId": "postWhatsappDevicesIdSendDocument",
        "parameters": [
          {
            "description": "Record ID suffix or identifier returned by the corresponding list endpoint.",
            "in": "path",
            "name": "id",
            "required": true,
            "type": "string"
          },
          {
            "in": "body",
            "name": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/SendDocumentRequest"
            }
          }
        ],
        "produces": [
          "application/json"
        ],
        "responses": {
          "200": {
            "description": "Success"
          },
          "400": {
            "description": "Invalid request",
            "schema": {
              "properties": {
                "message": {
                  "type": "string"
                }
              },
              "type": "object"
            }
          },
          "401": {
            "description": "Missing or invalid authentication",
            "schema": {
              "properties": {
                "message": {
                  "type": "string"
                }
              },
              "type": "object"
            }
          },
          "402": {
            "description": "Insufficient wallet balance",
            "schema": {
              "properties": {
                "message": {
                  "type": "string"
                }
              },
              "type": "object"
            }
          },
          "403": {
            "description": "API key lacks the required permission",
            "schema": {
              "properties": {
                "message": {
                  "type": "string"
                }
              },
              "type": "object"
            }
          },
          "404": {
            "description": "Record not found or not owned by this account",
            "schema": {
              "properties": {
                "message": {
                  "type": "string"
                }
              },
              "type": "object"
            }
          },
          "409": {
            "description": "Idempotency key conflict",
            "schema": {
              "properties": {
                "message": {
                  "type": "string"
                }
              },
              "type": "object"
            }
          },
          "422": {
            "description": "Request could not be routed, priced, or authorized",
            "schema": {
              "properties": {
                "message": {
                  "type": "string"
                }
              },
              "type": "object"
            }
          },
          "429": {
            "description": "Rate limit exceeded",
            "schema": {
              "properties": {
                "message": {
                  "type": "string"
                }
              },
              "type": "object"
            }
          },
          "500": {
            "description": "Internal error",
            "schema": {
              "properties": {
                "message": {
                  "type": "string"
                }
              },
              "type": "object"
            }
          }
        },
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "summary": "Send Document",
        "tags": [
          "WhatsApp devices"
        ]
      }
    },
    "/api/v1/whatsapp/devices/{id}/send-image": {
      "post": {
        "consumes": [
          "application/json"
        ],
        "description": "Authenticate with Authorization: Bearer YOUR_API_KEY. IDs in paths are the record ID suffix (the ID property), without the table prefix.",
        "operationId": "postWhatsappDevicesIdSendImage",
        "parameters": [
          {
            "description": "Record ID suffix or identifier returned by the corresponding list endpoint.",
            "in": "path",
            "name": "id",
            "required": true,
            "type": "string"
          },
          {
            "in": "body",
            "name": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/SendImageRequest"
            }
          }
        ],
        "produces": [
          "application/json"
        ],
        "responses": {
          "200": {
            "description": "Success"
          },
          "400": {
            "description": "Invalid request",
            "schema": {
              "properties": {
                "message": {
                  "type": "string"
                }
              },
              "type": "object"
            }
          },
          "401": {
            "description": "Missing or invalid authentication",
            "schema": {
              "properties": {
                "message": {
                  "type": "string"
                }
              },
              "type": "object"
            }
          },
          "402": {
            "description": "Insufficient wallet balance",
            "schema": {
              "properties": {
                "message": {
                  "type": "string"
                }
              },
              "type": "object"
            }
          },
          "403": {
            "description": "API key lacks the required permission",
            "schema": {
              "properties": {
                "message": {
                  "type": "string"
                }
              },
              "type": "object"
            }
          },
          "404": {
            "description": "Record not found or not owned by this account",
            "schema": {
              "properties": {
                "message": {
                  "type": "string"
                }
              },
              "type": "object"
            }
          },
          "409": {
            "description": "Idempotency key conflict",
            "schema": {
              "properties": {
                "message": {
                  "type": "string"
                }
              },
              "type": "object"
            }
          },
          "422": {
            "description": "Request could not be routed, priced, or authorized",
            "schema": {
              "properties": {
                "message": {
                  "type": "string"
                }
              },
              "type": "object"
            }
          },
          "429": {
            "description": "Rate limit exceeded",
            "schema": {
              "properties": {
                "message": {
                  "type": "string"
                }
              },
              "type": "object"
            }
          },
          "500": {
            "description": "Internal error",
            "schema": {
              "properties": {
                "message": {
                  "type": "string"
                }
              },
              "type": "object"
            }
          }
        },
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "summary": "Send Image",
        "tags": [
          "WhatsApp devices"
        ]
      }
    },
    "/api/v1/whatsapp/devices/{id}/send-interactive": {
      "post": {
        "consumes": [
          "application/json"
        ],
        "description": "Authenticate with Authorization: Bearer YOUR_API_KEY. IDs in paths are the record ID suffix (the ID property), without the table prefix.",
        "operationId": "postWhatsappDevicesIdSendInteractive",
        "parameters": [
          {
            "description": "Record ID suffix or identifier returned by the corresponding list endpoint.",
            "in": "path",
            "name": "id",
            "required": true,
            "type": "string"
          },
          {
            "in": "body",
            "name": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/SendInteractiveRequest"
            }
          }
        ],
        "produces": [
          "application/json"
        ],
        "responses": {
          "200": {
            "description": "Success"
          },
          "400": {
            "description": "Invalid request",
            "schema": {
              "properties": {
                "message": {
                  "type": "string"
                }
              },
              "type": "object"
            }
          },
          "401": {
            "description": "Missing or invalid authentication",
            "schema": {
              "properties": {
                "message": {
                  "type": "string"
                }
              },
              "type": "object"
            }
          },
          "402": {
            "description": "Insufficient wallet balance",
            "schema": {
              "properties": {
                "message": {
                  "type": "string"
                }
              },
              "type": "object"
            }
          },
          "403": {
            "description": "API key lacks the required permission",
            "schema": {
              "properties": {
                "message": {
                  "type": "string"
                }
              },
              "type": "object"
            }
          },
          "404": {
            "description": "Record not found or not owned by this account",
            "schema": {
              "properties": {
                "message": {
                  "type": "string"
                }
              },
              "type": "object"
            }
          },
          "409": {
            "description": "Idempotency key conflict",
            "schema": {
              "properties": {
                "message": {
                  "type": "string"
                }
              },
              "type": "object"
            }
          },
          "422": {
            "description": "Request could not be routed, priced, or authorized",
            "schema": {
              "properties": {
                "message": {
                  "type": "string"
                }
              },
              "type": "object"
            }
          },
          "429": {
            "description": "Rate limit exceeded",
            "schema": {
              "properties": {
                "message": {
                  "type": "string"
                }
              },
              "type": "object"
            }
          },
          "500": {
            "description": "Internal error",
            "schema": {
              "properties": {
                "message": {
                  "type": "string"
                }
              },
              "type": "object"
            }
          }
        },
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "summary": "Send Interactive",
        "tags": [
          "WhatsApp devices"
        ]
      }
    },
    "/api/v1/whatsapp/devices/{id}/send-link": {
      "post": {
        "consumes": [
          "application/json"
        ],
        "description": "Authenticate with Authorization: Bearer YOUR_API_KEY. IDs in paths are the record ID suffix (the ID property), without the table prefix.",
        "operationId": "postWhatsappDevicesIdSendLink",
        "parameters": [
          {
            "description": "Record ID suffix or identifier returned by the corresponding list endpoint.",
            "in": "path",
            "name": "id",
            "required": true,
            "type": "string"
          },
          {
            "in": "body",
            "name": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/SendLinkRequest"
            }
          }
        ],
        "produces": [
          "application/json"
        ],
        "responses": {
          "200": {
            "description": "Success"
          },
          "400": {
            "description": "Invalid request",
            "schema": {
              "properties": {
                "message": {
                  "type": "string"
                }
              },
              "type": "object"
            }
          },
          "401": {
            "description": "Missing or invalid authentication",
            "schema": {
              "properties": {
                "message": {
                  "type": "string"
                }
              },
              "type": "object"
            }
          },
          "402": {
            "description": "Insufficient wallet balance",
            "schema": {
              "properties": {
                "message": {
                  "type": "string"
                }
              },
              "type": "object"
            }
          },
          "403": {
            "description": "API key lacks the required permission",
            "schema": {
              "properties": {
                "message": {
                  "type": "string"
                }
              },
              "type": "object"
            }
          },
          "404": {
            "description": "Record not found or not owned by this account",
            "schema": {
              "properties": {
                "message": {
                  "type": "string"
                }
              },
              "type": "object"
            }
          },
          "409": {
            "description": "Idempotency key conflict",
            "schema": {
              "properties": {
                "message": {
                  "type": "string"
                }
              },
              "type": "object"
            }
          },
          "422": {
            "description": "Request could not be routed, priced, or authorized",
            "schema": {
              "properties": {
                "message": {
                  "type": "string"
                }
              },
              "type": "object"
            }
          },
          "429": {
            "description": "Rate limit exceeded",
            "schema": {
              "properties": {
                "message": {
                  "type": "string"
                }
              },
              "type": "object"
            }
          },
          "500": {
            "description": "Internal error",
            "schema": {
              "properties": {
                "message": {
                  "type": "string"
                }
              },
              "type": "object"
            }
          }
        },
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "summary": "Send Link",
        "tags": [
          "WhatsApp devices"
        ]
      }
    },
    "/api/v1/whatsapp/devices/{id}/send-list": {
      "post": {
        "consumes": [
          "application/json"
        ],
        "description": "Authenticate with Authorization: Bearer YOUR_API_KEY. IDs in paths are the record ID suffix (the ID property), without the table prefix.",
        "operationId": "postWhatsappDevicesIdSendList",
        "parameters": [
          {
            "description": "Record ID suffix or identifier returned by the corresponding list endpoint.",
            "in": "path",
            "name": "id",
            "required": true,
            "type": "string"
          },
          {
            "in": "body",
            "name": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/SendListRequest"
            }
          }
        ],
        "produces": [
          "application/json"
        ],
        "responses": {
          "200": {
            "description": "Success"
          },
          "400": {
            "description": "Invalid request",
            "schema": {
              "properties": {
                "message": {
                  "type": "string"
                }
              },
              "type": "object"
            }
          },
          "401": {
            "description": "Missing or invalid authentication",
            "schema": {
              "properties": {
                "message": {
                  "type": "string"
                }
              },
              "type": "object"
            }
          },
          "402": {
            "description": "Insufficient wallet balance",
            "schema": {
              "properties": {
                "message": {
                  "type": "string"
                }
              },
              "type": "object"
            }
          },
          "403": {
            "description": "API key lacks the required permission",
            "schema": {
              "properties": {
                "message": {
                  "type": "string"
                }
              },
              "type": "object"
            }
          },
          "404": {
            "description": "Record not found or not owned by this account",
            "schema": {
              "properties": {
                "message": {
                  "type": "string"
                }
              },
              "type": "object"
            }
          },
          "409": {
            "description": "Idempotency key conflict",
            "schema": {
              "properties": {
                "message": {
                  "type": "string"
                }
              },
              "type": "object"
            }
          },
          "422": {
            "description": "Request could not be routed, priced, or authorized",
            "schema": {
              "properties": {
                "message": {
                  "type": "string"
                }
              },
              "type": "object"
            }
          },
          "429": {
            "description": "Rate limit exceeded",
            "schema": {
              "properties": {
                "message": {
                  "type": "string"
                }
              },
              "type": "object"
            }
          },
          "500": {
            "description": "Internal error",
            "schema": {
              "properties": {
                "message": {
                  "type": "string"
                }
              },
              "type": "object"
            }
          }
        },
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "summary": "Send List",
        "tags": [
          "WhatsApp devices"
        ]
      }
    },
    "/api/v1/whatsapp/devices/{id}/send-location": {
      "post": {
        "consumes": [
          "application/json"
        ],
        "description": "Authenticate with Authorization: Bearer YOUR_API_KEY. IDs in paths are the record ID suffix (the ID property), without the table prefix.",
        "operationId": "postWhatsappDevicesIdSendLocation",
        "parameters": [
          {
            "description": "Record ID suffix or identifier returned by the corresponding list endpoint.",
            "in": "path",
            "name": "id",
            "required": true,
            "type": "string"
          },
          {
            "in": "body",
            "name": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/SendLocationRequest"
            }
          }
        ],
        "produces": [
          "application/json"
        ],
        "responses": {
          "200": {
            "description": "Success"
          },
          "400": {
            "description": "Invalid request",
            "schema": {
              "properties": {
                "message": {
                  "type": "string"
                }
              },
              "type": "object"
            }
          },
          "401": {
            "description": "Missing or invalid authentication",
            "schema": {
              "properties": {
                "message": {
                  "type": "string"
                }
              },
              "type": "object"
            }
          },
          "402": {
            "description": "Insufficient wallet balance",
            "schema": {
              "properties": {
                "message": {
                  "type": "string"
                }
              },
              "type": "object"
            }
          },
          "403": {
            "description": "API key lacks the required permission",
            "schema": {
              "properties": {
                "message": {
                  "type": "string"
                }
              },
              "type": "object"
            }
          },
          "404": {
            "description": "Record not found or not owned by this account",
            "schema": {
              "properties": {
                "message": {
                  "type": "string"
                }
              },
              "type": "object"
            }
          },
          "409": {
            "description": "Idempotency key conflict",
            "schema": {
              "properties": {
                "message": {
                  "type": "string"
                }
              },
              "type": "object"
            }
          },
          "422": {
            "description": "Request could not be routed, priced, or authorized",
            "schema": {
              "properties": {
                "message": {
                  "type": "string"
                }
              },
              "type": "object"
            }
          },
          "429": {
            "description": "Rate limit exceeded",
            "schema": {
              "properties": {
                "message": {
                  "type": "string"
                }
              },
              "type": "object"
            }
          },
          "500": {
            "description": "Internal error",
            "schema": {
              "properties": {
                "message": {
                  "type": "string"
                }
              },
              "type": "object"
            }
          }
        },
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "summary": "Send Location",
        "tags": [
          "WhatsApp devices"
        ]
      }
    },
    "/api/v1/whatsapp/devices/{id}/send-poll": {
      "post": {
        "consumes": [
          "application/json"
        ],
        "description": "Authenticate with Authorization: Bearer YOUR_API_KEY. IDs in paths are the record ID suffix (the ID property), without the table prefix.",
        "operationId": "postWhatsappDevicesIdSendPoll",
        "parameters": [
          {
            "description": "Record ID suffix or identifier returned by the corresponding list endpoint.",
            "in": "path",
            "name": "id",
            "required": true,
            "type": "string"
          },
          {
            "in": "body",
            "name": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/SendPollRequest"
            }
          }
        ],
        "produces": [
          "application/json"
        ],
        "responses": {
          "200": {
            "description": "Success"
          },
          "400": {
            "description": "Invalid request",
            "schema": {
              "properties": {
                "message": {
                  "type": "string"
                }
              },
              "type": "object"
            }
          },
          "401": {
            "description": "Missing or invalid authentication",
            "schema": {
              "properties": {
                "message": {
                  "type": "string"
                }
              },
              "type": "object"
            }
          },
          "402": {
            "description": "Insufficient wallet balance",
            "schema": {
              "properties": {
                "message": {
                  "type": "string"
                }
              },
              "type": "object"
            }
          },
          "403": {
            "description": "API key lacks the required permission",
            "schema": {
              "properties": {
                "message": {
                  "type": "string"
                }
              },
              "type": "object"
            }
          },
          "404": {
            "description": "Record not found or not owned by this account",
            "schema": {
              "properties": {
                "message": {
                  "type": "string"
                }
              },
              "type": "object"
            }
          },
          "409": {
            "description": "Idempotency key conflict",
            "schema": {
              "properties": {
                "message": {
                  "type": "string"
                }
              },
              "type": "object"
            }
          },
          "422": {
            "description": "Request could not be routed, priced, or authorized",
            "schema": {
              "properties": {
                "message": {
                  "type": "string"
                }
              },
              "type": "object"
            }
          },
          "429": {
            "description": "Rate limit exceeded",
            "schema": {
              "properties": {
                "message": {
                  "type": "string"
                }
              },
              "type": "object"
            }
          },
          "500": {
            "description": "Internal error",
            "schema": {
              "properties": {
                "message": {
                  "type": "string"
                }
              },
              "type": "object"
            }
          }
        },
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "summary": "Send Poll",
        "tags": [
          "WhatsApp devices"
        ]
      }
    },
    "/api/v1/whatsapp/devices/{id}/send-video": {
      "post": {
        "consumes": [
          "application/json"
        ],
        "description": "Authenticate with Authorization: Bearer YOUR_API_KEY. IDs in paths are the record ID suffix (the ID property), without the table prefix.",
        "operationId": "postWhatsappDevicesIdSendVideo",
        "parameters": [
          {
            "description": "Record ID suffix or identifier returned by the corresponding list endpoint.",
            "in": "path",
            "name": "id",
            "required": true,
            "type": "string"
          },
          {
            "in": "body",
            "name": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/SendVideoRequest"
            }
          }
        ],
        "produces": [
          "application/json"
        ],
        "responses": {
          "200": {
            "description": "Success"
          },
          "400": {
            "description": "Invalid request",
            "schema": {
              "properties": {
                "message": {
                  "type": "string"
                }
              },
              "type": "object"
            }
          },
          "401": {
            "description": "Missing or invalid authentication",
            "schema": {
              "properties": {
                "message": {
                  "type": "string"
                }
              },
              "type": "object"
            }
          },
          "402": {
            "description": "Insufficient wallet balance",
            "schema": {
              "properties": {
                "message": {
                  "type": "string"
                }
              },
              "type": "object"
            }
          },
          "403": {
            "description": "API key lacks the required permission",
            "schema": {
              "properties": {
                "message": {
                  "type": "string"
                }
              },
              "type": "object"
            }
          },
          "404": {
            "description": "Record not found or not owned by this account",
            "schema": {
              "properties": {
                "message": {
                  "type": "string"
                }
              },
              "type": "object"
            }
          },
          "409": {
            "description": "Idempotency key conflict",
            "schema": {
              "properties": {
                "message": {
                  "type": "string"
                }
              },
              "type": "object"
            }
          },
          "422": {
            "description": "Request could not be routed, priced, or authorized",
            "schema": {
              "properties": {
                "message": {
                  "type": "string"
                }
              },
              "type": "object"
            }
          },
          "429": {
            "description": "Rate limit exceeded",
            "schema": {
              "properties": {
                "message": {
                  "type": "string"
                }
              },
              "type": "object"
            }
          },
          "500": {
            "description": "Internal error",
            "schema": {
              "properties": {
                "message": {
                  "type": "string"
                }
              },
              "type": "object"
            }
          }
        },
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "summary": "Send Video",
        "tags": [
          "WhatsApp devices"
        ]
      }
    },
    "/api/v1/whatsapp/devices/{id}/status": {
      "get": {
        "description": "Authenticate with Authorization: Bearer YOUR_API_KEY. IDs in paths are the record ID suffix (the ID property), without the table prefix.",
        "operationId": "getWhatsappDevicesIdStatus",
        "parameters": [
          {
            "description": "Record ID suffix or identifier returned by the corresponding list endpoint.",
            "in": "path",
            "name": "id",
            "required": true,
            "type": "string"
          }
        ],
        "produces": [
          "application/json"
        ],
        "responses": {
          "200": {
            "description": "Success"
          },
          "400": {
            "description": "Invalid request",
            "schema": {
              "properties": {
                "message": {
                  "type": "string"
                }
              },
              "type": "object"
            }
          },
          "401": {
            "description": "Missing or invalid authentication",
            "schema": {
              "properties": {
                "message": {
                  "type": "string"
                }
              },
              "type": "object"
            }
          },
          "402": {
            "description": "Insufficient wallet balance",
            "schema": {
              "properties": {
                "message": {
                  "type": "string"
                }
              },
              "type": "object"
            }
          },
          "403": {
            "description": "API key lacks the required permission",
            "schema": {
              "properties": {
                "message": {
                  "type": "string"
                }
              },
              "type": "object"
            }
          },
          "404": {
            "description": "Record not found or not owned by this account",
            "schema": {
              "properties": {
                "message": {
                  "type": "string"
                }
              },
              "type": "object"
            }
          },
          "409": {
            "description": "Idempotency key conflict",
            "schema": {
              "properties": {
                "message": {
                  "type": "string"
                }
              },
              "type": "object"
            }
          },
          "422": {
            "description": "Request could not be routed, priced, or authorized",
            "schema": {
              "properties": {
                "message": {
                  "type": "string"
                }
              },
              "type": "object"
            }
          },
          "429": {
            "description": "Rate limit exceeded",
            "schema": {
              "properties": {
                "message": {
                  "type": "string"
                }
              },
              "type": "object"
            }
          },
          "500": {
            "description": "Internal error",
            "schema": {
              "properties": {
                "message": {
                  "type": "string"
                }
              },
              "type": "object"
            }
          }
        },
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "summary": "List Device Status",
        "tags": [
          "WhatsApp devices"
        ]
      }
    },
    "/api/v1/whatsapp/devices/{id}/user/check": {
      "get": {
        "description": "Authenticate with Authorization: Bearer YOUR_API_KEY. IDs in paths are the record ID suffix (the ID property), without the table prefix.",
        "operationId": "getWhatsappDevicesIdUserCheck",
        "parameters": [
          {
            "description": "Record ID suffix or identifier returned by the corresponding list endpoint.",
            "in": "path",
            "name": "id",
            "required": true,
            "type": "string"
          },
          {
            "in": "query",
            "name": "phone",
            "required": false,
            "type": "string"
          }
        ],
        "produces": [
          "application/json"
        ],
        "responses": {
          "200": {
            "description": "Success"
          },
          "400": {
            "description": "Invalid request",
            "schema": {
              "properties": {
                "message": {
                  "type": "string"
                }
              },
              "type": "object"
            }
          },
          "401": {
            "description": "Missing or invalid authentication",
            "schema": {
              "properties": {
                "message": {
                  "type": "string"
                }
              },
              "type": "object"
            }
          },
          "402": {
            "description": "Insufficient wallet balance",
            "schema": {
              "properties": {
                "message": {
                  "type": "string"
                }
              },
              "type": "object"
            }
          },
          "403": {
            "description": "API key lacks the required permission",
            "schema": {
              "properties": {
                "message": {
                  "type": "string"
                }
              },
              "type": "object"
            }
          },
          "404": {
            "description": "Record not found or not owned by this account",
            "schema": {
              "properties": {
                "message": {
                  "type": "string"
                }
              },
              "type": "object"
            }
          },
          "409": {
            "description": "Idempotency key conflict",
            "schema": {
              "properties": {
                "message": {
                  "type": "string"
                }
              },
              "type": "object"
            }
          },
          "422": {
            "description": "Request could not be routed, priced, or authorized",
            "schema": {
              "properties": {
                "message": {
                  "type": "string"
                }
              },
              "type": "object"
            }
          },
          "429": {
            "description": "Rate limit exceeded",
            "schema": {
              "properties": {
                "message": {
                  "type": "string"
                }
              },
              "type": "object"
            }
          },
          "500": {
            "description": "Internal error",
            "schema": {
              "properties": {
                "message": {
                  "type": "string"
                }
              },
              "type": "object"
            }
          }
        },
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "summary": "Check User On Whats App",
        "tags": [
          "WhatsApp devices"
        ]
      }
    },
    "/api/v1/whatsapp/devices/{id}/user/info": {
      "get": {
        "description": "Authenticate with Authorization: Bearer YOUR_API_KEY. IDs in paths are the record ID suffix (the ID property), without the table prefix.",
        "operationId": "getWhatsappDevicesIdUserInfo",
        "parameters": [
          {
            "description": "Record ID suffix or identifier returned by the corresponding list endpoint.",
            "in": "path",
            "name": "id",
            "required": true,
            "type": "string"
          },
          {
            "in": "query",
            "name": "phone",
            "required": false,
            "type": "string"
          }
        ],
        "produces": [
          "application/json"
        ],
        "responses": {
          "200": {
            "description": "Success"
          },
          "400": {
            "description": "Invalid request",
            "schema": {
              "properties": {
                "message": {
                  "type": "string"
                }
              },
              "type": "object"
            }
          },
          "401": {
            "description": "Missing or invalid authentication",
            "schema": {
              "properties": {
                "message": {
                  "type": "string"
                }
              },
              "type": "object"
            }
          },
          "402": {
            "description": "Insufficient wallet balance",
            "schema": {
              "properties": {
                "message": {
                  "type": "string"
                }
              },
              "type": "object"
            }
          },
          "403": {
            "description": "API key lacks the required permission",
            "schema": {
              "properties": {
                "message": {
                  "type": "string"
                }
              },
              "type": "object"
            }
          },
          "404": {
            "description": "Record not found or not owned by this account",
            "schema": {
              "properties": {
                "message": {
                  "type": "string"
                }
              },
              "type": "object"
            }
          },
          "409": {
            "description": "Idempotency key conflict",
            "schema": {
              "properties": {
                "message": {
                  "type": "string"
                }
              },
              "type": "object"
            }
          },
          "422": {
            "description": "Request could not be routed, priced, or authorized",
            "schema": {
              "properties": {
                "message": {
                  "type": "string"
                }
              },
              "type": "object"
            }
          },
          "429": {
            "description": "Rate limit exceeded",
            "schema": {
              "properties": {
                "message": {
                  "type": "string"
                }
              },
              "type": "object"
            }
          },
          "500": {
            "description": "Internal error",
            "schema": {
              "properties": {
                "message": {
                  "type": "string"
                }
              },
              "type": "object"
            }
          }
        },
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "summary": "List User Info",
        "tags": [
          "WhatsApp devices"
        ]
      }
    }
  },
  "securityDefinitions": {
    "ApiKeyAuth": {
      "description": "Bearer YOUR_API_KEY. Managed SMS routes require sms:send, sms:read, or sms:cancel as documented.",
      "in": "header",
      "name": "Authorization",
      "type": "apiKey"
    }
  },
  "swagger": "2.0",
  "tags": [
    {
      "description": "One endpoint for WhatsApp, SMS or email.",
      "name": "Messages"
    },
    {
      "description": "Send from a number linked in the dashboard by scanning a QR code.",
      "name": "WhatsApp devices"
    },
    {
      "description": "Send through a Meta WhatsApp Business account connected in the dashboard.",
      "name": "WhatsApp Cloud"
    },
    {
      "description": "Managed SMS: registered sender IDs, routing, wallet billing and delivery reports.",
      "name": "SMS"
    },
    {
      "description": "Send SMS from your own Android phones paired with the gateway app.",
      "name": "SMS devices"
    },
    {
      "description": "Send transactional or bulk email through your configured provider.",
      "name": "Email"
    }
  ]
}
