TSGGLOBAL Support sign in
Skip to page content
Browse TSG Global API docs

TSG Global API documentation OpenAPI Specification

OpenAPI Specification

On this page

OpenAPI 3.1 description of the TSG Global REST APIs (SMS, MMS, MMS templates, number configuration) with interactive operation blocks and a downloadable spec.

The REST APIs are described in an OpenAPI 3.1 document. Use it to generate clients, import into Postman or Insomnia, or feed to an AI assistant. The GraphQL APIs (number ordering, CDR reports, compliance forms) are not covered; see GraphQL API & Authentication.

Download: tsg-global-rest.json

The blocks below render straight from the spec, so they stay in step with it.

SMS

Send an SMS message

Sends an SMS to one or more recipients. Recipients are de-duplicated. Long messages are split into
GSM-standard segments (max 6 for GSM-7 and UCS-2, 5 for Latin-1). Scheduling with `deliver_at` is
supported up to 2 years ahead. The response is keyed by recipient number.

POST /messages

Request body schema
{
  "required": true,
  "content": {
    "application/json": {
      "schema": {
        "$ref": "#/components/schemas/SendSmsRequest"
      }
    }
  }
}
Responses
{
  "200": {
    "description": "Message accepted. One Message object per recipient.",
    "content": {
      "application/json": {
        "schema": {
          "type": "object",
          "additionalProperties": {
            "$ref": "#/components/schemas/SmsMessage"
          }
        }
      }
    }
  },
  "401": {
    "$ref": "#/components/responses/Unauthenticated"
  },
  "422": {
    "$ref": "#/components/responses/InvalidParams"
  }
}
Complete operation definition and referenced schemas
{
  "openapi": "3.1.0",
  "info": {
    "title": "TSG Global REST APIs",
    "version": "2026-09-11"
  },
  "tags": [
    {
      "name": "SMS",
      "description": "Send SMS and fetch messages. Host sms.tsgglobal.world."
    }
  ],
  "servers": [
    {
      "url": "https://sms.tsgglobal.world",
      "description": "Programmable SMS (production)"
    },
    {
      "url": "https://mmsc.tsgglobal.world",
      "description": "Programmable MMS and MMS templates (production)"
    },
    {
      "url": "https://api-service.tsgglobal.world",
      "description": "Phone-number configuration (production)"
    },
    {
      "url": "https://sms-api.staging.tsgglobal.com",
      "description": "Programmable SMS (staging)"
    },
    {
      "url": "https://mms-api.staging.tsgglobal.com",
      "description": "Programmable MMS (staging)"
    }
  ],
  "security": [
    {
      "bearerAuth": []
    }
  ],
  "components": {
    "securitySchemes": {
      "bearerAuth": {
        "type": "http",
        "scheme": "bearer",
        "description": "API key from the Customer Portal, sent as `Authorization: Bearer <api_key>`."
      }
    },
    "schemas": {
      "SendSmsRequest": {
        "type": "object",
        "required": [
          "from",
          "to",
          "body"
        ],
        "properties": {
          "from": {
            "type": "string",
            "description": "E.164 number or alphanumeric sender ID."
          },
          "to": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "E.164 recipients; de-duplicated."
          },
          "body": {
            "type": "string",
            "description": "UTF-8 text, or base64 when a custom encoding is set."
          },
          "encoding": {
            "type": "integer",
            "enum": [
              0,
              3,
              8
            ],
            "description": "0 GSM-7, 3 Latin-1, 8 UCS-2."
          },
          "force_encoding": {
            "type": "integer",
            "enum": [
              0,
              3,
              8
            ]
          },
          "registered_delivery": {
            "type": "integer",
            "enum": [
              1,
              2,
              3
            ],
            "description": "1 always, 2 on success, 3 on error."
          },
          "deliver_at": {
            "type": "string",
            "format": "date-time",
            "description": "UTC, up to 2 years ahead."
          },
          "expires_at": {
            "type": "string",
            "format": "date-time"
          }
        }
      },
      "SmsMessage": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "object": {
            "type": "string",
            "enum": [
              "sms"
            ]
          },
          "type": {
            "type": "string",
            "enum": [
              "inbound",
              "outbound"
            ]
          },
          "from": {
            "type": "string"
          },
          "to": {
            "type": "string"
          },
          "body": {
            "type": "string"
          },
          "encoding": {
            "type": "integer"
          },
          "status": {
            "type": "string"
          },
          "delivery_receipt": {},
          "udh": {
            "type": [
              "object",
              "null"
            ],
            "properties": {
              "ref_num": {
                "type": [
                  "integer",
                  "null"
                ]
              },
              "count": {
                "type": [
                  "integer",
                  "null"
                ]
              },
              "seq_num": {
                "type": [
                  "integer",
                  "null"
                ]
              }
            }
          },
          "parts": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "id": {
                  "type": "string",
                  "format": "uuid"
                }
              }
            }
          },
          "location": {
            "type": [
              "string",
              "null"
            ]
          },
          "inserted_at": {
            "type": "string"
          },
          "updated_at": {
            "type": "string"
          },
          "scheduled_at": {
            "type": [
              "string",
              "null"
            ]
          },
          "processed_at": {
            "type": [
              "string",
              "null"
            ]
          },
          "delivered_at": {
            "type": [
              "string",
              "null"
            ]
          },
          "expires_at": {
            "type": [
              "string",
              "null"
            ]
          }
        }
      },
      "Error": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "enum": [
              "unauthenticated",
              "unauthorized",
              "not_found",
              "server_error",
              "invalid_params"
            ]
          },
          "message": {
            "type": "string"
          }
        }
      }
    },
    "responses": {
      "Unauthenticated": {
        "description": "Missing or invalid API key.",
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/Error"
            }
          }
        }
      },
      "InvalidParams": {
        "description": "Request understood but parameters invalid.",
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/Error"
            }
          }
        }
      }
    }
  },
  "paths": {
    "/messages": {
      "post": {
        "tags": [
          "SMS"
        ],
        "operationId": "sendSms",
        "summary": "Send an SMS message",
        "description": "Sends an SMS to one or more recipients. Recipients are de-duplicated. Long messages are split into\nGSM-standard segments (max 6 for GSM-7 and UCS-2, 5 for Latin-1). Scheduling with `deliver_at` is\nsupported up to 2 years ahead. The response is keyed by recipient number.\n",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/SendSmsRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Message accepted. One Message object per recipient.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": {
                    "$ref": "#/components/schemas/SmsMessage"
                  }
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/Unauthenticated"
          },
          "422": {
            "$ref": "#/components/responses/InvalidParams"
          }
        }
      }
    }
  }
}

