Skip to main content
POST
/
api
/
infrastructure
/
v1
/
record-baseline-snapshot
RecordBaselineSnapshot
curl --request POST \
  --url https://api.worldmonitor.app/api/infrastructure/v1/record-baseline-snapshot \
  --header 'Content-Type: application/json' \
  --header 'X-WorldMonitor-Key: <api-key>' \
  --data '
{
  "updates": [
    {
      "count": 1,
      "region": "example",
      "type": "military_flights"
    }
  ]
}
'
import requests

url = "https://api.worldmonitor.app/api/infrastructure/v1/record-baseline-snapshot"

payload = { "updates": [
{
"count": 1,
"region": "example",
"type": "military_flights"
}
] }
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({updates: [{count: 1, region: 'example', type: 'military_flights'}]})
};

fetch('https://api.worldmonitor.app/api/infrastructure/v1/record-baseline-snapshot', 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/infrastructure/v1/record-baseline-snapshot",
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([
'updates' => [
[
'count' => 1,
'region' => 'example',
'type' => 'military_flights'
]
]
]),
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/infrastructure/v1/record-baseline-snapshot"

payload := strings.NewReader("{\n \"updates\": [\n {\n \"count\": 1,\n \"region\": \"example\",\n \"type\": \"military_flights\"\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/infrastructure/v1/record-baseline-snapshot")
.header("X-WorldMonitor-Key", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"updates\": [\n {\n \"count\": 1,\n \"region\": \"example\",\n \"type\": \"military_flights\"\n }\n ]\n}")
.asString();
require 'uri'
require 'net/http'

url = URI("https://api.worldmonitor.app/api/infrastructure/v1/record-baseline-snapshot")

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 \"updates\": [\n {\n \"count\": 1,\n \"region\": \"example\",\n \"type\": \"military_flights\"\n }\n ]\n}"

response = http.request(request)
puts response.read_body
{
  "error": "example",
  "updated": 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

RecordBaselineSnapshotRequest batch-updates baselines using Welford's online algorithm.

updates
object[]

Response

Successful response

RecordBaselineSnapshotResponse reports how many baselines were successfully updated.

updated
integer<int32>

Number of baselines that were written.

error
string

Error message if the request was invalid.