Create a workflow (owner and twin come from the session, never the body)
curl --request POST \
--url https://pria.praxislxp.com/api/user/agents/v2/workflows \
--header 'Content-Type: application/json' \
--header 'x-access-token: <api-key>' \
--data '
{
"name": "<string>",
"instruction": "<string>",
"enabled": true,
"model": "<string>"
}
'import requests
url = "https://pria.praxislxp.com/api/user/agents/v2/workflows"
payload = {
"name": "<string>",
"instruction": "<string>",
"enabled": True,
"model": "<string>"
}
headers = {
"x-access-token": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'x-access-token': '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({name: '<string>', instruction: '<string>', enabled: true, model: '<string>'})
};
fetch('https://pria.praxislxp.com/api/user/agents/v2/workflows', 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://pria.praxislxp.com/api/user/agents/v2/workflows",
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([
'name' => '<string>',
'instruction' => '<string>',
'enabled' => true,
'model' => '<string>'
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"x-access-token: <api-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://pria.praxislxp.com/api/user/agents/v2/workflows"
payload := strings.NewReader("{\n \"name\": \"<string>\",\n \"instruction\": \"<string>\",\n \"enabled\": true,\n \"model\": \"<string>\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("x-access-token", "<api-key>")
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://pria.praxislxp.com/api/user/agents/v2/workflows")
.header("x-access-token", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"name\": \"<string>\",\n \"instruction\": \"<string>\",\n \"enabled\": true,\n \"model\": \"<string>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://pria.praxislxp.com/api/user/agents/v2/workflows")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["x-access-token"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"name\": \"<string>\",\n \"instruction\": \"<string>\",\n \"enabled\": true,\n \"model\": \"<string>\"\n}"
response = http.request(request)
puts response.read_body{
"success": true,
"workflow": {
"id": "<string>",
"name": "<string>",
"instruction": "<string>",
"enabled": true,
"schedule": {
"kind": "none",
"timezone": "America/New_York",
"date": "2026-10-01",
"time": "09:00",
"dayOfWeek": 3,
"dayOfMonth": 16,
"minutes": 5047
},
"nextRunAt": "2023-11-07T05:31:56Z",
"lastRunAt": "2023-11-07T05:31:56Z",
"lastRunStatus": "<string>",
"running": true,
"waitingReason": "<string>",
"model": "openai-codex/gpt-5.6-sol",
"reasoning": "",
"createdAt": "2023-11-07T05:31:56Z",
"updatedAt": "2023-11-07T05:31:56Z"
}
}Agents
Create a workflow (owner and twin come from the session, never the body)
POST
/
api
/
user
/
agents
/
v2
/
workflows
Create a workflow (owner and twin come from the session, never the body)
curl --request POST \
--url https://pria.praxislxp.com/api/user/agents/v2/workflows \
--header 'Content-Type: application/json' \
--header 'x-access-token: <api-key>' \
--data '
{
"name": "<string>",
"instruction": "<string>",
"enabled": true,
"model": "<string>"
}
'import requests
url = "https://pria.praxislxp.com/api/user/agents/v2/workflows"
payload = {
"name": "<string>",
"instruction": "<string>",
"enabled": True,
"model": "<string>"
}
headers = {
"x-access-token": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'x-access-token': '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({name: '<string>', instruction: '<string>', enabled: true, model: '<string>'})
};
fetch('https://pria.praxislxp.com/api/user/agents/v2/workflows', 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://pria.praxislxp.com/api/user/agents/v2/workflows",
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([
'name' => '<string>',
'instruction' => '<string>',
'enabled' => true,
'model' => '<string>'
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"x-access-token: <api-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://pria.praxislxp.com/api/user/agents/v2/workflows"
payload := strings.NewReader("{\n \"name\": \"<string>\",\n \"instruction\": \"<string>\",\n \"enabled\": true,\n \"model\": \"<string>\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("x-access-token", "<api-key>")
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://pria.praxislxp.com/api/user/agents/v2/workflows")
.header("x-access-token", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"name\": \"<string>\",\n \"instruction\": \"<string>\",\n \"enabled\": true,\n \"model\": \"<string>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://pria.praxislxp.com/api/user/agents/v2/workflows")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["x-access-token"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"name\": \"<string>\",\n \"instruction\": \"<string>\",\n \"enabled\": true,\n \"model\": \"<string>\"\n}"
response = http.request(request)
puts response.read_body{
"success": true,
"workflow": {
"id": "<string>",
"name": "<string>",
"instruction": "<string>",
"enabled": true,
"schedule": {
"kind": "none",
"timezone": "America/New_York",
"date": "2026-10-01",
"time": "09:00",
"dayOfWeek": 3,
"dayOfMonth": 16,
"minutes": 5047
},
"nextRunAt": "2023-11-07T05:31:56Z",
"lastRunAt": "2023-11-07T05:31:56Z",
"lastRunStatus": "<string>",
"running": true,
"waitingReason": "<string>",
"model": "openai-codex/gpt-5.6-sol",
"reasoning": "",
"createdAt": "2023-11-07T05:31:56Z",
"updatedAt": "2023-11-07T05:31:56Z"
}
}Authorizations
JWT token passed in x-access-token header
Body
application/json
Maximum string length:
120Maximum string length:
32000'' (Default) or an id in the caller's current GET /workflow-models menu; anything else is 400 MODEL_NOT_AVAILABLE.
Maximum string length:
120Available options:
, off, low, medium, high, xhigh When a workflow runs, in its own IANA timezone (wall-clock: a daily 09:00 stays 09:00 across daylight saving). Only the fields of its kind are read; unknown fields are dropped. A time that does not exist on a spring-forward day fires at the first valid minute after it; a repeated time on a fall-back day fires once, at the earlier instant.
Show child attributes
Show child attributes
Response
Created. nextRunAt is computed in the schedule's timezone (null when manual or disabled).
Was this page helpful?