Get Turn Credentials
Generate temporary TURN credentials for WebRTC clients using the authenticated community API key.
GET https://api.sonorancad.com/v2/general/turn
Rate limit:
20 requests per minuteAuthenticated v2 endpoints are rate limited per API key rather than per IP address.
Generate temporary TURN credentials for Sonoran CAD WebRTC clients. This route uses normal v2 API authentication and does not require a paid plan.
Query Parameters
userId
string
No
Optional user identifier appended to the generated TURN username. Colons are normalized to underscores.
Example Request
-- luarocks install sonoran.lua
-- For SonoranCADFiveM in-game usage, see the SonoranCADFiveM tab for the export-based client.
local Sonoran = require("sonoran")
local sonoran = Sonoran.createClient({
product = Sonoran.productEnums.CAD,
communityId = "YOUR_COMMUNITY_ID",
apiKey = "YOUR_API_KEY",
defaultServerId = 1
})
local response = sonoran.cad:getTurnCredentialsV2({
userId = "unit-1"
})
print(response.success)
print(response.data and response.data.ttl)Use this tab only when calling the v2 API from the server side of an in-game FiveM resource.
Sonoran.lua and Sonoran.js: use the
sonorancadexport to get the ready CAD client.Sonoran.Net: FiveM exports do not return a .NET client. Read the Sonoran CAD convars and create a fresh client.
Sonoran.py: FiveM does not run Python resources; use the Python tab for external integrations.
The API key is stored in sonoran_apiKey as a protected FiveM convar. FiveM restricts a convar after add_convar_permission is configured, so only explicitly permitted resources can read it. Grant another resource access with add_convar_permission your-resource-name read sonoran_apiKey. If you change the API key in config.json, fully restart the sonorancad resource before reading the updated convar value.
Sonoran.lua
local cad = exports["sonorancad"]:getCadClient()Sonoran.js
const cad = exports["sonorancad"].getCadClient();Sonoran.Net
// dotnet add package Sonoran.Net
using CitizenFX.Core.Native;
using Sonoran;
var communityId = API.GetConvar("sonoran_communityID", "");
var apiKey = API.GetConvar("sonoran_apiKey", "");
var serverIdRaw = API.GetConvar("sonoran_serverId", "1");
var serverId = int.TryParse(serverIdRaw, out var parsedServerId) ? parsedServerId : 1;
using var sonoran = new SonoranClient(new SonoranClientOptions
{
product = SonoranProduct.CAD,
communityId = communityId,
apiKey = apiKey,
defaultServerId = serverId
});Import this YAML into Postman with Import -> Raw text to create a single-endpoint request collection for this route.
Response
Successful requests return application/json.
Last updated
Was this helpful?