Fetch a message or message part

Returns a single message by message id or part id. Intended for testing; register a webhook for production
traffic (see https://support.tsgglobal.com/docs/api-reference/programmable-sms/receive-an-sms-message.md).

GET /messages/{uuid}

Parameters

NameInRequiredDescription
uuidpathYes
Responses
{
  "200": {
    "description": "The message.",
    "content": {
      "application/json": {
        "schema": {
          "$ref": "#/components/schemas/SmsMessage"
        }
      }
    }
  },
  "401": {
    "$ref": "#/components/responses/Unauthenticated"
  },
  "404": {
    "$ref": "#/components/responses/NotFound"
  }
}
Complete operation definition and referenced schemas
{
  "openapi": "3.1.0",
  "info": {
    "title": "TSG Global REST APIs",
    "version": "2026-09-11"
  },
  "tags": [
    {
      "name": "SMS",
      "description": "Send SMS and fetch messages. Host sms.tsgglobal.world."
    }
  ],
  "servers": [
    {
      "url": "https://sms.tsgglobal.world",
      "description": "Programmable SMS (production)"
    },
    {
      "url": "https://mmsc.tsgglobal.world",
      "description": "Programmable MMS and MMS templates (production)"
    },
    {
      "url": "https://api-service.tsgglobal.world",
      "description": "Phone-number configuration (production)"
    },
    {
      "url": "https://sms-api.staging.tsgglobal.com",
      "description": "Programmable SMS (staging)"
    },
    {
      "url": "https://mms-api.staging.tsgglobal.com",
      "description": "Programmable MMS (staging)"
    }
  ],
  "security": [
    {
      "bearerAuth": []
    }
  ],
  "components": {
    "securitySchemes": {
      "bearerAuth": {
        "type": "http",
        "scheme": "bearer",
        "description": "API key from the Customer Portal, sent as `Authorization: Bearer <api_key>`."
      }
    },
    "schemas": {
      "SmsMessage": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "object": {
            "type": "string",
            "enum": [
              "sms"
            ]
          },
          "type": {
            "type": "string",
            "enum": [
              "inbound",
              "outbound"
            ]
          },
          "from": {
            "type": "string"
          },
          "to": {
            "type": "string"
          },
          "body": {
            "type": "string"
          },
          "encoding": {
            "type": "integer"
          },
          "status": {
            "type": "string"
          },
          "delivery_receipt": {},
          "udh": {
            "type": [
              "object",
              "null"
            ],
            "properties": {
              "ref_num": {
                "type": [
                  "integer",
                  "null"
                ]
              },
              "count": {
                "type": [
                  "integer",
                  "null"
                ]
              },
              "seq_num": {
                "type": [
                  "integer",
                  "null"
                ]
              }
            }
          },
          "parts": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "id": {
                  "type": "string",
                  "format": "uuid"
                }
              }
            }
          },
          "location": {
            "type": [
              "string",
              "null"
            ]
          },
          "inserted_at": {
            "type": "string"
          },
          "updated_at": {
            "type": "string"
          },
          "scheduled_at": {
            "type": [
              "string",
              "null"
            ]
          },
          "processed_at": {
            "type": [
              "string",
              "null"
            ]
          },
          "delivered_at": {
            "type": [
              "string",
              "null"
            ]
          },
          "expires_at": {
            "type": [
              "string",
              "null"
            ]
          }
        }
      },
      "Error": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "enum": [
              "unauthenticated",
              "unauthorized",
              "not_found",
              "server_error",
              "invalid_params"
            ]
          },
          "message": {
            "type": "string"
          }
        }
      }
    },
    "responses": {
      "Unauthenticated": {
        "description": "Missing or invalid API key.",
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/Error"
            }
          }
        }
      },
      "NotFound": {
        "description": "Resource not found.",
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/Error"
            }
          }
        }
      }
    }
  },
  "paths": {
    "/messages/{uuid}": {
      "get": {
        "tags": [
          "SMS"
        ],
        "operationId": "getSms",
        "summary": "Fetch a message or message part",
        "description": "Returns a single message by message id or part id. Intended for testing; register a webhook for production\ntraffic (see https://support.tsgglobal.com/docs/api-reference/programmable-sms/receive-an-sms-message.md).\n",
        "parameters": [
          {
            "name": "uuid",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The message.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SmsMessage"
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/Unauthenticated"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          }
        }
      }
    }
  }
}

MMS

Send an MMS message

Sends an MMS. The body mirrors an MM4 forward request. Parts may be `plain` text, a public `uri`
(3 MB max, server must answer HEAD and GET with Content-Length), an RFC 2397 `data-uri` (65,535 chars max)
or an `embedded` body (1 MB max). A 200 means the message was accepted for processing, not delivered.
Set `request_delivery_reports` to receive DLRs on your inbound webhook.

POST /mms

