Create job
curl --request POST \
--url https://api.example.com/jobsimport requests
url = "https://api.example.com/jobs"
response = requests.post(url)
print(response.text)const options = {method: 'POST'};
fetch('https://api.example.com/jobs', 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/jobs",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.example.com/jobs"
req, _ := http.NewRequest("POST", url, nil)
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/jobs")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.example.com/jobs")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
response = http.request(request)
puts response.read_body{
"at": "<string>",
"url": "<string>",
"name": "<string>",
"method": "<string>",
"headers": {},
"body": {}
}Jobs
Create job
Schedule a one-time delayed webhook
POST
/
jobs
Create job
curl --request POST \
--url https://api.example.com/jobsimport requests
url = "https://api.example.com/jobs"
response = requests.post(url)
print(response.text)const options = {method: 'POST'};
fetch('https://api.example.com/jobs', 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/jobs",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.example.com/jobs"
req, _ := http.NewRequest("POST", url, nil)
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/jobs")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.example.com/jobs")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
response = http.request(request)
puts response.read_body{
"at": "<string>",
"url": "<string>",
"name": "<string>",
"method": "<string>",
"headers": {},
"body": {}
}Request body
string
required
ISO 8601 timestamp of when to fire the webhook. Must be in the future.
string
required
Webhook URL to call.
string
Optional display name for the job.
string
default:"POST"
HTTP method:
GET, POST, or DELETE.object
default:"{}"
Custom HTTP headers to include in the webhook request.
object
default:"{}"
JSON body to send with the webhook request.
Response
Returns the created job object with a201 status code. The job starts with status: "pending".
curl -X POST https://app.cronapi.dev/api/v1/jobs \
-H "Authorization: Bearer your_api_key_here" \
-H "Content-Type: application/json" \
-d '{
"name": "Send welcome email",
"at": "2026-04-20T15:00:00.000Z",
"url": "https://example.com/send-email",
"method": "POST",
"body": {"user_id": "usr_123"}
}'
const response = await fetch("https://app.cronapi.dev/api/v1/jobs", {
method: "POST",
headers: {
"Authorization": `Bearer your_api_key_here`,
"Content-Type": "application/json",
},
body: JSON.stringify({
name: "Send welcome email",
at: "2026-04-20T15:00:00.000Z",
url: "https://example.com/send-email",
method: "POST",
body: { user_id: "usr_123" },
}),
});
const job = await response.json();
import requests
response = requests.post(
"https://app.cronapi.dev/api/v1/jobs",
headers={"Authorization": "Bearer your_api_key_here"},
json={
"name": "Send welcome email",
"at": "2026-04-20T15:00:00.000Z",
"url": "https://example.com/send-email",
"method": "POST",
"body": {"user_id": "usr_123"},
},
)
job = response.json()
201
{
"id": "b2c3d4e5-f6a7-8901-bcde-f12345678901",
"user_id": "d4e5f6a7-b890-1234-cdef-567890abcdef",
"name": "Send welcome email",
"at": "2026-04-20T15:00:00.000Z",
"url": "https://example.com/send-email",
"method": "POST",
"headers": {},
"body": {"user_id": "usr_123"},
"status": "pending",
"created_at": "2026-04-15T14:31:00.000Z"
}
400
{
"error": "at must be in the future"
}
⌘I