GatewayAPI API

GatewayAPI API as documented publicly: 17 operations. Contract generated from the documentation by API Evangelist (2026-10-27); not the provider's own document.

Operations 17

GET /api/prices/list/sms/{fileformat{str}} You can use the prices endpoint to get our general price as CSV, XLSX or JSON. #
POST /api/usage/labels Get usage by label #
GET /api/vas Get a list of keywords #
POST /api/vas Add a new keyword #
DELETE /api/vas/{vaId}/foobar Cancel the keyword. #
POST /api/vas/check Check if a keyword is available #
POST /example/callback Delivery status callback #
POST /mobile/multi Send multiple messages in a single request using the Mobile Messaging API. #
GET /mobile/single GET /mobile/single #
POST /mobile/single Send a single SMS message #
POST /rest/email You can send emails through GatewayAPI using our email endpoint. #
POST /rest/hlr HLR and Number lookup #
GET /rest/me You can use the /me endpoint to check your account balance, and what currency your account is set to. #
GET /rest/mtsms Get SMS and SMS status #
POST /rest/mtsms Sending SMS Messages #
DELETE /rest/mtsms/{id{int}} Delete scheduled SMS #
GET /rest/mtsms/{message_id{int}} Get SMS and SMS status #

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/gatewayapi:gatewayapi-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

A second provider on the same verified email joins the account you already have.

OpenAPI Specification

gatewayapi-openapi-generated.yml Raw ↑
openapi: 3.1.0
info:
  title: GatewayAPI API
  version: '2026-10-27'
  description: 'GENERATED FROM DOCUMENTATION by API Evangelist on 2026-10-27: 17 operation(s) read from 13 public documentation page(s) (each
    operation names its page in x-source). This is not the provider''s published contract; GatewayAPI has published no machine-readable contract
    that the pipeline could find. Engine: local.'
  x-evidence-tiers:
    code-example: 1
    documentation: 16
    pages-with-code: 1
    pages-read: 13
  x-generated-from: documentation
  x-provenance: generated
  x-authored-by: API Evangelist
  x-generated: '2026-10-27'
  x-generator: generate-contract-from-docs.py
  x-engine: local
  x-sources:
  - https://gatewayapi.com/docs/apis/rest
  - https://gatewayapi.com/docs/apis/email
  - https://gatewayapi.com/docs/apis/legacy/rest
  - https://gatewayapi.com/docs/apis/simple
  - https://gatewayapi.com/docs/apis/keywords
  - https://gatewayapi.com/docs/apis/statistics
  - https://gatewayapi.com/docs/apis/legacy/simple
  - https://gatewayapi.com/docs/apis/authentication
  - https://gatewayapi.com/docs/apis/prices-balance
  - https://gatewayapi.com/docs/apis/legacy/authentication
  - https://gatewayapi.com/docs/message/overview
  - https://gatewayapi.com/docs/message/migration
  - https://gatewayapi.com