Request body schema
{
  "required": true,
  "content": {
    "application/json": {
      "schema": {
        "$ref": "#/components/schemas/MmsForwardRequest"
      }
    }
  }
}
Responses
{
  "200": {
    "description": "Accepted. `data.attributes.messages` carries one `message_id` per recipient, used in DLRs.",
    "content": {
      "application/json": {
        "schema": {
          "$ref": "#/components/schemas/MmsForwardResponse"
        }
      }
    }
  },
  "400": {
    "description": "Malformed JSON (for example unescaped new lines inside strings)."
  },
  "401": {
    "$ref": "#/components/responses/Unauthenticated"
  }
}
Complete operation definition and referenced schemas
{
  "openapi": "3.1.0",
  "info": {
    "title": "TSG Global REST APIs",
    "version": "2026-09-11"
  },
  "tags": [
    {
      "name": "MMS",
      "description": "Send MMS. Host mmsc.tsgglobal.world."
    }
  ],
  "servers": [
    {
      "url": "https://sms.tsgglobal.world",
      "description": "Programmable SMS (production)"
    },
    {
      "url": "https://mmsc.tsgglobal.world",
      "description": "Programmable MMS and MMS templates (production)"
    },
    {
      "url": "https://api-service.tsgglobal.world",
      "description": "Phone-number configuration (production)"
    },
    {
      "url": "https://sms-api.staging.tsgglobal.com",
      "description": "Programmable SMS (staging)"
    },
    {
      "url": "https://mms-api.staging.tsgglobal.com",
      "description": "Programmable MMS (staging)"
    }
  ],
  "security": [
    {
      "bearerAuth": []
    }
  ],
  "components": {
    "securitySchemes": {
      "bearerAuth": {
        "type": "http",
        "scheme": "bearer",
        "description": "API key from the Customer Portal, sent as `Authorization: Bearer <api_key>`."
      }
    },
    "schemas": {
      "MmsForwardRequest": {
        "type": "object",
        "required": [
          "data"
        ],
        "properties": {
          "data": {
            "type": "object",
            "required": [
              "type",
              "attributes"
            ],
            "properties": {
              "id": {
                "type": "string"
              },
              "type": {
                "type": "string",
                "enum": [
                  "mms-forward-req"
                ]
              },
              "attributes": {
                "type": "object",
                "required": [
                  "from",
                  "to",
                  "parts"
                ],
                "properties": {
                  "from": {
                    "type": "string"
                  },
                  "to": {
                    "type": "array",
                    "items": {
                      "type": "string"
                    }
                  },
                  "subject": {
                    "type": "string"
                  },
                  "expires_at": {
                    "type": "string",
                    "format": "date-time"
                  },
                  "expires_in": {
                    "type": "integer",
                    "description": "Seconds after receipt."
                  },
                  "transaction_id": {
                    "type": "string"
                  },
                  "headers": {
                    "type": "object"
                  },
                  "metadata": {
                    "type": "object"
                  },
                  "request_delivery_reports": {
                    "type": "boolean",
                    "default": false
                  },
                  "parts": {
                    "type": "array",
                    "items": {
                      "$ref": "#/components/schemas/MmsPart"
                    }
                  }
                }
              }
            }
          }
        }
      },
      "MmsPart": {
        "type": "object",
        "properties": {
          "kind": {
            "type": "string",
            "enum": [
              "plain",
              "uri",
              "data-uri",
              "embedded"
            ],
            "default": "plain"
          },
          "content_type": {
            "type": "string"
          },
          "content_location": {
            "type": "string"
          },
          "content_encoding": {
            "type": "string"
          },
          "transfer_encoding": {
            "type": "string"
          },
          "body": {
            "type": "string"
          },
          "uri": {
            "type": "string"
          },
          "headers": {
            "type": "object",
            "additionalProperties": {
              "type": "string"
            }
          },
          "metadata": {
            "type": "object"
          }
        }
      },
      "MmsForwardResponse": {
        "type": "object",
        "properties": {
          "data": {
            "type": "object",
            "properties": {
              "id": {
                "type": "string",
                "format": "uuid"
              },
              "type": {
                "type": "string",
                "enum": [
                  "mms-forward-res"
                ]
              },
              "attributes": {
                "type": "object",
                "properties": {
                  "inserted_at": {
                    "type": "string"
                  },
                  "transaction_id": {
                    "type": "string"
                  },
                  "from": {
                    "type": "string"
                  },
                  "to": {
                    "type": "array",
                    "items": {
                      "type": "string"
                    }
                  },
                  "subject": {
                    "type": "string"
                  },
                  "headers": {
                    "type": "object"
                  },
                  "messages": {
                    "type": "array",
                    "items": {
                      "type": "object",
                      "properties": {
                        "message_id": {
                          "type": "string",
                          "format": "uuid"
                        },
                        "to": {
                          "type": "string"
                        }
                      }
                    }
                  },
                  "parts": {
                    "type": "array",
                    "items": {
                      "$ref": "#/components/schemas/MmsPart"
                    }
                  }
                }
              }
            }
          }
        }
      },
      "Error": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "enum": [
              "unauthenticated",
              "unauthorized",
              "not_found",
              "server_error",
              "invalid_params"
            ]
          },
          "message": {
            "type": "string"
          }
        }
      }
    },
    "responses": {
      "Unauthenticated": {
        "description": "Missing or invalid API key.",
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/Error"
            }
          }
        }
      }
    }
  },
  "paths": {
    "/mms": {
      "post": {
        "tags": [
          "MMS"
        ],
        "operationId": "sendMms",
        "summary": "Send an MMS message",
        "description": "Sends an MMS. The body mirrors an MM4 forward request. Parts may be `plain` text, a public `uri`\n(3 MB max, server must answer HEAD and GET with Content-Length), an RFC 2397 `data-uri` (65,535 chars max)\nor an `embedded` body (1 MB max). A 200 means the message was accepted for processing, not delivered.\nSet `request_delivery_reports` to receive DLRs on your inbound webhook.\n",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/MmsForwardRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Accepted. `data.attributes.messages` carries one `message_id` per recipient, used in DLRs.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MmsForwardResponse"
                }
              }
            }
          },
          "400": {
            "description": "Malformed JSON (for example unescaped new lines inside strings)."
          },
          "401": {
            "$ref": "#/components/responses/Unauthenticated"
          }
        }
      }
    }
  }
}

Create an MMS template

Placeholders use `{key}` where key matches `[a-zA-Z_][a-zA-Z0-9_]*`. The response lists the extracted placeholders.

POST /mms/templates

