Execute workflow
Viewing v2— current version
curl --request POST \ --url https://api.app.layer.ai/api/v2/workspaces/:workspace_id/workflows/:workflow_id/runs \ --header 'Authorization: Bearer <token>' \ --header 'Content-Type: application/json' \ --data '{ "inputs": {}, "session_id": "<uuid>", "session_name": "<string>"}'import requests
url = "https://api.app.layer.ai/api/v2/workspaces/:workspace_id/workflows/:workflow_id/runs"
payload = { "inputs": {}, "session_id": "<uuid>", "session_name": "<string>"}headers = { "Authorization": "Bearer <token>", "Content-Type": "application/json"}
response = requests.post(url, json=payload, headers=headers)
print(response.json())const url = 'https://api.app.layer.ai/api/v2/workspaces/:workspace_id/workflows/:workflow_id/runs';const options = { method: 'POST', headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'}, body: '{"inputs":{},"session_id":"<uuid>","session_name":"<string>"}'};
try { const response = await fetch(url, options); const data = await response.json(); console.log(data);} catch (error) { console.error(error);}package main
import ( "fmt" "strings" "net/http" "io")
func main() {
url := "https://api.app.layer.ai/api/v2/workspaces/:workspace_id/workflows/:workflow_id/runs"
payload := strings.NewReader("{\n \"inputs\": {},\n \"session_id\": \"<uuid>\",\n \"session_name\": \"<string>\"\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(res) fmt.Println(string(body))
}<?php
$curl = curl_init();
curl_setopt_array($curl, [ CURLOPT_URL => "https://api.app.layer.ai/api/v2/workspaces/:workspace_id/workflows/:workflow_id/runs", 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([ 'inputs' => [
], 'session_id' => '<uuid>', 'session_name' => '<string>' ]), CURLOPT_HTTPHEADER => [ "Authorization: Bearer <token>", "Content-Type: application/json" ],]);
$response = curl_exec($curl);$err = curl_error($curl);
curl_close($curl);
if ($err) { echo "cURL Error #:" . $err;} else { echo $response;}OkHttpClient client = new OkHttpClient();
MediaType mediaType = MediaType.parse("application/json");RequestBody body = RequestBody.create(mediaType, "{\n \"inputs\": {},\n \"session_id\": \"<uuid>\",\n \"session_name\": \"<string>\"\n}");Request request = new Request.Builder() .url("https://api.app.layer.ai/api/v2/workspaces/:workspace_id/workflows/:workflow_id/runs") .post(body) .addHeader("Authorization", "Bearer <token>") .addHeader("Content-Type", "application/json") .build();
Response response = client.newCall(request).execute();require 'uri'require 'net/http'
url = URI("https://api.app.layer.ai/api/v2/workspaces/:workspace_id/workflows/:workflow_id/runs")
http = Net::HTTP.new(url.host, url.port)http.use_ssl = true
request = Net::HTTP::Post.new(url)request["Authorization"] = 'Bearer <token>'request["Content-Type"] = 'application/json'request.body = "{\n \"inputs\": {},\n \"session_id\": \"<uuid>\",\n \"session_name\": \"<string>\"\n}"
response = http.request(request)puts response.read_bodyvar client = new RestClient("https://api.app.layer.ai/api/v2/workspaces/:workspace_id/workflows/:workflow_id/runs");var request = new RestRequest("", Method.Post);request.AddHeader("Authorization", "Bearer <token>");request.AddHeader("Content-Type", "application/json");request.AddParameter("application/json", "{\n \"inputs\": {},\n \"session_id\": \"<uuid>\",\n \"session_name\": \"<string>\"\n}", ParameterType.RequestBody);var response = client.Execute(request);Unchanged from v1. This endpoint’s documented request and response schemas are identical in v1 and v2 — change the
/v1prefix to/v2. Schema equality is not a promise about behaviour, so keep your usual smoke tests.
Start a workflow execution. Returns immediately with a run ID. Poll with GET /workspaces/{workspace_id}/workflows/{workflow_id}/runs/{run_id} for results. Creative Units are not checked here: an underfunded workspace is still accepted and the run then reports FAILURE with error_code BlueprintInsufficientBalanceError. Use the estimate endpoint’s has_sufficient_creative_units to check before submitting.
Authorizations
Section titled “Authorizations”Parameters
Section titled “Parameters”Path Parameters
Section titled “Path Parameters”Id of the workspace that owns the resource.
Id of the workspace that owns the resource.
Id of the workflow.
Id of the workflow.
Request Bodyrequired
Section titled “Request Bodyrequired”object
Examplegenerated
{ "inputs": {}, "session_id": "2489E9AD-2EE2-8E00-8EC9-32D5F69181C0", "session_name": "example"}Responses
Section titled “Responses”Successful Response
object
Unique identifier for this workflow run.
Current run status: PENDING or RUNNING.
Estimated price in Creative Units.
Suggested polling interval in seconds.
Timestamp of when the run was created.
Example
{ "status": "pending"}Unauthenticated — missing or invalid Bearer token.
object
Example
{ "type": "https://api.layer.ai/errors/ERROR_CODE", "title": "Error Title", "status": 400, "detail": "Human-readable description."}Forbidden — insufficient permissions.
object
Example
{ "type": "https://api.layer.ai/errors/ERROR_CODE", "title": "Error Title", "status": 400, "detail": "Human-readable description."}Resource not found.
object
Example
{ "type": "https://api.layer.ai/errors/ERROR_CODE", "title": "Error Title", "status": 400, "detail": "Human-readable description."}Invalid input parameters.
object
Example
{ "type": "https://api.layer.ai/errors/ERROR_CODE", "title": "Error Title", "status": 400, "detail": "Human-readable description."}Rate limited — too many concurrent requests.
object
Example
{ "type": "https://api.layer.ai/errors/ERROR_CODE", "title": "Error Title", "status": 400, "detail": "Human-readable description."}Internal server error.
object
Example
{ "type": "https://api.layer.ai/errors/ERROR_CODE", "title": "Error Title", "status": 400, "detail": "Human-readable description."}