curl --request POST \
--url https://compute.x402layer.cc/pods/v1/pods/{id}/tasks \
--header 'Content-Type: application/json' \
--header 'X-API-Key: <api-key>' \
--data '
{
"schedule": "0 9 * * *",
"name": "Task",
"message": "<string>",
"session": "isolated"
}
'import requests
url = "https://compute.x402layer.cc/pods/v1/pods/{id}/tasks"
payload = {
"schedule": "0 9 * * *",
"name": "Task",
"message": "<string>",
"session": "isolated"
}
headers = {
"X-API-Key": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'X-API-Key': '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({schedule: '0 9 * * *', name: 'Task', message: '<string>', session: 'isolated'})
};
fetch('https://compute.x402layer.cc/pods/v1/pods/{id}/tasks', 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://compute.x402layer.cc/pods/v1/pods/{id}/tasks",
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([
'schedule' => '0 9 * * *',
'name' => 'Task',
'message' => '<string>',
'session' => 'isolated'
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"X-API-Key: <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://compute.x402layer.cc/pods/v1/pods/{id}/tasks"
payload := strings.NewReader("{\n \"schedule\": \"0 9 * * *\",\n \"name\": \"Task\",\n \"message\": \"<string>\",\n \"session\": \"isolated\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("X-API-Key", "<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://compute.x402layer.cc/pods/v1/pods/{id}/tasks")
.header("X-API-Key", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"schedule\": \"0 9 * * *\",\n \"name\": \"Task\",\n \"message\": \"<string>\",\n \"session\": \"isolated\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://compute.x402layer.cc/pods/v1/pods/{id}/tasks")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["X-API-Key"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"schedule\": \"0 9 * * *\",\n \"name\": \"Task\",\n \"message\": \"<string>\",\n \"session\": \"isolated\"\n}"
response = http.request(request)
puts response.read_body{
"accepted": true,
"note": "<string>"
}{
"error": {
"code": "invalid_request",
"message": "<string>",
"details": {}
}
}{
"error": {
"code": "invalid_request",
"message": "<string>",
"details": {}
}
}{
"error": {
"code": "invalid_request",
"message": "<string>",
"details": {}
}
}{
"error": {
"code": "invalid_request",
"message": "<string>",
"details": {}
}
}{
"error": {
"code": "invalid_request",
"message": "<string>",
"details": {}
}
}Add a scheduled task
Base URL https://compute.x402layer.cc/pods/v1. Auth is X-API-Key only. This is the PROGRAMMATIC surface and is NOT the same as the dashboard pod routes (POST /pods, PATCH /pods/{id}/settings, …), which take a wallet signature or a browser session and are free to change. Every response carries x-request-id.
Returns 202: queued for the pod, applied on its next check-in (about a minute). A 202 means the pod has been told, not that it is done. GET /tasks reports what the pod itself says it has, so it lags this write by a heartbeat. Rate limit: the shared write bucket, 60 requests/minute per account.
curl --request POST \
--url https://compute.x402layer.cc/pods/v1/pods/{id}/tasks \
--header 'Content-Type: application/json' \
--header 'X-API-Key: <api-key>' \
--data '
{
"schedule": "0 9 * * *",
"name": "Task",
"message": "<string>",
"session": "isolated"
}
'import requests
url = "https://compute.x402layer.cc/pods/v1/pods/{id}/tasks"
payload = {
"schedule": "0 9 * * *",
"name": "Task",
"message": "<string>",
"session": "isolated"
}
headers = {
"X-API-Key": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'X-API-Key': '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({schedule: '0 9 * * *', name: 'Task', message: '<string>', session: 'isolated'})
};
fetch('https://compute.x402layer.cc/pods/v1/pods/{id}/tasks', 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://compute.x402layer.cc/pods/v1/pods/{id}/tasks",
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([
'schedule' => '0 9 * * *',
'name' => 'Task',
'message' => '<string>',
'session' => 'isolated'
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"X-API-Key: <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://compute.x402layer.cc/pods/v1/pods/{id}/tasks"
payload := strings.NewReader("{\n \"schedule\": \"0 9 * * *\",\n \"name\": \"Task\",\n \"message\": \"<string>\",\n \"session\": \"isolated\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("X-API-Key", "<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://compute.x402layer.cc/pods/v1/pods/{id}/tasks")
.header("X-API-Key", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"schedule\": \"0 9 * * *\",\n \"name\": \"Task\",\n \"message\": \"<string>\",\n \"session\": \"isolated\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://compute.x402layer.cc/pods/v1/pods/{id}/tasks")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["X-API-Key"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"schedule\": \"0 9 * * *\",\n \"name\": \"Task\",\n \"message\": \"<string>\",\n \"session\": \"isolated\"\n}"
response = http.request(request)
puts response.read_body{
"accepted": true,
"note": "<string>"
}{
"error": {
"code": "invalid_request",
"message": "<string>",
"details": {}
}
}{
"error": {
"code": "invalid_request",
"message": "<string>",
"details": {}
}
}{
"error": {
"code": "invalid_request",
"message": "<string>",
"details": {}
}
}{
"error": {
"code": "invalid_request",
"message": "<string>",
"details": {}
}
}{
"error": {
"code": "invalid_request",
"message": "<string>",
"details": {}
}
}Authorizations
A compute API key (x402c_...). Mint one in the dashboard under Settings -> API Keys. This is the ONLY auth /pods/v1/* accepts - wallet signatures are bound to method+path+body and do not survive the internal hop, so signature callers must use the dashboard routes instead. Two extra scopes gate the dangerous powers: pods:wallet:write (pod wallet money, backup passphrase) and pods:control:write (connectors, full-power control socket).
Path Parameters
Pod id, as returned by create/list.
Body
cron, every, at The schedule expression, interpreted per kind.
"0 9 * * *"
What to say to the agent when the task fires.
isolated runs the task in its own session. main runs it in the pod's shared conversation.
isolated, main Was this page helpful?