Request body schema
{
  "required": true,
  "content": {
    "application/json": {
      "schema": {
        "$ref": "#/components/schemas/MmsTemplateRequest"
      }
    }
  }
}
Responses
{
  "200": {
    "description": "The created template.",
    "content": {
      "application/json": {
        "schema": {
          "$ref": "#/components/schemas/MmsTemplateResponse"
        }
      }
    }
  },
  "401": {
    "$ref": "#/components/responses/Unauthenticated"
  }
}
Complete operation definition and referenced schemas
{
  "openapi": "3.1.0",
  "info": {
    "title": "TSG Global REST APIs",
    "version": "2026-09-11"
  },
  "tags": [
    {
      "name": "MMS templates",
      "description": "Reusable MMS templates with {placeholder} substitution. Host mmsc.tsgglobal.world."
    }
  ],
  "servers": [
    {
      "url": "https://sms.tsgglobal.world",
      "description": "Programmable SMS (production)"
    },
    {
      "url": "https://mmsc.tsgglobal.world",
      "description": "Programmable MMS and MMS templates (production)"
    },
    {
      "url": "https://api-service.tsgglobal.world",
      "description": "Phone-number configuration (production)"
    },
    {
      "url": "https://sms-api.staging.tsgglobal.com",
      "description": "Programmable SMS (staging)"
    },
    {
      "url": "https://mms-api.staging.tsgglobal.com",
      "description": "Programmable MMS (staging)"
    }
  ],
  "security": [
    {
      "bearerAuth": []
    }
  ],
  "components": {
    "securitySchemes": {
      "bearerAuth": {
        "type": "http",
        "scheme": "bearer",
        "description": "API key from the Customer Portal, sent as `Authorization: Bearer <api_key>`."
      }
    },
    "schemas": {
      "MmsTemplateRequest": {
        "type": "object",
        "required": [
          "data"
        ],
        "properties": {
          "data": {
            "type": "object",
            "required": [
              "type",
              "attributes"
            ],
            "properties": {
              "type": {
                "type": "string",
                "enum": [
                  "mms-template"
                ]
              },
              "attributes": {
                "type": "object",
                "required": [
                  "name",
                  "body_template"
                ],
                "properties": {
                  "name": {
                    "type": "string"
                  },
                  "body_template": {
                    "type": "string"
                  },
                  "subject_template": {
                    "type": "string"
                  },
                  "parts": {
                    "type": "array",
                    "items": {
                      "$ref": "#/components/schemas/MmsPart"
                    }
                  }
                }
              }
            }
          }
        }
      },
      "MmsPart": {
        "type": "object",
        "properties": {
          "kind": {
            "type": "string",
            "enum": [
              "plain",
              "uri",
              "data-uri",
              "embedded"
            ],
            "default": "plain"
          },
          "content_type": {
            "type": "string"
          },
          "content_location": {
            "type": "string"
          },
          "content_encoding": {
            "type": "string"
          },
          "transfer_encoding": {
            "type": "string"
          },
          "body": {
            "type": "string"
          },
          "uri": {
            "type": "string"
          },
          "headers": {
            "type": "object",
            "additionalProperties": {
              "type": "string"
            }
          },
          "metadata": {
            "type": "object"
          }
        }
      },
      "MmsTemplateResponse": {
        "type": "object",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/MmsTemplate"
          }
        }
      },
      "MmsTemplate": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "type": {
            "type": "string",
            "enum": [
              "mms-template"
            ]
          },
          "attributes": {
            "type": "object",
            "properties": {
              "name": {
                "type": "string"
              },
              "body_template": {
                "type": "string"
              },
              "subject_template": {
                "type": "string"
              },
              "placeholders": {
                "type": "array",
                "items": {
                  "type": "string"
                }
              },
              "parts": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/MmsPart"
                }
              },
              "inserted_at": {
                "type": "string"
              },
              "updated_at": {
                "type": "string"
              }
            }
          }
        }
      },
      "Error": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "enum": [
              "unauthenticated",
              "unauthorized",
              "not_found",
              "server_error",
              "invalid_params"
            ]
          },
          "message": {
            "type": "string"
          }
        }
      }
    },
    "responses": {
      "Unauthenticated": {
        "description": "Missing or invalid API key.",
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/Error"
            }
          }
        }
      }
    }
  },
  "paths": {
    "/mms/templates": {
      "post": {
        "tags": [
          "MMS templates"
        ],
        "operationId": "createMmsTemplate",
        "summary": "Create an MMS template",
        "description": "Placeholders use `{key}` where key matches `[a-zA-Z_][a-zA-Z0-9_]*`. The response lists the extracted placeholders.",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/MmsTemplateRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "The created template.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MmsTemplateResponse"
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/Unauthenticated"
          }
        }
      }
    }
  }
}

POST /mms/templates/{id}/send

Send an MMS from a template

POST /mms/templates/{id}/send

Parameters

