Skip to main content
Use this pattern when you need a Roblox experience to validate with an external key service while keeping provider credentials off the client. The client sends the entered key to a RemoteFunction; a server Script sends an HTTPS request to your provider and returns a boolean result. This is for Roblox experiences with server scripts. Executor-only scripts without a server should use the provider’s client SDK adapter or their own backend. This is a generic template, not a built-in integration with any provider. It expects your endpoint to accept a JSON body containing key (and optionally userId) and to return JSON with a boolean valid field. Change the URL, request fields, authorization header, and response parsing to match your provider’s official API. No request is sent by this example until you configure a real endpoint.

Server script

Place this code in ServerScriptService. In Creator Hub, add an HTTP secret named KeyProviderToken for your provider’s domain, and enable Allow HTTP Requests in Experience Settings. Keep any owner or admin credential in the server-side secret store; never paste it into the client LocalScript.

Client gate

Place this in a LocalScript. The key travels through the RemoteFunction; the provider credential and HTTP call remain in the server script.
The key gate handles yielding validation and rejects a failed or malformed service response. The server example applies a simple two-second per-player cooldown and fails closed on network, HTTP, or JSON errors. Add provider-specific rate limits, request authentication, and server checks for every protected action that your experience needs; the client gate alone does not protect server behavior. For Roblox details, see the Creator Hub pages for in-game HTTP requests and RemoteFunction. For a local server-owned list rather than an HTTP provider, see Server validation.