Mint Simulation Token
curl --request POST \
--url https://api.continuouslabs.ai/v1/simulations/{id}/tokens \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"ttl_seconds": 3600
}
'package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.continuouslabs.ai/v1/simulations/{id}/tokens"
payload := strings.NewReader("{\n \"ttl_seconds\": 3600\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}import requests
url = "https://api.continuouslabs.ai/v1/simulations/{id}/tokens"
payload = { "ttl_seconds": 3600 }
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({ttl_seconds: 3600})
};
fetch('https://api.continuouslabs.ai/v1/simulations/{id}/tokens', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));{
"expires_at": "2026-01-15T13:00:00Z",
"token": "<redacted>"
}{
"code": "auth_invalid",
"detail": "The API key is missing or invalid."
}{
"code": "simulation_not_found",
"detail": "No Simulation was found with ID \"sim_01J8Z5X4K7M2N9P0Q1R2S3T4V6\"."
}{
"code": "simulation_world_owned",
"detail": "The Simulation with ID \"sim_01J8Z5X4K7M2N9P0Q1R2S3T4V6\" belongs to the World with ID \"wld_01J8Z5X4K7M2N9P0Q1R2S3T4V7\". Manage it through the World."
}{
"code": "validation",
"detail": "The request does not satisfy the API contract."
}{
"code": "internal",
"detail": "The server encountered an unexpected error."
}Simulations
Mint Simulation Token
Mints an expiring data-plane token. Send it in X-Continuous-Simulation-Token with each Simulation request. Other unexpired tokens remain valid.
POST
https://api.continuouslabs.ai
/
v1
/
simulations
/
{id}
/
tokens
Mint Simulation Token
curl --request POST \
--url https://api.continuouslabs.ai/v1/simulations/{id}/tokens \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"ttl_seconds": 3600
}
'package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.continuouslabs.ai/v1/simulations/{id}/tokens"
payload := strings.NewReader("{\n \"ttl_seconds\": 3600\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}import requests
url = "https://api.continuouslabs.ai/v1/simulations/{id}/tokens"
payload = { "ttl_seconds": 3600 }
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({ttl_seconds: 3600})
};
fetch('https://api.continuouslabs.ai/v1/simulations/{id}/tokens', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));{
"expires_at": "2026-01-15T13:00:00Z",
"token": "<redacted>"
}{
"code": "auth_invalid",
"detail": "The API key is missing or invalid."
}{
"code": "simulation_not_found",
"detail": "No Simulation was found with ID \"sim_01J8Z5X4K7M2N9P0Q1R2S3T4V6\"."
}{
"code": "simulation_world_owned",
"detail": "The Simulation with ID \"sim_01J8Z5X4K7M2N9P0Q1R2S3T4V6\" belongs to the World with ID \"wld_01J8Z5X4K7M2N9P0Q1R2S3T4V7\". Manage it through the World."
}{
"code": "validation",
"detail": "The request does not satisfy the API contract."
}{
"code": "internal",
"detail": "The server encountered an unexpected error."
}Authorizations
Use a Continuous API key. Send it in the Authorization header as a Bearer token.
Path Parameters
Body
application/json
Required range:
60 <= x <= 86400