NameInRequiredDescription
idpathYes
Request body schema
{
  "required": true,
  "content": {
    "application/json": {
      "schema": {
        "$ref": "#/components/schemas/MmsTemplateSendRequest"
      }
    }
  }
}
Responses
{
  "200": {
    "description": "Accepted. Same shape as sending an MMS directly.",
    "content": {
      "application/json": {
        "schema": {
          "$ref": "#/components/schemas/MmsForwardResponse"
        }
      }
    }
  },
  "404": {
    "$ref": "#/components/responses/NotFound"
  }
}
Complete operation definition and referenced schemas
{
  "openapi": "3.1.0",
  "info": {
    "title": "TSG Global REST APIs",
    "version": "2026-09-11"
  },
  "tags": [
    {
      "name": "MMS templates",
      "description": "Reusable MMS templates with {placeholder} substitution. Host mmsc.tsgglobal.world."
    }
  ],
  "servers": [
    {
      "url": "https://sms.tsgglobal.world",
      "description": "Programmable SMS (production)"
    },
    {
      "url": "https://mmsc.tsgglobal.world",
      "description": "Programmable MMS and MMS templates (production)"
    },
    {
      "url": "https://api-service.tsgglobal.world",
      "description": "Phone-number configuration (production)"
    },
    {
      "url": "https://sms-api.staging.tsgglobal.com",
      "description": "Programmable SMS (staging)"
    },
    {
      "url": "https://mms-api.staging.tsgglobal.com",
      "description": "Programmable MMS (staging)"
    }
  ],
  "security": [
    {
      "bearerAuth": []
    }
  ],
  "components": {
    "securitySchemes": {
      "bearerAuth": {
        "type": "http",
        "scheme": "bearer",
        "description": "API key from the Customer Portal, sent as `Authorization: Bearer <api_key>`."
      }
    },
    "schemas": {
      "MmsTemplateSendRequest": {
        "type": "object",
        "required": [
          "data"
        ],
        "properties": {
          "data": {
            "type": "object",
            "required": [
              "type",
              "attributes"
            ],
            "properties": {
              "type": {
                "type": "string",
                "enum": [
                  "mms-template-send-req"
                ]
              },
              "attributes": {
                "type": "object",
                "required": [
                  "from",
                  "to",
                  "params"
                ],
                "properties": {
                  "from": {
                    "type": "string"
                  },
                  "to": {
                    "type": "array",
                    "items": {
                      "type": "string"
                    }
                  },
                  "params": {
                    "type": "object",
                    "additionalProperties": {
                      "type": "string"
                    }
                  },
                  "transaction_id": {
                    "type": "string"
                  },
                  "request_delivery_reports": {
                    "type": "boolean",
                    "default": false
                  },
                  "metadata": {
                    "type": "object"
                  }
                }
              }
            }
          }
        }
      },
      "MmsForwardResponse": {
        "type": "object",
        "properties": {
          "data": {
            "type": "object",
            "properties": {
              "id": {
                "type": "string",
                "format": "uuid"
              },
              "type": {
                "type": "string",
                "enum": [
                  "mms-forward-res"
                ]
              },
              "attributes": {
                "type": "object",
                "properties": {
                  "inserted_at": {
                    "type": "string"
                  },
                  "transaction_id": {
                    "type": "string"
                  },
                  "from": {
                    "type": "string"
                  },
                  "to": {
                    "type": "array",
                    "items": {
                      "type": "string"
                    }
                  },
                  "subject": {
                    "type": "string"
                  },
                  "headers": {
                    "type": "object"
                  },
                  "messages": {
                    "type": "array",
                    "items": {
                      "type": "object",
                      "properties": {
                        "message_id": {
                          "type": "string",
                          "format": "uuid"
                        },
                        "to": {
                          "type": "string"
                        }
                      }
                    }
                  },
                  "parts": {
                    "type": "array",
                    "items": {
                      "$ref": "#/components/schemas/MmsPart"
                    }
                  }
                }
              }
            }
          }
        }
      },
      "MmsPart": {
        "type": "object",
        "properties": {
          "kind": {
            "type": "string",
            "enum": [
              "plain",
              "uri",
              "data-uri",
              "embedded"
            ],
            "default": "plain"
          },
          "content_type": {
            "type": "string"
          },
          "content_location": {
            "type": "string"
          },
          "content_encoding": {
            "type": "string"
          },
          "transfer_encoding": {
            "type": "string"
          },
          "body": {
            "type": "string"
          },
          "uri": {
            "type": "string"
          },
          "headers": {
            "type": "object",
            "additionalProperties": {
              "type": "string"
            }
          },
          "metadata": {
            "type": "object"
          }
        }
      },
      "Error": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "enum": [
              "unauthenticated",
              "unauthorized",
              "not_found",
              "server_error",
              "invalid_params"
            ]
          },
          "message": {
            "type": "string"
          }
        }
      }
    },
    "responses": {
      "NotFound": {
        "description": "Resource not found.",
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/Error"
            }
          }
        }
      }
    }
  },
  "paths": {
    "/mms/templates/{id}/send": {
      "post": {
        "tags": [
          "MMS templates"
        ],
        "operationId": "sendMmsFromTemplate",
        "summary": "Send an MMS from a template",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/MmsTemplateSendRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Accepted. Same shape as sending an MMS directly.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MmsForwardResponse"
                }
              }
            }
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          }
        }
      }
    }
  }
}

Number configuration

Get a number's SMS and MMS configuration

Clients must ignore unknown properties; new ones may be added without notice.

GET /v5/dids/{number}

Parameters

