Create snapshot
curl --request POST \
--url https://simulation.ressl.ai/providers/{slug}/create-snapshot \
--header 'Authorization: <authorization>' \
--header 'Content-Type: application/json' \
--data '
{
"ttl": "<string>",
"seed": {},
"config": {}
}
'import requests
url = "https://simulation.ressl.ai/providers/{slug}/create-snapshot"
payload = {
"ttl": "<string>",
"seed": {},
"config": {}
}
headers = {
"Authorization": "<authorization>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: '<authorization>', 'Content-Type': 'application/json'},
body: JSON.stringify({ttl: '<string>', seed: {}, config: {}})
};
fetch('https://simulation.ressl.ai/providers/{slug}/create-snapshot', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://simulation.ressl.ai/providers/{slug}/create-snapshot",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'ttl' => '<string>',
'seed' => [
],
'config' => [
]
]),
CURLOPT_HTTPHEADER => [
"Authorization: <authorization>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://simulation.ressl.ai/providers/{slug}/create-snapshot"
payload := strings.NewReader("{\n \"ttl\": \"<string>\",\n \"seed\": {},\n \"config\": {}\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "<authorization>")
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))
}HttpResponse<String> response = Unirest.post("https://simulation.ressl.ai/providers/{slug}/create-snapshot")
.header("Authorization", "<authorization>")
.header("Content-Type", "application/json")
.body("{\n \"ttl\": \"<string>\",\n \"seed\": {},\n \"config\": {}\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://simulation.ressl.ai/providers/{slug}/create-snapshot")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = '<authorization>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"ttl\": \"<string>\",\n \"seed\": {},\n \"config\": {}\n}"
response = http.request(request)
puts response.read_body{
"snapshotId": "<string>",
"slug": "<string>",
"url": "<string>",
"expiresAt": "<string>",
"ttl": "<string>"
}Platform API
Create snapshot
Provision a hosted mock SaaS API for one provider with optional seed and TTL.
POST
/
providers
/
{slug}
/
create-snapshot
Create snapshot
curl --request POST \
--url https://simulation.ressl.ai/providers/{slug}/create-snapshot \
--header 'Authorization: <authorization>' \
--header 'Content-Type: application/json' \
--data '
{
"ttl": "<string>",
"seed": {},
"config": {}
}
'import requests
url = "https://simulation.ressl.ai/providers/{slug}/create-snapshot"
payload = {
"ttl": "<string>",
"seed": {},
"config": {}
}
headers = {
"Authorization": "<authorization>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: '<authorization>', 'Content-Type': 'application/json'},
body: JSON.stringify({ttl: '<string>', seed: {}, config: {}})
};
fetch('https://simulation.ressl.ai/providers/{slug}/create-snapshot', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://simulation.ressl.ai/providers/{slug}/create-snapshot",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'ttl' => '<string>',
'seed' => [
],
'config' => [
]
]),
CURLOPT_HTTPHEADER => [
"Authorization: <authorization>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://simulation.ressl.ai/providers/{slug}/create-snapshot"
payload := strings.NewReader("{\n \"ttl\": \"<string>\",\n \"seed\": {},\n \"config\": {}\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "<authorization>")
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))
}HttpResponse<String> response = Unirest.post("https://simulation.ressl.ai/providers/{slug}/create-snapshot")
.header("Authorization", "<authorization>")
.header("Content-Type", "application/json")
.body("{\n \"ttl\": \"<string>\",\n \"seed\": {},\n \"config\": {}\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://simulation.ressl.ai/providers/{slug}/create-snapshot")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = '<authorization>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"ttl\": \"<string>\",\n \"seed\": {},\n \"config\": {}\n}"
response = http.request(request)
puts response.read_body{
"snapshotId": "<string>",
"slug": "<string>",
"url": "<string>",
"expiresAt": "<string>",
"ttl": "<string>"
}Creates a hosted snapshot of one provider. API providers return a mock API base URL; UI providers return a browser application URL. Both remain available until the TTL expires.
Base URL:
Mock URL shape:
https://simulation.ressl.aiMock URL shape:
https://{snapshotId}.{slug}.mock.ressl.cc
Provisioning may take up to a few minutes.
Path parameters
string
required
Provider slug from
GET /providers/list.Headers
string
required
Bearer rsk_... (or use X-API-Key instead).string
application/json when sending a body.Body
All fields are optional. An empty body uses defaults (ttl: "1h", empty seed).
string
default:"1h"
Lifetime of the snapshot. Forms like
15m, 6h, or 1d. Maximum 7d.object
Initial mock data for API providers. Recommended shape:
{ "<slug>": { "<Resource>": [ … ] } }. If the top-level slug key is missing, the API wraps the object using the path slug. Omit or null for { "<slug>": {} }. UI providers ignore this field and use built-in data. For details, see Salesforce or LinkedIn UI clone.object
Provider-specific emulator overrides. For salesforce, this is describe JSON that fully replaces baked metadata for the snapshot. Omit to keep baked describes. UI providers ignore this field. See Salesforce.
Response
string
required
Snapshot id (also the subdomain label on the mock URL).
string
required
Provider that was provisioned.
string
required
Public snapshot URL. Use it as an API base URL for API providers or open it in a browser for UI providers.
string
required
ISO-8601 expiry time from
ttl.string
required
Normalized TTL that was applied.
{
"snapshotId": "snap_a1b2c3d4e5f6789012345678",
"slug": "jira",
"url": "https://snap_a1b2c3d4e5f6789012345678.jira.mock.ressl.cc",
"expiresAt": "2026-07-14T12:00:00.000Z",
"ttl": "1h"
}
Example
PROVIDER=jira # any slug from /providers/list
curl -sS -X POST "https://simulation.ressl.ai/providers/${PROVIDER}/create-snapshot" \
-H "Authorization: Bearer rsk_..." \
-H "Content-Type: application/json" \
-d '{
"ttl": "1h",
"seed": {
"jira": {
"projects": [{ "id": "10000", "key": "DEMO", "name": "Demo" }]
}
}
}'
Errors
| Status | Meaning |
|---|---|
400 | Invalid slug, body, or ttl |
401 | Invalid or missing API key |
403 | Org is not granted that provider |
502 | Provisioning failed |
{ "error": "Your organization does not have access to that provider." }