servers:
- url: https://messaging.gatewayapi.com
paths:
  /api/prices/list/sms/{fileformat{str}}:
    get:
      operationId: get_api_prices_list_sms_fileformat_str
      tags:
      - Api
      summary: You can use the prices endpoint to get our general price as CSV, XLSX or JSON.
      x-source: https://gatewayapi.com/docs/apis/prices-balance
      parameters:
      - name: fileformat{str
        in: path
        required: true
        schema:
          type: string
      - name: str
        in: path
        required: true
        schema:
          type: string
      responses:
        '200':
          description: Success (status as documented)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GetApiPricesListSmsFileformatStrResponse'
      x-evidence:
        kind: documentation
  /api/usage/labels:
    post:
      operationId: post_api_usage_labels
      tags:
      - Api
      summary: Get usage by label
      x-source: https://gatewayapi.com/docs/apis/statistics
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PostApiUsageLabelsRequest'
      responses:
        '200':
          description: Success (status as documented)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PostApiUsageLabelsResponse'
      x-evidence:
        kind: documentation
  /api/vas:
    get:
      operationId: get_api_vas
      tags:
      - Api
      summary: Get a list of keywords
      x-source: https://gatewayapi.com/docs/apis/keywords
      parameters:
      - name: Authorization
        in: header
        required: true
        schema:
          type: string
        description: API Token or OAuth bearer token
      responses:
        '200':
          description: Success (status as documented)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GetApiVasResponse'
      x-evidence:
        kind: documentation
    post:
      operationId: post_api_vas
      tags:
      - Api
      summary: Add a new keyword
      x-source: https://gatewayapi.com/docs/apis/keywords
      parameters:
      - name: Authorization
        in: header
        required: true
        schema:
          type: string
        description: API Token or OAuth bearer token
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PostApiVasRequest'
      responses:
        '201':
          description: Success (status as documented)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PostApiVasResponse'
      x-evidence:
        kind: documentation
  /api/vas/{vaId}/foobar:
    delete:
      operationId: delete_api_vas_vaId_foobar
      tags:
      - Api
      summary: Cancel the keyword.
      x-source: https://gatewayapi.com/docs/apis/keywords
      parameters:
      - name: vaId
        in: path
        required: true
        schema:
          type: string
      - name: Authorization
        in: header
        required: true
        schema:
          type: string
        description: API Token or OAuth bearer token
      responses:
        '200':
          description: Success (status as documented)
      x-evidence:
        kind: documentation
  /api/vas/check:
    post:
      operationId: post_api_vas_check
      tags:
      - Api
      summary: Check if a keyword is available
      x-source: https://gatewayapi.com/docs/apis/keywords
      parameters:
      - name: Authorization
        in: header
        required: true
        schema:
          type: string
        description: API Token or OAuth bearer token
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PostApiVasCheckRequest'
      responses:
        '201':
          description: Success (status as documented)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PostApiVasCheckResponse'
      x-evidence:
        kind: documentation
  /example/callback:
    post:
      operationId: post_example_callback
      tags:
      - Example
      summary: Delivery status callback
      x-source: https://gatewayapi.com/docs/apis/rest
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PostExampleCallbackRequest'
      responses:
        '201':
          description: Success (status as documented)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PostExampleCallbackResponse'
      x-evidence:
        kind: documentation
  /mobile/multi:
    post:
      operationId: post_mobile_multi
      tags:
      - Mobile
      summary: Send multiple messages in a single request using the Mobile Messaging API.
      x-source: https://gatewayapi.com/docs/message/migration
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PostMobileMultiRequest'
      responses:
        '201':
          description: Success (status as documented)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PostMobileMultiResponse'
      x-evidence:
        kind: documentation
  /mobile/single:
    get:
      operationId: get_mobile_single
      tags:
      - Mobile
      summary: GET /mobile/single
      x-source: https://gatewayapi.com
      responses:
        '200':
          description: Success (status as documented)
      x-evidence:
        kind: code-example
        language: curl
        snippet: "curl, Python, Node, PHP, C#, Java, Go… Same API for SMS & RCS Read the docs send-message.cs C# cURL Go HTTPie Java Node.js PHP\
          \ Python Ruby 1 using System; \n 2 using System.Net.Http.Json; \n 3 using System.Net.Http; \n 4 using System.Threading.Tasks; \n 5 \n\
          \ 6 class Program \n 7 { \n 8 static async Task Main() \n 9 { \n 10 await SendSMS(); \n 11 } \n 12 \n 13 static async Task SendSMS()\
          \ \n 14 { \n 15 var url = "
    post:
      operationId: post_mobile_single
      tags:
      - Mobile
      summary: Send a single SMS message
      description: 'Example request:

        ```json

        { "message" : "Hello World" , "recipients" : [{ "msisdn" : 4512345678 }]}

        ```'
      x-source: https://gatewayapi.com/docs/apis/authentication
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PostMobileSingleRequest'
      responses:
        '201':
          description: Success (status as documented)
      x-evidence:
        kind: documentation
  /rest/email:
    post:
      operationId: post_rest_email
      tags:
      - Rest
      summary: You can send emails through GatewayAPI using our email endpoint.
      x-source: https://gatewayapi.com/docs/apis/email
      requestBody:
        required: false
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PostRestEmailRequest'
      responses:
        '200':
          description: Success (status as documented)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PostRestEmailResponse'
      x-evidence:
        kind: documentation
  /rest/hlr:
    post:
      operationId: post_rest_hlr
      tags:
      - Rest
      summary: HLR and Number lookup
      x-source: https://gatewayapi.com/docs/apis/rest
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PostRestHlrRequest'
      responses:
        '201':
          description: Success (status as documented)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PostRestHlrResponse'
      x-evidence:
        kind: documentation
  /rest/me:
    get:
      operationId: get_rest_me
      tags:
      - Rest
      summary: You can use the /me endpoint to check your account balance, and what currency your account is set to.
      x-source: https://gatewayapi.com/docs/apis/prices-balance
      responses:
        '200':
          description: Success (status as documented)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GetRestMeResponse'
      x-evidence:
        kind: documentation
  /rest/mtsms:
    get:
      operationId: get_rest_mtsms
      tags:
      - Rest
      summary: Get SMS and SMS status
      x-source: https://gatewayapi.com/docs/apis/rest
      responses:
        '200':
          description: Success (status as documented)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GetRestMtsmsResponse'
      x-evidence:
        kind: documentation
    post:
      operationId: post_rest_mtsms
      tags:
      - Rest
      summary: Sending SMS Messages
      x-source: https://gatewayapi.com/docs/apis/rest
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PostRestMtsmsRequest'
      responses:
        '201':
          description: Success (status as documented)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PostRestMtsmsResponse'
      x-evidence:
        kind: documentation
  /rest/mtsms/{id{int}}:
    delete:
      operationId: delete_rest_mtsms_id_int
      tags:
      - Rest
      summary: Delete scheduled SMS
      x-source: https://gatewayapi.com/docs/apis/rest
      parameters:
      - name: id{int
        in: path
        required: true
        schema:
          type: string
      - name: int
        in: path
        required: true
        schema:
          type: string
      responses:
        '200':
          description: Success (status as documented)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DeleteRestMtsmsIdIntResponse'
      x-evidence:
        kind: documentation
  /rest/mtsms/{message_id{int}}:
    get:
      operationId: get_rest_mtsms_message_id_int
      tags:
      - Rest
      summary: Get SMS and SMS status
      x-source: https://gatewayapi.com/docs/apis/rest
      parameters:
      - name: message_id{int
        in: path
        required: true
        schema:
          type: string
      - name: int
        in: path
        required: true
        schema:
          type: string
      responses:
        '200':
          description: Success (status as documented)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GetRestMtsmsMessageIdIntResponse'
      x-evidence:
        kind: documentation
components:
  schemas:
    GetApiPricesListSmsFileformatStrResponse:
      type: object
      properties:
        premium:
          type: array
          description: List of premium price objects
        standard:
          type: array
          description: List of standard price objects
    PostApiUsageLabelsRequest:
      type: object
      properties:
        from:
          type: string
          description: The from date, in YYYY-MM-DD format. This date is inclusive.
        to:
          type: string
          description: The to date, in YYYY-MM-DD format. This date is exclusive.
        label:
          type: string
          description: Optional label you want to look for.
      required:
      - from
      - to
    PostApiUsageLabelsResponse:
      type: object
      properties:
        amount:
          type: number
          description: Amount of SMS messages
        cost:
          type: number
          description: Cost of the SMS messages
        country:
          type: string
          description: The country the SMS messages were sent to
        currency:
          type: string
          description: Either DKK or EUR
        label:
          type: string
          description: The label specified when the SMS messages were sent
        messageclass_id:
          type: string
          description: The class specified when the SMS messages were sent
    GetApiVasResponse:
      type: object
      properties:
        shortcode:
          type: integer
        keyword:
          type: string
        pushsetting_reference:
          type: string
    PostApiVasRequest:
      type: object
      properties:
        keyword:
          type: string
          description: Keyword to add
        shortcode:
          type: integer
          description: i.e. 451204
        pushsetting_reference:
          type: string
          description: Optional webhook to assign to
      required:
      - keyword
      - shortcode
    PostApiVasResponse:
      type: object
      properties:
        account_id:
          type: integer
        keyword:
          type: string
        pushsetting_reference:
          type: string
        shortcode:
          type: integer
    PostApiVasCheckRequest:
      type: object
      properties:
        keyword:
          type: string
          description: Keyword to search for
        shortcode:
          type: integer
          description: ie. 451204
      required:
      - keyword
      - shortcode
    PostApiVasCheckResponse:
      type: object
      properties:
        system:
          type: string
          description: System using the keyword (gatewayapi)
        available:
          type: boolean
          description: Is the keyword available
    PostExampleCallbackRequest:
      type: object
      properties:
        id:
          type: integer
          description: The ID of the SMS the notification concerns
        msisdn:
          type: integer
          description: The MSISDN of the mobile recipient
        time:
          type: integer
          description: The UNIX Timestamp for the delivery status event
        status:
          type: string
          description: One of the states, in all-caps, i.e. DELIVERED
        error:
          type: string
          description: Optional error description, if available
        code:
          type: string
          description: Optional hexadecimal error code
        userref:
          type: string
          description: If you specified a reference when sending the message, it is returned to you
        country_code:
          type: string
          description: Optional country code of the msisdn
        country_prefix:
          type: integer
          description: Optional country prefix of the msisdn
        mcc:
          type: string
          description: Optional MCC for the msisdn
        mnc:
          type: string
          description: Optional MNC for the msisdn
      required:
      - id
      - msisdn
      - time
      - status
    PostExampleCallbackResponse:
      type: object
      properties:
        '200':
          type: string
          description: If you reply with a 2xx code, we will consider the DSN delivered successfully
        '500':
          type: string
          description: If we get a code >= 300, we will re-attempt delivery at a later time
    PostMobileMultiRequest:
      type: object
      properties:
        messages:
          type: array
          description: Array of message objects.
        messages[].sender:
          type: string
          description: Sender name.
        messages[].message:
          type: string
          description: Message text.
        messages[].recipient:
          type: integer
          description: Recipient phone number.
        messages[].reference:
          type: string
          description: Optional reference.
      required:
      - messages
      - messages[].sender
      - messages[].message
      - messages[].recipient
    PostMobileMultiResponse:
      type: object
      properties:
        responses:
          type: array
          description: Array of response objects for each message.
        responses[].msg_id:
          type: string
          description: Message identifier.
        responses[].recipient:
          type: integer
          description: Recipient phone number.
        responses[].reference:
          type: string
          description: Reference value.
    PostMobileSingleRequest:
      type: object
      properties:
        message:
          type: string
        recipients:
          type: array
          description: Array of recipient objects
        recipients[].msisdn:
          type: integer
      required:
      - message
      - recipients
      - recipients[].msisdn
    PostRestEmailRequest:
      type: object
      properties:
        html:
          type: string
          description: The html content of the email
        plaintext:
          type: string
          description: The plain text content of the email
        subject:
          type: string
          description: The subject line of the email, tags can be used like in the message to personalize the subject
        from:
          type: string
          description: The name and email of the sender, can be just the email if no name is specified, see below for format
        reply:
          type: string
          description: The name and email of the sender, can be just the email if no name is specified, see below for format
        callback_url:
          type: string
          description: Callback URL to get status reports
        userref:
          type: string
          description: Add your own custom reference to be passed back to the provided callback URL
        tags:
          type: array
          description: A list of string tags, which will be replaced with the tag values for each recipient, if used remember to also add tagvalues
            to all recipients
        recipients:
          type: array
          description: List of email addresses to receive the email
        attachments:
          type: array
          description: A list of base64 encoded files to be attached to the email
    PostRestEmailResponse:
      type: object
      properties:
        ids:
          type: array
          description: Array of message IDs
        usage:
          type: object
          description: Object with usage information
    PostRestHlrRequest:
      type: object
      properties:
        msisdns:
          type: array
          description: List of numbers to look up
      required:
      - msisdns
    PostRestHlrResponse:
      type: object
      properties:
        currency:
          type: string
          description: Currency of the cost
        hlr:
          type: object
          description: Lookup results per number
        lookups:
          type: integer
          description: Number of lookups performed
        total_cost:
          type: number
          description: Total cost of the request
        '200':
          type: string
          description: Returns an object with information for each number
        '400':
          type: string
          description: Invalid arguments
        '401':
          type: string
          description: Invalid API key or signature
        '403':
          type: string
          description: Unauthorized IP address or account not authorized
        '422':
          type: string
          description: Invalid JSON request body
        '500':
          type: string
          description: Internal Server Error
    GetRestMeResponse:
      type: object
      properties:
        credit:
          type: string
          description: The remaining credit.
        currency:
          type: string
          description: The currency of your credit.
        id:
          type: integer
          description: The ID of your account.
    GetRestMtsmsResponse:
      type: object
      properties:
        '200':
          type: string
          description: Returns an object that represents the SMS on success
        '400':
          type: string
          description: Invalid arguments
        '401':
          type: string
          description: Invalid API key or signature
        '403':
          type: string
          description: Unauthorized IP address
        '422':
          type: string
          description: Invalid JSON request body
        '500':
          type: string
          description: Internal Server Error
    PostRestMtsmsRequest:
      type: object
      properties:
        class:
          type: string
          description: Message class, default “standard”
        message:
          type: string
          description: The content of the SMS
        sender:
          type: string
          description: Up to 11 alphanumeric characters, or 15 digits
        userref:
          type: string
          description: Opaque string reference
        callback_url:
          type: string
          description: URL for status notifications
        recipients:
          type: array
          description: Array of recipient objects
        recipients[].msisdn:
          type: integer
          description: Full mobile phone number of the recipient
      required:
      - message
      - recipients
      - recipients[].msisdn
    PostRestMtsmsResponse:
      type: object
      properties:
        ids:
          type: array
          description: List of message IDs
        usage:
          type: object
          description: Usage information for the request
        '200':
          type: string
          description: Returns an object with an array of message IDs and usage information on success
        '400':
          type: string
          description: Invalid arguments
        '401':
          type: string
          description: Invalid API key or signature
        '403':
          type: string
          description: Unauthorized IP address
        '422':
          type: string
          description: Invalid JSON request body
        '500':
          type: string
          description: Internal Server Error
    DeleteRestMtsmsIdIntResponse:
      type: object
      properties:
        '204':
          type: string
          description: Successful response
        '400':
          type: string
          description: Invalid arguments
        '401':
          type: string
          description: Invalid API key or signature
        '403':
          type: string
          description: Unauthorized IP address
        '404':
          type: string
          description: SMS not found or not yet transferred to storage
        '410':
          type: string
          description: Message already gone
        '422':
          type: string
          description: Invalid JSON request body
        '500':
          type: string
          description: Internal Server Error
    GetRestMtsmsMessageIdIntResponse:
      type: object
      properties:
        '200':
          type: string
          description: Returns an object that represents the SMS on success
        '400':
          type: string
          description: Invalid arguments
        '401':
          type: string
          description: Invalid API key or signature
        '403':
          type: string
          description: Unauthorized IP address
        '422':
          type: string
          description: Invalid JSON request body
        '500':
          type: string
          description: Internal Server Error
  securitySchemes:
    Basic:
      type: http
      scheme: basic
      x-source: https://gatewayapi.com/docs/authentication/
    Legacy_query_credentials:
      type: apiKey
      in: query
      name: Authorization
      x-source: https://gatewayapi.com/docs/authentication/
tags:
- name: Api
- name: Example
- name: Mobile
- name: Rest
security:
- Basic: []
- Legacy_query_credentials: []