NameInRequiredDescription
numberpathYes
Responses
{
  "200": {
    "description": "Configuration.",
    "content": {
      "application/json": {
        "schema": {
          "$ref": "#/components/schemas/NumberConfiguration"
        }
      }
    }
  },
  "401": {
    "$ref": "#/components/responses/Unauthenticated"
  },
  "404": {
    "$ref": "#/components/responses/NotFound"
  }
}
Complete operation definition and referenced schemas
{
  "openapi": "3.1.0",
  "info": {
    "title": "TSG Global REST APIs",
    "version": "2026-09-11"
  },
  "tags": [
    {
      "name": "Number configuration",
      "description": "Per-number SMS, MMS and voice settings. Host api-service.tsgglobal.world."
    }
  ],
  "servers": [
    {
      "url": "https://sms.tsgglobal.world",
      "description": "Programmable SMS (production)"
    },
    {
      "url": "https://mmsc.tsgglobal.world",
      "description": "Programmable MMS and MMS templates (production)"
    },
    {
      "url": "https://api-service.tsgglobal.world",
      "description": "Phone-number configuration (production)"
    },
    {
      "url": "https://sms-api.staging.tsgglobal.com",
      "description": "Programmable SMS (staging)"
    },
    {
      "url": "https://mms-api.staging.tsgglobal.com",
      "description": "Programmable MMS (staging)"
    }
  ],
  "security": [
    {
      "bearerAuth": []
    }
  ],
  "components": {
    "securitySchemes": {
      "bearerAuth": {
        "type": "http",
        "scheme": "bearer",
        "description": "API key from the Customer Portal, sent as `Authorization: Bearer <api_key>`."
      }
    },
    "schemas": {
      "NumberConfiguration": {
        "type": "object",
        "properties": {
          "number": {
            "type": "string"
          },
          "number_type": {
            "type": "string",
            "enum": [
              "long-code",
              "short-code",
              "toll-free"
            ]
          },
          "mms_enabled": {
            "type": "boolean"
          },
          "mms_uri": {
            "type": [
              "string",
              "null"
            ]
          },
          "sms_enabled": {
            "type": "boolean"
          },
          "campaign_id": {
            "type": [
              "string",
              "null"
            ]
          },
          "compliance_status": {
            "type": "string",
            "enum": [
              "non_compliant",
              "pending",
              "compliant"
            ]
          },
          "sms_status": {
            "type": "string",
            "enum": [
              "NONE",
              "PENDING",
              "ACTIVE",
              "ERROR",
              "DSBL-PND"
            ]
          },
          "use_case_type": {
            "type": "string",
            "enum": [
              "",
              "p2p",
              "a2p"
            ]
          },
          "nnid": {
            "type": [
              "string",
              "null"
            ]
          },
          "sms_post_ver": {
            "type": "string",
            "enum": [
              "smpp",
              "postv1",
              "postv2",
              "post3jam"
            ]
          },
          "sms_uri": {
            "type": [
              "string",
              "null"
            ],
            "description": "null means SMPP delivery."
          },
          "x_api_key_header": {
            "type": [
              "string",
              "null"
            ]
          },
          "ten_dlc_registered": {
            "type": "boolean"
          },
          "tmobile_ten_dlc_registered": {
            "type": "boolean"
          }
        }
      },
      "Error": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "enum": [
              "unauthenticated",
              "unauthorized",
              "not_found",
              "server_error",
              "invalid_params"
            ]
          },
          "message": {
            "type": "string"
          }
        }
      }
    },
    "responses": {
      "Unauthenticated": {
        "description": "Missing or invalid API key.",
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/Error"
            }
          }
        }
      },
      "NotFound": {
        "description": "Resource not found.",
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/Error"
            }
          }
        }
      }
    }
  },
  "paths": {
    "/v5/dids/{number}": {
      "get": {
        "tags": [
          "Number configuration"
        ],
        "operationId": "getNumberConfiguration",
        "summary": "Get a number's SMS and MMS configuration",
        "description": "Clients must ignore unknown properties; new ones may be added without notice.",
        "parameters": [
          {
            "name": "number",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Configuration.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NumberConfiguration"
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/Unauthenticated"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          }
        }
      }
    }
  }
}

Enable, update or disable SMS (and 10DLC assignment) on a number

Strict parameter parsing: unknown fields reject the request. Use `action: add` to enable, `update` to change
settings or attach a campaign, `delete` to disable SMS.

POST /v2/sms-enablement

Request body schema
{
  "required": true,
  "content": {
    "application/json": {
      "schema": {
        "$ref": "#/components/schemas/SmsEnablementRequest"
      }
    }
  }
}
Responses
{
  "200": {
    "description": "`Success`",
    "content": {
      "text/plain": {
        "schema": {
          "type": "string"
        }
      }
    }
  },
  "401": {
    "$ref": "#/components/responses/Unauthenticated"
  },
  "422": {
    "$ref": "#/components/responses/InvalidParams"
  }
}
Complete operation definition and referenced schemas
{
  "openapi": "3.1.0",
  "info": {
    "title": "TSG Global REST APIs",
    "version": "2026-09-11"
  },
  "tags": [
    {
      "name": "Number configuration",
      "description": "Per-number SMS, MMS and voice settings. Host api-service.tsgglobal.world."
    }
  ],
  "servers": [
    {
      "url": "https://sms.tsgglobal.world",
      "description": "Programmable SMS (production)"
    },
    {
      "url": "https://mmsc.tsgglobal.world",
      "description": "Programmable MMS and MMS templates (production)"
    },
    {
      "url": "https://api-service.tsgglobal.world",
      "description": "Phone-number configuration (production)"
    },
    {
      "url": "https://sms-api.staging.tsgglobal.com",
      "description": "Programmable SMS (staging)"
    },
    {
      "url": "https://mms-api.staging.tsgglobal.com",
      "description": "Programmable MMS (staging)"
    }
  ],
  "security": [
    {
      "bearerAuth": []
    }
  ],
  "components": {
    "securitySchemes": {
      "bearerAuth": {
        "type": "http",
        "scheme": "bearer",
        "description": "API key from the Customer Portal, sent as `Authorization: Bearer <api_key>`."
      }
    },
    "schemas": {
      "SmsEnablementRequest": {
        "type": "object",
        "required": [
          "did",
          "action"
        ],
        "properties": {
          "did": {
            "type": "string"
          },
          "action": {
            "type": "string",
            "enum": [
              "add",
              "update",
              "delete"
            ]
          },
          "use_case_type": {
            "type": "string",
            "enum": [
              "a2p",
              "p2p",
              "account_default"
            ]
          },
          "p2p_nnid": {
            "type": "string"
          },
          "mms_enable": {
            "type": "string",
            "enum": [
              "true",
              "false"
            ]
          },
          "mms_routing": {
            "type": "string",
            "description": "http, https, mm4 or mm4s URL for inbound MMS."
          },
          "webhook_url": {
            "type": "string",
            "format": "uri"
          },
          "webhook_type": {
            "type": "string",
            "enum": [
              "smpp",
              "postv1",
              "postv2",
              "post3jam"
            ]
          },
          "x_api_key_header": {
            "type": "string"
          },
          "campaign_id": {
            "type": "string",
            "description": "10DLC campaign to assign. Sole-proprietor campaigns allow one number."
          },
          "campaign_sub_id": {
            "type": "string"
          },
          "skip_number_validation": {
            "type": "string",
            "enum": [
              "true"
            ],
            "description": "Only after TSG has accepted your LOA for the number."
          }
        }
      },
      "Error": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "enum": [
              "unauthenticated",
              "unauthorized",
              "not_found",
              "server_error",
              "invalid_params"
            ]
          },
          "message": {
            "type": "string"
          }
        }
      }
    },
    "responses": {
      "Unauthenticated": {
        "description": "Missing or invalid API key.",
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/Error"
            }
          }
        }
      },
      "InvalidParams": {
        "description": "Request understood but parameters invalid.",
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/Error"
            }
          }
        }
      }
    }
  },
  "paths": {
    "/v2/sms-enablement": {
      "post": {
        "tags": [
          "Number configuration"
        ],
        "operationId": "smsEnablement",
        "summary": "Enable, update or disable SMS (and 10DLC assignment) on a number",
        "description": "Strict parameter parsing: unknown fields reject the request. Use `action: add` to enable, `update` to change\nsettings or attach a campaign, `delete` to disable SMS.\n",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/SmsEnablementRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "`Success`",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/Unauthenticated"
          },
          "422": {
            "$ref": "#/components/responses/InvalidParams"
          }
        }
      }
    }
  }
}

