Skip to main content
POST
/
providers
/
{slug}
/
create-snapshot
Create snapshot
curl --request POST \
  --url https://api.example.com/providers/{slug}/create-snapshot \
  --header 'Authorization: <authorization>' \
  --header 'Content-Type: application/json' \
  --data '
{
  "ttl": "<string>",
  "seed": {},
  "config": {}
}
'
import requests

url = "https://api.example.com/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://api.example.com/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://api.example.com/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://api.example.com/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://api.example.com/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://api.example.com/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>",
  "previewUrl": "<string>",
  "expiresAt": "<string>",
  "ttl": "<string>"
}
Creates a hosted snapshot of one mock provider. The response includes a public base URL you can call until the TTL expires. Base URL: https://simulation.ressl.ai
Mock URL shape: https://{snapshotId}.{slug}.mock.ressl.cc
Provisioning may take up to a few minutes.

Path parameters

slug
string
required
Provider slug from GET /providers/list.

Headers

Authorization
string
required
Bearer rsk_... (or use X-API-Key instead).
Content-Type
string
application/json when sending a body.

Body

All fields are optional. An empty body uses defaults (ttl: "6h", empty seed).
ttl
string
default:"6h"
Lifetime of the snapshot. Forms like 15m, 6h, or 1d. Maximum 7d.
seed
object
Initial mock data. 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>": {} }.
config
object
Reserved for future emulator overrides. Accepted but not applied yet. Safe to omit or send {}.

Response

snapshotId
string
required
Snapshot id (also the subdomain label on the mock URL).
slug
string
required
Provider that was provisioned.
url
string
required
Public mock base URL. Use this as the API host for agents and clients.
previewUrl
string
required
Internal preview URL. Prefer url.
expiresAt
string
required
ISO-8601 expiry time from ttl.
ttl
string
required
Normalized TTL that was applied.
{
  "snapshotId": "snap_a1b2c3d4e5f6789012345678",
  "slug": "jira",
  "url": "https://snap_a1b2c3d4e5f6789012345678.jira.mock.ressl.cc",
  "previewUrl": "https://….preview.bl.run",
  "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

StatusMeaning
400Invalid slug, body, or ttl
401Invalid or missing API key
403Org is not granted that provider
502Provisioning failed
{ "error": "Your organization does not have access to that provider." }