curl --request POST \
--url https://api.dreamlayer.io/v1/execute \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--header 'DreamLayer-Version: <dreamlayer-version>' \
--header 'Idempotency-Key: <idempotency-key>' \
--data '
{
"operation": "sprite_sheet",
"input_asset_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"options": {
"action": "walk",
"frame_count": 12
},
"prompt": "<string>",
"respond": "<string>",
"conversation_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"aspect_ratio": "1:1",
"max_credits": 1
}
'import requests
url = "https://api.dreamlayer.io/v1/execute"
payload = {
"operation": "sprite_sheet",
"input_asset_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"options": {
"action": "walk",
"frame_count": 12
},
"prompt": "<string>",
"respond": "<string>",
"conversation_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"aspect_ratio": "1:1",
"max_credits": 1
}
headers = {
"DreamLayer-Version": "<dreamlayer-version>",
"Idempotency-Key": "<idempotency-key>",
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {
'DreamLayer-Version': '<dreamlayer-version>',
'Idempotency-Key': '<idempotency-key>',
Authorization: 'Bearer <token>',
'Content-Type': 'application/json'
},
body: JSON.stringify({
operation: 'sprite_sheet',
input_asset_id: '3c90c3cc-0d44-4b50-8888-8dd25736052a',
options: {action: 'walk', frame_count: 12},
prompt: '<string>',
respond: '<string>',
conversation_id: '3c90c3cc-0d44-4b50-8888-8dd25736052a',
aspect_ratio: '1:1',
max_credits: 1
})
};
fetch('https://api.dreamlayer.io/v1/execute', 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.dreamlayer.io/v1/execute",
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([
'operation' => 'sprite_sheet',
'input_asset_id' => '3c90c3cc-0d44-4b50-8888-8dd25736052a',
'options' => [
'action' => 'walk',
'frame_count' => 12
],
'prompt' => '<string>',
'respond' => '<string>',
'conversation_id' => '3c90c3cc-0d44-4b50-8888-8dd25736052a',
'aspect_ratio' => '1:1',
'max_credits' => 1
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json",
"DreamLayer-Version: <dreamlayer-version>",
"Idempotency-Key: <idempotency-key>"
],
]);
$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.dreamlayer.io/v1/execute"
payload := strings.NewReader("{\n \"operation\": \"sprite_sheet\",\n \"input_asset_id\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"options\": {\n \"action\": \"walk\",\n \"frame_count\": 12\n },\n \"prompt\": \"<string>\",\n \"respond\": \"<string>\",\n \"conversation_id\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"aspect_ratio\": \"1:1\",\n \"max_credits\": 1\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("DreamLayer-Version", "<dreamlayer-version>")
req.Header.Add("Idempotency-Key", "<idempotency-key>")
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))
}HttpResponse<String> response = Unirest.post("https://api.dreamlayer.io/v1/execute")
.header("DreamLayer-Version", "<dreamlayer-version>")
.header("Idempotency-Key", "<idempotency-key>")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"operation\": \"sprite_sheet\",\n \"input_asset_id\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"options\": {\n \"action\": \"walk\",\n \"frame_count\": 12\n },\n \"prompt\": \"<string>\",\n \"respond\": \"<string>\",\n \"conversation_id\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"aspect_ratio\": \"1:1\",\n \"max_credits\": 1\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.dreamlayer.io/v1/execute")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["DreamLayer-Version"] = '<dreamlayer-version>'
request["Idempotency-Key"] = '<idempotency-key>'
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"operation\": \"sprite_sheet\",\n \"input_asset_id\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"options\": {\n \"action\": \"walk\",\n \"frame_count\": 12\n },\n \"prompt\": \"<string>\",\n \"respond\": \"<string>\",\n \"conversation_id\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"aspect_ratio\": \"1:1\",\n \"max_credits\": 1\n}"
response = http.request(request)
puts response.read_body<string>{
"execution_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"conversation_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"status": "needs_input"
}{
"error": {
"code": "<string>",
"reason": "invalid_request",
"message": "<string>",
"category": "<string>",
"retryable": true,
"request_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"details": {}
}
}{
"error": {
"code": "<string>",
"reason": "invalid_request",
"message": "<string>",
"category": "<string>",
"retryable": true,
"request_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"details": {}
}
}{
"error": {
"code": "<string>",
"reason": "invalid_request",
"message": "<string>",
"category": "<string>",
"retryable": true,
"request_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"details": {}
}
}{
"error": {
"code": "<string>",
"reason": "invalid_request",
"message": "<string>",
"category": "<string>",
"retryable": true,
"request_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"details": {}
}
}{
"error": {
"code": "<string>",
"reason": "invalid_request",
"message": "<string>",
"category": "<string>",
"retryable": true,
"request_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"details": {}
}
}{
"error": {
"code": "RATE_LIMITED",
"reason": "rate_limited",
"message": "Too many requests. Please try again shortly.",
"category": "RATE_LIMITED",
"retryable": true,
"request_id": "d34db33f-0000-4000-8000-000000000001"
}
}{
"error": {
"code": "<string>",
"reason": "invalid_request",
"message": "<string>",
"category": "<string>",
"retryable": true,
"request_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"details": {}
}
}{
"error": {
"code": "<string>",
"reason": "invalid_request",
"message": "<string>",
"category": "<string>",
"retryable": true,
"request_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"details": {}
}
}Start or replay an execution
Credit and quota admission failures appear later as a failed execution with error, not a submit-time 402. Retryable admission failures remain queued for service retries. Submit one logical request with a stable Idempotency-Key. Accept application/json for a 202 acknowledgement or text/event-stream for SSE. Save the execution ID before following events. See https://docs.dreamlayer.io/agent-api/examples.
curl --request POST \
--url https://api.dreamlayer.io/v1/execute \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--header 'DreamLayer-Version: <dreamlayer-version>' \
--header 'Idempotency-Key: <idempotency-key>' \
--data '
{
"operation": "sprite_sheet",
"input_asset_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"options": {
"action": "walk",
"frame_count": 12
},
"prompt": "<string>",
"respond": "<string>",
"conversation_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"aspect_ratio": "1:1",
"max_credits": 1
}
'import requests
url = "https://api.dreamlayer.io/v1/execute"
payload = {
"operation": "sprite_sheet",
"input_asset_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"options": {
"action": "walk",
"frame_count": 12
},
"prompt": "<string>",
"respond": "<string>",
"conversation_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"aspect_ratio": "1:1",
"max_credits": 1
}
headers = {
"DreamLayer-Version": "<dreamlayer-version>",
"Idempotency-Key": "<idempotency-key>",
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {
'DreamLayer-Version': '<dreamlayer-version>',
'Idempotency-Key': '<idempotency-key>',
Authorization: 'Bearer <token>',
'Content-Type': 'application/json'
},
body: JSON.stringify({
operation: 'sprite_sheet',
input_asset_id: '3c90c3cc-0d44-4b50-8888-8dd25736052a',
options: {action: 'walk', frame_count: 12},
prompt: '<string>',
respond: '<string>',
conversation_id: '3c90c3cc-0d44-4b50-8888-8dd25736052a',
aspect_ratio: '1:1',
max_credits: 1
})
};
fetch('https://api.dreamlayer.io/v1/execute', 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.dreamlayer.io/v1/execute",
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([
'operation' => 'sprite_sheet',
'input_asset_id' => '3c90c3cc-0d44-4b50-8888-8dd25736052a',
'options' => [
'action' => 'walk',
'frame_count' => 12
],
'prompt' => '<string>',
'respond' => '<string>',
'conversation_id' => '3c90c3cc-0d44-4b50-8888-8dd25736052a',
'aspect_ratio' => '1:1',
'max_credits' => 1
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json",
"DreamLayer-Version: <dreamlayer-version>",
"Idempotency-Key: <idempotency-key>"
],
]);
$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.dreamlayer.io/v1/execute"
payload := strings.NewReader("{\n \"operation\": \"sprite_sheet\",\n \"input_asset_id\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"options\": {\n \"action\": \"walk\",\n \"frame_count\": 12\n },\n \"prompt\": \"<string>\",\n \"respond\": \"<string>\",\n \"conversation_id\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"aspect_ratio\": \"1:1\",\n \"max_credits\": 1\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("DreamLayer-Version", "<dreamlayer-version>")
req.Header.Add("Idempotency-Key", "<idempotency-key>")
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))
}HttpResponse<String> response = Unirest.post("https://api.dreamlayer.io/v1/execute")
.header("DreamLayer-Version", "<dreamlayer-version>")
.header("Idempotency-Key", "<idempotency-key>")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"operation\": \"sprite_sheet\",\n \"input_asset_id\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"options\": {\n \"action\": \"walk\",\n \"frame_count\": 12\n },\n \"prompt\": \"<string>\",\n \"respond\": \"<string>\",\n \"conversation_id\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"aspect_ratio\": \"1:1\",\n \"max_credits\": 1\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.dreamlayer.io/v1/execute")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["DreamLayer-Version"] = '<dreamlayer-version>'
request["Idempotency-Key"] = '<idempotency-key>'
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"operation\": \"sprite_sheet\",\n \"input_asset_id\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"options\": {\n \"action\": \"walk\",\n \"frame_count\": 12\n },\n \"prompt\": \"<string>\",\n \"respond\": \"<string>\",\n \"conversation_id\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"aspect_ratio\": \"1:1\",\n \"max_credits\": 1\n}"
response = http.request(request)
puts response.read_body<string>{
"execution_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"conversation_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"status": "needs_input"
}{
"error": {
"code": "<string>",
"reason": "invalid_request",
"message": "<string>",
"category": "<string>",
"retryable": true,
"request_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"details": {}
}
}{
"error": {
"code": "<string>",
"reason": "invalid_request",
"message": "<string>",
"category": "<string>",
"retryable": true,
"request_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"details": {}
}
}{
"error": {
"code": "<string>",
"reason": "invalid_request",
"message": "<string>",
"category": "<string>",
"retryable": true,
"request_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"details": {}
}
}{
"error": {
"code": "<string>",
"reason": "invalid_request",
"message": "<string>",
"category": "<string>",
"retryable": true,
"request_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"details": {}
}
}{
"error": {
"code": "<string>",
"reason": "invalid_request",
"message": "<string>",
"category": "<string>",
"retryable": true,
"request_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"details": {}
}
}{
"error": {
"code": "RATE_LIMITED",
"reason": "rate_limited",
"message": "Too many requests. Please try again shortly.",
"category": "RATE_LIMITED",
"retryable": true,
"request_id": "d34db33f-0000-4000-8000-000000000001"
}
}{
"error": {
"code": "<string>",
"reason": "invalid_request",
"message": "<string>",
"category": "<string>",
"retryable": true,
"request_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"details": {}
}
}{
"error": {
"code": "<string>",
"reason": "invalid_request",
"message": "<string>",
"category": "<string>",
"retryable": true,
"request_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"details": {}
}
}Authorizations
Bearer authentication header of the form Bearer <token>, where <token> is your auth token.
Headers
"1"1 - 200Body
- Option 1
- Option 2
- Option 3
Optional. Name the operation to execute it deterministically: DreamLayer skips interpreting the prompt, so the request cannot be reclassified and cannot return a question event. No word in the prompt changes a named operation, and a named operation ignores an image remembered from an earlier turn in the same conversation. Omit it to let DreamLayer decide from the prompt. text_to_image must not carry input_asset_id; image_to_image, background_remove, upscale and sprite_sheet require it. sprite_sheet requires exactly one of options.action or options.animation_prompt. Set max_credits to at least the rounded quote for the requested frame_count using sprite_pricing from capabilities. Put custom animation instructions in options.animation_prompt, not prompt. Sprite requests have no customer cancellation. Other operations require max_credits of 1 and do not accept options.
upscale doubles each side, so the input's longest side must be 2048 or smaller: 4096 is the delivery ceiling and an oversize request is refused at execution admission before paid processing starts. That also means an upscaled image is AT maximum_input_dimension and cannot be upscaled again.
text_to_image, image_to_image, background_remove, upscale, sprite_sheet "sprite_sheet"Supply exactly one non-null action or animation_prompt. Presets default to loop playback; custom instructions default to once. Frame size affects the square export canvas, not price or guaranteed source detail. Insufficient distinct frames fail explicitly; frames are not duplicated or interpolated to meet the count.
- Option 1
- Option 2
Show child attributes
Show child attributes
{ "action": "walk", "frame_count": 12 }
1 - 40001 - 40000.1 <= x <= 100Response
Sanitized server-sent events
The response is of type string.