Set the inbound SMS webhook for a number

Omitting `webhook_url` switches the number to SMPP delivery. Have SMPP credentials tested first.

POST /v1/sms/webhook

Request body schema
{
  "required": true,
  "content": {
    "application/json": {
      "schema": {
        "type": "object",
        "required": [
          "did"
        ],
        "properties": {
          "did": {
            "type": "string"
          },
          "webhook_url": {
            "type": "string",
            "format": "uri"
          },
          "webhook_type": {
            "type": "string",
            "enum": [
              "postv2",
              "postv1",
              "post3jam",
              "smpp"
            ],
            "default": "postv2"
          },
          "x_api_key_header": {
            "type": "string",
            "description": "Sent back to you as the x-api-key header on every webhook call."
          }
        }
      }
    }
  }
}
Responses
{
  "200": {
    "description": "`Success`",
    "content": {
      "text/plain": {
        "schema": {
          "type": "string"
        }
      }
    }
  },
  "401": {
    "$ref": "#/components/responses/Unauthenticated"
  }
}
Complete operation definition and referenced schemas
{
  "openapi": "3.1.0",
  "info": {
    "title": "TSG Global REST APIs",
    "version": "2026-09-11"
  },
  "tags": [
    {
      "name": "Number configuration",
      "description": "Per-number SMS, MMS and voice settings. Host api-service.tsgglobal.world."
    }
  ],
  "servers": [
    {
      "url": "https://sms.tsgglobal.world",
      "description": "Programmable SMS (production)"
    },
    {
      "url": "https://mmsc.tsgglobal.world",
      "description": "Programmable MMS and MMS templates (production)"
    },
    {
      "url": "https://api-service.tsgglobal.world",
      "description": "Phone-number configuration (production)"
    },
    {
      "url": "https://sms-api.staging.tsgglobal.com",
      "description": "Programmable SMS (staging)"
    },
    {
      "url": "https://mms-api.staging.tsgglobal.com",
      "description": "Programmable MMS (staging)"
    }
  ],
  "security": [
    {
      "bearerAuth": []
    }
  ],
  "components": {
    "securitySchemes": {
      "bearerAuth": {
        "type": "http",
        "scheme": "bearer",
        "description": "API key from the Customer Portal, sent as `Authorization: Bearer <api_key>`."
      }
    },
    "responses": {
      "Unauthenticated": {
        "description": "Missing or invalid API key.",
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/Error"
            }
          }
        }
      }
    },
    "schemas": {
      "Error": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "enum": [
              "unauthenticated",
              "unauthorized",
              "not_found",
              "server_error",
              "invalid_params"
            ]
          },
          "message": {
            "type": "string"
          }
        }
      }
    }
  },
  "paths": {
    "/v1/sms/webhook": {
      "post": {
        "tags": [
          "Number configuration"
        ],
        "operationId": "setSmsWebhook",
        "summary": "Set the inbound SMS webhook for a number",
        "description": "Omitting `webhook_url` switches the number to SMPP delivery. Have SMPP credentials tested first.",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "required": [
                  "did"
                ],
                "properties": {
                  "did": {
                    "type": "string"
                  },
                  "webhook_url": {
                    "type": "string",
                    "format": "uri"
                  },
                  "webhook_type": {
                    "type": "string",
                    "enum": [
                      "postv2",
                      "postv1",
                      "post3jam",
                      "smpp"
                    ],
                    "default": "postv2"
                  },
                  "x_api_key_header": {
                    "type": "string",
                    "description": "Sent back to you as the x-api-key header on every webhook call."
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "`Success`",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/Unauthenticated"
          }
        }
      }
    }
  }
}

Enable MMS on a number or change its inbound MMS URI

The number must already be SMS-enabled and the account MMS-enabled.

POST /v2/dids/{number}/mms/enable

Parameters

