4 min read

Source: Roblox Creator Hub · CC BY 4.0 · View source · Code samples: MIT Imported 2026-10-03. Formatting adapted for this site.

POST /messaging-service/v1/universes/{universeId}/topics/{topic} — openapi

Publish a cross-server message to a universe

Publish a message to a pre-defined topic of an experience, with the size of the message up to 1,024 characters (1 KB). Requires the Publish permission for API keys and the universe-messaging-service:publish scope for OAuth 2.0 apps. See Cross-server messaging for defining and subscribing users to a topic.

Endpoint

Method: POST

Path: /messaging-service/v1/universes/{universeId}/topics/{topic}

Servers:

Parameters

NameLocationRequiredDescription
universeIdpathtrueThe identifier of the experience in which you want to send your messages to. You can copy your experience's Universe ID on Creator Dashboard.
topicpathtrueThe topic that you want to publish your message to, with up to 80 characters.
[
  {
    "name": "universeId",
    "in": "path",
    "required": true,
    "description": "The identifier of the experience in which you want to send your messages to. You can [copy your experience's Universe ID](/cloud/guides/usage-messaging.md#publishing-messages-to-live-servers) on **Creator Dashboard**.",
    "schema": {
      "type": "integer",
      "format": "int64"
    }
  },
  {
    "name": "topic",
    "in": "path",
    "required": true,
    "description": "The topic that you want to publish your message to, with up to 80 characters.",
    "schema": {
      "type": "string",
      "nullable": true
    }
  }
]

Request Body

{
  "content": {
    "application/json-patch+json": {
      "schema": {
        "$ref": "#/components/schemas/PublishRequest"
      }
    },
    "application/json": {
      "schema": {
        "$ref": "#/components/schemas/PublishRequest"
      }
    },
    "text/json": {
      "schema": {
        "$ref": "#/components/schemas/PublishRequest"
      }
    },
    "application/*+json": {
      "schema": {
        "$ref": "#/components/schemas/PublishRequest"
      }
    }
  }
}

Responses

StatusDescription
200Returns an empty response body.
400Invalid request.
401The API key is not valid for this operation / You don't have the authorization.
403Publishing is not allowed on this experience.
500Server internal error / Unknown error.
{
  "200": {
    "description": "Returns an empty response body."
  },
  "400": {
    "description": "Invalid request."
  },
  "401": {
    "description": "The API key is not valid for this operation / You don't have the authorization."
  },
  "403": {
    "description": "Publishing is not allowed on this experience."
  },
  "500": {
    "description": "Server internal error / Unknown error."
  }
}

Authentication

{
  "security": [
    {
      "roblox-api-key": []
    },
    {
      "roblox-oauth2": []
    }
  ],
  "securitySchemes": {
    "roblox-api-key": {
      "type": "apiKey",
      "description": "A configurable key that allows granular access to Roblox resources. See https://create.roblox.com/docs/cloud/auth/api-keys for more information.",
      "name": "x-api-key",
      "in": "header"
    },
    "roblox-legacy-cookie": {
      "type": "apiKey",
      "description": "A browser cookie that represents the identity of a Roblox user. DO NOT SHARE THIS. Sharing this will allow someone to log in as you and to steal your Robux and items. We do not recommend using cookies to call endpoints. When possible, use API keys with the x-api-key header or OAuth 2.0 instead for authentication.",
      "in": "cookie",
      "name": ".ROBLOSECURITY"
    },
    "roblox-oauth2": {
      "type": "oauth2",
      "description": "Build or authorize apps to access Roblox resources. See https://create.roblox.com/docs/cloud/auth/oauth2-overview for more information.",
      "flows": {
        "authorizationCode": {
          "authorizationUrl": "https://apis.roblox.com/oauth/v1/authorize",
          "tokenUrl": "https://apis.roblox.com/oauth/v1/token",
          "refreshUrl": "https://apis.roblox.com/oauth/v1/token",
          "scopes": {}
        }
      }
    }
  }
}

Complete Operation Definition

{
  "tags": [
    "Universes"
  ],
  "operationId": "CrossServerMessaging_Publish",
  "x-roblox-cloud-api-operation-name": "Publish a Message",
  "x-roblox-stability": "BETA",
  "x-roblox-recommended-alternatives": [
    {
      "url": "https://apis.roblox.com/cloud/v2/universes/{universe_id}:publishMessage",
      "httpMethod": "POST",
      "documentationUrl": "https://create.roblox.com/docs/cloud/reference/features/universes#Cloud_PublishUniverseMessage"
    }
  ],
  "summary": "Publish a cross-server message to a universe",
  "description": "Publish a message to a pre-defined topic of an experience, with the size of the message up to 1,024 characters (1 KB). Requires the **Publish** permission for API keys and the **universe-messaging-service:publish** scope for OAuth 2.0 apps. See [Cross-server messaging](/cloud-services/cross-server-messaging.md#subscribe-users-to-receive-messages) for defining and subscribing users to a topic.",
  "parameters": [
    {
      "name": "universeId",
      "in": "path",
      "required": true,
      "description": "The identifier of the experience in which you want to send your messages to. You can [copy your experience's Universe ID](/cloud/guides/usage-messaging.md#publishing-messages-to-live-servers) on **Creator Dashboard**.",
      "schema": {
        "type": "integer",
        "format": "int64"
      }
    },
    {
      "name": "topic",
      "in": "path",
      "required": true,
      "description": "The topic that you want to publish your message to, with up to 80 characters.",
      "schema": {
        "type": "string",
        "nullable": true
      }
    }
  ],
  "requestBody": {
    "content": {
      "application/json-patch+json": {
        "schema": {
          "$ref": "#/components/schemas/PublishRequest"
        }
      },
      "application/json": {
        "schema": {
          "$ref": "#/components/schemas/PublishRequest"
        }
      },
      "text/json": {
        "schema": {
          "$ref": "#/components/schemas/PublishRequest"
        }
      },
      "application/*+json": {
        "schema": {
          "$ref": "#/components/schemas/PublishRequest"
        }
      }
    }
  },
  "responses": {
    "200": {
      "description": "Returns an empty response body."
    },
    "400": {
      "description": "Invalid request."
    },
    "401": {
      "description": "The API key is not valid for this operation / You don't have the authorization."
    },
    "403": {
      "description": "Publishing is not allowed on this experience."
    },
    "500": {
      "description": "Server internal error / Unknown error."
    }
  },
  "security": [
    {
      "roblox-api-key": []
    },
    {
      "roblox-oauth2": []
    }
  ],
  "x-roblox-scopes": [
    {
      "name": "universe-messaging-service:publish"
    }
  ],
  "x-roblox-cloud-api-operation": true,
  "x-roblox-rate-limits": {
    "perApiKeyOwner": {
      "period": "MINUTE",
      "maxInPeriod": 5000
    },
    "perOauth2Authorization": {
      "period": "MINUTE",
      "maxInPeriod": 5000
    }
  },
  "x-roblox-engine-usability": {
    "apiKeyWithHttpService": true
  },
  "externalDocs": {
    "url": "https://create.roblox.com/docs/cloud/reference/features/universes#CrossServerMessaging_Publish"
  }
}