Skip to main content
POST
/
api
/
batch
/
v1
/
execute
ExecuteBatch
curl --request POST \
  --url https://api.worldmonitor.app/api/batch/v1/execute \
  --header 'Content-Type: application/json' \
  --header 'X-WorldMonitor-Key: <api-key>' \
  --data '
{
  "operations": [
    {
      "id": "example-id",
      "path": "/api/market/v1/get-fear-greed-index"
    }
  ]
}
'
import requests

url = "https://api.worldmonitor.app/api/batch/v1/execute"

payload = { "operations": [
{
"id": "example-id",
"path": "/api/market/v1/get-fear-greed-index"
}
] }
headers = {
"X-WorldMonitor-Key": "<api-key>",
"Content-Type": "application/json"
}

response = requests.post(url, json=payload, headers=headers)

print(response.text)
const options = {
method: 'POST',
headers: {'X-WorldMonitor-Key': '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({operations: [{id: 'example-id', path: '/api/market/v1/get-fear-greed-index'}]})
};

fetch('https://api.worldmonitor.app/api/batch/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.worldmonitor.app/api/batch/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([
'operations' => [
[
'id' => 'example-id',
'path' => '/api/market/v1/get-fear-greed-index'
]
]
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"X-WorldMonitor-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://api.worldmonitor.app/api/batch/v1/execute"

payload := strings.NewReader("{\n \"operations\": [\n {\n \"id\": \"example-id\",\n \"path\": \"/api/market/v1/get-fear-greed-index\"\n }\n ]\n}")

req, _ := http.NewRequest("POST", url, payload)

req.Header.Add("X-WorldMonitor-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://api.worldmonitor.app/api/batch/v1/execute")
.header("X-WorldMonitor-Key", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"operations\": [\n {\n \"id\": \"example-id\",\n \"path\": \"/api/market/v1/get-fear-greed-index\"\n }\n ]\n}")
.asString();
require 'uri'
require 'net/http'

url = URI("https://api.worldmonitor.app/api/batch/v1/execute")

http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true

request = Net::HTTP::Post.new(url)
request["X-WorldMonitor-Key"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"operations\": [\n {\n \"id\": \"example-id\",\n \"path\": \"/api/market/v1/get-fear-greed-index\"\n }\n ]\n}"

response = http.request(request)
puts response.read_body
{
  "failed": 1,
  "results": [
    {
      "body": {},
      "error": "example",
      "id": "example-id",
      "status": 1
    }
  ],
  "succeeded": 1
}
{
"violations": [
{
"field": "<string>",
"description": "<string>"
}
]
}
{
"error": "<string>"
}
{
"error": "<string>",
"requiredTier": 123,
"currentTier": 123,
"planKey": "<string>"
}
{
"error": "<string>",
"message": "<string>"
}
{
"error": "<string>",
"message": "<string>"
}
{
"message": "<string>"
}
{
"message": "<string>"
}

Authorizations

X-WorldMonitor-Key
string
header
required

User-issued WorldMonitor API key.

Headers

Idempotency-Key
string

Optional client-generated idempotency key. Retrying a POST with the same key and an identical request body replays the original response (only the status, body, and Content-Type are reproduced) instead of re-executing; reusing the key with a different body is rejected with 422. For mutations this avoids duplicating the side effect, while for batch-read POSTs it replays a cached snapshot that can be up to 24 hours stale. Keys are scoped per authenticated caller (falling back to the source IP for unauthenticated endpoints) and retained for 24 hours.

Required string length: 1 - 255
Pattern: ^[\x21-\x7E]{1,255}$

Body

application/json

ExecuteBatchRequest carries the array of operations to execute in bulk.

operations
object[]
Required array length: 1 - 20 elements

Response

Successful response

ExecuteBatchResponse aggregates the per-operation results.

results
object[]
succeeded
integer<int32>

Number of operations that returned an HTTP 2xx status.

failed
integer<int32>

Number of operations that returned a non-2xx status or failed to execute.