NameInRequiredDescription
numberpathYes
Request body schema
{
  "required": true,
  "content": {
    "application/json": {
      "schema": {
        "type": "object",
        "required": [
          "uri"
        ],
        "properties": {
          "uri": {
            "type": "string",
            "description": "HTTP(S) URL or `mm4://user:pass@host:port` that receives inbound MMS."
          }
        }
      }
    }
  }
}
Responses
{
  "200": {
    "description": "Updated configuration.",
    "content": {
      "application/json": {
        "schema": {
          "$ref": "#/components/schemas/MmsConfiguration"
        }
      }
    }
  },
  "401": {
    "$ref": "#/components/responses/Unauthenticated"
  }
}
Complete operation definition and referenced schemas
{
  "openapi": "3.1.0",
  "info": {
    "title": "TSG Global REST APIs",
    "version": "2026-09-11"
  },
  "tags": [
    {
      "name": "Number configuration",
      "description": "Per-number SMS, MMS and voice settings. Host api-service.tsgglobal.world."
    }
  ],
  "servers": [
    {
      "url": "https://sms.tsgglobal.world",
      "description": "Programmable SMS (production)"
    },
    {
      "url": "https://mmsc.tsgglobal.world",
      "description": "Programmable MMS and MMS templates (production)"
    },
    {
      "url": "https://api-service.tsgglobal.world",
      "description": "Phone-number configuration (production)"
    },
    {
      "url": "https://sms-api.staging.tsgglobal.com",
      "description": "Programmable SMS (staging)"
    },
    {
      "url": "https://mms-api.staging.tsgglobal.com",
      "description": "Programmable MMS (staging)"
    }
  ],
  "security": [
    {
      "bearerAuth": []
    }
  ],
  "components": {
    "securitySchemes": {
      "bearerAuth": {
        "type": "http",
        "scheme": "bearer",
        "description": "API key from the Customer Portal, sent as `Authorization: Bearer <api_key>`."
      }
    },
    "schemas": {
      "MmsConfiguration": {
        "type": "object",
        "properties": {
          "number": {
            "type": "string"
          },
          "mms_enabled": {
            "type": "boolean"
          },
          "mms_uri": {
            "type": [
              "string",
              "null"
            ]
          },
          "sms_enabled": {
            "type": "boolean"
          },
          "sms_uri": {
            "type": [
              "string",
              "null"
            ]
          }
        }
      },
      "Error": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "enum": [
              "unauthenticated",
              "unauthorized",
              "not_found",
              "server_error",
              "invalid_params"
            ]
          },
          "message": {
            "type": "string"
          }
        }
      }
    },
    "responses": {
      "Unauthenticated": {
        "description": "Missing or invalid API key.",
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/Error"
            }
          }
        }
      }
    }
  },
  "paths": {
    "/v2/dids/{number}/mms/enable": {
      "post": {
        "tags": [
          "Number configuration"
        ],
        "operationId": "enableMms",
        "summary": "Enable MMS on a number or change its inbound MMS URI",
        "description": "The number must already be SMS-enabled and the account MMS-enabled.",
        "parameters": [
          {
            "name": "number",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "required": [
                  "uri"
                ],
                "properties": {
                  "uri": {
                    "type": "string",
                    "description": "HTTP(S) URL or `mm4://user:pass@host:port` that receives inbound MMS."
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Updated configuration.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MmsConfiguration"
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/Unauthenticated"
          }
        }
      }
    }
  }
}

POST /v1/did/priority

Add a voice destination priority

POST /v1/did/priority

Request body schema
{
  "required": true,
  "content": {
    "application/json": {
      "schema": {
        "$ref": "#/components/schemas/DestinationPriority"
      }
    }
  }
}
Responses
{
  "200": {
    "description": "Result code. `-1008-V` or `-1008-P` means added; negative codes below -1000 are errors (see docs).",
    "content": {
      "text/plain": {
        "schema": {
          "type": "string"
        }
      }
    }
  }
}
Complete operation definition and referenced schemas
{
  "openapi": "3.1.0",
  "info": {
    "title": "TSG Global REST APIs",
    "version": "2026-09-11"
  },
  "tags": [
    {
      "name": "Number configuration",
      "description": "Per-number SMS, MMS and voice settings. Host api-service.tsgglobal.world."
    }
  ],
  "servers": [
    {
      "url": "https://sms.tsgglobal.world",
      "description": "Programmable SMS (production)"
    },
    {
      "url": "https://mmsc.tsgglobal.world",
      "description": "Programmable MMS and MMS templates (production)"
    },
    {
      "url": "https://api-service.tsgglobal.world",
      "description": "Phone-number configuration (production)"
    },
    {
      "url": "https://sms-api.staging.tsgglobal.com",
      "description": "Programmable SMS (staging)"
    },
    {
      "url": "https://mms-api.staging.tsgglobal.com",
      "description": "Programmable MMS (staging)"
    }
  ],
  "security": [
    {
      "bearerAuth": []
    }
  ],
  "components": {
    "securitySchemes": {
      "bearerAuth": {
        "type": "http",
        "scheme": "bearer",
        "description": "API key from the Customer Portal, sent as `Authorization: Bearer <api_key>`."
      }
    },
    "schemas": {
      "DestinationPriority": {
        "type": "object",
        "required": [
          "did",
          "priority",
          "destination",
          "call_type"
        ],
        "properties": {
          "did": {
            "type": "string"
          },
          "priority": {
            "type": "integer",
            "minimum": 1,
            "maximum": 3
          },
          "destination": {
            "type": "string",
            "description": "Gateway IP for VOIP, E.164 for PSTN."
          },
          "call_type": {
            "type": "string",
            "enum": [
              "VOIP",
              "PSTN"
            ],
            "description": "Case sensitive."
          },
          "call_option": {
            "type": "string",
            "enum": [
              "WP",
              "NP"
            ],
            "description": "WP sends the DID with a plus, NP without. Case sensitive."
          }
        }
      }
    }
  },
  "paths": {
    "/v1/did/priority": {
      "post": {
        "tags": [
          "Number configuration"
        ],
        "operationId": "addDestinationPriority",
        "summary": "Add a voice destination priority",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/DestinationPriority"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Result code. `-1008-V` or `-1008-P` means added; negative codes below -1000 are errors (see docs).",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "string"
                }
              }
            }
          }
        }
      }
    }
  }
}

Every operation in the spec

Method Path Operation
POST /messages sendSms
GET /messages/{uuid} getSms
POST /mms sendMms
POST /mms/templates createMmsTemplate
GET /mms/templates listMmsTemplates
GET /mms/templates/{id} getMmsTemplate
DELETE /mms/templates/{id} deleteMmsTemplate
POST /mms/templates/{id}/preview previewMmsTemplate
POST /mms/templates/{id}/send sendMmsFromTemplate
GET /v5/dids/{number} getNumberConfiguration
GET /v1/did/lookup lookupNumber
POST /v2/sms-enablement smsEnablement
POST /v1/sms/webhook setSmsWebhook
POST /v2/dids/{number}/mms/enable enableMms
POST /v2/dids/{number}/mms/disable disableMms
GET /v1/did/priority/lookup listDestinationPriorities
POST /v1/did/priority addDestinationPriority
PATCH /v1/did/priority updateDestinationPriority
DELETE /v1/did/priority deleteDestinationPriority

The hand-written pages under API Reference remain the place for narrative, encoding rules, webhook payloads and worked examples; the spec is the machine-readable contract.