Economic Calendar API
Multi-language economic event calendar with flexible filters, cursor pagination, event release history, and plan-aware limits.
This document describes the EconPulse Economic Calendar API — used for dashboards, research apps, multilingual clients, Forex calendars, and automated workflows.
This API returns calendar rows with plan-based language and row limits, including fields such as actual, forecast, previous, importance, and currency.
Short description
Global economic calendar with 24 languages, country/currency/importance filters, event history, cursor pagination, and higher-tier streaming/export endpoints.
Overview
The API exposes scheduled and released macro events (CPI, GDP, employment, central-bank speeches, and similar indicators) with fields such as actual, forecast, previous, importance, currency, and localized names.
Typical consumers:
- News and research websites that need a weekly or daily calendar widget
- Multilingual apps that display events in English, Turkish, German, Japanese, and other supported languages
- Back-office tools that page through large result sets with cursors
- Analysts who need historical releases for a single
event_id
Strengths
- Broad language coverage (24 codes via
/langs-list) - Flexible date selection (
date_from/date_to, or shortcuts liketoday,current_week) - Multi-value filters for country, currency, and importance
- Cursor pagination for large windows without offset/limit drift
- Per-event release history at
/economic-events/{event_id}/history
Limitations
- Does not return precomputed surprise percentages or beat/miss scores (you can derive these client-side from
actualandforecast) - Sorts primarily by
occurrence_time DESC(newest first), which suits archives more than “next upcoming” UIs — reverse client-side for small pages when needed
Base URL
https://...All paths below are relative to this base. Replace https://... with your API host.
Authentication
Authenticate with your API key. Exact header names depend on how your gateway is configured. In the examples below, use:
| Header | Description |
|---|---|
X-Api-Key |
Your API key |
X-Subscription |
Optional plan hint: free, basic, pro, ultra (and enterprise for stream) |
If your deployment uses different header names, keep the same values and swap only the header keys.
Plans and limits
Filter endpoint row limits
| Plan | Max rows per /economic-events/filter request |
|---|---|
| Free | 50 |
| Basic | 100 |
| Pro | 1,000 |
| Ultra | 2,000 |
Language restrictions
| Plan | Allowed lang values on filter / history |
|---|---|
| Free / Basic | Limited language set (typically English-first packages) |
| Pro | Up to 5 language codes in a comma-separated list; lang=all is not allowed |
| Ultra | Broader multi-language usage |
Requesting a language outside your plan returns HTTP 403.
Event history limits
| Plan | Max limit on /economic-events/{event_id}/history |
|---|---|
| Free | 12 |
| Basic | 24 |
| Pro | 100 |
| Ultra | 200 |
Higher-tier endpoints
| Endpoint | Minimum plan |
|---|---|
POST /economic-events/export |
Ultra |
GET /economic-events/stream |
Ultra (or Enterprise) |
Endpoint summary
| Method | Path | Purpose |
|---|---|---|
GET |
/ |
Root health status |
GET |
/ping |
Health check |
GET |
/langs-list |
Supported language codes |
GET |
/countries-list |
Country ID → name map |
GET |
/economic-events/filter |
Main calendar filter (paginated) |
GET |
/economic-events/{event_id}/history |
Historical releases for one event |
POST |
/economic-events/export |
Start export job (Ultra) |
GET |
/economic-events/stream |
NDJSON stream for a date range (Ultra+) |
GET |
/calendar |
Redirect to the HTML calendar host |
Common response shape for filter
{
"meta": {
"plan": "basic",
"limit": 100,
"returned": 42,
"next_cursor": "MjAyNi0wOC0xOVQxNDowMDowMCswMDowMHw2Mjk3OA=="
},
"data": [
{
"occurrence_id": 62978,
"event_id": 1057,
"category": "employment",
"importance": "high",
"long_name": "United States - JOLTS Job Openings",
"short_name": "JOLTS Job Openings",
"description": "...",
"country_id": 5,
"country_name": "United States",
"country_flag": "United_States",
"currency": "USD",
"actual": 7.594,
"forecast": 7.28,
"previous": 7.585,
"actual_to_forecast": "positive",
"revised_to_previous": "neutral",
"unit": "M",
"reference_period": "Jun",
"precision": 3,
"preliminary": false,
"lang": "en",
"occurrence_time": "2026-06-30T14:00:00+00:00"
}
]
}Important fields
| Field | Type | Description |
|---|---|---|
occurrence_id |
integer | Unique ID for this release occurrence |
event_id |
integer | Stable series ID (use with /history) |
short_name / long_name |
string | Event titles |
category |
string/null | e.g. inflation, employment, gdp |
importance |
string | low, medium, or high |
country_id |
integer | Country key for filters |
currency |
string/null | Affected currency code |
actual / forecast / previous |
number/null | Release values |
actual_to_forecast |
string/null | Source comparison: positive / negative / neutral |
unit |
string/null | %, K, M, etc. |
occurrence_time |
datetime | Release timestamp |
lang |
string | Language of this row |
meta.next_cursor |
string/null | Pass as cursor for the next page |
Shared client setup
Use these complete, runnable snippets as your starting point. Replace https://api.example.com with your API host and YOUR_API_KEY with a real key. Keep the same headers on every request.
#!/usr/bin/env bash
# Complete cURL helper for the Economic Calendar API
set -euo pipefail
BASE_URL="https://api.example.com"
API_KEY="YOUR_API_KEY"
SUBSCRIPTION="basic" # free | basic | pro | ultra
api() {
local method="${1:-GET}"
local path="$2"
shift 2
curl -sS -X "$method" "${BASE_URL}${path}" \
-H "X-Api-Key: ${API_KEY}" \
-H "X-Subscription: ${SUBSCRIPTION}" \
-H "Accept: application/json" \
"$@"
}
# Health check
api GET "/ping"
echo
# Today's high-impact events (English)
api GET "/economic-events/filter?date=today&importance=high&lang=en" | jq .#!/usr/bin/env python3
"""Complete Python client for the Economic Calendar API."""
from __future__ import annotations
import sys
from typing import Any, Dict, Optional
import requests
BASE_URL = "https://api.example.com"
API_KEY = "YOUR_API_KEY"
SUBSCRIPTION = "basic" # free | basic | pro | ultra
HEADERS = {
"X-Api-Key": API_KEY,
"X-Subscription": SUBSCRIPTION,
"Accept": "application/json",
}
class EconomicCalendarClient:
def __init__(
self,
base_url: str = BASE_URL,
headers: Optional[Dict[str, str]] = None,
timeout: int = 30,
) -> None:
self.base_url = base_url.rstrip("/")
self.session = requests.Session()
self.session.headers.update(headers or HEADERS)
self.timeout = timeout
def get(self, path: str, params: Optional[Dict[str, Any]] = None) -> Any:
url = f"{self.base_url}{path}"
response = self.session.get(url, params=params, timeout=self.timeout)
if response.status_code >= 400:
raise RuntimeError(
f"HTTP {response.status_code}: {response.text[:500]}"
)
return response.json()
def ping(self) -> Dict[str, Any]:
return self.get("/ping")
def langs_list(self) -> Any:
return self.get("/langs-list")
def countries_list(self, lang: str = "en") -> Any:
return self.get("/countries-list", params={"lang": lang})
def filter_events(self, **params: Any) -> Dict[str, Any]:
return self.get("/economic-events/filter", params=params)
def event_history(self, event_id: int, **params: Any) -> Dict[str, Any]:
return self.get(f"/economic-events/{event_id}/history", params=params)
def main() -> int:
client = EconomicCalendarClient()
health = client.ping()
print("ping:", health)
page = client.filter_events(
date="today",
importance="high",
lang="en",
)
print("meta:", page.get("meta"))
for event in page.get("data", [])[:5]:
print(
event.get("occurrence_time"),
event.get("currency"),
event.get("short_name"),
"actual=",
event.get("actual"),
"forecast=",
event.get("forecast"),
)
return 0
if __name__ == "__main__":
sys.exit(main())/**
* Complete Node.js / browser client for the Economic Calendar API.
* Node 18+ (built-in fetch) or modern browsers.
*/
const BASE_URL = "https://api.example.com";
const API_KEY = "YOUR_API_KEY";
const SUBSCRIPTION = "basic"; // free | basic | pro | ultra
const HEADERS = {
"X-Api-Key": API_KEY,
"X-Subscription": SUBSCRIPTION,
Accept: "application/json",
};
class EconomicCalendarClient {
constructor(baseUrl = BASE_URL, headers = HEADERS) {
this.baseUrl = baseUrl.replace(/\/$/, "");
this.headers = headers;
}
async request(path, params = {}) {
const url = new URL(`${this.baseUrl}${path}`);
Object.entries(params).forEach(([key, value]) => {
if (value !== undefined && value !== null && value !== "") {
url.searchParams.set(key, String(value));
}
});
const response = await fetch(url, {
method: "GET",
headers: this.headers,
});
const text = await response.text();
let body;
try {
body = text ? JSON.parse(text) : null;
} catch {
body = text;
}
if (!response.ok) {
throw new Error(
`HTTP ${response.status}: ${typeof body === "string" ? body : JSON.stringify(body)}`
);
}
return body;
}
ping() {
return this.request("/ping");
}
langsList() {
return this.request("/langs-list");
}
countriesList(lang = "en") {
return this.request("/countries-list", { lang });
}
filterEvents(params = {}) {
return this.request("/economic-events/filter", params);
}
eventHistory(eventId, params = {}) {
return this.request(`/economic-events/${eventId}/history`, params);
}
}
async function main() {
const client = new EconomicCalendarClient();
const health = await client.ping();
console.log("ping:", health);
const page = await client.filterEvents({
date: "today",
importance: "high",
lang: "en",
});
console.log("meta:", page.meta);
for (const event of (page.data || []).slice(0, 5)) {
console.log(
event.occurrence_time,
event.currency,
event.short_name,
"actual=",
event.actual,
"forecast=",
event.forecast
);
}
}
main().catch((err) => {
console.error(err);
process.exit(1);
});<?php
/**
* Complete PHP client for the Economic Calendar API.
*/
declare(strict_types=1);
final class EconomicCalendarClient
{
private string $baseUrl;
/** @var array<int, string> */
private array $headers;
private int $timeout;
public function __construct(
string $baseUrl = 'https://api.example.com',
string $apiKey = 'YOUR_API_KEY',
string $subscription = 'basic',
int $timeout = 30
) {
$this->baseUrl = rtrim($baseUrl, '/');
$this->timeout = $timeout;
$this->headers = [
'X-Api-Key: ' . $apiKey,
'X-Subscription: ' . $subscription,
'Accept: application/json',
];
}
/**
* @param array<string, scalar|null> $params
* @return array<mixed>
*/
public function get(string $path, array $params = []): array
{
$query = http_build_query(array_filter(
$params,
static fn($v) => $v !== null && $v !== ''
));
$url = $this->baseUrl . $path . ($query !== '' ? '?' . $query : '');
$ch = curl_init($url);
if ($ch === false) {
throw new RuntimeException('Unable to init cURL');
}
curl_setopt_array($ch, [
CURLOPT_HTTPHEADER => $this->headers,
CURLOPT_RETURNTRANSFER => true,
CURLOPT_TIMEOUT => $this->timeout,
CURLOPT_FOLLOWLOCATION => true,
]);
$raw = curl_exec($ch);
$errno = curl_errno($ch);
$error = curl_error($ch);
$status = (int) curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);
if ($errno !== 0) {
throw new RuntimeException('cURL error: ' . $error, $errno);
}
$decoded = json_decode((string) $raw, true);
if ($status >= 400) {
$message = is_array($decoded) ? json_encode($decoded) : (string) $raw;
throw new RuntimeException('HTTP ' . $status . ': ' . $message, $status);
}
if (!is_array($decoded)) {
throw new RuntimeException('Invalid JSON response');
}
return $decoded;
}
public function ping(): array
{
return $this->get('/ping');
}
public function langsList(): array
{
return $this->get('/langs-list');
}
/** @return array<string, mixed> */
public function countriesList(string $lang = 'en'): array
{
return $this->get('/countries-list', ['lang' => $lang]);
}
/** @param array<string, scalar|null> $params */
public function filterEvents(array $params = []): array
{
return $this->get('/economic-events/filter', $params);
}
/** @param array<string, scalar|null> $params */
public function eventHistory(int $eventId, array $params = []): array
{
return $this->get('/economic-events/' . $eventId . '/history', $params);
}
}
$client = new EconomicCalendarClient();
$health = $client->ping();
echo "ping: " . json_encode($health, JSON_UNESCAPED_UNICODE) . PHP_EOL;
$page = $client->filterEvents([
'date' => 'today',
'importance' => 'high',
'lang' => 'en',
]);
echo "meta: " . json_encode($page['meta'] ?? null, JSON_UNESCAPED_UNICODE) . PHP_EOL;
foreach (array_slice($page['data'] ?? [], 0, 5) as $event) {
echo sprintf(
"%s %s %s actual=%s forecast=%s
",
$event['occurrence_time'] ?? '',
$event['currency'] ?? '',
$event['short_name'] ?? '',
$event['actual'] ?? 'null',
$event['forecast'] ?? 'null'
);
}package main
import (
"encoding/json"
"fmt"
"io"
"net/http"
"net/url"
"os"
"time"
)
const (
baseURL = "https://api.example.com"
apiKey = "YOUR_API_KEY"
subscription = "basic" // free | basic | pro | ultra
)
type Client struct {
BaseURL string
HTTP *http.Client
APIKey string
Plan string
}
func NewClient() *Client {
return &Client{
BaseURL: baseURL,
HTTP: &http.Client{Timeout: 30 * time.Second},
APIKey: apiKey,
Plan: subscription,
}
}
func (c *Client) Get(path string, query url.Values) (map[string]any, error) {
u, err := url.Parse(c.BaseURL + path)
if err != nil {
return nil, err
}
if query != nil {
u.RawQuery = query.Encode()
}
req, err := http.NewRequest(http.MethodGet, u.String(), nil)
if err != nil {
return nil, err
}
req.Header.Set("X-Api-Key", c.APIKey)
req.Header.Set("X-Subscription", c.Plan)
req.Header.Set("Accept", "application/json")
resp, err := c.HTTP.Do(req)
if err != nil {
return nil, err
}
defer resp.Body.Close()
body, err := io.ReadAll(resp.Body)
if err != nil {
return nil, err
}
if resp.StatusCode >= 400 {
return nil, fmt.Errorf("HTTP %d: %s", resp.StatusCode, string(body))
}
var out map[string]any
if err := json.Unmarshal(body, &out); err != nil {
return nil, err
}
return out, nil
}
func main() {
client := NewClient()
health, err := client.Get("/ping", nil)
if err != nil {
fmt.Fprintln(os.Stderr, err)
os.Exit(1)
}
fmt.Println("ping:", health)
q := url.Values{}
q.Set("date", "today")
q.Set("importance", "high")
q.Set("lang", "en")
page, err := client.Get("/economic-events/filter", q)
if err != nil {
fmt.Fprintln(os.Stderr, err)
os.Exit(1)
}
fmt.Println("meta:", page["meta"])
data, _ := page["data"].([]any)
for i, item := range data {
if i >= 5 {
break
}
event, _ := item.(map[string]any)
fmt.Println(
event["occurrence_time"],
event["currency"],
event["short_name"],
"actual=", event["actual"],
"forecast=", event["forecast"],
)
}
}import java.net.URI;
import java.net.URLEncoder;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
import java.nio.charset.StandardCharsets;
import java.time.Duration;
import java.util.LinkedHashMap;
import java.util.Map;
import java.util.stream.Collectors;
/**
* Complete Java 11+ client for the Economic Calendar API.
*/
public class EconomicCalendarClient {
private static final String BASE_URL = "https://api.example.com";
private static final String API_KEY = "YOUR_API_KEY";
private static final String SUBSCRIPTION = "basic"; // free | basic | pro | ultra
private final HttpClient http = HttpClient.newBuilder()
.connectTimeout(Duration.ofSeconds(15))
.build();
public String get(String path, Map<String, String> params) throws Exception {
String query = params.entrySet().stream()
.filter(e -> e.getValue() != null && !e.getValue().isEmpty())
.map(e -> encode(e.getKey()) + "=" + encode(e.getValue()))
.collect(Collectors.joining("&"));
String uri = BASE_URL + path + (query.isEmpty() ? "" : "?" + query);
HttpRequest request = HttpRequest.newBuilder()
.uri(URI.create(uri))
.timeout(Duration.ofSeconds(30))
.header("X-Api-Key", API_KEY)
.header("X-Subscription", SUBSCRIPTION)
.header("Accept", "application/json")
.GET()
.build();
HttpResponse<String> response = http.send(request, HttpResponse.BodyHandlers.ofString());
if (response.statusCode() >= 400) {
throw new IllegalStateException("HTTP " + response.statusCode() + ": " + response.body());
}
return response.body();
}
private static String encode(String value) {
return URLEncoder.encode(value, StandardCharsets.UTF_8);
}
public static void main(String[] args) throws Exception {
EconomicCalendarClient client = new EconomicCalendarClient();
System.out.println("ping: " + client.get("/ping", Map.of()));
Map<String, String> params = new LinkedHashMap<>();
params.put("date", "today");
params.put("importance", "high");
params.put("lang", "en");
String body = client.get("/economic-events/filter", params);
System.out.println(body);
}
}1. Root and health
GET /
Returns a simple readiness payload.
#!/usr/bin/env bash
set -euo pipefail
BASE_URL="https://api.example.com"
API_KEY="YOUR_API_KEY"
curl -sS "${BASE_URL}/" \
-H "X-Api-Key: ${API_KEY}" \
-H "Accept: application/json"
echo#!/usr/bin/env python3
import requests
BASE_URL = "https://api.example.com"
HEADERS = {
"X-Api-Key": "YOUR_API_KEY",
"X-Subscription": "basic",
"Accept": "application/json",
}
response = requests.get(f"{BASE_URL}/", headers=HEADERS, timeout=30)
response.raise_for_status()
print(response.status_code, response.json())const BASE_URL = "https://api.example.com";
const HEADERS = {
"X-Api-Key": "YOUR_API_KEY",
"X-Subscription": "basic",
Accept: "application/json",
};
async function main() {
const response = await fetch(`${BASE_URL}/`, { headers: HEADERS });
const body = await response.json();
if (!response.ok) {
throw new Error(`HTTP ${response.status}: ${JSON.stringify(body)}`);
}
console.log(body);
}
main().catch((err) => {
console.error(err);
process.exit(1);
});<?php
declare(strict_types=1);
$baseUrl = 'https://api.example.com';
$headers = [
'X-Api-Key: YOUR_API_KEY',
'X-Subscription: basic',
'Accept: application/json',
];
$ch = curl_init($baseUrl . '/');
curl_setopt_array($ch, [
CURLOPT_HTTPHEADER => $headers,
CURLOPT_RETURNTRANSFER => true,
CURLOPT_TIMEOUT => 30,
]);
$raw = curl_exec($ch);
$status = (int) curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);
if ($status >= 400) {
throw new RuntimeException("HTTP {$status}: {$raw}");
}
echo $raw, PHP_EOL;package main
import (
"fmt"
"io"
"net/http"
"os"
"time"
)
func main() {
client := &http.Client{Timeout: 30 * time.Second}
req, err := http.NewRequest(http.MethodGet, "https://api.example.com/", nil)
if err != nil {
panic(err)
}
req.Header.Set("X-Api-Key", "YOUR_API_KEY")
req.Header.Set("X-Subscription", "basic")
req.Header.Set("Accept", "application/json")
resp, err := client.Do(req)
if err != nil {
panic(err)
}
defer resp.Body.Close()
body, _ := io.ReadAll(resp.Body)
if resp.StatusCode >= 400 {
fmt.Fprintf(os.Stderr, "HTTP %d: %s
", resp.StatusCode, body)
os.Exit(1)
}
fmt.Println(string(body))
}import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
import java.time.Duration;
public class RootExample {
public static void main(String[] args) throws Exception {
HttpClient client = HttpClient.newBuilder()
.connectTimeout(Duration.ofSeconds(15))
.build();
HttpRequest request = HttpRequest.newBuilder()
.uri(URI.create("https://api.example.com/"))
.timeout(Duration.ofSeconds(30))
.header("X-Api-Key", "YOUR_API_KEY")
.header("X-Subscription", "basic")
.header("Accept", "application/json")
.GET()
.build();
HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());
if (response.statusCode() >= 400) {
throw new IllegalStateException("HTTP " + response.statusCode() + ": " + response.body());
}
System.out.println(response.body());
}
}{"status":"ok"}GET /ping
Preferred health check for monitors and uptime probes.
#!/usr/bin/env bash
set -euo pipefail
BASE_URL="https://api.example.com"
API_KEY="YOUR_API_KEY"
curl -sS "${BASE_URL}/ping" \
-H "X-Api-Key: ${API_KEY}" \
-H "Accept: application/json"
echo#!/usr/bin/env python3
import requests
BASE_URL = "https://api.example.com"
HEADERS = {
"X-Api-Key": "YOUR_API_KEY",
"X-Subscription": "basic",
"Accept": "application/json",
}
response = requests.get(f"{BASE_URL}/ping", headers=HEADERS, timeout=30)
response.raise_for_status()
payload = response.json()
assert payload.get("status") == "ok", payload
print(payload)const BASE_URL = "https://api.example.com";
const HEADERS = {
"X-Api-Key": "YOUR_API_KEY",
"X-Subscription": "basic",
Accept: "application/json",
};
async function main() {
const response = await fetch(`${BASE_URL}/ping`, { headers: HEADERS });
const body = await response.json();
if (!response.ok) {
throw new Error(`HTTP ${response.status}: ${JSON.stringify(body)}`);
}
if (body.status !== "ok") {
throw new Error(`Unexpected payload: ${JSON.stringify(body)}`);
}
console.log(body); // { status: "ok" }
}
main().catch((err) => {
console.error(err);
process.exit(1);
});<?php
declare(strict_types=1);
$baseUrl = 'https://api.example.com';
$headers = [
'X-Api-Key: YOUR_API_KEY',
'X-Subscription: basic',
'Accept: application/json',
];
$ch = curl_init($baseUrl . '/ping');
curl_setopt_array($ch, [
CURLOPT_HTTPHEADER => $headers,
CURLOPT_RETURNTRANSFER => true,
CURLOPT_TIMEOUT => 30,
]);
$raw = curl_exec($ch);
$status = (int) curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);
$payload = json_decode((string) $raw, true);
if ($status >= 400 || ($payload['status'] ?? null) !== 'ok') {
throw new RuntimeException("Health check failed: HTTP {$status} {$raw}");
}
echo json_encode($payload, JSON_PRETTY_PRINT), PHP_EOL;package main
import (
"encoding/json"
"fmt"
"io"
"net/http"
"os"
"time"
)
func main() {
client := &http.Client{Timeout: 30 * time.Second}
req, err := http.NewRequest(http.MethodGet, "https://api.example.com/ping", nil)
if err != nil {
panic(err)
}
req.Header.Set("X-Api-Key", "YOUR_API_KEY")
req.Header.Set("X-Subscription", "basic")
req.Header.Set("Accept", "application/json")
resp, err := client.Do(req)
if err != nil {
panic(err)
}
defer resp.Body.Close()
body, _ := io.ReadAll(resp.Body)
if resp.StatusCode >= 400 {
fmt.Fprintf(os.Stderr, "HTTP %d: %s
", resp.StatusCode, body)
os.Exit(1)
}
var payload map[string]any
if err := json.Unmarshal(body, &payload); err != nil {
panic(err)
}
if payload["status"] != "ok" {
fmt.Fprintf(os.Stderr, "unexpected payload: %s
", body)
os.Exit(1)
}
fmt.Println(string(body))
}import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
import java.time.Duration;
public class PingExample {
public static void main(String[] args) throws Exception {
HttpClient client = HttpClient.newHttpClient();
HttpRequest request = HttpRequest.newBuilder()
.uri(URI.create("https://api.example.com/ping"))
.timeout(Duration.ofSeconds(30))
.header("X-Api-Key", "YOUR_API_KEY")
.header("X-Subscription", "basic")
.header("Accept", "application/json")
.GET()
.build();
HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());
if (response.statusCode() >= 400) {
throw new IllegalStateException("HTTP " + response.statusCode() + ": " + response.body());
}
System.out.println(response.body()); // {"status":"ok"}
}
}{"status":"ok"}2. Languages list — GET /langs-list
Returns every language code the calendar can expose.
#!/usr/bin/env bash
# List supported language codes
set -euo pipefail
BASE_URL="https://api.example.com"
API_KEY="YOUR_API_KEY"
SUBSCRIPTION="basic"
curl -sS "${BASE_URL}/langs-list" \
-H "X-Api-Key: ${API_KEY}" \
-H "X-Subscription: ${SUBSCRIPTION}" \
-H "Accept: application/json" | jq .#!/usr/bin/env python3
"""List supported language codes"""
import json
import requests
BASE_URL = "https://api.example.com"
HEADERS = {
"X-Api-Key": "YOUR_API_KEY",
"X-Subscription": "basic",
"Accept": "application/json",
}
params = {}
response = requests.get(
f"{BASE_URL}/langs-list",
headers=HEADERS,
params=params,
timeout=30,
)
payload = response.json() if response.content else {}
if response.status_code >= 400:
print("status:", response.status_code)
print(json.dumps(payload, indent=2, ensure_ascii=False))
raise SystemExit(1)
codes = [row.get("code") for row in payload]
print("count:", len(codes))
print("sample:", codes[:10])/**
* List supported language codes
*/
const BASE_URL = "https://api.example.com";
const HEADERS = {
"X-Api-Key": "YOUR_API_KEY",
"X-Subscription": "basic",
Accept: "application/json",
};
async function main() {
const url = new URL(`${BASE_URL}/langs-list`);
// no query params
const response = await fetch(url, { headers: HEADERS });
const payload = await response.json();
if (!response.ok) {
throw new Error(`HTTP ${response.status}: ${JSON.stringify(payload)}`);
}
const codes = payload.map((row) => row.code);
console.log("count:", codes.length);
console.log("sample:", codes.slice(0, 10));
}
main().catch((err) => {
console.error(err);
process.exit(1);
});<?php
declare(strict_types=1);
/** List supported language codes */
$baseUrl = 'https://api.example.com';
$headers = [
'X-Api-Key: YOUR_API_KEY',
'X-Subscription: basic',
'Accept: application/json',
];
$query = http_build_query([]);
$ch = curl_init($baseUrl . '/langs-list' . ($query !== '' ? '?' . $query : ''));
curl_setopt_array($ch, [
CURLOPT_HTTPHEADER => $headers,
CURLOPT_RETURNTRANSFER => true,
CURLOPT_TIMEOUT => 30,
]);
$raw = curl_exec($ch);
$status = (int) curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);
$payload = json_decode((string) $raw, true);
if ($status >= 400) {
fwrite(STDERR, "HTTP {$status}: {$raw}\n");
exit(1);
}
$codes = array_column($payload, 'code');
echo 'count: ' . count($codes) . PHP_EOL;
echo 'sample: ' . implode(', ', array_slice($codes, 0, 10)) . PHP_EOL;package main
// List supported language codes
import (
"encoding/json"
"fmt"
"io"
"net/http"
"net/url"
"os"
"time"
)
func main() {
q := url.Values{}
req, err := http.NewRequest(http.MethodGet, "https://api.example.com/langs-list", nil)
if err != nil {
panic(err)
}
req.Header.Set("X-Api-Key", "YOUR_API_KEY")
req.Header.Set("X-Subscription", "basic")
req.Header.Set("Accept", "application/json")
client := &http.Client{Timeout: 30 * time.Second}
resp, err := client.Do(req)
if err != nil {
panic(err)
}
defer resp.Body.Close()
body, _ := io.ReadAll(resp.Body)
if resp.StatusCode >= 400 {
fmt.Fprintf(os.Stderr, "HTTP %d: %s\n", resp.StatusCode, body)
os.Exit(1)
}
var payload any
if err := json.Unmarshal(body, &payload); err != nil {
panic(err)
}
enc := json.NewEncoder(os.Stdout)
enc.SetIndent("", " ")
_ = enc.Encode(payload)
}import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
import java.time.Duration;
/** List supported language codes */
public class Example {
public static void main(String[] args) throws Exception {
HttpClient client = HttpClient.newBuilder()
.connectTimeout(Duration.ofSeconds(30))
.build();
HttpRequest request = HttpRequest.newBuilder()
.uri(URI.create("https://api.example.com/langs-list"))
.timeout(Duration.ofSeconds(120))
.header("X-Api-Key", "YOUR_API_KEY")
.header("X-Subscription", "basic")
.header("Accept", "application/json")
.GET()
.build();
HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());
if (response.statusCode() >= 400) {
System.err.println("HTTP " + response.statusCode() + ": " + response.body());
System.exit(1);
}
System.out.println(response.body());
}
}[
{"code":"en","name":"English"},
{"code":"tr","name":"Turkish"},
{"code":"de","name":"German"},
{"code":"jp","name":"Japanese"},
{"code":"es","name":"Spanish"}
]Supported codes include: en, fa, tr, es, de, fr, it, nl, pl, pt, sa, ru, gr, se, fi, jp, kr, cn, hk, id, ms, th, vn, hi.
Availability of each language on /economic-events/filter still depends on your subscription plan.
3. Countries list — GET /countries-list
Returns a map of country_id → { name, flag } for the country_id filter.
| Parameter | Type | Default | Description |
|---|---|---|---|
lang |
string | en |
Language of country names, e.g. en, de, tr |
Example — English map
#!/usr/bin/env bash
# Countries list in English
set -euo pipefail
BASE_URL="https://api.example.com"
API_KEY="YOUR_API_KEY"
SUBSCRIPTION="basic"
curl -sS "${BASE_URL}/countries-list?lang=en" \
-H "X-Api-Key: ${API_KEY}" \
-H "X-Subscription: ${SUBSCRIPTION}" \
-H "Accept: application/json" | jq .#!/usr/bin/env python3
"""Countries list in English"""
import json
import requests
BASE_URL = "https://api.example.com"
HEADERS = {
"X-Api-Key": "YOUR_API_KEY",
"X-Subscription": "basic",
"Accept": "application/json",
}
params = {
"lang": "en",
}
response = requests.get(
f"{BASE_URL}/countries-list",
headers=HEADERS,
params=params,
timeout=30,
)
payload = response.json() if response.content else {}
if response.status_code >= 400:
print("status:", response.status_code)
print(json.dumps(payload, indent=2, ensure_ascii=False))
raise SystemExit(1)
print("United States:", payload.get("5"))
print("keys sample:", list(payload.keys())[:8])/**
* Countries list in English
*/
const BASE_URL = "https://api.example.com";
const HEADERS = {
"X-Api-Key": "YOUR_API_KEY",
"X-Subscription": "basic",
Accept: "application/json",
};
async function main() {
const url = new URL(`${BASE_URL}/countries-list`);
url.searchParams.set("lang", "en");
const response = await fetch(url, { headers: HEADERS });
const payload = await response.json();
if (!response.ok) {
throw new Error(`HTTP ${response.status}: ${JSON.stringify(payload)}`);
}
console.log("United States:", payload["5"]);
console.log("keys sample:", Object.keys(payload).slice(0, 8));
}
main().catch((err) => {
console.error(err);
process.exit(1);
});<?php
declare(strict_types=1);
/** Countries list in English */
$baseUrl = 'https://api.example.com';
$headers = [
'X-Api-Key: YOUR_API_KEY',
'X-Subscription: basic',
'Accept: application/json',
];
$query = http_build_query([
'lang' => 'en',
]);
$ch = curl_init($baseUrl . '/countries-list' . ($query !== '' ? '?' . $query : ''));
curl_setopt_array($ch, [
CURLOPT_HTTPHEADER => $headers,
CURLOPT_RETURNTRANSFER => true,
CURLOPT_TIMEOUT => 30,
]);
$raw = curl_exec($ch);
$status = (int) curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);
$payload = json_decode((string) $raw, true);
if ($status >= 400) {
fwrite(STDERR, "HTTP {$status}: {$raw}\n");
exit(1);
}
echo 'United States: ' . json_encode($payload['5'] ?? null, JSON_UNESCAPED_UNICODE) . PHP_EOL;
echo 'keys sample: ' . implode(', ', array_slice(array_keys($payload), 0, 8)) . PHP_EOL;package main
// Countries list in English
import (
"encoding/json"
"fmt"
"io"
"net/http"
"net/url"
"os"
"time"
)
func main() {
q := url.Values{}
q.Set("lang", "en")
req, err := http.NewRequest(http.MethodGet, "https://api.example.com/countries-list?"+q.Encode(), nil)
if err != nil {
panic(err)
}
req.Header.Set("X-Api-Key", "YOUR_API_KEY")
req.Header.Set("X-Subscription", "basic")
req.Header.Set("Accept", "application/json")
client := &http.Client{Timeout: 30 * time.Second}
resp, err := client.Do(req)
if err != nil {
panic(err)
}
defer resp.Body.Close()
body, _ := io.ReadAll(resp.Body)
if resp.StatusCode >= 400 {
fmt.Fprintf(os.Stderr, "HTTP %d: %s\n", resp.StatusCode, body)
os.Exit(1)
}
var payload any
if err := json.Unmarshal(body, &payload); err != nil {
panic(err)
}
enc := json.NewEncoder(os.Stdout)
enc.SetIndent("", " ")
_ = enc.Encode(payload)
}import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
import java.time.Duration;
/** Countries list in English */
public class Example {
public static void main(String[] args) throws Exception {
HttpClient client = HttpClient.newBuilder()
.connectTimeout(Duration.ofSeconds(30))
.build();
HttpRequest request = HttpRequest.newBuilder()
.uri(URI.create("https://api.example.com/countries-list?lang=en"))
.timeout(Duration.ofSeconds(120))
.header("X-Api-Key", "YOUR_API_KEY")
.header("X-Subscription", "basic")
.header("Accept", "application/json")
.GET()
.build();
HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());
if (response.statusCode() >= 400) {
System.err.println("HTTP " + response.statusCode() + ": " + response.body());
System.exit(1);
}
System.out.println(response.body());
}
}{
"5": {"name":"United States","flag":"United_States"},
"4": {"name":"United Kingdom","flag":"United_Kingdom"},
"72": {"name":"Euro Zone","flag":"Euro_Zone"},
"17": {"name":"Germany","flag":"Germany"},
"35": {"name":"Japan","flag":"Japan"}
}Example — German country names
#!/usr/bin/env bash
# Countries list in German
set -euo pipefail
BASE_URL="https://api.example.com"
API_KEY="YOUR_API_KEY"
SUBSCRIPTION="basic"
curl -sS "${BASE_URL}/countries-list?lang=de" \
-H "X-Api-Key: ${API_KEY}" \
-H "X-Subscription: ${SUBSCRIPTION}" \
-H "Accept: application/json" | jq .#!/usr/bin/env python3
"""Countries list in German"""
import json
import requests
BASE_URL = "https://api.example.com"
HEADERS = {
"X-Api-Key": "YOUR_API_KEY",
"X-Subscription": "basic",
"Accept": "application/json",
}
params = {
"lang": "de",
}
response = requests.get(
f"{BASE_URL}/countries-list",
headers=HEADERS,
params=params,
timeout=30,
)
payload = response.json() if response.content else {}
if response.status_code >= 400:
print("status:", response.status_code)
print(json.dumps(payload, indent=2, ensure_ascii=False))
raise SystemExit(1)
print("United States:", payload.get("5"))
print("keys sample:", list(payload.keys())[:8])/**
* Countries list in German
*/
const BASE_URL = "https://api.example.com";
const HEADERS = {
"X-Api-Key": "YOUR_API_KEY",
"X-Subscription": "basic",
Accept: "application/json",
};
async function main() {
const url = new URL(`${BASE_URL}/countries-list`);
url.searchParams.set("lang", "de");
const response = await fetch(url, { headers: HEADERS });
const payload = await response.json();
if (!response.ok) {
throw new Error(`HTTP ${response.status}: ${JSON.stringify(payload)}`);
}
console.log("United States:", payload["5"]);
console.log("keys sample:", Object.keys(payload).slice(0, 8));
}
main().catch((err) => {
console.error(err);
process.exit(1);
});<?php
declare(strict_types=1);
/** Countries list in German */
$baseUrl = 'https://api.example.com';
$headers = [
'X-Api-Key: YOUR_API_KEY',
'X-Subscription: basic',
'Accept: application/json',
];
$query = http_build_query([
'lang' => 'de',
]);
$ch = curl_init($baseUrl . '/countries-list' . ($query !== '' ? '?' . $query : ''));
curl_setopt_array($ch, [
CURLOPT_HTTPHEADER => $headers,
CURLOPT_RETURNTRANSFER => true,
CURLOPT_TIMEOUT => 30,
]);
$raw = curl_exec($ch);
$status = (int) curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);
$payload = json_decode((string) $raw, true);
if ($status >= 400) {
fwrite(STDERR, "HTTP {$status}: {$raw}\n");
exit(1);
}
echo 'United States: ' . json_encode($payload['5'] ?? null, JSON_UNESCAPED_UNICODE) . PHP_EOL;
echo 'keys sample: ' . implode(', ', array_slice(array_keys($payload), 0, 8)) . PHP_EOL;package main
// Countries list in German
import (
"encoding/json"
"fmt"
"io"
"net/http"
"net/url"
"os"
"time"
)
func main() {
q := url.Values{}
q.Set("lang", "de")
req, err := http.NewRequest(http.MethodGet, "https://api.example.com/countries-list?"+q.Encode(), nil)
if err != nil {
panic(err)
}
req.Header.Set("X-Api-Key", "YOUR_API_KEY")
req.Header.Set("X-Subscription", "basic")
req.Header.Set("Accept", "application/json")
client := &http.Client{Timeout: 30 * time.Second}
resp, err := client.Do(req)
if err != nil {
panic(err)
}
defer resp.Body.Close()
body, _ := io.ReadAll(resp.Body)
if resp.StatusCode >= 400 {
fmt.Fprintf(os.Stderr, "HTTP %d: %s\n", resp.StatusCode, body)
os.Exit(1)
}
var payload any
if err := json.Unmarshal(body, &payload); err != nil {
panic(err)
}
enc := json.NewEncoder(os.Stdout)
enc.SetIndent("", " ")
_ = enc.Encode(payload)
}import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
import java.time.Duration;
/** Countries list in German */
public class Example {
public static void main(String[] args) throws Exception {
HttpClient client = HttpClient.newBuilder()
.connectTimeout(Duration.ofSeconds(30))
.build();
HttpRequest request = HttpRequest.newBuilder()
.uri(URI.create("https://api.example.com/countries-list?lang=de"))
.timeout(Duration.ofSeconds(120))
.header("X-Api-Key", "YOUR_API_KEY")
.header("X-Subscription", "basic")
.header("Accept", "application/json")
.GET()
.build();
HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());
if (response.statusCode() >= 400) {
System.err.println("HTTP " + response.statusCode() + ": " + response.body());
System.exit(1);
}
System.out.println(response.body());
}
}Example — missing language file
#!/usr/bin/env bash
# Missing countries-list language (expect 404)
set -euo pipefail
BASE_URL="https://api.example.com"
API_KEY="YOUR_API_KEY"
SUBSCRIPTION="basic"
curl -sS "${BASE_URL}/countries-list?lang=xx" \
-H "X-Api-Key: ${API_KEY}" \
-H "X-Subscription: ${SUBSCRIPTION}" \
-H "Accept: application/json" | jq .#!/usr/bin/env python3
"""Missing countries-list language (expect 404)"""
import json
import requests
BASE_URL = "https://api.example.com"
HEADERS = {
"X-Api-Key": "YOUR_API_KEY",
"X-Subscription": "basic",
"Accept": "application/json",
}
params = {
"lang": "xx",
}
response = requests.get(
f"{BASE_URL}/countries-list",
headers=HEADERS,
params=params,
timeout=30,
)
payload = response.json() if response.content else {}
if response.status_code >= 400:
print("status:", response.status_code)
print(json.dumps(payload, indent=2, ensure_ascii=False))
raise SystemExit(1)
print("status:", response.status_code)
print(json.dumps(payload, indent=2, ensure_ascii=False))/**
* Missing countries-list language (expect 404)
*/
const BASE_URL = "https://api.example.com";
const HEADERS = {
"X-Api-Key": "YOUR_API_KEY",
"X-Subscription": "basic",
Accept: "application/json",
};
async function main() {
const url = new URL(`${BASE_URL}/countries-list`);
url.searchParams.set("lang", "xx");
const response = await fetch(url, { headers: HEADERS });
const payload = await response.json();
if (!response.ok) {
throw new Error(`HTTP ${response.status}: ${JSON.stringify(payload)}`);
}
console.log("status:", response.status);
console.log(JSON.stringify(payload, null, 2));
}
main().catch((err) => {
console.error(err);
process.exit(1);
});<?php
declare(strict_types=1);
/** Missing countries-list language (expect 404) */
$baseUrl = 'https://api.example.com';
$headers = [
'X-Api-Key: YOUR_API_KEY',
'X-Subscription: basic',
'Accept: application/json',
];
$query = http_build_query([
'lang' => 'xx',
]);
$ch = curl_init($baseUrl . '/countries-list' . ($query !== '' ? '?' . $query : ''));
curl_setopt_array($ch, [
CURLOPT_HTTPHEADER => $headers,
CURLOPT_RETURNTRANSFER => true,
CURLOPT_TIMEOUT => 30,
]);
$raw = curl_exec($ch);
$status = (int) curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);
$payload = json_decode((string) $raw, true);
if ($status >= 400) {
fwrite(STDERR, "HTTP {$status}: {$raw}\n");
exit(1);
}
echo "status: {$status}" . PHP_EOL;
echo json_encode($payload, JSON_PRETTY_PRINT | JSON_UNESCAPED_UNICODE) . PHP_EOL;package main
// Missing countries-list language (expect 404)
import (
"encoding/json"
"fmt"
"io"
"net/http"
"net/url"
"os"
"time"
)
func main() {
q := url.Values{}
q.Set("lang", "xx")
req, err := http.NewRequest(http.MethodGet, "https://api.example.com/countries-list?"+q.Encode(), nil)
if err != nil {
panic(err)
}
req.Header.Set("X-Api-Key", "YOUR_API_KEY")
req.Header.Set("X-Subscription", "basic")
req.Header.Set("Accept", "application/json")
client := &http.Client{Timeout: 30 * time.Second}
resp, err := client.Do(req)
if err != nil {
panic(err)
}
defer resp.Body.Close()
body, _ := io.ReadAll(resp.Body)
if resp.StatusCode >= 400 {
fmt.Fprintf(os.Stderr, "HTTP %d: %s\n", resp.StatusCode, body)
os.Exit(1)
}
var payload any
if err := json.Unmarshal(body, &payload); err != nil {
panic(err)
}
enc := json.NewEncoder(os.Stdout)
enc.SetIndent("", " ")
_ = enc.Encode(payload)
}import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
import java.time.Duration;
/** Missing countries-list language (expect 404) */
public class Example {
public static void main(String[] args) throws Exception {
HttpClient client = HttpClient.newBuilder()
.connectTimeout(Duration.ofSeconds(30))
.build();
HttpRequest request = HttpRequest.newBuilder()
.uri(URI.create("https://api.example.com/countries-list?lang=xx"))
.timeout(Duration.ofSeconds(120))
.header("X-Api-Key", "YOUR_API_KEY")
.header("X-Subscription", "basic")
.header("Accept", "application/json")
.GET()
.build();
HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());
if (response.statusCode() >= 400) {
System.err.println("HTTP " + response.statusCode() + ": " + response.body());
System.exit(1);
}
System.out.println(response.body());
}
}Returns HTTP 404 when that language file is not present on the server.
Frequently used country IDs
| ID | Country |
|---|---|
| 5 | United States |
| 4 | United Kingdom |
| 72 | Euro Zone |
| 17 | Germany |
| 35 | Japan |
| 6 | Canada |
| 25 | Australia |
| 37 | China |
| 12 | Switzerland |
Resolve IDs via /countries-list in production; the table is a convenience reference only.
4. Main filter — GET /economic-events/filter
Primary calendar endpoint.
Query parameters
| Parameter | Type | Default | Description |
|---|---|---|---|
date_from |
string | today | Start date YYYY-MM-DD |
date_to |
string | today | End date YYYY-MM-DD |
date |
string | — | Shortcut: today, yesterday, current_week, previous_week, next_week, or a single YYYY-MM-DD. When set, overrides date_from / date_to |
country_id |
string | all |
all or comma-separated integers |
currency |
string | all |
all or comma-separated codes (USD, EUR, …) |
importance |
string | low,medium,high |
Comma-separated levels, or all |
lang |
string | en |
Language code or comma-separated list (plan limits apply) |
cursor |
string | — | Opaque cursor from meta.next_cursor |
Sorting and pagination
- Ordered by
occurrence_time DESC, thenoccurrence_id DESC(newest first). - When
returned == limit,meta.next_cursoris set. Pass it unchanged ascursor. - Do not construct cursors client-side.
- Keep identical filters across pages.
Quick-start default
If you call the endpoint with only default parameters (no date, country, currency, importance, or cursor), the API scopes the query to today.
Caching
Responses under /economic-events* are marked no-store so intermediaries do not serve stale calendar data.
Filter examples
A — Today in English
#!/usr/bin/env bash
set -euo pipefail
BASE_URL="https://api.example.com"
API_KEY="YOUR_API_KEY"
SUBSCRIPTION="basic"
curl -sS "${BASE_URL}/economic-events/filter?date=today&lang=en" \
-H "X-Api-Key: ${API_KEY}" \
-H "X-Subscription: ${SUBSCRIPTION}" \
-H "Accept: application/json" | jq '{meta, sample: .data[0:3]}'#!/usr/bin/env python3
import json
import requests
BASE_URL = "https://api.example.com"
HEADERS = {
"X-Api-Key": "YOUR_API_KEY",
"X-Subscription": "basic",
"Accept": "application/json",
}
response = requests.get(
f"{BASE_URL}/economic-events/filter",
headers=HEADERS,
params={"date": "today", "lang": "en"},
timeout=30,
)
response.raise_for_status()
payload = response.json()
print("meta:", json.dumps(payload.get("meta"), indent=2))
for event in payload.get("data", [])[:10]:
print(
f"{event.get('occurrence_time')} | {event.get('currency')} | "
f"{event.get('importance')} | {event.get('short_name')} | "
f"actual={event.get('actual')} forecast={event.get('forecast')}"
)const BASE_URL = "https://api.example.com";
const HEADERS = {
"X-Api-Key": "YOUR_API_KEY",
"X-Subscription": "basic",
Accept: "application/json",
};
async function main() {
const url = new URL(`${BASE_URL}/economic-events/filter`);
url.searchParams.set("date", "today");
url.searchParams.set("lang", "en");
const response = await fetch(url, { headers: HEADERS });
const payload = await response.json();
if (!response.ok) {
throw new Error(`HTTP ${response.status}: ${JSON.stringify(payload)}`);
}
console.log("meta:", payload.meta);
for (const event of (payload.data || []).slice(0, 10)) {
console.log(
event.occurrence_time,
event.currency,
event.importance,
event.short_name,
"actual=",
event.actual,
"forecast=",
event.forecast
);
}
}
main().catch((err) => {
console.error(err);
process.exit(1);
});<?php
declare(strict_types=1);
$baseUrl = 'https://api.example.com';
$headers = [
'X-Api-Key: YOUR_API_KEY',
'X-Subscription: basic',
'Accept: application/json',
];
$query = http_build_query([
'date' => 'today',
'lang' => 'en',
]);
$ch = curl_init($baseUrl . '/economic-events/filter?' . $query);
curl_setopt_array($ch, [
CURLOPT_HTTPHEADER => $headers,
CURLOPT_RETURNTRANSFER => true,
CURLOPT_TIMEOUT => 30,
]);
$raw = curl_exec($ch);
$status = (int) curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);
$payload = json_decode((string) $raw, true);
if ($status >= 400 || !is_array($payload)) {
throw new RuntimeException("HTTP {$status}: {$raw}");
}
echo "meta: " . json_encode($payload['meta'] ?? null, JSON_PRETTY_PRINT) . PHP_EOL;
foreach (array_slice($payload['data'] ?? [], 0, 10) as $event) {
echo sprintf(
"%s | %s | %s | %s | actual=%s forecast=%s
",
$event['occurrence_time'] ?? '',
$event['currency'] ?? '',
$event['importance'] ?? '',
$event['short_name'] ?? '',
$event['actual'] ?? 'null',
$event['forecast'] ?? 'null'
);
}package main
import (
"encoding/json"
"fmt"
"io"
"net/http"
"net/url"
"os"
"time"
)
func main() {
q := url.Values{}
q.Set("date", "today")
q.Set("lang", "en")
req, err := http.NewRequest(
http.MethodGet,
"https://api.example.com/economic-events/filter?"+q.Encode(),
nil,
)
if err != nil {
panic(err)
}
req.Header.Set("X-Api-Key", "YOUR_API_KEY")
req.Header.Set("X-Subscription", "basic")
req.Header.Set("Accept", "application/json")
client := &http.Client{Timeout: 30 * time.Second}
resp, err := client.Do(req)
if err != nil {
panic(err)
}
defer resp.Body.Close()
body, _ := io.ReadAll(resp.Body)
if resp.StatusCode >= 400 {
fmt.Fprintf(os.Stderr, "HTTP %d: %s
", resp.StatusCode, body)
os.Exit(1)
}
var payload map[string]any
if err := json.Unmarshal(body, &payload); err != nil {
panic(err)
}
fmt.Println("meta:", payload["meta"])
data, _ := payload["data"].([]any)
for i, item := range data {
if i >= 10 {
break
}
event, _ := item.(map[string]any)
fmt.Println(
event["occurrence_time"], event["currency"], event["importance"],
event["short_name"], "actual=", event["actual"], "forecast=", event["forecast"],
)
}
}import java.net.URI;
import java.net.URLEncoder;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
import java.nio.charset.StandardCharsets;
import java.time.Duration;
import java.util.LinkedHashMap;
import java.util.Map;
import java.util.stream.Collectors;
public class FilterTodayExample {
public static void main(String[] args) throws Exception {
Map<String, String> params = new LinkedHashMap<>();
params.put("date", "today");
params.put("lang", "en");
String query = params.entrySet().stream()
.map(e -> enc(e.getKey()) + "=" + enc(e.getValue()))
.collect(Collectors.joining("&"));
HttpRequest request = HttpRequest.newBuilder()
.uri(URI.create("https://api.example.com/economic-events/filter?" + query))
.timeout(Duration.ofSeconds(30))
.header("X-Api-Key", "YOUR_API_KEY")
.header("X-Subscription", "basic")
.header("Accept", "application/json")
.GET()
.build();
HttpResponse<String> response = HttpClient.newHttpClient()
.send(request, HttpResponse.BodyHandlers.ofString());
if (response.statusCode() >= 400) {
throw new IllegalStateException("HTTP " + response.statusCode() + ": " + response.body());
}
System.out.println(response.body());
}
private static String enc(String value) {
return URLEncoder.encode(value, StandardCharsets.UTF_8);
}
}B — Yesterday, high impact only
#!/usr/bin/env bash
# B — Yesterday, high impact only
set -euo pipefail
BASE_URL="https://api.example.com"
API_KEY="YOUR_API_KEY"
SUBSCRIPTION="basic"
curl -sS "${BASE_URL}/economic-events/filter?date=yesterday&importance=high&lang=en" \
-H "X-Api-Key: ${API_KEY}" \
-H "X-Subscription: ${SUBSCRIPTION}" \
-H "Accept: application/json" | jq .#!/usr/bin/env python3
"""B — Yesterday, high impact only"""
import json
import requests
BASE_URL = "https://api.example.com"
HEADERS = {
"X-Api-Key": "YOUR_API_KEY",
"X-Subscription": "basic",
"Accept": "application/json",
}
params = {
"date": "yesterday",
"importance": "high",
"lang": "en",
}
response = requests.get(
f"{BASE_URL}/economic-events/filter",
headers=HEADERS,
params=params,
timeout=30,
)
payload = response.json() if response.content else {}
if response.status_code >= 400:
print("status:", response.status_code)
print(json.dumps(payload, indent=2, ensure_ascii=False))
raise SystemExit(1)
print("meta:", json.dumps(payload.get("meta"), indent=2, ensure_ascii=False))
for event in payload.get("data", [])[:10]:
print(
f"{event.get('occurrence_time')} | {event.get('currency')} | "
f"{event.get('importance')} | {event.get('short_name')} | "
f"actual={event.get('actual')} forecast={event.get('forecast')}"
)/**
* B — Yesterday, high impact only
*/
const BASE_URL = "https://api.example.com";
const HEADERS = {
"X-Api-Key": "YOUR_API_KEY",
"X-Subscription": "basic",
Accept: "application/json",
};
async function main() {
const url = new URL(`${BASE_URL}/economic-events/filter`);
url.searchParams.set("date", "yesterday");
url.searchParams.set("importance", "high");
url.searchParams.set("lang", "en");
const response = await fetch(url, { headers: HEADERS });
const payload = await response.json();
if (!response.ok) {
throw new Error(`HTTP ${response.status}: ${JSON.stringify(payload)}`);
}
console.log("meta:", payload.meta);
for (const event of (payload.data || []).slice(0, 10)) {
console.log(
event.occurrence_time,
event.currency,
event.importance,
event.short_name,
"actual=",
event.actual,
"forecast=",
event.forecast
);
}
}
main().catch((err) => {
console.error(err);
process.exit(1);
});<?php
declare(strict_types=1);
/** B — Yesterday, high impact only */
$baseUrl = 'https://api.example.com';
$headers = [
'X-Api-Key: YOUR_API_KEY',
'X-Subscription: basic',
'Accept: application/json',
];
$query = http_build_query([
'date' => 'yesterday',
'importance' => 'high',
'lang' => 'en',
]);
$ch = curl_init($baseUrl . '/economic-events/filter' . ($query !== '' ? '?' . $query : ''));
curl_setopt_array($ch, [
CURLOPT_HTTPHEADER => $headers,
CURLOPT_RETURNTRANSFER => true,
CURLOPT_TIMEOUT => 30,
]);
$raw = curl_exec($ch);
$status = (int) curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);
$payload = json_decode((string) $raw, true);
if ($status >= 400) {
fwrite(STDERR, "HTTP {$status}: {$raw}\n");
exit(1);
}
echo "meta: " . json_encode($payload['meta'] ?? null, JSON_PRETTY_PRINT | JSON_UNESCAPED_UNICODE) . PHP_EOL;
foreach (array_slice($payload['data'] ?? [], 0, 10) as $event) {
echo sprintf(
"%s | %s | %s | %s | actual=%s forecast=%s\n",
$event['occurrence_time'] ?? '',
$event['currency'] ?? '',
$event['importance'] ?? '',
$event['short_name'] ?? '',
$event['actual'] ?? 'null',
$event['forecast'] ?? 'null'
);
}package main
// B — Yesterday, high impact only
import (
"encoding/json"
"fmt"
"io"
"net/http"
"net/url"
"os"
"time"
)
func main() {
q := url.Values{}
q.Set("date", "yesterday")
q.Set("importance", "high")
q.Set("lang", "en")
req, err := http.NewRequest(http.MethodGet, "https://api.example.com/economic-events/filter?"+q.Encode(), nil)
if err != nil {
panic(err)
}
req.Header.Set("X-Api-Key", "YOUR_API_KEY")
req.Header.Set("X-Subscription", "basic")
req.Header.Set("Accept", "application/json")
client := &http.Client{Timeout: 30 * time.Second}
resp, err := client.Do(req)
if err != nil {
panic(err)
}
defer resp.Body.Close()
body, _ := io.ReadAll(resp.Body)
if resp.StatusCode >= 400 {
fmt.Fprintf(os.Stderr, "HTTP %d: %s\n", resp.StatusCode, body)
os.Exit(1)
}
var payload map[string]any
if err := json.Unmarshal(body, &payload); err != nil {
panic(err)
}
fmt.Println("meta:", payload["meta"])
data, _ := payload["data"].([]any)
for i, item := range data {
if i >= 10 {
break
}
event, _ := item.(map[string]any)
fmt.Println(event["occurrence_time"], event["currency"], event["importance"], event["short_name"])
}
}import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
import java.time.Duration;
/** B — Yesterday, high impact only */
public class Example {
public static void main(String[] args) throws Exception {
HttpClient client = HttpClient.newBuilder()
.connectTimeout(Duration.ofSeconds(30))
.build();
HttpRequest request = HttpRequest.newBuilder()
.uri(URI.create("https://api.example.com/economic-events/filter?date=yesterday&importance=high&lang=en"))
.timeout(Duration.ofSeconds(120))
.header("X-Api-Key", "YOUR_API_KEY")
.header("X-Subscription", "basic")
.header("Accept", "application/json")
.GET()
.build();
HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());
if (response.statusCode() >= 400) {
System.err.println("HTTP " + response.statusCode() + ": " + response.body());
System.exit(1);
}
System.out.println(response.body());
}
}C — Current week for USD and EUR (medium + high)
#!/usr/bin/env bash
# C — Current week for USD and EUR (medium + high)
set -euo pipefail
BASE_URL="https://api.example.com"
API_KEY="YOUR_API_KEY"
SUBSCRIPTION="basic"
curl -sS "${BASE_URL}/economic-events/filter?date=current_week¤cy=USD%2CEUR&importance=high%2Cmedium&lang=en" \
-H "X-Api-Key: ${API_KEY}" \
-H "X-Subscription: ${SUBSCRIPTION}" \
-H "Accept: application/json" | jq .#!/usr/bin/env python3
"""C — Current week for USD and EUR (medium + high)"""
import json
import requests
BASE_URL = "https://api.example.com"
HEADERS = {
"X-Api-Key": "YOUR_API_KEY",
"X-Subscription": "basic",
"Accept": "application/json",
}
params = {
"date": "current_week",
"currency": "USD,EUR",
"importance": "high,medium",
"lang": "en",
}
response = requests.get(
f"{BASE_URL}/economic-events/filter",
headers=HEADERS,
params=params,
timeout=30,
)
payload = response.json() if response.content else {}
if response.status_code >= 400:
print("status:", response.status_code)
print(json.dumps(payload, indent=2, ensure_ascii=False))
raise SystemExit(1)
print("meta:", json.dumps(payload.get("meta"), indent=2, ensure_ascii=False))
for event in payload.get("data", [])[:10]:
print(
f"{event.get('occurrence_time')} | {event.get('currency')} | "
f"{event.get('importance')} | {event.get('short_name')} | "
f"actual={event.get('actual')} forecast={event.get('forecast')}"
)/**
* C — Current week for USD and EUR (medium + high)
*/
const BASE_URL = "https://api.example.com";
const HEADERS = {
"X-Api-Key": "YOUR_API_KEY",
"X-Subscription": "basic",
Accept: "application/json",
};
async function main() {
const url = new URL(`${BASE_URL}/economic-events/filter`);
url.searchParams.set("date", "current_week");
url.searchParams.set("currency", "USD,EUR");
url.searchParams.set("importance", "high,medium");
url.searchParams.set("lang", "en");
const response = await fetch(url, { headers: HEADERS });
const payload = await response.json();
if (!response.ok) {
throw new Error(`HTTP ${response.status}: ${JSON.stringify(payload)}`);
}
console.log("meta:", payload.meta);
for (const event of (payload.data || []).slice(0, 10)) {
console.log(
event.occurrence_time,
event.currency,
event.importance,
event.short_name,
"actual=",
event.actual,
"forecast=",
event.forecast
);
}
}
main().catch((err) => {
console.error(err);
process.exit(1);
});<?php
declare(strict_types=1);
/** C — Current week for USD and EUR (medium + high) */
$baseUrl = 'https://api.example.com';
$headers = [
'X-Api-Key: YOUR_API_KEY',
'X-Subscription: basic',
'Accept: application/json',
];
$query = http_build_query([
'date' => 'current_week',
'currency' => 'USD,EUR',
'importance' => 'high,medium',
'lang' => 'en',
]);
$ch = curl_init($baseUrl . '/economic-events/filter' . ($query !== '' ? '?' . $query : ''));
curl_setopt_array($ch, [
CURLOPT_HTTPHEADER => $headers,
CURLOPT_RETURNTRANSFER => true,
CURLOPT_TIMEOUT => 30,
]);
$raw = curl_exec($ch);
$status = (int) curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);
$payload = json_decode((string) $raw, true);
if ($status >= 400) {
fwrite(STDERR, "HTTP {$status}: {$raw}\n");
exit(1);
}
echo "meta: " . json_encode($payload['meta'] ?? null, JSON_PRETTY_PRINT | JSON_UNESCAPED_UNICODE) . PHP_EOL;
foreach (array_slice($payload['data'] ?? [], 0, 10) as $event) {
echo sprintf(
"%s | %s | %s | %s | actual=%s forecast=%s\n",
$event['occurrence_time'] ?? '',
$event['currency'] ?? '',
$event['importance'] ?? '',
$event['short_name'] ?? '',
$event['actual'] ?? 'null',
$event['forecast'] ?? 'null'
);
}package main
// C — Current week for USD and EUR (medium + high)
import (
"encoding/json"
"fmt"
"io"
"net/http"
"net/url"
"os"
"time"
)
func main() {
q := url.Values{}
q.Set("date", "current_week")
q.Set("currency", "USD,EUR")
q.Set("importance", "high,medium")
q.Set("lang", "en")
req, err := http.NewRequest(http.MethodGet, "https://api.example.com/economic-events/filter?"+q.Encode(), nil)
if err != nil {
panic(err)
}
req.Header.Set("X-Api-Key", "YOUR_API_KEY")
req.Header.Set("X-Subscription", "basic")
req.Header.Set("Accept", "application/json")
client := &http.Client{Timeout: 30 * time.Second}
resp, err := client.Do(req)
if err != nil {
panic(err)
}
defer resp.Body.Close()
body, _ := io.ReadAll(resp.Body)
if resp.StatusCode >= 400 {
fmt.Fprintf(os.Stderr, "HTTP %d: %s\n", resp.StatusCode, body)
os.Exit(1)
}
var payload map[string]any
if err := json.Unmarshal(body, &payload); err != nil {
panic(err)
}
fmt.Println("meta:", payload["meta"])
data, _ := payload["data"].([]any)
for i, item := range data {
if i >= 10 {
break
}
event, _ := item.(map[string]any)
fmt.Println(event["occurrence_time"], event["currency"], event["importance"], event["short_name"])
}
}import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
import java.time.Duration;
/** C — Current week for USD and EUR (medium + high) */
public class Example {
public static void main(String[] args) throws Exception {
HttpClient client = HttpClient.newBuilder()
.connectTimeout(Duration.ofSeconds(30))
.build();
HttpRequest request = HttpRequest.newBuilder()
.uri(URI.create("https://api.example.com/economic-events/filter?date=current_week¤cy=USD,EUR&importance=high,medium&lang=en"))
.timeout(Duration.ofSeconds(120))
.header("X-Api-Key", "YOUR_API_KEY")
.header("X-Subscription", "basic")
.header("Accept", "application/json")
.GET()
.build();
HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());
if (response.statusCode() >= 400) {
System.err.println("HTTP " + response.statusCode() + ": " + response.body());
System.exit(1);
}
System.out.println(response.body());
}
}D — Previous week, United States only
#!/usr/bin/env bash
# D — Previous week, United States only
set -euo pipefail
BASE_URL="https://api.example.com"
API_KEY="YOUR_API_KEY"
SUBSCRIPTION="basic"
curl -sS "${BASE_URL}/economic-events/filter?date=previous_week&country_id=5&lang=en" \
-H "X-Api-Key: ${API_KEY}" \
-H "X-Subscription: ${SUBSCRIPTION}" \
-H "Accept: application/json" | jq .#!/usr/bin/env python3
"""D — Previous week, United States only"""
import json
import requests
BASE_URL = "https://api.example.com"
HEADERS = {
"X-Api-Key": "YOUR_API_KEY",
"X-Subscription": "basic",
"Accept": "application/json",
}
params = {
"date": "previous_week",
"country_id": "5",
"lang": "en",
}
response = requests.get(
f"{BASE_URL}/economic-events/filter",
headers=HEADERS,
params=params,
timeout=30,
)
payload = response.json() if response.content else {}
if response.status_code >= 400:
print("status:", response.status_code)
print(json.dumps(payload, indent=2, ensure_ascii=False))
raise SystemExit(1)
print("meta:", json.dumps(payload.get("meta"), indent=2, ensure_ascii=False))
for event in payload.get("data", [])[:10]:
print(
f"{event.get('occurrence_time')} | {event.get('currency')} | "
f"{event.get('importance')} | {event.get('short_name')} | "
f"actual={event.get('actual')} forecast={event.get('forecast')}"
)/**
* D — Previous week, United States only
*/
const BASE_URL = "https://api.example.com";
const HEADERS = {
"X-Api-Key": "YOUR_API_KEY",
"X-Subscription": "basic",
Accept: "application/json",
};
async function main() {
const url = new URL(`${BASE_URL}/economic-events/filter`);
url.searchParams.set("date", "previous_week");
url.searchParams.set("country_id", "5");
url.searchParams.set("lang", "en");
const response = await fetch(url, { headers: HEADERS });
const payload = await response.json();
if (!response.ok) {
throw new Error(`HTTP ${response.status}: ${JSON.stringify(payload)}`);
}
console.log("meta:", payload.meta);
for (const event of (payload.data || []).slice(0, 10)) {
console.log(
event.occurrence_time,
event.currency,
event.importance,
event.short_name,
"actual=",
event.actual,
"forecast=",
event.forecast
);
}
}
main().catch((err) => {
console.error(err);
process.exit(1);
});<?php
declare(strict_types=1);
/** D — Previous week, United States only */
$baseUrl = 'https://api.example.com';
$headers = [
'X-Api-Key: YOUR_API_KEY',
'X-Subscription: basic',
'Accept: application/json',
];
$query = http_build_query([
'date' => 'previous_week',
'country_id' => '5',
'lang' => 'en',
]);
$ch = curl_init($baseUrl . '/economic-events/filter' . ($query !== '' ? '?' . $query : ''));
curl_setopt_array($ch, [
CURLOPT_HTTPHEADER => $headers,
CURLOPT_RETURNTRANSFER => true,
CURLOPT_TIMEOUT => 30,
]);
$raw = curl_exec($ch);
$status = (int) curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);
$payload = json_decode((string) $raw, true);
if ($status >= 400) {
fwrite(STDERR, "HTTP {$status}: {$raw}\n");
exit(1);
}
echo "meta: " . json_encode($payload['meta'] ?? null, JSON_PRETTY_PRINT | JSON_UNESCAPED_UNICODE) . PHP_EOL;
foreach (array_slice($payload['data'] ?? [], 0, 10) as $event) {
echo sprintf(
"%s | %s | %s | %s | actual=%s forecast=%s\n",
$event['occurrence_time'] ?? '',
$event['currency'] ?? '',
$event['importance'] ?? '',
$event['short_name'] ?? '',
$event['actual'] ?? 'null',
$event['forecast'] ?? 'null'
);
}package main
// D — Previous week, United States only
import (
"encoding/json"
"fmt"
"io"
"net/http"
"net/url"
"os"
"time"
)
func main() {
q := url.Values{}
q.Set("date", "previous_week")
q.Set("country_id", "5")
q.Set("lang", "en")
req, err := http.NewRequest(http.MethodGet, "https://api.example.com/economic-events/filter?"+q.Encode(), nil)
if err != nil {
panic(err)
}
req.Header.Set("X-Api-Key", "YOUR_API_KEY")
req.Header.Set("X-Subscription", "basic")
req.Header.Set("Accept", "application/json")
client := &http.Client{Timeout: 30 * time.Second}
resp, err := client.Do(req)
if err != nil {
panic(err)
}
defer resp.Body.Close()
body, _ := io.ReadAll(resp.Body)
if resp.StatusCode >= 400 {
fmt.Fprintf(os.Stderr, "HTTP %d: %s\n", resp.StatusCode, body)
os.Exit(1)
}
var payload map[string]any
if err := json.Unmarshal(body, &payload); err != nil {
panic(err)
}
fmt.Println("meta:", payload["meta"])
data, _ := payload["data"].([]any)
for i, item := range data {
if i >= 10 {
break
}
event, _ := item.(map[string]any)
fmt.Println(event["occurrence_time"], event["currency"], event["importance"], event["short_name"])
}
}import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
import java.time.Duration;
/** D — Previous week, United States only */
public class Example {
public static void main(String[] args) throws Exception {
HttpClient client = HttpClient.newBuilder()
.connectTimeout(Duration.ofSeconds(30))
.build();
HttpRequest request = HttpRequest.newBuilder()
.uri(URI.create("https://api.example.com/economic-events/filter?date=previous_week&country_id=5&lang=en"))
.timeout(Duration.ofSeconds(120))
.header("X-Api-Key", "YOUR_API_KEY")
.header("X-Subscription", "basic")
.header("Accept", "application/json")
.GET()
.build();
HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());
if (response.statusCode() >= 400) {
System.err.println("HTTP " + response.statusCode() + ": " + response.body());
System.exit(1);
}
System.out.println(response.body());
}
}E — Next week, Euro Zone + Germany, high impact
#!/usr/bin/env bash
# E — Next week, Euro Zone + Germany, high impact
set -euo pipefail
BASE_URL="https://api.example.com"
API_KEY="YOUR_API_KEY"
SUBSCRIPTION="basic"
curl -sS "${BASE_URL}/economic-events/filter?date=next_week&country_id=72%2C17&importance=high&lang=en" \
-H "X-Api-Key: ${API_KEY}" \
-H "X-Subscription: ${SUBSCRIPTION}" \
-H "Accept: application/json" | jq .#!/usr/bin/env python3
"""E — Next week, Euro Zone + Germany, high impact"""
import json
import requests
BASE_URL = "https://api.example.com"
HEADERS = {
"X-Api-Key": "YOUR_API_KEY",
"X-Subscription": "basic",
"Accept": "application/json",
}
params = {
"date": "next_week",
"country_id": "72,17",
"importance": "high",
"lang": "en",
}
response = requests.get(
f"{BASE_URL}/economic-events/filter",
headers=HEADERS,
params=params,
timeout=30,
)
payload = response.json() if response.content else {}
if response.status_code >= 400:
print("status:", response.status_code)
print(json.dumps(payload, indent=2, ensure_ascii=False))
raise SystemExit(1)
print("meta:", json.dumps(payload.get("meta"), indent=2, ensure_ascii=False))
for event in payload.get("data", [])[:10]:
print(
f"{event.get('occurrence_time')} | {event.get('currency')} | "
f"{event.get('importance')} | {event.get('short_name')} | "
f"actual={event.get('actual')} forecast={event.get('forecast')}"
)/**
* E — Next week, Euro Zone + Germany, high impact
*/
const BASE_URL = "https://api.example.com";
const HEADERS = {
"X-Api-Key": "YOUR_API_KEY",
"X-Subscription": "basic",
Accept: "application/json",
};
async function main() {
const url = new URL(`${BASE_URL}/economic-events/filter`);
url.searchParams.set("date", "next_week");
url.searchParams.set("country_id", "72,17");
url.searchParams.set("importance", "high");
url.searchParams.set("lang", "en");
const response = await fetch(url, { headers: HEADERS });
const payload = await response.json();
if (!response.ok) {
throw new Error(`HTTP ${response.status}: ${JSON.stringify(payload)}`);
}
console.log("meta:", payload.meta);
for (const event of (payload.data || []).slice(0, 10)) {
console.log(
event.occurrence_time,
event.currency,
event.importance,
event.short_name,
"actual=",
event.actual,
"forecast=",
event.forecast
);
}
}
main().catch((err) => {
console.error(err);
process.exit(1);
});<?php
declare(strict_types=1);
/** E — Next week, Euro Zone + Germany, high impact */
$baseUrl = 'https://api.example.com';
$headers = [
'X-Api-Key: YOUR_API_KEY',
'X-Subscription: basic',
'Accept: application/json',
];
$query = http_build_query([
'date' => 'next_week',
'country_id' => '72,17',
'importance' => 'high',
'lang' => 'en',
]);
$ch = curl_init($baseUrl . '/economic-events/filter' . ($query !== '' ? '?' . $query : ''));
curl_setopt_array($ch, [
CURLOPT_HTTPHEADER => $headers,
CURLOPT_RETURNTRANSFER => true,
CURLOPT_TIMEOUT => 30,
]);
$raw = curl_exec($ch);
$status = (int) curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);
$payload = json_decode((string) $raw, true);
if ($status >= 400) {
fwrite(STDERR, "HTTP {$status}: {$raw}\n");
exit(1);
}
echo "meta: " . json_encode($payload['meta'] ?? null, JSON_PRETTY_PRINT | JSON_UNESCAPED_UNICODE) . PHP_EOL;
foreach (array_slice($payload['data'] ?? [], 0, 10) as $event) {
echo sprintf(
"%s | %s | %s | %s | actual=%s forecast=%s\n",
$event['occurrence_time'] ?? '',
$event['currency'] ?? '',
$event['importance'] ?? '',
$event['short_name'] ?? '',
$event['actual'] ?? 'null',
$event['forecast'] ?? 'null'
);
}package main
// E — Next week, Euro Zone + Germany, high impact
import (
"encoding/json"
"fmt"
"io"
"net/http"
"net/url"
"os"
"time"
)
func main() {
q := url.Values{}
q.Set("date", "next_week")
q.Set("country_id", "72,17")
q.Set("importance", "high")
q.Set("lang", "en")
req, err := http.NewRequest(http.MethodGet, "https://api.example.com/economic-events/filter?"+q.Encode(), nil)
if err != nil {
panic(err)
}
req.Header.Set("X-Api-Key", "YOUR_API_KEY")
req.Header.Set("X-Subscription", "basic")
req.Header.Set("Accept", "application/json")
client := &http.Client{Timeout: 30 * time.Second}
resp, err := client.Do(req)
if err != nil {
panic(err)
}
defer resp.Body.Close()
body, _ := io.ReadAll(resp.Body)
if resp.StatusCode >= 400 {
fmt.Fprintf(os.Stderr, "HTTP %d: %s\n", resp.StatusCode, body)
os.Exit(1)
}
var payload map[string]any
if err := json.Unmarshal(body, &payload); err != nil {
panic(err)
}
fmt.Println("meta:", payload["meta"])
data, _ := payload["data"].([]any)
for i, item := range data {
if i >= 10 {
break
}
event, _ := item.(map[string]any)
fmt.Println(event["occurrence_time"], event["currency"], event["importance"], event["short_name"])
}
}import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
import java.time.Duration;
/** E — Next week, Euro Zone + Germany, high impact */
public class Example {
public static void main(String[] args) throws Exception {
HttpClient client = HttpClient.newBuilder()
.connectTimeout(Duration.ofSeconds(30))
.build();
HttpRequest request = HttpRequest.newBuilder()
.uri(URI.create("https://api.example.com/economic-events/filter?date=next_week&country_id=72,17&importance=high&lang=en"))
.timeout(Duration.ofSeconds(120))
.header("X-Api-Key", "YOUR_API_KEY")
.header("X-Subscription", "basic")
.header("Accept", "application/json")
.GET()
.build();
HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());
if (response.statusCode() >= 400) {
System.err.println("HTTP " + response.statusCode() + ": " + response.body());
System.exit(1);
}
System.out.println(response.body());
}
}F — Explicit month range (research archive)
#!/usr/bin/env bash
# F — Explicit month range (research archive)
set -euo pipefail
BASE_URL="https://api.example.com"
API_KEY="YOUR_API_KEY"
SUBSCRIPTION="pro"
curl -sS "${BASE_URL}/economic-events/filter?date_from=2026-08-01&date_to=2026-08-31¤cy=USD&importance=high&lang=en" \
-H "X-Api-Key: ${API_KEY}" \
-H "X-Subscription: ${SUBSCRIPTION}" \
-H "Accept: application/json" | jq .#!/usr/bin/env python3
"""F — Explicit month range (research archive)"""
import json
import requests
BASE_URL = "https://api.example.com"
HEADERS = {
"X-Api-Key": "YOUR_API_KEY",
"X-Subscription": "pro",
"Accept": "application/json",
}
params = {
"date_from": "2026-08-01",
"date_to": "2026-08-31",
"currency": "USD",
"importance": "high",
"lang": "en",
}
response = requests.get(
f"{BASE_URL}/economic-events/filter",
headers=HEADERS,
params=params,
timeout=30,
)
payload = response.json() if response.content else {}
if response.status_code >= 400:
print("status:", response.status_code)
print(json.dumps(payload, indent=2, ensure_ascii=False))
raise SystemExit(1)
print("meta:", json.dumps(payload.get("meta"), indent=2, ensure_ascii=False))
for event in payload.get("data", [])[:10]:
print(
f"{event.get('occurrence_time')} | {event.get('currency')} | "
f"{event.get('importance')} | {event.get('short_name')} | "
f"actual={event.get('actual')} forecast={event.get('forecast')}"
)/**
* F — Explicit month range (research archive)
*/
const BASE_URL = "https://api.example.com";
const HEADERS = {
"X-Api-Key": "YOUR_API_KEY",
"X-Subscription": "pro",
Accept: "application/json",
};
async function main() {
const url = new URL(`${BASE_URL}/economic-events/filter`);
url.searchParams.set("date_from", "2026-08-01");
url.searchParams.set("date_to", "2026-08-31");
url.searchParams.set("currency", "USD");
url.searchParams.set("importance", "high");
url.searchParams.set("lang", "en");
const response = await fetch(url, { headers: HEADERS });
const payload = await response.json();
if (!response.ok) {
throw new Error(`HTTP ${response.status}: ${JSON.stringify(payload)}`);
}
console.log("meta:", payload.meta);
for (const event of (payload.data || []).slice(0, 10)) {
console.log(
event.occurrence_time,
event.currency,
event.importance,
event.short_name,
"actual=",
event.actual,
"forecast=",
event.forecast
);
}
}
main().catch((err) => {
console.error(err);
process.exit(1);
});<?php
declare(strict_types=1);
/** F — Explicit month range (research archive) */
$baseUrl = 'https://api.example.com';
$headers = [
'X-Api-Key: YOUR_API_KEY',
'X-Subscription: pro',
'Accept: application/json',
];
$query = http_build_query([
'date_from' => '2026-08-01',
'date_to' => '2026-08-31',
'currency' => 'USD',
'importance' => 'high',
'lang' => 'en',
]);
$ch = curl_init($baseUrl . '/economic-events/filter' . ($query !== '' ? '?' . $query : ''));
curl_setopt_array($ch, [
CURLOPT_HTTPHEADER => $headers,
CURLOPT_RETURNTRANSFER => true,
CURLOPT_TIMEOUT => 30,
]);
$raw = curl_exec($ch);
$status = (int) curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);
$payload = json_decode((string) $raw, true);
if ($status >= 400) {
fwrite(STDERR, "HTTP {$status}: {$raw}\n");
exit(1);
}
echo "meta: " . json_encode($payload['meta'] ?? null, JSON_PRETTY_PRINT | JSON_UNESCAPED_UNICODE) . PHP_EOL;
foreach (array_slice($payload['data'] ?? [], 0, 10) as $event) {
echo sprintf(
"%s | %s | %s | %s | actual=%s forecast=%s\n",
$event['occurrence_time'] ?? '',
$event['currency'] ?? '',
$event['importance'] ?? '',
$event['short_name'] ?? '',
$event['actual'] ?? 'null',
$event['forecast'] ?? 'null'
);
}package main
// F — Explicit month range (research archive)
import (
"encoding/json"
"fmt"
"io"
"net/http"
"net/url"
"os"
"time"
)
func main() {
q := url.Values{}
q.Set("date_from", "2026-08-01")
q.Set("date_to", "2026-08-31")
q.Set("currency", "USD")
q.Set("importance", "high")
q.Set("lang", "en")
req, err := http.NewRequest(http.MethodGet, "https://api.example.com/economic-events/filter?"+q.Encode(), nil)
if err != nil {
panic(err)
}
req.Header.Set("X-Api-Key", "YOUR_API_KEY")
req.Header.Set("X-Subscription", "pro")
req.Header.Set("Accept", "application/json")
client := &http.Client{Timeout: 30 * time.Second}
resp, err := client.Do(req)
if err != nil {
panic(err)
}
defer resp.Body.Close()
body, _ := io.ReadAll(resp.Body)
if resp.StatusCode >= 400 {
fmt.Fprintf(os.Stderr, "HTTP %d: %s\n", resp.StatusCode, body)
os.Exit(1)
}
var payload map[string]any
if err := json.Unmarshal(body, &payload); err != nil {
panic(err)
}
fmt.Println("meta:", payload["meta"])
data, _ := payload["data"].([]any)
for i, item := range data {
if i >= 10 {
break
}
event, _ := item.(map[string]any)
fmt.Println(event["occurrence_time"], event["currency"], event["importance"], event["short_name"])
}
}import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
import java.time.Duration;
/** F — Explicit month range (research archive) */
public class Example {
public static void main(String[] args) throws Exception {
HttpClient client = HttpClient.newBuilder()
.connectTimeout(Duration.ofSeconds(30))
.build();
HttpRequest request = HttpRequest.newBuilder()
.uri(URI.create("https://api.example.com/economic-events/filter?date_from=2026-08-01&date_to=2026-08-31¤cy=USD&importance=high&lang=en"))
.timeout(Duration.ofSeconds(120))
.header("X-Api-Key", "YOUR_API_KEY")
.header("X-Subscription", "pro")
.header("Accept", "application/json")
.GET()
.build();
HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());
if (response.statusCode() >= 400) {
System.err.println("HTTP " + response.statusCode() + ": " + response.body());
System.exit(1);
}
System.out.println(response.body());
}
}Because sorting is descending, the first page contains the latest events in the range. Follow next_cursor until it is null.
G — Single day via date=YYYY-MM-DD
#!/usr/bin/env bash
# G — Single day via `date=YYYY-MM-DD`
set -euo pipefail
BASE_URL="https://api.example.com"
API_KEY="YOUR_API_KEY"
SUBSCRIPTION="basic"
curl -sS "${BASE_URL}/economic-events/filter?date=2026-08-19&lang=en" \
-H "X-Api-Key: ${API_KEY}" \
-H "X-Subscription: ${SUBSCRIPTION}" \
-H "Accept: application/json" | jq .#!/usr/bin/env python3
"""G — Single day via `date=YYYY-MM-DD`"""
import json
import requests
BASE_URL = "https://api.example.com"
HEADERS = {
"X-Api-Key": "YOUR_API_KEY",
"X-Subscription": "basic",
"Accept": "application/json",
}
params = {
"date": "2026-08-19",
"lang": "en",
}
response = requests.get(
f"{BASE_URL}/economic-events/filter",
headers=HEADERS,
params=params,
timeout=30,
)
payload = response.json() if response.content else {}
if response.status_code >= 400:
print("status:", response.status_code)
print(json.dumps(payload, indent=2, ensure_ascii=False))
raise SystemExit(1)
print("meta:", json.dumps(payload.get("meta"), indent=2, ensure_ascii=False))
for event in payload.get("data", [])[:10]:
print(
f"{event.get('occurrence_time')} | {event.get('currency')} | "
f"{event.get('importance')} | {event.get('short_name')} | "
f"actual={event.get('actual')} forecast={event.get('forecast')}"
)/**
* G — Single day via `date=YYYY-MM-DD`
*/
const BASE_URL = "https://api.example.com";
const HEADERS = {
"X-Api-Key": "YOUR_API_KEY",
"X-Subscription": "basic",
Accept: "application/json",
};
async function main() {
const url = new URL(`${BASE_URL}/economic-events/filter`);
url.searchParams.set("date", "2026-08-19");
url.searchParams.set("lang", "en");
const response = await fetch(url, { headers: HEADERS });
const payload = await response.json();
if (!response.ok) {
throw new Error(`HTTP ${response.status}: ${JSON.stringify(payload)}`);
}
console.log("meta:", payload.meta);
for (const event of (payload.data || []).slice(0, 10)) {
console.log(
event.occurrence_time,
event.currency,
event.importance,
event.short_name,
"actual=",
event.actual,
"forecast=",
event.forecast
);
}
}
main().catch((err) => {
console.error(err);
process.exit(1);
});<?php
declare(strict_types=1);
/** G — Single day via `date=YYYY-MM-DD` */
$baseUrl = 'https://api.example.com';
$headers = [
'X-Api-Key: YOUR_API_KEY',
'X-Subscription: basic',
'Accept: application/json',
];
$query = http_build_query([
'date' => '2026-08-19',
'lang' => 'en',
]);
$ch = curl_init($baseUrl . '/economic-events/filter' . ($query !== '' ? '?' . $query : ''));
curl_setopt_array($ch, [
CURLOPT_HTTPHEADER => $headers,
CURLOPT_RETURNTRANSFER => true,
CURLOPT_TIMEOUT => 30,
]);
$raw = curl_exec($ch);
$status = (int) curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);
$payload = json_decode((string) $raw, true);
if ($status >= 400) {
fwrite(STDERR, "HTTP {$status}: {$raw}\n");
exit(1);
}
echo "meta: " . json_encode($payload['meta'] ?? null, JSON_PRETTY_PRINT | JSON_UNESCAPED_UNICODE) . PHP_EOL;
foreach (array_slice($payload['data'] ?? [], 0, 10) as $event) {
echo sprintf(
"%s | %s | %s | %s | actual=%s forecast=%s\n",
$event['occurrence_time'] ?? '',
$event['currency'] ?? '',
$event['importance'] ?? '',
$event['short_name'] ?? '',
$event['actual'] ?? 'null',
$event['forecast'] ?? 'null'
);
}package main
// G — Single day via `date=YYYY-MM-DD`
import (
"encoding/json"
"fmt"
"io"
"net/http"
"net/url"
"os"
"time"
)
func main() {
q := url.Values{}
q.Set("date", "2026-08-19")
q.Set("lang", "en")
req, err := http.NewRequest(http.MethodGet, "https://api.example.com/economic-events/filter?"+q.Encode(), nil)
if err != nil {
panic(err)
}
req.Header.Set("X-Api-Key", "YOUR_API_KEY")
req.Header.Set("X-Subscription", "basic")
req.Header.Set("Accept", "application/json")
client := &http.Client{Timeout: 30 * time.Second}
resp, err := client.Do(req)
if err != nil {
panic(err)
}
defer resp.Body.Close()
body, _ := io.ReadAll(resp.Body)
if resp.StatusCode >= 400 {
fmt.Fprintf(os.Stderr, "HTTP %d: %s\n", resp.StatusCode, body)
os.Exit(1)
}
var payload map[string]any
if err := json.Unmarshal(body, &payload); err != nil {
panic(err)
}
fmt.Println("meta:", payload["meta"])
data, _ := payload["data"].([]any)
for i, item := range data {
if i >= 10 {
break
}
event, _ := item.(map[string]any)
fmt.Println(event["occurrence_time"], event["currency"], event["importance"], event["short_name"])
}
}import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
import java.time.Duration;
/** G — Single day via `date=YYYY-MM-DD` */
public class Example {
public static void main(String[] args) throws Exception {
HttpClient client = HttpClient.newBuilder()
.connectTimeout(Duration.ofSeconds(30))
.build();
HttpRequest request = HttpRequest.newBuilder()
.uri(URI.create("https://api.example.com/economic-events/filter?date=2026-08-19&lang=en"))
.timeout(Duration.ofSeconds(120))
.header("X-Api-Key", "YOUR_API_KEY")
.header("X-Subscription", "basic")
.header("Accept", "application/json")
.GET()
.build();
HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());
if (response.statusCode() >= 400) {
System.err.println("HTTP " + response.statusCode() + ": " + response.body());
System.exit(1);
}
System.out.println(response.body());
}
}Equivalent to date_from=2026-08-19&date_to=2026-08-19.
H — Multi-country basket (US, UK, Canada, Germany, Japan, Australia)
#!/usr/bin/env bash
# H — Multi-country basket (US, UK, Canada, Germany, Japan, Australia)
set -euo pipefail
BASE_URL="https://api.example.com"
API_KEY="YOUR_API_KEY"
SUBSCRIPTION="basic"
curl -sS "${BASE_URL}/economic-events/filter?date=current_week&country_id=5%2C4%2C6%2C17%2C35%2C25&importance=high%2Cmedium&lang=en" \
-H "X-Api-Key: ${API_KEY}" \
-H "X-Subscription: ${SUBSCRIPTION}" \
-H "Accept: application/json" | jq .#!/usr/bin/env python3
"""H — Multi-country basket (US, UK, Canada, Germany, Japan, Australia)"""
import json
import requests
BASE_URL = "https://api.example.com"
HEADERS = {
"X-Api-Key": "YOUR_API_KEY",
"X-Subscription": "basic",
"Accept": "application/json",
}
params = {
"date": "current_week",
"country_id": "5,4,6,17,35,25",
"importance": "high,medium",
"lang": "en",
}
response = requests.get(
f"{BASE_URL}/economic-events/filter",
headers=HEADERS,
params=params,
timeout=30,
)
payload = response.json() if response.content else {}
if response.status_code >= 400:
print("status:", response.status_code)
print(json.dumps(payload, indent=2, ensure_ascii=False))
raise SystemExit(1)
print("meta:", json.dumps(payload.get("meta"), indent=2, ensure_ascii=False))
for event in payload.get("data", [])[:10]:
print(
f"{event.get('occurrence_time')} | {event.get('currency')} | "
f"{event.get('importance')} | {event.get('short_name')} | "
f"actual={event.get('actual')} forecast={event.get('forecast')}"
)/**
* H — Multi-country basket (US, UK, Canada, Germany, Japan, Australia)
*/
const BASE_URL = "https://api.example.com";
const HEADERS = {
"X-Api-Key": "YOUR_API_KEY",
"X-Subscription": "basic",
Accept: "application/json",
};
async function main() {
const url = new URL(`${BASE_URL}/economic-events/filter`);
url.searchParams.set("date", "current_week");
url.searchParams.set("country_id", "5,4,6,17,35,25");
url.searchParams.set("importance", "high,medium");
url.searchParams.set("lang", "en");
const response = await fetch(url, { headers: HEADERS });
const payload = await response.json();
if (!response.ok) {
throw new Error(`HTTP ${response.status}: ${JSON.stringify(payload)}`);
}
console.log("meta:", payload.meta);
for (const event of (payload.data || []).slice(0, 10)) {
console.log(
event.occurrence_time,
event.currency,
event.importance,
event.short_name,
"actual=",
event.actual,
"forecast=",
event.forecast
);
}
}
main().catch((err) => {
console.error(err);
process.exit(1);
});<?php
declare(strict_types=1);
/** H — Multi-country basket (US, UK, Canada, Germany, Japan, Australia) */
$baseUrl = 'https://api.example.com';
$headers = [
'X-Api-Key: YOUR_API_KEY',
'X-Subscription: basic',
'Accept: application/json',
];
$query = http_build_query([
'date' => 'current_week',
'country_id' => '5,4,6,17,35,25',
'importance' => 'high,medium',
'lang' => 'en',
]);
$ch = curl_init($baseUrl . '/economic-events/filter' . ($query !== '' ? '?' . $query : ''));
curl_setopt_array($ch, [
CURLOPT_HTTPHEADER => $headers,
CURLOPT_RETURNTRANSFER => true,
CURLOPT_TIMEOUT => 30,
]);
$raw = curl_exec($ch);
$status = (int) curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);
$payload = json_decode((string) $raw, true);
if ($status >= 400) {
fwrite(STDERR, "HTTP {$status}: {$raw}\n");
exit(1);
}
echo "meta: " . json_encode($payload['meta'] ?? null, JSON_PRETTY_PRINT | JSON_UNESCAPED_UNICODE) . PHP_EOL;
foreach (array_slice($payload['data'] ?? [], 0, 10) as $event) {
echo sprintf(
"%s | %s | %s | %s | actual=%s forecast=%s\n",
$event['occurrence_time'] ?? '',
$event['currency'] ?? '',
$event['importance'] ?? '',
$event['short_name'] ?? '',
$event['actual'] ?? 'null',
$event['forecast'] ?? 'null'
);
}package main
// H — Multi-country basket (US, UK, Canada, Germany, Japan, Australia)
import (
"encoding/json"
"fmt"
"io"
"net/http"
"net/url"
"os"
"time"
)
func main() {
q := url.Values{}
q.Set("date", "current_week")
q.Set("country_id", "5,4,6,17,35,25")
q.Set("importance", "high,medium")
q.Set("lang", "en")
req, err := http.NewRequest(http.MethodGet, "https://api.example.com/economic-events/filter?"+q.Encode(), nil)
if err != nil {
panic(err)
}
req.Header.Set("X-Api-Key", "YOUR_API_KEY")
req.Header.Set("X-Subscription", "basic")
req.Header.Set("Accept", "application/json")
client := &http.Client{Timeout: 30 * time.Second}
resp, err := client.Do(req)
if err != nil {
panic(err)
}
defer resp.Body.Close()
body, _ := io.ReadAll(resp.Body)
if resp.StatusCode >= 400 {
fmt.Fprintf(os.Stderr, "HTTP %d: %s\n", resp.StatusCode, body)
os.Exit(1)
}
var payload map[string]any
if err := json.Unmarshal(body, &payload); err != nil {
panic(err)
}
fmt.Println("meta:", payload["meta"])
data, _ := payload["data"].([]any)
for i, item := range data {
if i >= 10 {
break
}
event, _ := item.(map[string]any)
fmt.Println(event["occurrence_time"], event["currency"], event["importance"], event["short_name"])
}
}import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
import java.time.Duration;
/** H — Multi-country basket (US, UK, Canada, Germany, Japan, Australia) */
public class Example {
public static void main(String[] args) throws Exception {
HttpClient client = HttpClient.newBuilder()
.connectTimeout(Duration.ofSeconds(30))
.build();
HttpRequest request = HttpRequest.newBuilder()
.uri(URI.create("https://api.example.com/economic-events/filter?date=current_week&country_id=5,4,6,17,35,25&importance=high,medium&lang=en"))
.timeout(Duration.ofSeconds(120))
.header("X-Api-Key", "YOUR_API_KEY")
.header("X-Subscription", "basic")
.header("Accept", "application/json")
.GET()
.build();
HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());
if (response.statusCode() >= 400) {
System.err.println("HTTP " + response.statusCode() + ": " + response.body());
System.exit(1);
}
System.out.println(response.body());
}
}I — Currency-only filter (JPY, three-day window)
#!/usr/bin/env bash
# I — Currency-only filter (JPY, three-day window)
set -euo pipefail
BASE_URL="https://api.example.com"
API_KEY="YOUR_API_KEY"
SUBSCRIPTION="basic"
curl -sS "${BASE_URL}/economic-events/filter?date_from=2026-08-18&date_to=2026-08-20¤cy=JPY&lang=en" \
-H "X-Api-Key: ${API_KEY}" \
-H "X-Subscription: ${SUBSCRIPTION}" \
-H "Accept: application/json" | jq .#!/usr/bin/env python3
"""I — Currency-only filter (JPY, three-day window)"""
import json
import requests
BASE_URL = "https://api.example.com"
HEADERS = {
"X-Api-Key": "YOUR_API_KEY",
"X-Subscription": "basic",
"Accept": "application/json",
}
params = {
"date_from": "2026-08-18",
"date_to": "2026-08-20",
"currency": "JPY",
"lang": "en",
}
response = requests.get(
f"{BASE_URL}/economic-events/filter",
headers=HEADERS,
params=params,
timeout=30,
)
payload = response.json() if response.content else {}
if response.status_code >= 400:
print("status:", response.status_code)
print(json.dumps(payload, indent=2, ensure_ascii=False))
raise SystemExit(1)
print("meta:", json.dumps(payload.get("meta"), indent=2, ensure_ascii=False))
for event in payload.get("data", [])[:10]:
print(
f"{event.get('occurrence_time')} | {event.get('currency')} | "
f"{event.get('importance')} | {event.get('short_name')} | "
f"actual={event.get('actual')} forecast={event.get('forecast')}"
)/**
* I — Currency-only filter (JPY, three-day window)
*/
const BASE_URL = "https://api.example.com";
const HEADERS = {
"X-Api-Key": "YOUR_API_KEY",
"X-Subscription": "basic",
Accept: "application/json",
};
async function main() {
const url = new URL(`${BASE_URL}/economic-events/filter`);
url.searchParams.set("date_from", "2026-08-18");
url.searchParams.set("date_to", "2026-08-20");
url.searchParams.set("currency", "JPY");
url.searchParams.set("lang", "en");
const response = await fetch(url, { headers: HEADERS });
const payload = await response.json();
if (!response.ok) {
throw new Error(`HTTP ${response.status}: ${JSON.stringify(payload)}`);
}
console.log("meta:", payload.meta);
for (const event of (payload.data || []).slice(0, 10)) {
console.log(
event.occurrence_time,
event.currency,
event.importance,
event.short_name,
"actual=",
event.actual,
"forecast=",
event.forecast
);
}
}
main().catch((err) => {
console.error(err);
process.exit(1);
});<?php
declare(strict_types=1);
/** I — Currency-only filter (JPY, three-day window) */
$baseUrl = 'https://api.example.com';
$headers = [
'X-Api-Key: YOUR_API_KEY',
'X-Subscription: basic',
'Accept: application/json',
];
$query = http_build_query([
'date_from' => '2026-08-18',
'date_to' => '2026-08-20',
'currency' => 'JPY',
'lang' => 'en',
]);
$ch = curl_init($baseUrl . '/economic-events/filter' . ($query !== '' ? '?' . $query : ''));
curl_setopt_array($ch, [
CURLOPT_HTTPHEADER => $headers,
CURLOPT_RETURNTRANSFER => true,
CURLOPT_TIMEOUT => 30,
]);
$raw = curl_exec($ch);
$status = (int) curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);
$payload = json_decode((string) $raw, true);
if ($status >= 400) {
fwrite(STDERR, "HTTP {$status}: {$raw}\n");
exit(1);
}
echo "meta: " . json_encode($payload['meta'] ?? null, JSON_PRETTY_PRINT | JSON_UNESCAPED_UNICODE) . PHP_EOL;
foreach (array_slice($payload['data'] ?? [], 0, 10) as $event) {
echo sprintf(
"%s | %s | %s | %s | actual=%s forecast=%s\n",
$event['occurrence_time'] ?? '',
$event['currency'] ?? '',
$event['importance'] ?? '',
$event['short_name'] ?? '',
$event['actual'] ?? 'null',
$event['forecast'] ?? 'null'
);
}package main
// I — Currency-only filter (JPY, three-day window)
import (
"encoding/json"
"fmt"
"io"
"net/http"
"net/url"
"os"
"time"
)
func main() {
q := url.Values{}
q.Set("date_from", "2026-08-18")
q.Set("date_to", "2026-08-20")
q.Set("currency", "JPY")
q.Set("lang", "en")
req, err := http.NewRequest(http.MethodGet, "https://api.example.com/economic-events/filter?"+q.Encode(), nil)
if err != nil {
panic(err)
}
req.Header.Set("X-Api-Key", "YOUR_API_KEY")
req.Header.Set("X-Subscription", "basic")
req.Header.Set("Accept", "application/json")
client := &http.Client{Timeout: 30 * time.Second}
resp, err := client.Do(req)
if err != nil {
panic(err)
}
defer resp.Body.Close()
body, _ := io.ReadAll(resp.Body)
if resp.StatusCode >= 400 {
fmt.Fprintf(os.Stderr, "HTTP %d: %s\n", resp.StatusCode, body)
os.Exit(1)
}
var payload map[string]any
if err := json.Unmarshal(body, &payload); err != nil {
panic(err)
}
fmt.Println("meta:", payload["meta"])
data, _ := payload["data"].([]any)
for i, item := range data {
if i >= 10 {
break
}
event, _ := item.(map[string]any)
fmt.Println(event["occurrence_time"], event["currency"], event["importance"], event["short_name"])
}
}import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
import java.time.Duration;
/** I — Currency-only filter (JPY, three-day window) */
public class Example {
public static void main(String[] args) throws Exception {
HttpClient client = HttpClient.newBuilder()
.connectTimeout(Duration.ofSeconds(30))
.build();
HttpRequest request = HttpRequest.newBuilder()
.uri(URI.create("https://api.example.com/economic-events/filter?date_from=2026-08-18&date_to=2026-08-20¤cy=JPY&lang=en"))
.timeout(Duration.ofSeconds(120))
.header("X-Api-Key", "YOUR_API_KEY")
.header("X-Subscription", "basic")
.header("Accept", "application/json")
.GET()
.build();
HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());
if (response.statusCode() >= 400) {
System.err.println("HTTP " + response.statusCode() + ": " + response.body());
System.exit(1);
}
System.out.println(response.body());
}
}J — Importance explicitly set to all
#!/usr/bin/env bash
# J — Importance explicitly set to all
set -euo pipefail
BASE_URL="https://api.example.com"
API_KEY="YOUR_API_KEY"
SUBSCRIPTION="basic"
curl -sS "${BASE_URL}/economic-events/filter?date=today&importance=all&lang=en" \
-H "X-Api-Key: ${API_KEY}" \
-H "X-Subscription: ${SUBSCRIPTION}" \
-H "Accept: application/json" | jq .#!/usr/bin/env python3
"""J — Importance explicitly set to all"""
import json
import requests
BASE_URL = "https://api.example.com"
HEADERS = {
"X-Api-Key": "YOUR_API_KEY",
"X-Subscription": "basic",
"Accept": "application/json",
}
params = {
"date": "today",
"importance": "all",
"lang": "en",
}
response = requests.get(
f"{BASE_URL}/economic-events/filter",
headers=HEADERS,
params=params,
timeout=30,
)
payload = response.json() if response.content else {}
if response.status_code >= 400:
print("status:", response.status_code)
print(json.dumps(payload, indent=2, ensure_ascii=False))
raise SystemExit(1)
print("meta:", json.dumps(payload.get("meta"), indent=2, ensure_ascii=False))
for event in payload.get("data", [])[:10]:
print(
f"{event.get('occurrence_time')} | {event.get('currency')} | "
f"{event.get('importance')} | {event.get('short_name')} | "
f"actual={event.get('actual')} forecast={event.get('forecast')}"
)/**
* J — Importance explicitly set to all
*/
const BASE_URL = "https://api.example.com";
const HEADERS = {
"X-Api-Key": "YOUR_API_KEY",
"X-Subscription": "basic",
Accept: "application/json",
};
async function main() {
const url = new URL(`${BASE_URL}/economic-events/filter`);
url.searchParams.set("date", "today");
url.searchParams.set("importance", "all");
url.searchParams.set("lang", "en");
const response = await fetch(url, { headers: HEADERS });
const payload = await response.json();
if (!response.ok) {
throw new Error(`HTTP ${response.status}: ${JSON.stringify(payload)}`);
}
console.log("meta:", payload.meta);
for (const event of (payload.data || []).slice(0, 10)) {
console.log(
event.occurrence_time,
event.currency,
event.importance,
event.short_name,
"actual=",
event.actual,
"forecast=",
event.forecast
);
}
}
main().catch((err) => {
console.error(err);
process.exit(1);
});<?php
declare(strict_types=1);
/** J — Importance explicitly set to all */
$baseUrl = 'https://api.example.com';
$headers = [
'X-Api-Key: YOUR_API_KEY',
'X-Subscription: basic',
'Accept: application/json',
];
$query = http_build_query([
'date' => 'today',
'importance' => 'all',
'lang' => 'en',
]);
$ch = curl_init($baseUrl . '/economic-events/filter' . ($query !== '' ? '?' . $query : ''));
curl_setopt_array($ch, [
CURLOPT_HTTPHEADER => $headers,
CURLOPT_RETURNTRANSFER => true,
CURLOPT_TIMEOUT => 30,
]);
$raw = curl_exec($ch);
$status = (int) curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);
$payload = json_decode((string) $raw, true);
if ($status >= 400) {
fwrite(STDERR, "HTTP {$status}: {$raw}\n");
exit(1);
}
echo "meta: " . json_encode($payload['meta'] ?? null, JSON_PRETTY_PRINT | JSON_UNESCAPED_UNICODE) . PHP_EOL;
foreach (array_slice($payload['data'] ?? [], 0, 10) as $event) {
echo sprintf(
"%s | %s | %s | %s | actual=%s forecast=%s\n",
$event['occurrence_time'] ?? '',
$event['currency'] ?? '',
$event['importance'] ?? '',
$event['short_name'] ?? '',
$event['actual'] ?? 'null',
$event['forecast'] ?? 'null'
);
}package main
// J — Importance explicitly set to all
import (
"encoding/json"
"fmt"
"io"
"net/http"
"net/url"
"os"
"time"
)
func main() {
q := url.Values{}
q.Set("date", "today")
q.Set("importance", "all")
q.Set("lang", "en")
req, err := http.NewRequest(http.MethodGet, "https://api.example.com/economic-events/filter?"+q.Encode(), nil)
if err != nil {
panic(err)
}
req.Header.Set("X-Api-Key", "YOUR_API_KEY")
req.Header.Set("X-Subscription", "basic")
req.Header.Set("Accept", "application/json")
client := &http.Client{Timeout: 30 * time.Second}
resp, err := client.Do(req)
if err != nil {
panic(err)
}
defer resp.Body.Close()
body, _ := io.ReadAll(resp.Body)
if resp.StatusCode >= 400 {
fmt.Fprintf(os.Stderr, "HTTP %d: %s\n", resp.StatusCode, body)
os.Exit(1)
}
var payload map[string]any
if err := json.Unmarshal(body, &payload); err != nil {
panic(err)
}
fmt.Println("meta:", payload["meta"])
data, _ := payload["data"].([]any)
for i, item := range data {
if i >= 10 {
break
}
event, _ := item.(map[string]any)
fmt.Println(event["occurrence_time"], event["currency"], event["importance"], event["short_name"])
}
}import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
import java.time.Duration;
/** J — Importance explicitly set to all */
public class Example {
public static void main(String[] args) throws Exception {
HttpClient client = HttpClient.newBuilder()
.connectTimeout(Duration.ofSeconds(30))
.build();
HttpRequest request = HttpRequest.newBuilder()
.uri(URI.create("https://api.example.com/economic-events/filter?date=today&importance=all&lang=en"))
.timeout(Duration.ofSeconds(120))
.header("X-Api-Key", "YOUR_API_KEY")
.header("X-Subscription", "basic")
.header("Accept", "application/json")
.GET()
.build();
HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());
if (response.statusCode() >= 400) {
System.err.println("HTTP " + response.statusCode() + ": " + response.body());
System.exit(1);
}
System.out.println(response.body());
}
}importance=all disables the importance predicate.
K — Non-English language (plan permitting)
#!/usr/bin/env bash
# K — Non-English language (plan permitting)
set -euo pipefail
BASE_URL="https://api.example.com"
API_KEY="YOUR_API_KEY"
SUBSCRIPTION="pro"
curl -sS "${BASE_URL}/economic-events/filter?date=today&lang=de" \
-H "X-Api-Key: ${API_KEY}" \
-H "X-Subscription: ${SUBSCRIPTION}" \
-H "Accept: application/json" | jq .#!/usr/bin/env python3
"""K — Non-English language (plan permitting)"""
import json
import requests
BASE_URL = "https://api.example.com"
HEADERS = {
"X-Api-Key": "YOUR_API_KEY",
"X-Subscription": "pro",
"Accept": "application/json",
}
params = {
"date": "today",
"lang": "de",
}
response = requests.get(
f"{BASE_URL}/economic-events/filter",
headers=HEADERS,
params=params,
timeout=30,
)
payload = response.json() if response.content else {}
if response.status_code >= 400:
print("status:", response.status_code)
print(json.dumps(payload, indent=2, ensure_ascii=False))
raise SystemExit(1)
print("meta:", json.dumps(payload.get("meta"), indent=2, ensure_ascii=False))
for event in payload.get("data", [])[:10]:
print(
f"{event.get('occurrence_time')} | {event.get('currency')} | "
f"{event.get('importance')} | {event.get('short_name')} | "
f"actual={event.get('actual')} forecast={event.get('forecast')}"
)/**
* K — Non-English language (plan permitting)
*/
const BASE_URL = "https://api.example.com";
const HEADERS = {
"X-Api-Key": "YOUR_API_KEY",
"X-Subscription": "pro",
Accept: "application/json",
};
async function main() {
const url = new URL(`${BASE_URL}/economic-events/filter`);
url.searchParams.set("date", "today");
url.searchParams.set("lang", "de");
const response = await fetch(url, { headers: HEADERS });
const payload = await response.json();
if (!response.ok) {
throw new Error(`HTTP ${response.status}: ${JSON.stringify(payload)}`);
}
console.log("meta:", payload.meta);
for (const event of (payload.data || []).slice(0, 10)) {
console.log(
event.occurrence_time,
event.currency,
event.importance,
event.short_name,
"actual=",
event.actual,
"forecast=",
event.forecast
);
}
}
main().catch((err) => {
console.error(err);
process.exit(1);
});<?php
declare(strict_types=1);
/** K — Non-English language (plan permitting) */
$baseUrl = 'https://api.example.com';
$headers = [
'X-Api-Key: YOUR_API_KEY',
'X-Subscription: pro',
'Accept: application/json',
];
$query = http_build_query([
'date' => 'today',
'lang' => 'de',
]);
$ch = curl_init($baseUrl . '/economic-events/filter' . ($query !== '' ? '?' . $query : ''));
curl_setopt_array($ch, [
CURLOPT_HTTPHEADER => $headers,
CURLOPT_RETURNTRANSFER => true,
CURLOPT_TIMEOUT => 30,
]);
$raw = curl_exec($ch);
$status = (int) curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);
$payload = json_decode((string) $raw, true);
if ($status >= 400) {
fwrite(STDERR, "HTTP {$status}: {$raw}\n");
exit(1);
}
echo "meta: " . json_encode($payload['meta'] ?? null, JSON_PRETTY_PRINT | JSON_UNESCAPED_UNICODE) . PHP_EOL;
foreach (array_slice($payload['data'] ?? [], 0, 10) as $event) {
echo sprintf(
"%s | %s | %s | %s | actual=%s forecast=%s\n",
$event['occurrence_time'] ?? '',
$event['currency'] ?? '',
$event['importance'] ?? '',
$event['short_name'] ?? '',
$event['actual'] ?? 'null',
$event['forecast'] ?? 'null'
);
}package main
// K — Non-English language (plan permitting)
import (
"encoding/json"
"fmt"
"io"
"net/http"
"net/url"
"os"
"time"
)
func main() {
q := url.Values{}
q.Set("date", "today")
q.Set("lang", "de")
req, err := http.NewRequest(http.MethodGet, "https://api.example.com/economic-events/filter?"+q.Encode(), nil)
if err != nil {
panic(err)
}
req.Header.Set("X-Api-Key", "YOUR_API_KEY")
req.Header.Set("X-Subscription", "pro")
req.Header.Set("Accept", "application/json")
client := &http.Client{Timeout: 30 * time.Second}
resp, err := client.Do(req)
if err != nil {
panic(err)
}
defer resp.Body.Close()
body, _ := io.ReadAll(resp.Body)
if resp.StatusCode >= 400 {
fmt.Fprintf(os.Stderr, "HTTP %d: %s\n", resp.StatusCode, body)
os.Exit(1)
}
var payload map[string]any
if err := json.Unmarshal(body, &payload); err != nil {
panic(err)
}
fmt.Println("meta:", payload["meta"])
data, _ := payload["data"].([]any)
for i, item := range data {
if i >= 10 {
break
}
event, _ := item.(map[string]any)
fmt.Println(event["occurrence_time"], event["currency"], event["importance"], event["short_name"])
}
}import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
import java.time.Duration;
/** K — Non-English language (plan permitting) */
public class Example {
public static void main(String[] args) throws Exception {
HttpClient client = HttpClient.newBuilder()
.connectTimeout(Duration.ofSeconds(30))
.build();
HttpRequest request = HttpRequest.newBuilder()
.uri(URI.create("https://api.example.com/economic-events/filter?date=today&lang=de"))
.timeout(Duration.ofSeconds(120))
.header("X-Api-Key", "YOUR_API_KEY")
.header("X-Subscription", "pro")
.header("Accept", "application/json")
.GET()
.build();
HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());
if (response.statusCode() >= 400) {
System.err.println("HTTP " + response.statusCode() + ": " + response.body());
System.exit(1);
}
System.out.println(response.body());
}
}L — Pro multi-language request (max 5 codes)
#!/usr/bin/env bash
# L — Pro multi-language request (max 5 codes)
set -euo pipefail
BASE_URL="https://api.example.com"
API_KEY="YOUR_API_KEY"
SUBSCRIPTION="pro"
curl -sS "${BASE_URL}/economic-events/filter?date=current_week¤cy=EUR&lang=en%2Cde%2Cfr%2Cit%2Ces" \
-H "X-Api-Key: ${API_KEY}" \
-H "X-Subscription: ${SUBSCRIPTION}" \
-H "Accept: application/json" | jq .#!/usr/bin/env python3
"""L — Pro multi-language request (max 5 codes)"""
import json
import requests
BASE_URL = "https://api.example.com"
HEADERS = {
"X-Api-Key": "YOUR_API_KEY",
"X-Subscription": "pro",
"Accept": "application/json",
}
params = {
"date": "current_week",
"currency": "EUR",
"lang": "en,de,fr,it,es",
}
response = requests.get(
f"{BASE_URL}/economic-events/filter",
headers=HEADERS,
params=params,
timeout=30,
)
payload = response.json() if response.content else {}
if response.status_code >= 400:
print("status:", response.status_code)
print(json.dumps(payload, indent=2, ensure_ascii=False))
raise SystemExit(1)
print("meta:", json.dumps(payload.get("meta"), indent=2, ensure_ascii=False))
for event in payload.get("data", [])[:10]:
print(
f"{event.get('occurrence_time')} | {event.get('currency')} | "
f"{event.get('importance')} | {event.get('short_name')} | "
f"actual={event.get('actual')} forecast={event.get('forecast')}"
)/**
* L — Pro multi-language request (max 5 codes)
*/
const BASE_URL = "https://api.example.com";
const HEADERS = {
"X-Api-Key": "YOUR_API_KEY",
"X-Subscription": "pro",
Accept: "application/json",
};
async function main() {
const url = new URL(`${BASE_URL}/economic-events/filter`);
url.searchParams.set("date", "current_week");
url.searchParams.set("currency", "EUR");
url.searchParams.set("lang", "en,de,fr,it,es");
const response = await fetch(url, { headers: HEADERS });
const payload = await response.json();
if (!response.ok) {
throw new Error(`HTTP ${response.status}: ${JSON.stringify(payload)}`);
}
console.log("meta:", payload.meta);
for (const event of (payload.data || []).slice(0, 10)) {
console.log(
event.occurrence_time,
event.currency,
event.importance,
event.short_name,
"actual=",
event.actual,
"forecast=",
event.forecast
);
}
}
main().catch((err) => {
console.error(err);
process.exit(1);
});<?php
declare(strict_types=1);
/** L — Pro multi-language request (max 5 codes) */
$baseUrl = 'https://api.example.com';
$headers = [
'X-Api-Key: YOUR_API_KEY',
'X-Subscription: pro',
'Accept: application/json',
];
$query = http_build_query([
'date' => 'current_week',
'currency' => 'EUR',
'lang' => 'en,de,fr,it,es',
]);
$ch = curl_init($baseUrl . '/economic-events/filter' . ($query !== '' ? '?' . $query : ''));
curl_setopt_array($ch, [
CURLOPT_HTTPHEADER => $headers,
CURLOPT_RETURNTRANSFER => true,
CURLOPT_TIMEOUT => 30,
]);
$raw = curl_exec($ch);
$status = (int) curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);
$payload = json_decode((string) $raw, true);
if ($status >= 400) {
fwrite(STDERR, "HTTP {$status}: {$raw}\n");
exit(1);
}
echo "meta: " . json_encode($payload['meta'] ?? null, JSON_PRETTY_PRINT | JSON_UNESCAPED_UNICODE) . PHP_EOL;
foreach (array_slice($payload['data'] ?? [], 0, 10) as $event) {
echo sprintf(
"%s | %s | %s | %s | actual=%s forecast=%s\n",
$event['occurrence_time'] ?? '',
$event['currency'] ?? '',
$event['importance'] ?? '',
$event['short_name'] ?? '',
$event['actual'] ?? 'null',
$event['forecast'] ?? 'null'
);
}package main
// L — Pro multi-language request (max 5 codes)
import (
"encoding/json"
"fmt"
"io"
"net/http"
"net/url"
"os"
"time"
)
func main() {
q := url.Values{}
q.Set("date", "current_week")
q.Set("currency", "EUR")
q.Set("lang", "en,de,fr,it,es")
req, err := http.NewRequest(http.MethodGet, "https://api.example.com/economic-events/filter?"+q.Encode(), nil)
if err != nil {
panic(err)
}
req.Header.Set("X-Api-Key", "YOUR_API_KEY")
req.Header.Set("X-Subscription", "pro")
req.Header.Set("Accept", "application/json")
client := &http.Client{Timeout: 30 * time.Second}
resp, err := client.Do(req)
if err != nil {
panic(err)
}
defer resp.Body.Close()
body, _ := io.ReadAll(resp.Body)
if resp.StatusCode >= 400 {
fmt.Fprintf(os.Stderr, "HTTP %d: %s\n", resp.StatusCode, body)
os.Exit(1)
}
var payload map[string]any
if err := json.Unmarshal(body, &payload); err != nil {
panic(err)
}
fmt.Println("meta:", payload["meta"])
data, _ := payload["data"].([]any)
for i, item := range data {
if i >= 10 {
break
}
event, _ := item.(map[string]any)
fmt.Println(event["occurrence_time"], event["currency"], event["importance"], event["short_name"])
}
}import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
import java.time.Duration;
/** L — Pro multi-language request (max 5 codes) */
public class Example {
public static void main(String[] args) throws Exception {
HttpClient client = HttpClient.newBuilder()
.connectTimeout(Duration.ofSeconds(30))
.build();
HttpRequest request = HttpRequest.newBuilder()
.uri(URI.create("https://api.example.com/economic-events/filter?date=current_week¤cy=EUR&lang=en,de,fr,it,es"))
.timeout(Duration.ofSeconds(120))
.header("X-Api-Key", "YOUR_API_KEY")
.header("X-Subscription", "pro")
.header("Accept", "application/json")
.GET()
.build();
HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());
if (response.statusCode() >= 400) {
System.err.println("HTTP " + response.statusCode() + ": " + response.body());
System.exit(1);
}
System.out.println(response.body());
}
}More than five codes on Pro returns HTTP 403.
M — Language outside plan (expect 403)
#!/usr/bin/env bash
# M — Language outside plan (expect 403)
set -euo pipefail
BASE_URL="https://api.example.com"
API_KEY="YOUR_API_KEY"
SUBSCRIPTION="basic"
curl -sS "${BASE_URL}/economic-events/filter?date=today&lang=de" \
-H "X-Api-Key: ${API_KEY}" \
-H "X-Subscription: ${SUBSCRIPTION}" \
-H "Accept: application/json" | jq .#!/usr/bin/env python3
"""M — Language outside plan (expect 403)"""
import json
import requests
BASE_URL = "https://api.example.com"
HEADERS = {
"X-Api-Key": "YOUR_API_KEY",
"X-Subscription": "basic",
"Accept": "application/json",
}
params = {
"date": "today",
"lang": "de",
}
response = requests.get(
f"{BASE_URL}/economic-events/filter",
headers=HEADERS,
params=params,
timeout=30,
)
payload = response.json() if response.content else {}
if response.status_code >= 400:
print("status:", response.status_code)
print(json.dumps(payload, indent=2, ensure_ascii=False))
raise SystemExit(1)
print("status:", response.status_code)
print(json.dumps(payload, indent=2, ensure_ascii=False))/**
* M — Language outside plan (expect 403)
*/
const BASE_URL = "https://api.example.com";
const HEADERS = {
"X-Api-Key": "YOUR_API_KEY",
"X-Subscription": "basic",
Accept: "application/json",
};
async function main() {
const url = new URL(`${BASE_URL}/economic-events/filter`);
url.searchParams.set("date", "today");
url.searchParams.set("lang", "de");
const response = await fetch(url, { headers: HEADERS });
const payload = await response.json();
if (!response.ok) {
throw new Error(`HTTP ${response.status}: ${JSON.stringify(payload)}`);
}
console.log("status:", response.status);
console.log(JSON.stringify(payload, null, 2));
}
main().catch((err) => {
console.error(err);
process.exit(1);
});<?php
declare(strict_types=1);
/** M — Language outside plan (expect 403) */
$baseUrl = 'https://api.example.com';
$headers = [
'X-Api-Key: YOUR_API_KEY',
'X-Subscription: basic',
'Accept: application/json',
];
$query = http_build_query([
'date' => 'today',
'lang' => 'de',
]);
$ch = curl_init($baseUrl . '/economic-events/filter' . ($query !== '' ? '?' . $query : ''));
curl_setopt_array($ch, [
CURLOPT_HTTPHEADER => $headers,
CURLOPT_RETURNTRANSFER => true,
CURLOPT_TIMEOUT => 30,
]);
$raw = curl_exec($ch);
$status = (int) curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);
$payload = json_decode((string) $raw, true);
if ($status >= 400) {
fwrite(STDERR, "HTTP {$status}: {$raw}\n");
exit(1);
}
echo "status: {$status}" . PHP_EOL;
echo json_encode($payload, JSON_PRETTY_PRINT | JSON_UNESCAPED_UNICODE) . PHP_EOL;package main
// M — Language outside plan (expect 403)
import (
"encoding/json"
"fmt"
"io"
"net/http"
"net/url"
"os"
"time"
)
func main() {
q := url.Values{}
q.Set("date", "today")
q.Set("lang", "de")
req, err := http.NewRequest(http.MethodGet, "https://api.example.com/economic-events/filter?"+q.Encode(), nil)
if err != nil {
panic(err)
}
req.Header.Set("X-Api-Key", "YOUR_API_KEY")
req.Header.Set("X-Subscription", "basic")
req.Header.Set("Accept", "application/json")
client := &http.Client{Timeout: 30 * time.Second}
resp, err := client.Do(req)
if err != nil {
panic(err)
}
defer resp.Body.Close()
body, _ := io.ReadAll(resp.Body)
if resp.StatusCode >= 400 {
fmt.Fprintf(os.Stderr, "HTTP %d: %s\n", resp.StatusCode, body)
os.Exit(1)
}
var payload any
if err := json.Unmarshal(body, &payload); err != nil {
panic(err)
}
enc := json.NewEncoder(os.Stdout)
enc.SetIndent("", " ")
_ = enc.Encode(payload)
}import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
import java.time.Duration;
/** M — Language outside plan (expect 403) */
public class Example {
public static void main(String[] args) throws Exception {
HttpClient client = HttpClient.newBuilder()
.connectTimeout(Duration.ofSeconds(30))
.build();
HttpRequest request = HttpRequest.newBuilder()
.uri(URI.create("https://api.example.com/economic-events/filter?date=today&lang=de"))
.timeout(Duration.ofSeconds(120))
.header("X-Api-Key", "YOUR_API_KEY")
.header("X-Subscription", "basic")
.header("Accept", "application/json")
.GET()
.build();
HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());
if (response.statusCode() >= 400) {
System.err.println("HTTP " + response.statusCode() + ": " + response.body());
System.exit(1);
}
System.out.println(response.body());
}
}{"detail":"Your plan allows only English language"}N — Cursor pagination loop
#!/usr/bin/env python3
"""Cursor pagination loop for /economic-events/filter."""
import requests
BASE_URL = "https://api.example.com"
HEADERS = {
"X-Api-Key": "YOUR_API_KEY",
"X-Subscription": "pro",
"Accept": "application/json",
}
params = {
"date_from": "2026-01-01",
"date_to": "2026-03-31",
"importance": "high",
"lang": "en",
}
all_rows = []
cursor = None
while True:
page_params = dict(params)
if cursor:
page_params["cursor"] = cursor
response = requests.get(
f"{BASE_URL}/economic-events/filter",
headers=HEADERS,
params=page_params,
timeout=30,
)
response.raise_for_status()
body = response.json()
all_rows.extend(body.get("data", []))
cursor = body.get("meta", {}).get("next_cursor")
if not cursor:
break
print("total rows:", len(all_rows))/**
* Cursor pagination loop for /economic-events/filter.
*/
const BASE_URL = "https://api.example.com";
const HEADERS = {
"X-Api-Key": "YOUR_API_KEY",
"X-Subscription": "pro",
Accept: "application/json",
};
async function fetchAllHighImpact(from, to) {
const rows = [];
let cursor = null;
while (true) {
const url = new URL(`${BASE_URL}/economic-events/filter`);
url.searchParams.set("date_from", from);
url.searchParams.set("date_to", to);
url.searchParams.set("importance", "high");
url.searchParams.set("lang", "en");
if (cursor) url.searchParams.set("cursor", cursor);
const response = await fetch(url, { headers: HEADERS });
const body = await response.json();
if (!response.ok) {
throw new Error(`HTTP ${response.status}: ${JSON.stringify(body)}`);
}
rows.push(...(body.data || []));
cursor = body.meta?.next_cursor || null;
if (!cursor) break;
}
return rows;
}
fetchAllHighImpact("2026-01-01", "2026-03-31")
.then((rows) => console.log("total rows:", rows.length))
.catch((err) => {
console.error(err);
process.exit(1);
});<?php
declare(strict_types=1);
/** Cursor pagination loop for /economic-events/filter. */
$baseUrl = 'https://api.example.com';
$headers = [
'X-Api-Key: YOUR_API_KEY',
'X-Subscription: pro',
'Accept: application/json',
];
$params = [
'date_from' => '2026-01-01',
'date_to' => '2026-03-31',
'importance' => 'high',
'lang' => 'en',
];
$all = [];
$cursor = null;
do {
if ($cursor) {
$params['cursor'] = $cursor;
}
$ch = curl_init($baseUrl . '/economic-events/filter?' . http_build_query($params));
curl_setopt_array($ch, [
CURLOPT_HTTPHEADER => $headers,
CURLOPT_RETURNTRANSFER => true,
CURLOPT_TIMEOUT => 30,
]);
$raw = curl_exec($ch);
$status = (int) curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);
$body = json_decode((string) $raw, true);
if ($status >= 400 || !is_array($body)) {
throw new RuntimeException("HTTP {$status}: {$raw}");
}
$all = array_merge($all, $body['data'] ?? []);
$cursor = $body['meta']['next_cursor'] ?? null;
} while ($cursor);
echo 'total rows: ' . count($all) . PHP_EOL;package main
// Cursor pagination loop for /economic-events/filter.
import (
"encoding/json"
"fmt"
"io"
"net/http"
"net/url"
"os"
"time"
)
func main() {
headers := map[string]string{
"X-Api-Key": "YOUR_API_KEY",
"X-Subscription": "pro",
"Accept": "application/json",
}
var all []any
cursor := ""
client := &http.Client{Timeout: 30 * time.Second}
for {
q := url.Values{}
q.Set("date_from", "2026-01-01")
q.Set("date_to", "2026-03-31")
q.Set("importance", "high")
q.Set("lang", "en")
if cursor != "" {
q.Set("cursor", cursor)
}
req, err := http.NewRequest(http.MethodGet, "https://api.example.com/economic-events/filter?"+q.Encode(), nil)
if err != nil {
panic(err)
}
for k, v := range headers {
req.Header.Set(k, v)
}
resp, err := client.Do(req)
if err != nil {
panic(err)
}
body, _ := io.ReadAll(resp.Body)
resp.Body.Close()
if resp.StatusCode >= 400 {
fmt.Fprintf(os.Stderr, "HTTP %d: %s\n", resp.StatusCode, body)
os.Exit(1)
}
var payload map[string]any
if err := json.Unmarshal(body, &payload); err != nil {
panic(err)
}
if data, ok := payload["data"].([]any); ok {
all = append(all, data...)
}
meta, _ := payload["meta"].(map[string]any)
next, _ := meta["next_cursor"].(string)
if next == "" {
break
}
cursor = next
}
fmt.Println("total rows:", len(all))
}#!/usr/bin/env bash
# Manual pagination with next_cursor (Pro example)
set -euo pipefail
BASE_URL="https://api.example.com"
API_KEY="YOUR_API_KEY"
SUBSCRIPTION="pro"
CURSOR=""
while true; do
URL="${BASE_URL}/economic-events/filter?date_from=2026-01-01&date_to=2026-03-31&importance=high&lang=en"
if [[ -n "${CURSOR}" ]]; then
URL="${URL}&cursor=${CURSOR}"
fi
PAGE="$(curl -sS "${URL}" \
-H "X-Api-Key: ${API_KEY}" \
-H "X-Subscription: ${SUBSCRIPTION}" \
-H "Accept: application/json")"
echo "${PAGE}" | jq '{returned: .meta.returned, next_cursor: .meta.next_cursor, sample: .data[0:2]}'
CURSOR="$(echo "${PAGE}" | jq -r '.meta.next_cursor // empty')"
[[ -z "${CURSOR}" ]] && break
doneimport java.net.URI;
import java.net.URLEncoder;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
import java.nio.charset.StandardCharsets;
import java.time.Duration;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
/** Cursor pagination loop for /economic-events/filter. */
public class Example {
public static void main(String[] args) throws Exception {
HttpClient client = HttpClient.newBuilder()
.connectTimeout(Duration.ofSeconds(30))
.build();
String cursor = null;
int pages = 0;
while (true) {
StringBuilder q = new StringBuilder();
q.append("date_from=2026-01-01&date_to=2026-03-31&importance=high&lang=en");
if (cursor != null) {
q.append("&cursor=").append(URLEncoder.encode(cursor, StandardCharsets.UTF_8));
}
HttpRequest request = HttpRequest.newBuilder()
.uri(URI.create("https://api.example.com/economic-events/filter?" + q))
.timeout(Duration.ofSeconds(30))
.header("X-Api-Key", "YOUR_API_KEY")
.header("X-Subscription", "pro")
.header("Accept", "application/json")
.GET()
.build();
HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());
if (response.statusCode() >= 400) {
System.err.println("HTTP " + response.statusCode() + ": " + response.body());
System.exit(1);
}
pages++;
String body = response.body();
Matcher mCursor = Pattern.compile("\"next_cursor\"\\s*:\\s*\"([^\"]+)\"").matcher(body);
if (mCursor.find()) {
cursor = mCursor.group(1);
} else {
break;
}
}
System.out.println("pages fetched: " + pages);
}
}Keep filters identical across pages. Changing country_id or currency while reusing an old cursor can create gaps or duplicates.
O — Combined power query
#!/usr/bin/env bash
# Combined major FX week query
set -euo pipefail
BASE_URL="https://api.example.com"
API_KEY="YOUR_API_KEY"
SUBSCRIPTION="basic"
curl -sS "${BASE_URL}/economic-events/filter?date_from=2026-08-15&date_to=2026-08-22&country_id=5%2C4%2C72¤cy=USD%2CEUR%2CGBP&importance=high&lang=en" \
-H "X-Api-Key: ${API_KEY}" \
-H "X-Subscription: ${SUBSCRIPTION}" \
-H "Accept: application/json" | jq .#!/usr/bin/env python3
"""Combined major FX week query"""
import json
import requests
BASE_URL = "https://api.example.com"
HEADERS = {
"X-Api-Key": "YOUR_API_KEY",
"X-Subscription": "basic",
"Accept": "application/json",
}
params = {
"date_from": "2026-08-15",
"date_to": "2026-08-22",
"country_id": "5,4,72",
"currency": "USD,EUR,GBP",
"importance": "high",
"lang": "en",
}
response = requests.get(
f"{BASE_URL}/economic-events/filter",
headers=HEADERS,
params=params,
timeout=30,
)
payload = response.json() if response.content else {}
if response.status_code >= 400:
print("status:", response.status_code)
print(json.dumps(payload, indent=2, ensure_ascii=False))
raise SystemExit(1)
print("meta:", json.dumps(payload.get("meta"), indent=2, ensure_ascii=False))
for event in payload.get("data", [])[:10]:
print(
f"{event.get('occurrence_time')} | {event.get('currency')} | "
f"{event.get('importance')} | {event.get('short_name')} | "
f"actual={event.get('actual')} forecast={event.get('forecast')}"
)/**
* Combined major FX week query
*/
const BASE_URL = "https://api.example.com";
const HEADERS = {
"X-Api-Key": "YOUR_API_KEY",
"X-Subscription": "basic",
Accept: "application/json",
};
async function main() {
const url = new URL(`${BASE_URL}/economic-events/filter`);
url.searchParams.set("date_from", "2026-08-15");
url.searchParams.set("date_to", "2026-08-22");
url.searchParams.set("country_id", "5,4,72");
url.searchParams.set("currency", "USD,EUR,GBP");
url.searchParams.set("importance", "high");
url.searchParams.set("lang", "en");
const response = await fetch(url, { headers: HEADERS });
const payload = await response.json();
if (!response.ok) {
throw new Error(`HTTP ${response.status}: ${JSON.stringify(payload)}`);
}
console.log("meta:", payload.meta);
for (const event of (payload.data || []).slice(0, 10)) {
console.log(
event.occurrence_time,
event.currency,
event.importance,
event.short_name,
"actual=",
event.actual,
"forecast=",
event.forecast
);
}
}
main().catch((err) => {
console.error(err);
process.exit(1);
});<?php
declare(strict_types=1);
/** Combined major FX week query */
$baseUrl = 'https://api.example.com';
$headers = [
'X-Api-Key: YOUR_API_KEY',
'X-Subscription: basic',
'Accept: application/json',
];
$query = http_build_query([
'date_from' => '2026-08-15',
'date_to' => '2026-08-22',
'country_id' => '5,4,72',
'currency' => 'USD,EUR,GBP',
'importance' => 'high',
'lang' => 'en',
]);
$ch = curl_init($baseUrl . '/economic-events/filter' . ($query !== '' ? '?' . $query : ''));
curl_setopt_array($ch, [
CURLOPT_HTTPHEADER => $headers,
CURLOPT_RETURNTRANSFER => true,
CURLOPT_TIMEOUT => 30,
]);
$raw = curl_exec($ch);
$status = (int) curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);
$payload = json_decode((string) $raw, true);
if ($status >= 400) {
fwrite(STDERR, "HTTP {$status}: {$raw}\n");
exit(1);
}
echo "meta: " . json_encode($payload['meta'] ?? null, JSON_PRETTY_PRINT | JSON_UNESCAPED_UNICODE) . PHP_EOL;
foreach (array_slice($payload['data'] ?? [], 0, 10) as $event) {
echo sprintf(
"%s | %s | %s | %s | actual=%s forecast=%s\n",
$event['occurrence_time'] ?? '',
$event['currency'] ?? '',
$event['importance'] ?? '',
$event['short_name'] ?? '',
$event['actual'] ?? 'null',
$event['forecast'] ?? 'null'
);
}package main
// Combined major FX week query
import (
"encoding/json"
"fmt"
"io"
"net/http"
"net/url"
"os"
"time"
)
func main() {
q := url.Values{}
q.Set("date_from", "2026-08-15")
q.Set("date_to", "2026-08-22")
q.Set("country_id", "5,4,72")
q.Set("currency", "USD,EUR,GBP")
q.Set("importance", "high")
q.Set("lang", "en")
req, err := http.NewRequest(http.MethodGet, "https://api.example.com/economic-events/filter?"+q.Encode(), nil)
if err != nil {
panic(err)
}
req.Header.Set("X-Api-Key", "YOUR_API_KEY")
req.Header.Set("X-Subscription", "basic")
req.Header.Set("Accept", "application/json")
client := &http.Client{Timeout: 30 * time.Second}
resp, err := client.Do(req)
if err != nil {
panic(err)
}
defer resp.Body.Close()
body, _ := io.ReadAll(resp.Body)
if resp.StatusCode >= 400 {
fmt.Fprintf(os.Stderr, "HTTP %d: %s\n", resp.StatusCode, body)
os.Exit(1)
}
var payload map[string]any
if err := json.Unmarshal(body, &payload); err != nil {
panic(err)
}
fmt.Println("meta:", payload["meta"])
data, _ := payload["data"].([]any)
for i, item := range data {
if i >= 10 {
break
}
event, _ := item.(map[string]any)
fmt.Println(event["occurrence_time"], event["currency"], event["importance"], event["short_name"])
}
}import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
import java.time.Duration;
/** Combined major FX week query */
public class Example {
public static void main(String[] args) throws Exception {
HttpClient client = HttpClient.newBuilder()
.connectTimeout(Duration.ofSeconds(30))
.build();
HttpRequest request = HttpRequest.newBuilder()
.uri(URI.create("https://api.example.com/economic-events/filter?date_from=2026-08-15&date_to=2026-08-22&country_id=5,4,72¤cy=USD,EUR,GBP&importance=high&lang=en"))
.timeout(Duration.ofSeconds(120))
.header("X-Api-Key", "YOUR_API_KEY")
.header("X-Subscription", "basic")
.header("Accept", "application/json")
.GET()
.build();
HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());
if (response.statusCode() >= 400) {
System.err.println("HTTP " + response.statusCode() + ": " + response.body());
System.exit(1);
}
System.out.println(response.body());
}
}Typical “major FX week” query for US, UK, and Euro Zone high-impact events.
P — Invalid date shortcut (400)
#!/usr/bin/env bash
# Invalid date shortcut (expect 400)
set -euo pipefail
BASE_URL="https://api.example.com"
API_KEY="YOUR_API_KEY"
SUBSCRIPTION="basic"
curl -sS "${BASE_URL}/economic-events/filter?date=last_month&lang=en" \
-H "X-Api-Key: ${API_KEY}" \
-H "X-Subscription: ${SUBSCRIPTION}" \
-H "Accept: application/json" | jq .#!/usr/bin/env python3
"""Invalid date shortcut (expect 400)"""
import json
import requests
BASE_URL = "https://api.example.com"
HEADERS = {
"X-Api-Key": "YOUR_API_KEY",
"X-Subscription": "basic",
"Accept": "application/json",
}
params = {
"date": "last_month",
"lang": "en",
}
response = requests.get(
f"{BASE_URL}/economic-events/filter",
headers=HEADERS,
params=params,
timeout=30,
)
payload = response.json() if response.content else {}
if response.status_code >= 400:
print("status:", response.status_code)
print(json.dumps(payload, indent=2, ensure_ascii=False))
raise SystemExit(1)
print("status:", response.status_code)
print(json.dumps(payload, indent=2, ensure_ascii=False))/**
* Invalid date shortcut (expect 400)
*/
const BASE_URL = "https://api.example.com";
const HEADERS = {
"X-Api-Key": "YOUR_API_KEY",
"X-Subscription": "basic",
Accept: "application/json",
};
async function main() {
const url = new URL(`${BASE_URL}/economic-events/filter`);
url.searchParams.set("date", "last_month");
url.searchParams.set("lang", "en");
const response = await fetch(url, { headers: HEADERS });
const payload = await response.json();
if (!response.ok) {
throw new Error(`HTTP ${response.status}: ${JSON.stringify(payload)}`);
}
console.log("status:", response.status);
console.log(JSON.stringify(payload, null, 2));
}
main().catch((err) => {
console.error(err);
process.exit(1);
});<?php
declare(strict_types=1);
/** Invalid date shortcut (expect 400) */
$baseUrl = 'https://api.example.com';
$headers = [
'X-Api-Key: YOUR_API_KEY',
'X-Subscription: basic',
'Accept: application/json',
];
$query = http_build_query([
'date' => 'last_month',
'lang' => 'en',
]);
$ch = curl_init($baseUrl . '/economic-events/filter' . ($query !== '' ? '?' . $query : ''));
curl_setopt_array($ch, [
CURLOPT_HTTPHEADER => $headers,
CURLOPT_RETURNTRANSFER => true,
CURLOPT_TIMEOUT => 30,
]);
$raw = curl_exec($ch);
$status = (int) curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);
$payload = json_decode((string) $raw, true);
if ($status >= 400) {
fwrite(STDERR, "HTTP {$status}: {$raw}\n");
exit(1);
}
echo "status: {$status}" . PHP_EOL;
echo json_encode($payload, JSON_PRETTY_PRINT | JSON_UNESCAPED_UNICODE) . PHP_EOL;package main
// Invalid date shortcut (expect 400)
import (
"encoding/json"
"fmt"
"io"
"net/http"
"net/url"
"os"
"time"
)
func main() {
q := url.Values{}
q.Set("date", "last_month")
q.Set("lang", "en")
req, err := http.NewRequest(http.MethodGet, "https://api.example.com/economic-events/filter?"+q.Encode(), nil)
if err != nil {
panic(err)
}
req.Header.Set("X-Api-Key", "YOUR_API_KEY")
req.Header.Set("X-Subscription", "basic")
req.Header.Set("Accept", "application/json")
client := &http.Client{Timeout: 30 * time.Second}
resp, err := client.Do(req)
if err != nil {
panic(err)
}
defer resp.Body.Close()
body, _ := io.ReadAll(resp.Body)
if resp.StatusCode >= 400 {
fmt.Fprintf(os.Stderr, "HTTP %d: %s\n", resp.StatusCode, body)
os.Exit(1)
}
var payload any
if err := json.Unmarshal(body, &payload); err != nil {
panic(err)
}
enc := json.NewEncoder(os.Stdout)
enc.SetIndent("", " ")
_ = enc.Encode(payload)
}import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
import java.time.Duration;
/** Invalid date shortcut (expect 400) */
public class Example {
public static void main(String[] args) throws Exception {
HttpClient client = HttpClient.newBuilder()
.connectTimeout(Duration.ofSeconds(30))
.build();
HttpRequest request = HttpRequest.newBuilder()
.uri(URI.create("https://api.example.com/economic-events/filter?date=last_month&lang=en"))
.timeout(Duration.ofSeconds(120))
.header("X-Api-Key", "YOUR_API_KEY")
.header("X-Subscription", "basic")
.header("Accept", "application/json")
.GET()
.build();
HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());
if (response.statusCode() >= 400) {
System.err.println("HTTP " + response.statusCode() + ": " + response.body());
System.exit(1);
}
System.out.println(response.body());
}
}Allowed values: YYYY-MM-DD or today / yesterday / current_week / previous_week / next_week.
Q — Invalid cursor (400)
#!/usr/bin/env bash
# Invalid cursor (expect 400)
set -euo pipefail
BASE_URL="https://api.example.com"
API_KEY="YOUR_API_KEY"
SUBSCRIPTION="basic"
curl -sS "${BASE_URL}/economic-events/filter?date=today&lang=en&cursor=not-a-real-cursor" \
-H "X-Api-Key: ${API_KEY}" \
-H "X-Subscription: ${SUBSCRIPTION}" \
-H "Accept: application/json" | jq .#!/usr/bin/env python3
"""Invalid cursor (expect 400)"""
import json
import requests
BASE_URL = "https://api.example.com"
HEADERS = {
"X-Api-Key": "YOUR_API_KEY",
"X-Subscription": "basic",
"Accept": "application/json",
}
params = {
"date": "today",
"lang": "en",
"cursor": "not-a-real-cursor",
}
response = requests.get(
f"{BASE_URL}/economic-events/filter",
headers=HEADERS,
params=params,
timeout=30,
)
payload = response.json() if response.content else {}
if response.status_code >= 400:
print("status:", response.status_code)
print(json.dumps(payload, indent=2, ensure_ascii=False))
raise SystemExit(1)
print("status:", response.status_code)
print(json.dumps(payload, indent=2, ensure_ascii=False))/**
* Invalid cursor (expect 400)
*/
const BASE_URL = "https://api.example.com";
const HEADERS = {
"X-Api-Key": "YOUR_API_KEY",
"X-Subscription": "basic",
Accept: "application/json",
};
async function main() {
const url = new URL(`${BASE_URL}/economic-events/filter`);
url.searchParams.set("date", "today");
url.searchParams.set("lang", "en");
url.searchParams.set("cursor", "not-a-real-cursor");
const response = await fetch(url, { headers: HEADERS });
const payload = await response.json();
if (!response.ok) {
throw new Error(`HTTP ${response.status}: ${JSON.stringify(payload)}`);
}
console.log("status:", response.status);
console.log(JSON.stringify(payload, null, 2));
}
main().catch((err) => {
console.error(err);
process.exit(1);
});<?php
declare(strict_types=1);
/** Invalid cursor (expect 400) */
$baseUrl = 'https://api.example.com';
$headers = [
'X-Api-Key: YOUR_API_KEY',
'X-Subscription: basic',
'Accept: application/json',
];
$query = http_build_query([
'date' => 'today',
'lang' => 'en',
'cursor' => 'not-a-real-cursor',
]);
$ch = curl_init($baseUrl . '/economic-events/filter' . ($query !== '' ? '?' . $query : ''));
curl_setopt_array($ch, [
CURLOPT_HTTPHEADER => $headers,
CURLOPT_RETURNTRANSFER => true,
CURLOPT_TIMEOUT => 30,
]);
$raw = curl_exec($ch);
$status = (int) curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);
$payload = json_decode((string) $raw, true);
if ($status >= 400) {
fwrite(STDERR, "HTTP {$status}: {$raw}\n");
exit(1);
}
echo "status: {$status}" . PHP_EOL;
echo json_encode($payload, JSON_PRETTY_PRINT | JSON_UNESCAPED_UNICODE) . PHP_EOL;package main
// Invalid cursor (expect 400)
import (
"encoding/json"
"fmt"
"io"
"net/http"
"net/url"
"os"
"time"
)
func main() {
q := url.Values{}
q.Set("date", "today")
q.Set("lang", "en")
q.Set("cursor", "not-a-real-cursor")
req, err := http.NewRequest(http.MethodGet, "https://api.example.com/economic-events/filter?"+q.Encode(), nil)
if err != nil {
panic(err)
}
req.Header.Set("X-Api-Key", "YOUR_API_KEY")
req.Header.Set("X-Subscription", "basic")
req.Header.Set("Accept", "application/json")
client := &http.Client{Timeout: 30 * time.Second}
resp, err := client.Do(req)
if err != nil {
panic(err)
}
defer resp.Body.Close()
body, _ := io.ReadAll(resp.Body)
if resp.StatusCode >= 400 {
fmt.Fprintf(os.Stderr, "HTTP %d: %s\n", resp.StatusCode, body)
os.Exit(1)
}
var payload any
if err := json.Unmarshal(body, &payload); err != nil {
panic(err)
}
enc := json.NewEncoder(os.Stdout)
enc.SetIndent("", " ")
_ = enc.Encode(payload)
}import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
import java.time.Duration;
/** Invalid cursor (expect 400) */
public class Example {
public static void main(String[] args) throws Exception {
HttpClient client = HttpClient.newBuilder()
.connectTimeout(Duration.ofSeconds(30))
.build();
HttpRequest request = HttpRequest.newBuilder()
.uri(URI.create("https://api.example.com/economic-events/filter?date=today&lang=en&cursor=not-a-real-cursor"))
.timeout(Duration.ofSeconds(120))
.header("X-Api-Key", "YOUR_API_KEY")
.header("X-Subscription", "basic")
.header("Accept", "application/json")
.GET()
.build();
HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());
if (response.statusCode() >= 400) {
System.err.println("HTTP " + response.statusCode() + ": " + response.body());
System.exit(1);
}
System.out.println(response.body());
}
}5. Event release history — GET /economic-events/{event_id}/history
Past occurrences for one event series: dates, forecasts, and actuals.
Path parameters
| Parameter | Type | Description |
|---|---|---|
event_id |
integer | Stable event series ID from filter results |
Query parameters
| Parameter | Type | Default | Description |
|---|---|---|---|
lang |
string | en |
Language for meta labels |
limit |
integer | 24 |
1–200, capped by plan |
released_only |
boolean | false |
If true, only rows with a non-null actual |
Response shape
{
"meta": {
"api": "legacy",
"plan": "basic",
"lang": "en",
"event_id": 1057,
"event_name": "United States - JOLTS Job Openings",
"short_name": "JOLTS Job Openings",
"country_name": "United States",
"currency": "USD",
"importance": "high",
"unit": "M",
"returned": 12,
"limit": 12,
"cache": "miss"
},
"data": [
{
"occurrence_id": 90001,
"date": "2026-06-30",
"occurrence_time": "2026-06-30T14:00:00+00:00",
"actual": 7.594,
"forecast": 7.28,
"previous": 7.585
}
]
}History responses may be cached for about 10 minutes (meta.cache is hit or miss).
History examples
H1 — Default recent releases
#!/usr/bin/env bash
# Event history default sample
set -euo pipefail
BASE_URL="https://api.example.com"
API_KEY="YOUR_API_KEY"
SUBSCRIPTION="basic"
curl -sS "${BASE_URL}/economic-events/1057/history?limit=24&lang=en" \
-H "X-Api-Key: ${API_KEY}" \
-H "X-Subscription: ${SUBSCRIPTION}" \
-H "Accept: application/json" | jq .#!/usr/bin/env python3
"""Event history default sample"""
import json
import requests
BASE_URL = "https://api.example.com"
HEADERS = {
"X-Api-Key": "YOUR_API_KEY",
"X-Subscription": "basic",
"Accept": "application/json",
}
params = {
"limit": 24,
"lang": "en",
}
response = requests.get(
f"{BASE_URL}/economic-events/1057/history",
headers=HEADERS,
params=params,
timeout=30,
)
payload = response.json() if response.content else {}
if response.status_code >= 400:
print("status:", response.status_code)
print(json.dumps(payload, indent=2, ensure_ascii=False))
raise SystemExit(1)
meta = payload.get("meta", {})
print(meta.get("short_name"), "returned=", meta.get("returned"))
for row in payload.get("data", [])[:10]:
print(row.get("date"), "actual=", row.get("actual"), "forecast=", row.get("forecast"))/**
* Event history default sample
*/
const BASE_URL = "https://api.example.com";
const HEADERS = {
"X-Api-Key": "YOUR_API_KEY",
"X-Subscription": "basic",
Accept: "application/json",
};
async function main() {
const url = new URL(`${BASE_URL}/economic-events/1057/history`);
url.searchParams.set("limit", "24");
url.searchParams.set("lang", "en");
const response = await fetch(url, { headers: HEADERS });
const payload = await response.json();
if (!response.ok) {
throw new Error(`HTTP ${response.status}: ${JSON.stringify(payload)}`);
}
console.log(payload.meta.short_name, "returned=", payload.meta.returned);
for (const row of (payload.data || []).slice(0, 10)) {
console.log(row.date, "actual=", row.actual, "forecast=", row.forecast);
}
}
main().catch((err) => {
console.error(err);
process.exit(1);
});<?php
declare(strict_types=1);
/** Event history default sample */
$baseUrl = 'https://api.example.com';
$headers = [
'X-Api-Key: YOUR_API_KEY',
'X-Subscription: basic',
'Accept: application/json',
];
$query = http_build_query([
'limit' => 24,
'lang' => 'en',
]);
$ch = curl_init($baseUrl . '/economic-events/1057/history' . ($query !== '' ? '?' . $query : ''));
curl_setopt_array($ch, [
CURLOPT_HTTPHEADER => $headers,
CURLOPT_RETURNTRANSFER => true,
CURLOPT_TIMEOUT => 30,
]);
$raw = curl_exec($ch);
$status = (int) curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);
$payload = json_decode((string) $raw, true);
if ($status >= 400) {
fwrite(STDERR, "HTTP {$status}: {$raw}\n");
exit(1);
}
$meta = $payload['meta'] ?? [];
echo ($meta['short_name'] ?? '') . ' returned=' . ($meta['returned'] ?? 0) . PHP_EOL;
foreach (array_slice($payload['data'] ?? [], 0, 10) as $row) {
echo ($row['date'] ?? '') . ' actual=' . ($row['actual'] ?? 'null')
. ' forecast=' . ($row['forecast'] ?? 'null') . PHP_EOL;
}package main
// Event history default sample
import (
"encoding/json"
"fmt"
"io"
"net/http"
"net/url"
"os"
"time"
)
func main() {
q := url.Values{}
q.Set("limit", "24")
q.Set("lang", "en")
req, err := http.NewRequest(http.MethodGet, "https://api.example.com/economic-events/1057/history?"+q.Encode(), nil)
if err != nil {
panic(err)
}
req.Header.Set("X-Api-Key", "YOUR_API_KEY")
req.Header.Set("X-Subscription", "basic")
req.Header.Set("Accept", "application/json")
client := &http.Client{Timeout: 30 * time.Second}
resp, err := client.Do(req)
if err != nil {
panic(err)
}
defer resp.Body.Close()
body, _ := io.ReadAll(resp.Body)
if resp.StatusCode >= 400 {
fmt.Fprintf(os.Stderr, "HTTP %d: %s\n", resp.StatusCode, body)
os.Exit(1)
}
var payload any
if err := json.Unmarshal(body, &payload); err != nil {
panic(err)
}
enc := json.NewEncoder(os.Stdout)
enc.SetIndent("", " ")
_ = enc.Encode(payload)
}import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
import java.time.Duration;
/** Event history default sample */
public class Example {
public static void main(String[] args) throws Exception {
HttpClient client = HttpClient.newBuilder()
.connectTimeout(Duration.ofSeconds(30))
.build();
HttpRequest request = HttpRequest.newBuilder()
.uri(URI.create("https://api.example.com/economic-events/1057/history?limit=24&lang=en"))
.timeout(Duration.ofSeconds(120))
.header("X-Api-Key", "YOUR_API_KEY")
.header("X-Subscription", "basic")
.header("Accept", "application/json")
.GET()
.build();
HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());
if (response.statusCode() >= 400) {
System.err.println("HTTP " + response.statusCode() + ": " + response.body());
System.exit(1);
}
System.out.println(response.body());
}
}H2 — Only published actuals
#!/usr/bin/env bash
# History with released_only=true
set -euo pipefail
BASE_URL="https://api.example.com"
API_KEY="YOUR_API_KEY"
SUBSCRIPTION="basic"
curl -sS "${BASE_URL}/economic-events/1057/history?limit=24&released_only=True&lang=en" \
-H "X-Api-Key: ${API_KEY}" \
-H "X-Subscription: ${SUBSCRIPTION}" \
-H "Accept: application/json" | jq .#!/usr/bin/env python3
"""History with released_only=true"""
import json
import requests
BASE_URL = "https://api.example.com"
HEADERS = {
"X-Api-Key": "YOUR_API_KEY",
"X-Subscription": "basic",
"Accept": "application/json",
}
params = {
"limit": 24,
"released_only": True,
"lang": "en",
}
response = requests.get(
f"{BASE_URL}/economic-events/1057/history",
headers=HEADERS,
params=params,
timeout=30,
)
payload = response.json() if response.content else {}
if response.status_code >= 400:
print("status:", response.status_code)
print(json.dumps(payload, indent=2, ensure_ascii=False))
raise SystemExit(1)
meta = payload.get("meta", {})
print(meta.get("short_name"), "returned=", meta.get("returned"))
for row in payload.get("data", [])[:10]:
print(row.get("date"), "actual=", row.get("actual"), "forecast=", row.get("forecast"))/**
* History with released_only=true
*/
const BASE_URL = "https://api.example.com";
const HEADERS = {
"X-Api-Key": "YOUR_API_KEY",
"X-Subscription": "basic",
Accept: "application/json",
};
async function main() {
const url = new URL(`${BASE_URL}/economic-events/1057/history`);
url.searchParams.set("limit", "24");
url.searchParams.set("released_only", "true");
url.searchParams.set("lang", "en");
const response = await fetch(url, { headers: HEADERS });
const payload = await response.json();
if (!response.ok) {
throw new Error(`HTTP ${response.status}: ${JSON.stringify(payload)}`);
}
console.log(payload.meta.short_name, "returned=", payload.meta.returned);
for (const row of (payload.data || []).slice(0, 10)) {
console.log(row.date, "actual=", row.actual, "forecast=", row.forecast);
}
}
main().catch((err) => {
console.error(err);
process.exit(1);
});<?php
declare(strict_types=1);
/** History with released_only=true */
$baseUrl = 'https://api.example.com';
$headers = [
'X-Api-Key: YOUR_API_KEY',
'X-Subscription: basic',
'Accept: application/json',
];
$query = http_build_query([
'limit' => 24,
'released_only' => true,
'lang' => 'en',
]);
$ch = curl_init($baseUrl . '/economic-events/1057/history' . ($query !== '' ? '?' . $query : ''));
curl_setopt_array($ch, [
CURLOPT_HTTPHEADER => $headers,
CURLOPT_RETURNTRANSFER => true,
CURLOPT_TIMEOUT => 30,
]);
$raw = curl_exec($ch);
$status = (int) curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);
$payload = json_decode((string) $raw, true);
if ($status >= 400) {
fwrite(STDERR, "HTTP {$status}: {$raw}\n");
exit(1);
}
$meta = $payload['meta'] ?? [];
echo ($meta['short_name'] ?? '') . ' returned=' . ($meta['returned'] ?? 0) . PHP_EOL;
foreach (array_slice($payload['data'] ?? [], 0, 10) as $row) {
echo ($row['date'] ?? '') . ' actual=' . ($row['actual'] ?? 'null')
. ' forecast=' . ($row['forecast'] ?? 'null') . PHP_EOL;
}package main
// History with released_only=true
import (
"encoding/json"
"fmt"
"io"
"net/http"
"net/url"
"os"
"time"
)
func main() {
q := url.Values{}
q.Set("limit", "24")
q.Set("released_only", "true")
q.Set("lang", "en")
req, err := http.NewRequest(http.MethodGet, "https://api.example.com/economic-events/1057/history?"+q.Encode(), nil)
if err != nil {
panic(err)
}
req.Header.Set("X-Api-Key", "YOUR_API_KEY")
req.Header.Set("X-Subscription", "basic")
req.Header.Set("Accept", "application/json")
client := &http.Client{Timeout: 30 * time.Second}
resp, err := client.Do(req)
if err != nil {
panic(err)
}
defer resp.Body.Close()
body, _ := io.ReadAll(resp.Body)
if resp.StatusCode >= 400 {
fmt.Fprintf(os.Stderr, "HTTP %d: %s\n", resp.StatusCode, body)
os.Exit(1)
}
var payload any
if err := json.Unmarshal(body, &payload); err != nil {
panic(err)
}
enc := json.NewEncoder(os.Stdout)
enc.SetIndent("", " ")
_ = enc.Encode(payload)
}import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
import java.time.Duration;
/** History with released_only=true */
public class Example {
public static void main(String[] args) throws Exception {
HttpClient client = HttpClient.newBuilder()
.connectTimeout(Duration.ofSeconds(30))
.build();
HttpRequest request = HttpRequest.newBuilder()
.uri(URI.create("https://api.example.com/economic-events/1057/history?limit=24&released_only=true&lang=en"))
.timeout(Duration.ofSeconds(120))
.header("X-Api-Key", "YOUR_API_KEY")
.header("X-Subscription", "basic")
.header("Accept", "application/json")
.GET()
.build();
HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());
if (response.statusCode() >= 400) {
System.err.println("HTTP " + response.statusCode() + ": " + response.body());
System.exit(1);
}
System.out.println(response.body());
}
}Prefer released_only=true for charts so pending rows without actuals are excluded.
H3 — Free-plan capped sample
#!/usr/bin/env bash
# Free plan history cap
set -euo pipefail
BASE_URL="https://api.example.com"
API_KEY="YOUR_API_KEY"
SUBSCRIPTION="free"
curl -sS "${BASE_URL}/economic-events/121/history?limit=100&lang=en" \
-H "X-Api-Key: ${API_KEY}" \
-H "X-Subscription: ${SUBSCRIPTION}" \
-H "Accept: application/json" | jq .#!/usr/bin/env python3
"""Free plan history cap"""
import json
import requests
BASE_URL = "https://api.example.com"
HEADERS = {
"X-Api-Key": "YOUR_API_KEY",
"X-Subscription": "free",
"Accept": "application/json",
}
params = {
"limit": 100,
"lang": "en",
}
response = requests.get(
f"{BASE_URL}/economic-events/121/history",
headers=HEADERS,
params=params,
timeout=30,
)
payload = response.json() if response.content else {}
if response.status_code >= 400:
print("status:", response.status_code)
print(json.dumps(payload, indent=2, ensure_ascii=False))
raise SystemExit(1)
meta = payload.get("meta", {})
print(meta.get("short_name"), "returned=", meta.get("returned"))
for row in payload.get("data", [])[:10]:
print(row.get("date"), "actual=", row.get("actual"), "forecast=", row.get("forecast"))/**
* Free plan history cap
*/
const BASE_URL = "https://api.example.com";
const HEADERS = {
"X-Api-Key": "YOUR_API_KEY",
"X-Subscription": "free",
Accept: "application/json",
};
async function main() {
const url = new URL(`${BASE_URL}/economic-events/121/history`);
url.searchParams.set("limit", "100");
url.searchParams.set("lang", "en");
const response = await fetch(url, { headers: HEADERS });
const payload = await response.json();
if (!response.ok) {
throw new Error(`HTTP ${response.status}: ${JSON.stringify(payload)}`);
}
console.log(payload.meta.short_name, "returned=", payload.meta.returned);
for (const row of (payload.data || []).slice(0, 10)) {
console.log(row.date, "actual=", row.actual, "forecast=", row.forecast);
}
}
main().catch((err) => {
console.error(err);
process.exit(1);
});<?php
declare(strict_types=1);
/** Free plan history cap */
$baseUrl = 'https://api.example.com';
$headers = [
'X-Api-Key: YOUR_API_KEY',
'X-Subscription: free',
'Accept: application/json',
];
$query = http_build_query([
'limit' => 100,
'lang' => 'en',
]);
$ch = curl_init($baseUrl . '/economic-events/121/history' . ($query !== '' ? '?' . $query : ''));
curl_setopt_array($ch, [
CURLOPT_HTTPHEADER => $headers,
CURLOPT_RETURNTRANSFER => true,
CURLOPT_TIMEOUT => 30,
]);
$raw = curl_exec($ch);
$status = (int) curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);
$payload = json_decode((string) $raw, true);
if ($status >= 400) {
fwrite(STDERR, "HTTP {$status}: {$raw}\n");
exit(1);
}
$meta = $payload['meta'] ?? [];
echo ($meta['short_name'] ?? '') . ' returned=' . ($meta['returned'] ?? 0) . PHP_EOL;
foreach (array_slice($payload['data'] ?? [], 0, 10) as $row) {
echo ($row['date'] ?? '') . ' actual=' . ($row['actual'] ?? 'null')
. ' forecast=' . ($row['forecast'] ?? 'null') . PHP_EOL;
}package main
// Free plan history cap
import (
"encoding/json"
"fmt"
"io"
"net/http"
"net/url"
"os"
"time"
)
func main() {
q := url.Values{}
q.Set("limit", "100")
q.Set("lang", "en")
req, err := http.NewRequest(http.MethodGet, "https://api.example.com/economic-events/121/history?"+q.Encode(), nil)
if err != nil {
panic(err)
}
req.Header.Set("X-Api-Key", "YOUR_API_KEY")
req.Header.Set("X-Subscription", "free")
req.Header.Set("Accept", "application/json")
client := &http.Client{Timeout: 30 * time.Second}
resp, err := client.Do(req)
if err != nil {
panic(err)
}
defer resp.Body.Close()
body, _ := io.ReadAll(resp.Body)
if resp.StatusCode >= 400 {
fmt.Fprintf(os.Stderr, "HTTP %d: %s\n", resp.StatusCode, body)
os.Exit(1)
}
var payload any
if err := json.Unmarshal(body, &payload); err != nil {
panic(err)
}
enc := json.NewEncoder(os.Stdout)
enc.SetIndent("", " ")
_ = enc.Encode(payload)
}import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
import java.time.Duration;
/** Free plan history cap */
public class Example {
public static void main(String[] args) throws Exception {
HttpClient client = HttpClient.newBuilder()
.connectTimeout(Duration.ofSeconds(30))
.build();
HttpRequest request = HttpRequest.newBuilder()
.uri(URI.create("https://api.example.com/economic-events/121/history?limit=100&lang=en"))
.timeout(Duration.ofSeconds(120))
.header("X-Api-Key", "YOUR_API_KEY")
.header("X-Subscription", "free")
.header("Accept", "application/json")
.GET()
.build();
HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());
if (response.statusCode() >= 400) {
System.err.println("HTTP " + response.statusCode() + ": " + response.body());
System.exit(1);
}
System.out.println(response.body());
}
}H4 — Unknown event (404)
#!/usr/bin/env bash
# Unknown event_id (expect 404)
set -euo pipefail
BASE_URL="https://api.example.com"
API_KEY="YOUR_API_KEY"
SUBSCRIPTION="basic"
curl -sS "${BASE_URL}/economic-events/999999999/history?lang=en" \
-H "X-Api-Key: ${API_KEY}" \
-H "X-Subscription: ${SUBSCRIPTION}" \
-H "Accept: application/json" | jq .#!/usr/bin/env python3
"""Unknown event_id (expect 404)"""
import json
import requests
BASE_URL = "https://api.example.com"
HEADERS = {
"X-Api-Key": "YOUR_API_KEY",
"X-Subscription": "basic",
"Accept": "application/json",
}
params = {
"lang": "en",
}
response = requests.get(
f"{BASE_URL}/economic-events/999999999/history",
headers=HEADERS,
params=params,
timeout=30,
)
payload = response.json() if response.content else {}
if response.status_code >= 400:
print("status:", response.status_code)
print(json.dumps(payload, indent=2, ensure_ascii=False))
raise SystemExit(1)
print("status:", response.status_code)
print(json.dumps(payload, indent=2, ensure_ascii=False))/**
* Unknown event_id (expect 404)
*/
const BASE_URL = "https://api.example.com";
const HEADERS = {
"X-Api-Key": "YOUR_API_KEY",
"X-Subscription": "basic",
Accept: "application/json",
};
async function main() {
const url = new URL(`${BASE_URL}/economic-events/999999999/history`);
url.searchParams.set("lang", "en");
const response = await fetch(url, { headers: HEADERS });
const payload = await response.json();
if (!response.ok) {
throw new Error(`HTTP ${response.status}: ${JSON.stringify(payload)}`);
}
console.log("status:", response.status);
console.log(JSON.stringify(payload, null, 2));
}
main().catch((err) => {
console.error(err);
process.exit(1);
});<?php
declare(strict_types=1);
/** Unknown event_id (expect 404) */
$baseUrl = 'https://api.example.com';
$headers = [
'X-Api-Key: YOUR_API_KEY',
'X-Subscription: basic',
'Accept: application/json',
];
$query = http_build_query([
'lang' => 'en',
]);
$ch = curl_init($baseUrl . '/economic-events/999999999/history' . ($query !== '' ? '?' . $query : ''));
curl_setopt_array($ch, [
CURLOPT_HTTPHEADER => $headers,
CURLOPT_RETURNTRANSFER => true,
CURLOPT_TIMEOUT => 30,
]);
$raw = curl_exec($ch);
$status = (int) curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);
$payload = json_decode((string) $raw, true);
if ($status >= 400) {
fwrite(STDERR, "HTTP {$status}: {$raw}\n");
exit(1);
}
echo "status: {$status}" . PHP_EOL;
echo json_encode($payload, JSON_PRETTY_PRINT | JSON_UNESCAPED_UNICODE) . PHP_EOL;package main
// Unknown event_id (expect 404)
import (
"encoding/json"
"fmt"
"io"
"net/http"
"net/url"
"os"
"time"
)
func main() {
q := url.Values{}
q.Set("lang", "en")
req, err := http.NewRequest(http.MethodGet, "https://api.example.com/economic-events/999999999/history?"+q.Encode(), nil)
if err != nil {
panic(err)
}
req.Header.Set("X-Api-Key", "YOUR_API_KEY")
req.Header.Set("X-Subscription", "basic")
req.Header.Set("Accept", "application/json")
client := &http.Client{Timeout: 30 * time.Second}
resp, err := client.Do(req)
if err != nil {
panic(err)
}
defer resp.Body.Close()
body, _ := io.ReadAll(resp.Body)
if resp.StatusCode >= 400 {
fmt.Fprintf(os.Stderr, "HTTP %d: %s\n", resp.StatusCode, body)
os.Exit(1)
}
var payload any
if err := json.Unmarshal(body, &payload); err != nil {
panic(err)
}
enc := json.NewEncoder(os.Stdout)
enc.SetIndent("", " ")
_ = enc.Encode(payload)
}import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
import java.time.Duration;
/** Unknown event_id (expect 404) */
public class Example {
public static void main(String[] args) throws Exception {
HttpClient client = HttpClient.newBuilder()
.connectTimeout(Duration.ofSeconds(30))
.build();
HttpRequest request = HttpRequest.newBuilder()
.uri(URI.create("https://api.example.com/economic-events/999999999/history?lang=en"))
.timeout(Duration.ofSeconds(120))
.header("X-Api-Key", "YOUR_API_KEY")
.header("X-Subscription", "basic")
.header("Accept", "application/json")
.GET()
.build();
HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());
if (response.statusCode() >= 400) {
System.err.println("HTTP " + response.statusCode() + ": " + response.body());
System.exit(1);
}
System.out.println(response.body());
}
}H5 — Workflow: filter → history
#!/usr/bin/env python3
"""Workflow: filter high-impact USD events, then fetch release history."""
import json
import requests
BASE_URL = "https://api.example.com"
HEADERS = {
"X-Api-Key": "YOUR_API_KEY",
"X-Subscription": "basic",
"Accept": "application/json",
}
filt = requests.get(
f"{BASE_URL}/economic-events/filter",
headers=HEADERS,
params={
"date": "yesterday",
"importance": "high",
"currency": "USD",
"lang": "en",
},
timeout=30,
)
filt.raise_for_status()
filter_payload = filt.json()
if not filter_payload.get("data"):
raise SystemExit("No events found for yesterday high-impact USD")
event_id = filter_payload["data"][0]["event_id"]
hist = requests.get(
f"{BASE_URL}/economic-events/{event_id}/history",
headers=HEADERS,
params={"released_only": True, "limit": 24, "lang": "en"},
timeout=30,
)
hist.raise_for_status()
history = hist.json()
print("event_id:", event_id)
print("series:", history.get("meta", {}).get("short_name"))
print(json.dumps(history.get("data", [])[:5], indent=2, ensure_ascii=False))/**
* Workflow: filter high-impact USD events, then fetch release history.
*/
const BASE_URL = "https://api.example.com";
const HEADERS = {
"X-Api-Key": "YOUR_API_KEY",
"X-Subscription": "basic",
Accept: "application/json",
};
async function main() {
const filterUrl = new URL(`${BASE_URL}/economic-events/filter`);
filterUrl.searchParams.set("date", "yesterday");
filterUrl.searchParams.set("importance", "high");
filterUrl.searchParams.set("currency", "USD");
filterUrl.searchParams.set("lang", "en");
const filterRes = await fetch(filterUrl, { headers: HEADERS });
const filterPayload = await filterRes.json();
if (!filterRes.ok) {
throw new Error(`Filter HTTP ${filterRes.status}: ${JSON.stringify(filterPayload)}`);
}
if (!filterPayload.data?.length) {
throw new Error("No events found for yesterday high-impact USD");
}
const eventId = filterPayload.data[0].event_id;
const histUrl = new URL(`${BASE_URL}/economic-events/${eventId}/history`);
histUrl.searchParams.set("released_only", "true");
histUrl.searchParams.set("limit", "24");
histUrl.searchParams.set("lang", "en");
const histRes = await fetch(histUrl, { headers: HEADERS });
const history = await histRes.json();
if (!histRes.ok) {
throw new Error(`History HTTP ${histRes.status}: ${JSON.stringify(history)}`);
}
console.log("event_id:", eventId);
console.log("series:", history.meta?.short_name);
console.log(history.data?.slice(0, 5));
}
main().catch((err) => {
console.error(err);
process.exit(1);
});<?php
declare(strict_types=1);
/** Workflow: filter high-impact USD events, then fetch release history. */
$baseUrl = 'https://api.example.com';
$headers = [
'X-Api-Key: YOUR_API_KEY',
'X-Subscription: basic',
'Accept: application/json',
];
function apiGet(string $url, array $headers): array {
$ch = curl_init($url);
curl_setopt_array($ch, [
CURLOPT_HTTPHEADER => $headers,
CURLOPT_RETURNTRANSFER => true,
CURLOPT_TIMEOUT => 30,
]);
$raw = curl_exec($ch);
$status = (int) curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);
$payload = json_decode((string) $raw, true);
if ($status >= 400 || !is_array($payload)) {
throw new RuntimeException("HTTP {$status}: {$raw}");
}
return $payload;
}
$filter = apiGet(
$baseUrl . '/economic-events/filter?' . http_build_query([
'date' => 'yesterday',
'importance' => 'high',
'currency' => 'USD',
'lang' => 'en',
]),
$headers
);
if (empty($filter['data'][0]['event_id'])) {
throw new RuntimeException('No events found for yesterday high-impact USD');
}
$eventId = (int) $filter['data'][0]['event_id'];
$history = apiGet(
$baseUrl . '/economic-events/' . $eventId . '/history?' . http_build_query([
'released_only' => 'true',
'limit' => 24,
'lang' => 'en',
]),
$headers
);
echo 'event_id: ' . $eventId . PHP_EOL;
echo 'series: ' . ($history['meta']['short_name'] ?? '') . PHP_EOL;
echo json_encode(array_slice($history['data'] ?? [], 0, 5), JSON_PRETTY_PRINT | JSON_UNESCAPED_UNICODE) . PHP_EOL;package main
// Workflow: filter high-impact USD events, then fetch release history.
import (
"encoding/json"
"fmt"
"io"
"net/http"
"net/url"
"os"
"time"
)
func getJSON(client *http.Client, rawURL string) map[string]any {
req, err := http.NewRequest(http.MethodGet, rawURL, nil)
if err != nil {
panic(err)
}
req.Header.Set("X-Api-Key", "YOUR_API_KEY")
req.Header.Set("X-Subscription", "basic")
req.Header.Set("Accept", "application/json")
resp, err := client.Do(req)
if err != nil {
panic(err)
}
defer resp.Body.Close()
body, _ := io.ReadAll(resp.Body)
if resp.StatusCode >= 400 {
fmt.Fprintf(os.Stderr, "HTTP %d: %s\n", resp.StatusCode, body)
os.Exit(1)
}
var payload map[string]any
if err := json.Unmarshal(body, &payload); err != nil {
panic(err)
}
return payload
}
func main() {
client := &http.Client{Timeout: 30 * time.Second}
fq := url.Values{}
fq.Set("date", "yesterday")
fq.Set("importance", "high")
fq.Set("currency", "USD")
fq.Set("lang", "en")
filt := getJSON(client, "https://api.example.com/economic-events/filter?"+fq.Encode())
data, _ := filt["data"].([]any)
if len(data) == 0 {
panic("No events found")
}
first, _ := data[0].(map[string]any)
eventID := fmt.Sprint(first["event_id"])
hq := url.Values{}
hq.Set("released_only", "true")
hq.Set("limit", "24")
hq.Set("lang", "en")
hist := getJSON(client, "https://api.example.com/economic-events/"+eventID+"/history?"+hq.Encode())
meta, _ := hist["meta"].(map[string]any)
fmt.Println("event_id:", eventID)
fmt.Println("series:", meta["short_name"])
fmt.Println(hist["data"])
}#!/usr/bin/env bash
# Workflow: filter yesterday high-impact USD, then history for first event_id
set -euo pipefail
BASE_URL="https://api.example.com"
API_KEY="YOUR_API_KEY"
SUBSCRIPTION="basic"
FILTER="$(curl -sS "${BASE_URL}/economic-events/filter?date=yesterday&importance=high¤cy=USD&lang=en" \
-H "X-Api-Key: ${API_KEY}" \
-H "X-Subscription: ${SUBSCRIPTION}" \
-H "Accept: application/json")"
EVENT_ID="$(echo "${FILTER}" | jq -r '.data[0].event_id')"
echo "event_id=${EVENT_ID}"
curl -sS "${BASE_URL}/economic-events/${EVENT_ID}/history?released_only=true&limit=24&lang=en" \
-H "X-Api-Key: ${API_KEY}" \
-H "X-Subscription: ${SUBSCRIPTION}" \
-H "Accept: application/json" | jq '{meta, sample: .data[0:5]}'import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
import java.time.Duration;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
/** Workflow: filter high-impact USD events, then fetch release history. */
public class Example {
private static String get(HttpClient client, String uri) throws Exception {
HttpRequest request = HttpRequest.newBuilder()
.uri(URI.create(uri))
.timeout(Duration.ofSeconds(30))
.header("X-Api-Key", "YOUR_API_KEY")
.header("X-Subscription", "basic")
.header("Accept", "application/json")
.GET()
.build();
HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());
if (response.statusCode() >= 400) {
throw new IllegalStateException("HTTP " + response.statusCode() + ": " + response.body());
}
return response.body();
}
public static void main(String[] args) throws Exception {
HttpClient client = HttpClient.newBuilder()
.connectTimeout(Duration.ofSeconds(30))
.build();
String filterBody = get(
client,
"https://api.example.com/economic-events/filter?date=yesterday&importance=high¤cy=USD&lang=en"
);
Matcher m = Pattern.compile("\"event_id\"\\s*:\\s*(\\d+)").matcher(filterBody);
if (!m.find()) {
throw new IllegalStateException("No event_id found in filter response");
}
String eventId = m.group(1);
String historyBody = get(
client,
"https://api.example.com/economic-events/" + eventId
+ "/history?released_only=true&limit=24&lang=en"
);
System.out.println("event_id: " + eventId);
System.out.println(historyBody);
}
}6. Export — POST /economic-events/export
Starts an asynchronous export job. Ultra plan required.
#!/usr/bin/env bash
# Start Ultra export job
set -euo pipefail
BASE_URL="https://api.example.com"
API_KEY="YOUR_API_KEY"
SUBSCRIPTION="ultra"
curl -sS -X POST "${BASE_URL}/economic-events/export" \
-H "X-Api-Key: ${API_KEY}" \
-H "X-Subscription: ${SUBSCRIPTION}" \
-H "Accept: application/json" | jq .#!/usr/bin/env python3
"""Start Ultra export job"""
import json
import requests
BASE_URL = "https://api.example.com"
HEADERS = {
"X-Api-Key": "YOUR_API_KEY",
"X-Subscription": "ultra",
"Accept": "application/json",
}
response = requests.post(f"{BASE_URL}/economic-events/export", headers=HEADERS, timeout=30)
print("status:", response.status_code)
print(json.dumps(response.json(), indent=2, ensure_ascii=False))/**
* Start Ultra export job
*/
const BASE_URL = "https://api.example.com";
const HEADERS = {
"X-Api-Key": "YOUR_API_KEY",
"X-Subscription": "ultra",
Accept: "application/json",
};
async function main() {
const response = await fetch(`${BASE_URL}/economic-events/export`, {
method: "POST",
headers: HEADERS,
});
const payload = await response.json();
console.log("status:", response.status);
console.log(payload);
}
main().catch((err) => {
console.error(err);
process.exit(1);
});<?php
declare(strict_types=1);
/** Start Ultra export job */
$baseUrl = 'https://api.example.com';
$headers = [
'X-Api-Key: YOUR_API_KEY',
'X-Subscription: ultra',
'Accept: application/json',
];
$ch = curl_init($baseUrl . '/economic-events/export');
curl_setopt_array($ch, [
CURLOPT_POST => true,
CURLOPT_HTTPHEADER => $headers,
CURLOPT_RETURNTRANSFER => true,
CURLOPT_TIMEOUT => 30,
]);
$raw = curl_exec($ch);
$status = (int) curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);
$payload = json_decode((string) $raw, true);
echo "status: {$status}" . PHP_EOL;
echo json_encode($payload, JSON_PRETTY_PRINT | JSON_UNESCAPED_UNICODE) . PHP_EOL;package main
// Start Ultra export job
import (
"fmt"
"io"
"net/http"
"os"
"time"
)
func main() {
req, err := http.NewRequest(http.MethodPost, "https://api.example.com/economic-events/export", nil)
if err != nil {
panic(err)
}
req.Header.Set("X-Api-Key", "YOUR_API_KEY")
req.Header.Set("X-Subscription", "ultra")
req.Header.Set("Accept", "application/json")
client := &http.Client{Timeout: 30 * time.Second}
resp, err := client.Do(req)
if err != nil {
panic(err)
}
defer resp.Body.Close()
body, _ := io.ReadAll(resp.Body)
fmt.Println("status:", resp.StatusCode)
fmt.Println(string(body))
}import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
import java.time.Duration;
/** Start Ultra export job */
public class Example {
public static void main(String[] args) throws Exception {
HttpClient client = HttpClient.newBuilder()
.connectTimeout(Duration.ofSeconds(30))
.build();
HttpRequest request = HttpRequest.newBuilder()
.uri(URI.create("https://api.example.com/economic-events/export"))
.timeout(Duration.ofSeconds(30))
.header("X-Api-Key", "YOUR_API_KEY")
.header("X-Subscription", "ultra")
.header("Accept", "application/json")
.POST(HttpRequest.BodyPublishers.noBody())
.build();
HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());
System.out.println("status: " + response.statusCode());
System.out.println(response.body());
}
}{
"job_id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"status": "started"
}Non-Ultra plans receive HTTP 403. Confirm export delivery with your operator; packaging may vary by deployment.
7. Stream — GET /economic-events/stream
NDJSON stream (application/x-ndjson) for a date range. Ultra or Enterprise required.
| Parameter | Type | Required | Description |
|---|---|---|---|
date_from |
string | Yes | YYYY-MM-DD |
date_to |
string | Yes | YYYY-MM-DD |
#!/usr/bin/env bash
# NDJSON stream for a date range
set -euo pipefail
BASE_URL="https://api.example.com"
API_KEY="YOUR_API_KEY"
SUBSCRIPTION="ultra"
curl -N -sS "${BASE_URL}/economic-events/stream?date_from=2026-08-01&date_to=2026-08-07" \
-H "X-Api-Key: ${API_KEY}" \
-H "X-Subscription: ${SUBSCRIPTION}" \
-H "Accept: application/x-ndjson"#!/usr/bin/env python3
"""NDJSON stream for a date range"""
import json
import requests
BASE_URL = "https://api.example.com"
HEADERS = {
"X-Api-Key": "YOUR_API_KEY",
"X-Subscription": "ultra",
"Accept": "application/x-ndjson",
}
params = {
"date_from": "2026-08-01",
"date_to": "2026-08-07",
}
with requests.get(
f"{BASE_URL}/economic-events/stream",
headers=HEADERS,
params=params,
stream=True,
timeout=120,
) as response:
response.raise_for_status()
for line in response.iter_lines(decode_unicode=True):
if not line:
continue
event = json.loads(line)
print(json.dumps(event, ensure_ascii=False))/**
* NDJSON stream for a date range
*/
const BASE_URL = "https://api.example.com";
const HEADERS = {
"X-Api-Key": "YOUR_API_KEY",
"X-Subscription": "ultra",
Accept: "application/x-ndjson",
};
async function main() {
const url = new URL(`${BASE_URL}/economic-events/stream`);
url.searchParams.set("date_from", "2026-08-01");
url.searchParams.set("date_to", "2026-08-07");
const response = await fetch(url, { headers: HEADERS });
if (!response.ok) {
throw new Error(`HTTP ${response.status}: ${await response.text()}`);
}
const text = await response.text();
for (const line of text.split("\n").filter(Boolean)) {
console.log(JSON.parse(line));
}
}
main().catch((err) => {
console.error(err);
process.exit(1);
});<?php
declare(strict_types=1);
/** NDJSON stream for a date range */
$baseUrl = 'https://api.example.com';
$headers = [
'X-Api-Key: YOUR_API_KEY',
'X-Subscription: ultra',
'Accept: application/x-ndjson',
];
$query = http_build_query([
'date_from' => '2026-08-01',
'date_to' => '2026-08-07',
]);
$ch = curl_init($baseUrl . '/economic-events/stream?' . $query);
curl_setopt_array($ch, [
CURLOPT_HTTPHEADER => $headers,
CURLOPT_RETURNTRANSFER => true,
CURLOPT_TIMEOUT => 120,
]);
$raw = curl_exec($ch);
$status = (int) curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);
if ($status >= 400) {
throw new RuntimeException("HTTP {$status}: {$raw}");
}
foreach (preg_split('/\r?\n/', (string) $raw) as $line) {
$line = trim($line);
if ($line === '') {
continue;
}
$event = json_decode($line, true);
echo json_encode($event, JSON_UNESCAPED_UNICODE) . PHP_EOL;
}package main
// NDJSON stream for a date range
import (
"bufio"
"fmt"
"net/http"
"net/url"
"os"
"time"
)
func main() {
q := url.Values{}
q.Set("date_from", "2026-08-01")
q.Set("date_to", "2026-08-07")
req, err := http.NewRequest(http.MethodGet, "https://api.example.com/economic-events/stream?"+q.Encode(), nil)
if err != nil {
panic(err)
}
req.Header.Set("X-Api-Key", "YOUR_API_KEY")
req.Header.Set("X-Subscription", "ultra")
req.Header.Set("Accept", "application/x-ndjson")
client := &http.Client{Timeout: 120 * time.Second}
resp, err := client.Do(req)
if err != nil {
panic(err)
}
defer resp.Body.Close()
if resp.StatusCode >= 400 {
fmt.Fprintf(os.Stderr, "HTTP %d\n", resp.StatusCode)
os.Exit(1)
}
scanner := bufio.NewScanner(resp.Body)
for scanner.Scan() {
line := scanner.Text()
if line != "" {
fmt.Println(line)
}
}
}import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
import java.time.Duration;
/** NDJSON stream for a date range */
public class Example {
public static void main(String[] args) throws Exception {
HttpClient client = HttpClient.newBuilder()
.connectTimeout(Duration.ofSeconds(30))
.build();
HttpRequest request = HttpRequest.newBuilder()
.uri(URI.create("https://api.example.com/economic-events/stream?date_from=2026-08-01&date_to=2026-08-07"))
.timeout(Duration.ofSeconds(120))
.header("X-Api-Key", "YOUR_API_KEY")
.header("X-Subscription", "ultra")
.header("Accept", "application/x-ndjson")
.GET()
.build();
HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());
if (response.statusCode() >= 400) {
System.err.println("HTTP " + response.statusCode() + ": " + response.body());
System.exit(1);
}
System.out.println(response.body());
}
}Each line is one JSON object. Prefer paginated /filter for interactive UIs; use stream for bulk offline ingestion when available.
8. HTML calendar redirect — GET /calendar
HTTP 302 redirect to the public HTML calendar host. API clients usually do not need this route.
#!/usr/bin/env bash
# HTML calendar redirect
set -euo pipefail
BASE_URL="https://api.example.com"
API_KEY="YOUR_API_KEY"
curl -sSI "${BASE_URL}/calendar" \
-H "X-Api-Key: ${API_KEY}" \
-H "Accept: application/json" | head -n 20#!/usr/bin/env python3
"""HTML calendar redirect"""
import requests
BASE_URL = "https://api.example.com"
HEADERS = {
"X-Api-Key": "YOUR_API_KEY",
"Accept": "application/json",
}
response = requests.get(
f"{BASE_URL}/calendar",
headers=HEADERS,
allow_redirects=False,
timeout=30,
)
print("status:", response.status_code)
print("location:", response.headers.get("Location"))/**
* HTML calendar redirect
*/
const BASE_URL = "https://api.example.com";
const HEADERS = {
"X-Api-Key": "YOUR_API_KEY",
Accept: "application/json",
};
async function main() {
const response = await fetch(`${BASE_URL}/calendar`, {
headers: HEADERS,
redirect: "manual",
});
console.log("status:", response.status);
console.log("location:", response.headers.get("Location"));
}
main().catch((err) => {
console.error(err);
process.exit(1);
});<?php
declare(strict_types=1);
/** HTML calendar redirect */
$baseUrl = 'https://api.example.com';
$headers = [
'X-Api-Key: YOUR_API_KEY',
'Accept: application/json',
];
$ch = curl_init($baseUrl . '/calendar');
curl_setopt_array($ch, [
CURLOPT_HTTPHEADER => $headers,
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HEADER => true,
CURLOPT_NOBODY => true,
CURLOPT_FOLLOWLOCATION => false,
CURLOPT_TIMEOUT => 30,
]);
$raw = curl_exec($ch);
$status = (int) curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);
echo "status: {$status}" . PHP_EOL;
if (preg_match('/^Location:\s*(.+)$/mi', (string) $raw, $m)) {
echo "location: " . trim($m[1]) . PHP_EOL;
}package main
// HTML calendar redirect
import (
"encoding/json"
"fmt"
"io"
"net/http"
"net/url"
"os"
"time"
)
func main() {
q := url.Values{}
req, err := http.NewRequest(http.MethodGet, "https://api.example.com/calendar", nil)
if err != nil {
panic(err)
}
req.Header.Set("X-Api-Key", "YOUR_API_KEY")
req.Header.Set("X-Subscription", "basic")
req.Header.Set("Accept", "application/json")
client := &http.Client{Timeout: 30 * time.Second}
resp, err := client.Do(req)
if err != nil {
panic(err)
}
defer resp.Body.Close()
body, _ := io.ReadAll(resp.Body)
if resp.StatusCode >= 400 {
fmt.Fprintf(os.Stderr, "HTTP %d: %s\n", resp.StatusCode, body)
os.Exit(1)
}
var payload any
if err := json.Unmarshal(body, &payload); err != nil {
panic(err)
}
enc := json.NewEncoder(os.Stdout)
enc.SetIndent("", " ")
_ = enc.Encode(payload)
}import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
import java.time.Duration;
/** HTML calendar redirect */
public class Example {
public static void main(String[] args) throws Exception {
HttpClient client = HttpClient.newBuilder()
.connectTimeout(Duration.ofSeconds(30))
.build();
HttpRequest request = HttpRequest.newBuilder()
.uri(URI.create("https://api.example.com/calendar"))
.timeout(Duration.ofSeconds(120))
.header("X-Api-Key", "YOUR_API_KEY")
.header("X-Subscription", "basic")
.header("Accept", "application/json")
.GET()
.build();
HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());
if (response.statusCode() >= 400) {
System.err.println("HTTP " + response.statusCode() + ": " + response.body());
System.exit(1);
}
System.out.println(response.body());
}
}Error reference
| HTTP | Typical cause |
|---|---|
400 |
Invalid date shortcut or invalid cursor |
403 |
Language not allowed for plan; export/stream without required tier; Pro lang=all or too many languages |
404 |
Unknown countries-list language file; no history for event_id |
422 |
Invalid types (e.g. non-integer event_id) |
500 |
Unexpected server / database error |
{"detail":"Human-readable message"}Handling errors in clients
#!/usr/bin/env python3
"""Typed error handling for /economic-events/filter."""
import requests
BASE_URL = "https://api.example.com"
HEADERS = {
"X-Api-Key": "YOUR_API_KEY",
"X-Subscription": "basic",
"Accept": "application/json",
}
def get_filter(**params):
response = requests.get(
f"{BASE_URL}/economic-events/filter",
headers=HEADERS,
params=params,
timeout=30,
)
payload = response.json() if response.content else {}
if response.status_code == 400:
raise ValueError(payload.get("detail", "Bad request"))
if response.status_code == 403:
raise PermissionError(payload.get("detail", "Forbidden"))
if response.status_code == 404:
raise LookupError(payload.get("detail", "Not found"))
response.raise_for_status()
return payload
if __name__ == "__main__":
try:
data = get_filter(date="today", lang="en")
print("returned:", data.get("meta", {}).get("returned"))
except (ValueError, PermissionError, LookupError) as exc:
print("client error:", exc)/**
* Typed error handling for /economic-events/filter.
*/
const BASE_URL = "https://api.example.com";
const HEADERS = {
"X-Api-Key": "YOUR_API_KEY",
"X-Subscription": "basic",
Accept: "application/json",
};
async function getFilter(params) {
const url = new URL(`${BASE_URL}/economic-events/filter`);
Object.entries(params).forEach(([key, value]) => url.searchParams.set(key, String(value)));
const response = await fetch(url, { headers: HEADERS });
const body = await response.json();
if (!response.ok) {
const detail = body.detail || response.statusText;
const error = new Error(detail);
error.status = response.status;
throw error;
}
return body;
}
getFilter({ date: "today", lang: "en" })
.then((body) => console.log("returned:", body.meta?.returned))
.catch((err) => {
console.error("client error:", err.status, err.message);
process.exit(1);
});<?php
declare(strict_types=1);
/** Typed error handling for /economic-events/filter. */
$baseUrl = 'https://api.example.com';
$headers = [
'X-Api-Key: YOUR_API_KEY',
'X-Subscription: basic',
'Accept: application/json',
];
function getFilter(string $baseUrl, array $headers, array $params): array {
$ch = curl_init($baseUrl . '/economic-events/filter?' . http_build_query($params));
curl_setopt_array($ch, [
CURLOPT_HTTPHEADER => $headers,
CURLOPT_RETURNTRANSFER => true,
CURLOPT_TIMEOUT => 30,
]);
$raw = curl_exec($ch);
$code = (int) curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);
$body = json_decode((string) $raw, true);
if ($code >= 400) {
$detail = is_array($body) ? ($body['detail'] ?? "HTTP {$code}") : "HTTP {$code}";
throw new RuntimeException($detail, $code);
}
return is_array($body) ? $body : [];
}
try {
$payload = getFilter($baseUrl, $headers, ['date' => 'today', 'lang' => 'en']);
echo 'returned: ' . ($payload['meta']['returned'] ?? 0) . PHP_EOL;
} catch (RuntimeException $e) {
fwrite(STDERR, 'client error: ' . $e->getMessage() . PHP_EOL);
exit(1);
}package main
// Typed error handling for /economic-events/filter.
import (
"encoding/json"
"fmt"
"io"
"net/http"
"net/url"
"os"
"time"
)
func getFilter(params url.Values) (map[string]any, error) {
req, err := http.NewRequest(http.MethodGet, "https://api.example.com/economic-events/filter?"+params.Encode(), nil)
if err != nil {
return nil, err
}
req.Header.Set("X-Api-Key", "YOUR_API_KEY")
req.Header.Set("X-Subscription", "basic")
req.Header.Set("Accept", "application/json")
client := &http.Client{Timeout: 30 * time.Second}
resp, err := client.Do(req)
if err != nil {
return nil, err
}
defer resp.Body.Close()
body, _ := io.ReadAll(resp.Body)
var payload map[string]any
_ = json.Unmarshal(body, &payload)
if resp.StatusCode >= 400 {
detail, _ := payload["detail"].(string)
if detail == "" {
detail = string(body)
}
return nil, fmt.Errorf("HTTP %d: %s", resp.StatusCode, detail)
}
return payload, nil
}
func main() {
q := url.Values{}
q.Set("date", "today")
q.Set("lang", "en")
payload, err := getFilter(q)
if err != nil {
fmt.Fprintln(os.Stderr, "client error:", err)
os.Exit(1)
}
meta, _ := payload["meta"].(map[string]any)
fmt.Println("returned:", meta["returned"])
}import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
import java.time.Duration;
/** Typed error handling for /economic-events/filter. */
public class Example {
public static String getFilter(String query) throws Exception {
HttpClient client = HttpClient.newBuilder()
.connectTimeout(Duration.ofSeconds(30))
.build();
HttpRequest request = HttpRequest.newBuilder()
.uri(URI.create("https://api.example.com/economic-events/filter?" + query))
.timeout(Duration.ofSeconds(30))
.header("X-Api-Key", "YOUR_API_KEY")
.header("X-Subscription", "basic")
.header("Accept", "application/json")
.GET()
.build();
HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());
if (response.statusCode() >= 400) {
throw new IllegalStateException("HTTP " + response.statusCode() + ": " + response.body());
}
return response.body();
}
public static void main(String[] args) throws Exception {
try {
String body = getFilter("date=today&lang=en");
System.out.println(body);
} catch (IllegalStateException ex) {
System.err.println("client error: " + ex.getMessage());
System.exit(1);
}
}
}#!/usr/bin/env ruby
# Typed error handling for /economic-events/filter.
require "net/http"
require "json"
require "uri"
BASE_URL = "https://api.example.com"
def get_filter(params)
uri = URI("#{BASE_URL}/economic-events/filter")
uri.query = URI.encode_www_form(params)
req = Net::HTTP::Get.new(uri)
req["X-Api-Key"] = "YOUR_API_KEY"
req["X-Subscription"] = "basic"
req["Accept"] = "application/json"
res = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(req) }
body = JSON.parse(res.body)
raise body["detail"] || "HTTP #{res.code}" unless res.is_a?(Net::HTTPSuccess)
body
end
begin
payload = get_filter("date" => "today", "lang" => "en")
puts "returned: #{payload.dig("meta", "returned")}"
rescue StandardError => e
warn "client error: #{e.message}"
exit 1
endusing System;
using System.Net.Http;
using System.Threading.Tasks;
/// Typed error handling for /economic-events/filter.
public class Example
{
private static readonly HttpClient Client = new HttpClient
{
Timeout = TimeSpan.FromSeconds(30)
};
public static async Task<string> GetFilterAsync(string query)
{
using var request = new HttpRequestMessage(
HttpMethod.Get,
$"https://api.example.com/economic-events/filter?{query}");
request.Headers.Add("X-Api-Key", "YOUR_API_KEY");
request.Headers.Add("X-Subscription", "basic");
request.Headers.Add("Accept", "application/json");
using var response = await Client.SendAsync(request);
var body = await response.Content.ReadAsStringAsync();
if (!response.IsSuccessStatusCode)
{
throw new InvalidOperationException($"HTTP {(int)response.StatusCode}: {body}");
}
return body;
}
public static async Task Main()
{
try
{
var json = await GetFilterAsync("date=today&lang=en");
Console.WriteLine(json);
}
catch (Exception ex)
{
Console.Error.WriteLine($"client error: {ex.Message}");
Environment.Exit(1);
}
}
}Data freshness and semantics
- Rows are synchronized from upstream economic-calendar feeds on a schedule.
actualbecomes non-null after the release is published and imported.forecastandpreviousmay exist before release time.- Pending events often have
actual = null. actual_to_forecastis a source qualitative comparison, not a computed surprise percentage.- Treat the API as a near-term calendar database, not a tick-level market feed.
Interpreting release values
| Situation | Typical field state |
|---|---|
| Future scheduled event | actual null, forecast may be set |
| Just released | actual filled after sync; forecast and previous present |
| Revised release | revised_to_previous may be non-neutral; values updated on next import |
| Speech / qualitative event | numeric fields may all be null |
Client-side surprise (optional)
This API does not return precomputed surprise metrics. If you need them locally:
#!/usr/bin/env python3
"""Local surprise helpers for actual vs forecast."""
def surprise(actual, forecast):
if actual is None or forecast is None:
return None
return actual - forecast
def surprise_pct(actual, forecast):
delta = surprise(actual, forecast)
if delta is None or forecast == 0:
return None
return 100.0 * delta / abs(forecast)
if __name__ == "__main__":
print(surprise(7.5, 7.2))
print(surprise_pct(7.5, 7.2))/**
* Local surprise helpers for actual vs forecast.
*/
function surprise(actual, forecast) {
if (actual == null || forecast == null) return null;
return actual - forecast;
}
function surprisePct(actual, forecast) {
const delta = surprise(actual, forecast);
if (delta == null || forecast === 0) return null;
return (100 * delta) / Math.abs(forecast);
}
console.log(surprise(7.5, 7.2));
console.log(surprisePct(7.5, 7.2));<?php
declare(strict_types=1);
/** Local surprise helpers for actual vs forecast. */
function surprise($actual, $forecast) {
if ($actual === null || $forecast === null) {
return null;
}
return $actual - $forecast;
}
function surprise_pct($actual, $forecast) {
$delta = surprise($actual, $forecast);
if ($delta === null || (float) $forecast === 0.0) {
return null;
}
return 100.0 * $delta / abs((float) $forecast);
}
echo surprise(7.5, 7.2) . PHP_EOL;
echo surprise_pct(7.5, 7.2) . PHP_EOL;package main
import "fmt"
func surprise(actual, forecast *float64) *float64 {
if actual == nil || forecast == nil {
return nil
}
v := *actual - *forecast
return &v
}
func main() {
a, f := 7.5, 7.2
fmt.Println(*surprise(&a, &f))
}public class Example {
public static Double surprise(Double actual, Double forecast) {
if (actual == null || forecast == null) return null;
return actual - forecast;
}
public static void main(String[] args) {
System.out.println(surprise(7.5, 7.2));
}
}Remember that for some indicators (for example unemployment), a higher print can be market-negative even if it “beats” forecast. Domain interpretation is up to your application.
Field deep dive
Identity fields
occurrence_id: unique per release row. Prefer this as a deduplication key when polling.event_id: stable across months for the same series. Required for/history.lang: language of the stored/returned text fields for that row.
Timing fields
occurrence_time: release timestamp from the calendar source.- Filter windows use inclusive calendar days from
00:00:00through23:59:59ondate_from/date_to(as interpreted by the service).
Classification fields
importance:low,medium,high.category: free-text category from the source (inflation, employment, gdp, and others).country_id/country_name/country_flag: geography metadata.currency: ISO-style code when the event is tied to a currency.
Value fields
actual,forecast,previous: numbers or null.unit: display unit such as%orM.precision: suggested decimal precision from the source.preliminary: whether the print is marked preliminary.reference_period: human-readable period label (month, quarter, etc.).
Narrative fields
short_name,long_name,description: localized titles and text when available.page_link,source,source_url: provenance metadata when present.
Additional filter combinations
R — Low-importance only (noise vs signal experiments)
#!/usr/bin/env bash
# Low importance only
set -euo pipefail
BASE_URL="https://api.example.com"
API_KEY="YOUR_API_KEY"
SUBSCRIPTION="basic"
curl -sS "${BASE_URL}/economic-events/filter?date=current_week&importance=low&lang=en" \
-H "X-Api-Key: ${API_KEY}" \
-H "X-Subscription: ${SUBSCRIPTION}" \
-H "Accept: application/json" | jq .#!/usr/bin/env python3
"""Low importance only"""
import json
import requests
BASE_URL = "https://api.example.com"
HEADERS = {
"X-Api-Key": "YOUR_API_KEY",
"X-Subscription": "basic",
"Accept": "application/json",
}
params = {
"date": "current_week",
"importance": "low",
"lang": "en",
}
response = requests.get(
f"{BASE_URL}/economic-events/filter",
headers=HEADERS,
params=params,
timeout=30,
)
payload = response.json() if response.content else {}
if response.status_code >= 400:
print("status:", response.status_code)
print(json.dumps(payload, indent=2, ensure_ascii=False))
raise SystemExit(1)
print("meta:", json.dumps(payload.get("meta"), indent=2, ensure_ascii=False))
for event in payload.get("data", [])[:10]:
print(
f"{event.get('occurrence_time')} | {event.get('currency')} | "
f"{event.get('importance')} | {event.get('short_name')} | "
f"actual={event.get('actual')} forecast={event.get('forecast')}"
)/**
* Low importance only
*/
const BASE_URL = "https://api.example.com";
const HEADERS = {
"X-Api-Key": "YOUR_API_KEY",
"X-Subscription": "basic",
Accept: "application/json",
};
async function main() {
const url = new URL(`${BASE_URL}/economic-events/filter`);
url.searchParams.set("date", "current_week");
url.searchParams.set("importance", "low");
url.searchParams.set("lang", "en");
const response = await fetch(url, { headers: HEADERS });
const payload = await response.json();
if (!response.ok) {
throw new Error(`HTTP ${response.status}: ${JSON.stringify(payload)}`);
}
console.log("meta:", payload.meta);
for (const event of (payload.data || []).slice(0, 10)) {
console.log(
event.occurrence_time,
event.currency,
event.importance,
event.short_name,
"actual=",
event.actual,
"forecast=",
event.forecast
);
}
}
main().catch((err) => {
console.error(err);
process.exit(1);
});<?php
declare(strict_types=1);
/** Low importance only */
$baseUrl = 'https://api.example.com';
$headers = [
'X-Api-Key: YOUR_API_KEY',
'X-Subscription: basic',
'Accept: application/json',
];
$query = http_build_query([
'date' => 'current_week',
'importance' => 'low',
'lang' => 'en',
]);
$ch = curl_init($baseUrl . '/economic-events/filter' . ($query !== '' ? '?' . $query : ''));
curl_setopt_array($ch, [
CURLOPT_HTTPHEADER => $headers,
CURLOPT_RETURNTRANSFER => true,
CURLOPT_TIMEOUT => 30,
]);
$raw = curl_exec($ch);
$status = (int) curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);
$payload = json_decode((string) $raw, true);
if ($status >= 400) {
fwrite(STDERR, "HTTP {$status}: {$raw}\n");
exit(1);
}
echo "meta: " . json_encode($payload['meta'] ?? null, JSON_PRETTY_PRINT | JSON_UNESCAPED_UNICODE) . PHP_EOL;
foreach (array_slice($payload['data'] ?? [], 0, 10) as $event) {
echo sprintf(
"%s | %s | %s | %s | actual=%s forecast=%s\n",
$event['occurrence_time'] ?? '',
$event['currency'] ?? '',
$event['importance'] ?? '',
$event['short_name'] ?? '',
$event['actual'] ?? 'null',
$event['forecast'] ?? 'null'
);
}package main
// Low importance only
import (
"encoding/json"
"fmt"
"io"
"net/http"
"net/url"
"os"
"time"
)
func main() {
q := url.Values{}
q.Set("date", "current_week")
q.Set("importance", "low")
q.Set("lang", "en")
req, err := http.NewRequest(http.MethodGet, "https://api.example.com/economic-events/filter?"+q.Encode(), nil)
if err != nil {
panic(err)
}
req.Header.Set("X-Api-Key", "YOUR_API_KEY")
req.Header.Set("X-Subscription", "basic")
req.Header.Set("Accept", "application/json")
client := &http.Client{Timeout: 30 * time.Second}
resp, err := client.Do(req)
if err != nil {
panic(err)
}
defer resp.Body.Close()
body, _ := io.ReadAll(resp.Body)
if resp.StatusCode >= 400 {
fmt.Fprintf(os.Stderr, "HTTP %d: %s\n", resp.StatusCode, body)
os.Exit(1)
}
var payload map[string]any
if err := json.Unmarshal(body, &payload); err != nil {
panic(err)
}
fmt.Println("meta:", payload["meta"])
data, _ := payload["data"].([]any)
for i, item := range data {
if i >= 10 {
break
}
event, _ := item.(map[string]any)
fmt.Println(event["occurrence_time"], event["currency"], event["importance"], event["short_name"])
}
}import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
import java.time.Duration;
/** Low importance only */
public class Example {
public static void main(String[] args) throws Exception {
HttpClient client = HttpClient.newBuilder()
.connectTimeout(Duration.ofSeconds(30))
.build();
HttpRequest request = HttpRequest.newBuilder()
.uri(URI.create("https://api.example.com/economic-events/filter?date=current_week&importance=low&lang=en"))
.timeout(Duration.ofSeconds(120))
.header("X-Api-Key", "YOUR_API_KEY")
.header("X-Subscription", "basic")
.header("Accept", "application/json")
.GET()
.build();
HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());
if (response.statusCode() >= 400) {
System.err.println("HTTP " + response.statusCode() + ": " + response.body());
System.exit(1);
}
System.out.println(response.body());
}
}S — Speeches and qualitative events (USD, current week)
#!/usr/bin/env bash
# USD medium+high current week
set -euo pipefail
BASE_URL="https://api.example.com"
API_KEY="YOUR_API_KEY"
SUBSCRIPTION="basic"
curl -sS "${BASE_URL}/economic-events/filter?date=current_week¤cy=USD&importance=high%2Cmedium&lang=en" \
-H "X-Api-Key: ${API_KEY}" \
-H "X-Subscription: ${SUBSCRIPTION}" \
-H "Accept: application/json" | jq .#!/usr/bin/env python3
"""USD medium+high current week"""
import json
import requests
BASE_URL = "https://api.example.com"
HEADERS = {
"X-Api-Key": "YOUR_API_KEY",
"X-Subscription": "basic",
"Accept": "application/json",
}
params = {
"date": "current_week",
"currency": "USD",
"importance": "high,medium",
"lang": "en",
}
response = requests.get(
f"{BASE_URL}/economic-events/filter",
headers=HEADERS,
params=params,
timeout=30,
)
payload = response.json() if response.content else {}
if response.status_code >= 400:
print("status:", response.status_code)
print(json.dumps(payload, indent=2, ensure_ascii=False))
raise SystemExit(1)
print("meta:", json.dumps(payload.get("meta"), indent=2, ensure_ascii=False))
for event in payload.get("data", [])[:10]:
print(
f"{event.get('occurrence_time')} | {event.get('currency')} | "
f"{event.get('importance')} | {event.get('short_name')} | "
f"actual={event.get('actual')} forecast={event.get('forecast')}"
)/**
* USD medium+high current week
*/
const BASE_URL = "https://api.example.com";
const HEADERS = {
"X-Api-Key": "YOUR_API_KEY",
"X-Subscription": "basic",
Accept: "application/json",
};
async function main() {
const url = new URL(`${BASE_URL}/economic-events/filter`);
url.searchParams.set("date", "current_week");
url.searchParams.set("currency", "USD");
url.searchParams.set("importance", "high,medium");
url.searchParams.set("lang", "en");
const response = await fetch(url, { headers: HEADERS });
const payload = await response.json();
if (!response.ok) {
throw new Error(`HTTP ${response.status}: ${JSON.stringify(payload)}`);
}
console.log("meta:", payload.meta);
for (const event of (payload.data || []).slice(0, 10)) {
console.log(
event.occurrence_time,
event.currency,
event.importance,
event.short_name,
"actual=",
event.actual,
"forecast=",
event.forecast
);
}
}
main().catch((err) => {
console.error(err);
process.exit(1);
});<?php
declare(strict_types=1);
/** USD medium+high current week */
$baseUrl = 'https://api.example.com';
$headers = [
'X-Api-Key: YOUR_API_KEY',
'X-Subscription: basic',
'Accept: application/json',
];
$query = http_build_query([
'date' => 'current_week',
'currency' => 'USD',
'importance' => 'high,medium',
'lang' => 'en',
]);
$ch = curl_init($baseUrl . '/economic-events/filter' . ($query !== '' ? '?' . $query : ''));
curl_setopt_array($ch, [
CURLOPT_HTTPHEADER => $headers,
CURLOPT_RETURNTRANSFER => true,
CURLOPT_TIMEOUT => 30,
]);
$raw = curl_exec($ch);
$status = (int) curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);
$payload = json_decode((string) $raw, true);
if ($status >= 400) {
fwrite(STDERR, "HTTP {$status}: {$raw}\n");
exit(1);
}
echo "meta: " . json_encode($payload['meta'] ?? null, JSON_PRETTY_PRINT | JSON_UNESCAPED_UNICODE) . PHP_EOL;
foreach (array_slice($payload['data'] ?? [], 0, 10) as $event) {
echo sprintf(
"%s | %s | %s | %s | actual=%s forecast=%s\n",
$event['occurrence_time'] ?? '',
$event['currency'] ?? '',
$event['importance'] ?? '',
$event['short_name'] ?? '',
$event['actual'] ?? 'null',
$event['forecast'] ?? 'null'
);
}package main
// USD medium+high current week
import (
"encoding/json"
"fmt"
"io"
"net/http"
"net/url"
"os"
"time"
)
func main() {
q := url.Values{}
q.Set("date", "current_week")
q.Set("currency", "USD")
q.Set("importance", "high,medium")
q.Set("lang", "en")
req, err := http.NewRequest(http.MethodGet, "https://api.example.com/economic-events/filter?"+q.Encode(), nil)
if err != nil {
panic(err)
}
req.Header.Set("X-Api-Key", "YOUR_API_KEY")
req.Header.Set("X-Subscription", "basic")
req.Header.Set("Accept", "application/json")
client := &http.Client{Timeout: 30 * time.Second}
resp, err := client.Do(req)
if err != nil {
panic(err)
}
defer resp.Body.Close()
body, _ := io.ReadAll(resp.Body)
if resp.StatusCode >= 400 {
fmt.Fprintf(os.Stderr, "HTTP %d: %s\n", resp.StatusCode, body)
os.Exit(1)
}
var payload map[string]any
if err := json.Unmarshal(body, &payload); err != nil {
panic(err)
}
fmt.Println("meta:", payload["meta"])
data, _ := payload["data"].([]any)
for i, item := range data {
if i >= 10 {
break
}
event, _ := item.(map[string]any)
fmt.Println(event["occurrence_time"], event["currency"], event["importance"], event["short_name"])
}
}import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
import java.time.Duration;
/** USD medium+high current week */
public class Example {
public static void main(String[] args) throws Exception {
HttpClient client = HttpClient.newBuilder()
.connectTimeout(Duration.ofSeconds(30))
.build();
HttpRequest request = HttpRequest.newBuilder()
.uri(URI.create("https://api.example.com/economic-events/filter?date=current_week¤cy=USD&importance=high,medium&lang=en"))
.timeout(Duration.ofSeconds(120))
.header("X-Api-Key", "YOUR_API_KEY")
.header("X-Subscription", "basic")
.header("Accept", "application/json")
.GET()
.build();
HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());
if (response.statusCode() >= 400) {
System.err.println("HTTP " + response.statusCode() + ": " + response.body());
System.exit(1);
}
System.out.println(response.body());
}
}T — Tight window around a CPI day
#!/usr/bin/env bash
# US high-impact around CPI window
set -euo pipefail
BASE_URL="https://api.example.com"
API_KEY="YOUR_API_KEY"
SUBSCRIPTION="basic"
curl -sS "${BASE_URL}/economic-events/filter?date_from=2026-08-12&date_to=2026-08-14&country_id=5&importance=high&lang=en" \
-H "X-Api-Key: ${API_KEY}" \
-H "X-Subscription: ${SUBSCRIPTION}" \
-H "Accept: application/json" | jq .#!/usr/bin/env python3
"""US high-impact around CPI window"""
import json
import requests
BASE_URL = "https://api.example.com"
HEADERS = {
"X-Api-Key": "YOUR_API_KEY",
"X-Subscription": "basic",
"Accept": "application/json",
}
params = {
"date_from": "2026-08-12",
"date_to": "2026-08-14",
"country_id": "5",
"importance": "high",
"lang": "en",
}
response = requests.get(
f"{BASE_URL}/economic-events/filter",
headers=HEADERS,
params=params,
timeout=30,
)
payload = response.json() if response.content else {}
if response.status_code >= 400:
print("status:", response.status_code)
print(json.dumps(payload, indent=2, ensure_ascii=False))
raise SystemExit(1)
print("meta:", json.dumps(payload.get("meta"), indent=2, ensure_ascii=False))
for event in payload.get("data", [])[:10]:
print(
f"{event.get('occurrence_time')} | {event.get('currency')} | "
f"{event.get('importance')} | {event.get('short_name')} | "
f"actual={event.get('actual')} forecast={event.get('forecast')}"
)/**
* US high-impact around CPI window
*/
const BASE_URL = "https://api.example.com";
const HEADERS = {
"X-Api-Key": "YOUR_API_KEY",
"X-Subscription": "basic",
Accept: "application/json",
};
async function main() {
const url = new URL(`${BASE_URL}/economic-events/filter`);
url.searchParams.set("date_from", "2026-08-12");
url.searchParams.set("date_to", "2026-08-14");
url.searchParams.set("country_id", "5");
url.searchParams.set("importance", "high");
url.searchParams.set("lang", "en");
const response = await fetch(url, { headers: HEADERS });
const payload = await response.json();
if (!response.ok) {
throw new Error(`HTTP ${response.status}: ${JSON.stringify(payload)}`);
}
console.log("meta:", payload.meta);
for (const event of (payload.data || []).slice(0, 10)) {
console.log(
event.occurrence_time,
event.currency,
event.importance,
event.short_name,
"actual=",
event.actual,
"forecast=",
event.forecast
);
}
}
main().catch((err) => {
console.error(err);
process.exit(1);
});<?php
declare(strict_types=1);
/** US high-impact around CPI window */
$baseUrl = 'https://api.example.com';
$headers = [
'X-Api-Key: YOUR_API_KEY',
'X-Subscription: basic',
'Accept: application/json',
];
$query = http_build_query([
'date_from' => '2026-08-12',
'date_to' => '2026-08-14',
'country_id' => '5',
'importance' => 'high',
'lang' => 'en',
]);
$ch = curl_init($baseUrl . '/economic-events/filter' . ($query !== '' ? '?' . $query : ''));
curl_setopt_array($ch, [
CURLOPT_HTTPHEADER => $headers,
CURLOPT_RETURNTRANSFER => true,
CURLOPT_TIMEOUT => 30,
]);
$raw = curl_exec($ch);
$status = (int) curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);
$payload = json_decode((string) $raw, true);
if ($status >= 400) {
fwrite(STDERR, "HTTP {$status}: {$raw}\n");
exit(1);
}
echo "meta: " . json_encode($payload['meta'] ?? null, JSON_PRETTY_PRINT | JSON_UNESCAPED_UNICODE) . PHP_EOL;
foreach (array_slice($payload['data'] ?? [], 0, 10) as $event) {
echo sprintf(
"%s | %s | %s | %s | actual=%s forecast=%s\n",
$event['occurrence_time'] ?? '',
$event['currency'] ?? '',
$event['importance'] ?? '',
$event['short_name'] ?? '',
$event['actual'] ?? 'null',
$event['forecast'] ?? 'null'
);
}package main
// US high-impact around CPI window
import (
"encoding/json"
"fmt"
"io"
"net/http"
"net/url"
"os"
"time"
)
func main() {
q := url.Values{}
q.Set("date_from", "2026-08-12")
q.Set("date_to", "2026-08-14")
q.Set("country_id", "5")
q.Set("importance", "high")
q.Set("lang", "en")
req, err := http.NewRequest(http.MethodGet, "https://api.example.com/economic-events/filter?"+q.Encode(), nil)
if err != nil {
panic(err)
}
req.Header.Set("X-Api-Key", "YOUR_API_KEY")
req.Header.Set("X-Subscription", "basic")
req.Header.Set("Accept", "application/json")
client := &http.Client{Timeout: 30 * time.Second}
resp, err := client.Do(req)
if err != nil {
panic(err)
}
defer resp.Body.Close()
body, _ := io.ReadAll(resp.Body)
if resp.StatusCode >= 400 {
fmt.Fprintf(os.Stderr, "HTTP %d: %s\n", resp.StatusCode, body)
os.Exit(1)
}
var payload map[string]any
if err := json.Unmarshal(body, &payload); err != nil {
panic(err)
}
fmt.Println("meta:", payload["meta"])
data, _ := payload["data"].([]any)
for i, item := range data {
if i >= 10 {
break
}
event, _ := item.(map[string]any)
fmt.Println(event["occurrence_time"], event["currency"], event["importance"], event["short_name"])
}
}import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
import java.time.Duration;
/** US high-impact around CPI window */
public class Example {
public static void main(String[] args) throws Exception {
HttpClient client = HttpClient.newBuilder()
.connectTimeout(Duration.ofSeconds(30))
.build();
HttpRequest request = HttpRequest.newBuilder()
.uri(URI.create("https://api.example.com/economic-events/filter?date_from=2026-08-12&date_to=2026-08-14&country_id=5&importance=high&lang=en"))
.timeout(Duration.ofSeconds(120))
.header("X-Api-Key", "YOUR_API_KEY")
.header("X-Subscription", "basic")
.header("Accept", "application/json")
.GET()
.build();
HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());
if (response.statusCode() >= 400) {
System.err.println("HTTP " + response.statusCode() + ": " + response.body());
System.exit(1);
}
System.out.println(response.body());
}
}Building a simple weekly calendar module
Complete end-to-end example: load metadata, fetch the week, group by day, and attach history for high-impact cards.
#!/usr/bin/env python3
"""Build a simple weekly calendar module from the Economic Calendar API."""
from __future__ import annotations
from collections import defaultdict
from typing import Any, Dict, List
import requests
BASE_URL = "https://api.example.com"
HEADERS = {
"X-Api-Key": "YOUR_API_KEY",
"X-Subscription": "pro",
"Accept": "application/json",
}
def main() -> None:
# Step 1 — Load metadata
langs = requests.get(f"{BASE_URL}/langs-list", headers=HEADERS, timeout=30).json()
countries = requests.get(
f"{BASE_URL}/countries-list",
headers=HEADERS,
params={"lang": "en"},
timeout=30,
).json()
print("languages:", len(langs), "countries:", len(countries))
# Step 2 — Fetch the week
week = requests.get(
f"{BASE_URL}/economic-events/filter",
headers=HEADERS,
params={
"date": "current_week",
"country_id": "5,4,72,17,35",
"importance": "high,medium",
"lang": "en",
},
timeout=30,
).json()
# Step 3 — Group by calendar day
by_day: Dict[str, List[Dict[str, Any]]] = defaultdict(list)
for row in week.get("data", []):
day = str(row.get("occurrence_time", ""))[:10]
by_day[day].append(row)
for day in sorted(by_day):
print(day, len(by_day[day]))
# Step 4 — Attach history for high-impact cards
for row in week.get("data", []):
if row.get("importance") != "high":
continue
hist = requests.get(
f"{BASE_URL}/economic-events/{row['event_id']}/history",
headers=HEADERS,
params={"released_only": True, "limit": 12, "lang": "en"},
timeout=30,
).json()
row["_history"] = hist.get("data", [])
print(row.get("short_name"), "history points:", len(row["_history"]))
if __name__ == "__main__":
main()/**
* Build a simple weekly calendar module from the Economic Calendar API.
*/
const BASE_URL = "https://api.example.com";
const HEADERS = {
"X-Api-Key": "YOUR_API_KEY",
"X-Subscription": "pro",
Accept: "application/json",
};
async function getJson(url) {
const response = await fetch(url, { headers: HEADERS });
const payload = await response.json();
if (!response.ok) {
throw new Error(`HTTP ${response.status}: ${JSON.stringify(payload)}`);
}
return payload;
}
async function main() {
// Step 1 — Load metadata
const langs = await getJson(`${BASE_URL}/langs-list`);
const countriesUrl = new URL(`${BASE_URL}/countries-list`);
countriesUrl.searchParams.set("lang", "en");
const countries = await getJson(countriesUrl);
console.log("languages:", langs.length, "countries:", Object.keys(countries).length);
// Step 2 — Fetch the week
const weekUrl = new URL(`${BASE_URL}/economic-events/filter`);
weekUrl.searchParams.set("date", "current_week");
weekUrl.searchParams.set("country_id", "5,4,72,17,35");
weekUrl.searchParams.set("importance", "high,medium");
weekUrl.searchParams.set("lang", "en");
const week = await getJson(weekUrl);
// Step 3 — Group by calendar day
const byDay = {};
for (const row of week.data || []) {
const day = String(row.occurrence_time).slice(0, 10);
(byDay[day] ||= []).push(row);
}
Object.keys(byDay)
.sort()
.forEach((day) => console.log(day, byDay[day].length));
// Step 4 — Attach history for high-impact cards
for (const row of week.data || []) {
if (row.importance !== "high") continue;
const histUrl = new URL(`${BASE_URL}/economic-events/${row.event_id}/history`);
histUrl.searchParams.set("released_only", "true");
histUrl.searchParams.set("limit", "12");
histUrl.searchParams.set("lang", "en");
const hist = await getJson(histUrl);
row._history = hist.data || [];
console.log(row.short_name, "history points:", row._history.length);
}
}
main().catch((err) => {
console.error(err);
process.exit(1);
});<?php
declare(strict_types=1);
/** Build a simple weekly calendar module from the Economic Calendar API. */
$baseUrl = 'https://api.example.com';
$headers = [
'X-Api-Key: YOUR_API_KEY',
'X-Subscription: pro',
'Accept: application/json',
];
function apiGet(string $url, array $headers): array {
$ch = curl_init($url);
curl_setopt_array($ch, [
CURLOPT_HTTPHEADER => $headers,
CURLOPT_RETURNTRANSFER => true,
CURLOPT_TIMEOUT => 30,
]);
$raw = curl_exec($ch);
$status = (int) curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);
$payload = json_decode((string) $raw, true);
if ($status >= 400 || !is_array($payload)) {
throw new RuntimeException("HTTP {$status}: {$raw}");
}
return $payload;
}
// Step 1 — Load metadata
$langs = apiGet($baseUrl . '/langs-list', $headers);
$countries = apiGet($baseUrl . '/countries-list?lang=en', $headers);
echo 'languages: ' . count($langs) . ' countries: ' . count($countries) . PHP_EOL;
// Step 2 — Fetch the week
$week = apiGet($baseUrl . '/economic-events/filter?' . http_build_query([
'date' => 'current_week',
'country_id' => '5,4,72,17,35',
'importance' => 'high,medium',
'lang' => 'en',
]), $headers);
// Step 3 — Group by calendar day
$byDay = [];
foreach ($week['data'] ?? [] as $row) {
$day = substr((string) ($row['occurrence_time'] ?? ''), 0, 10);
$byDay[$day][] = $row;
}
ksort($byDay);
foreach ($byDay as $day => $rows) {
echo $day . ' ' . count($rows) . PHP_EOL;
}
// Step 4 — Attach history for high-impact cards
foreach ($week['data'] ?? [] as &$row) {
if (($row['importance'] ?? '') !== 'high') {
continue;
}
$hist = apiGet($baseUrl . '/economic-events/' . $row['event_id'] . '/history?' . http_build_query([
'released_only' => 'true',
'limit' => 12,
'lang' => 'en',
]), $headers);
$row['_history'] = $hist['data'] ?? [];
echo ($row['short_name'] ?? '') . ' history points: ' . count($row['_history']) . PHP_EOL;
}
unset($row);package main
// Build a simple weekly calendar module from the Economic Calendar API.
import (
"encoding/json"
"fmt"
"io"
"net/http"
"net/url"
"os"
"sort"
"strings"
"time"
)
func getJSON(client *http.Client, rawURL string) map[string]any {
req, err := http.NewRequest(http.MethodGet, rawURL, nil)
if err != nil {
panic(err)
}
req.Header.Set("X-Api-Key", "YOUR_API_KEY")
req.Header.Set("X-Subscription", "pro")
req.Header.Set("Accept", "application/json")
resp, err := client.Do(req)
if err != nil {
panic(err)
}
defer resp.Body.Close()
body, _ := io.ReadAll(resp.Body)
if resp.StatusCode >= 400 {
fmt.Fprintf(os.Stderr, "HTTP %d: %s\n", resp.StatusCode, body)
os.Exit(1)
}
var payload map[string]any
if err := json.Unmarshal(body, &payload); err != nil {
// langs-list returns an array
var arr []any
if err2 := json.Unmarshal(body, &arr); err2 == nil {
return map[string]any{"_array": arr}
}
panic(err)
}
return payload
}
func main() {
client := &http.Client{Timeout: 30 * time.Second}
langs := getJSON(client, "https://api.example.com/langs-list")
countries := getJSON(client, "https://api.example.com/countries-list?lang=en")
fmt.Println("metadata loaded", langs != nil, len(countries))
q := url.Values{}
q.Set("date", "current_week")
q.Set("country_id", "5,4,72,17,35")
q.Set("importance", "high,medium")
q.Set("lang", "en")
week := getJSON(client, "https://api.example.com/economic-events/filter?"+q.Encode())
byDay := map[string]int{}
data, _ := week["data"].([]any)
for _, item := range data {
row, _ := item.(map[string]any)
day := strings.Split(fmt.Sprint(row["occurrence_time"]), "T")[0]
byDay[day]++
}
days := make([]string, 0, len(byDay))
for d := range byDay {
days = append(days, d)
}
sort.Strings(days)
for _, d := range days {
fmt.Println(d, byDay[d])
}
}#!/usr/bin/env bash
# Weekly calendar module: metadata + current_week basket
set -euo pipefail
BASE_URL="https://api.example.com"
API_KEY="YOUR_API_KEY"
SUBSCRIPTION="pro"
curl -sS "${BASE_URL}/langs-list" \
-H "X-Api-Key: ${API_KEY}" \
-H "X-Subscription: ${SUBSCRIPTION}" | jq 'length'
curl -sS "${BASE_URL}/countries-list?lang=en" \
-H "X-Api-Key: ${API_KEY}" \
-H "X-Subscription: ${SUBSCRIPTION}" | jq 'keys | length'
WEEK="$(curl -sS "${BASE_URL}/economic-events/filter?date=current_week&country_id=5,4,72,17,35&importance=high,medium&lang=en" \
-H "X-Api-Key: ${API_KEY}" \
-H "X-Subscription: ${SUBSCRIPTION}" \
-H "Accept: application/json")"
echo "${WEEK}" | jq '[.data[] | .occurrence_time[0:10]] | group_by(.) | map({day: .[0], count: length})'import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
import java.time.Duration;
/** Build a simple weekly calendar module from the Economic Calendar API. */
public class Example {
private static String get(HttpClient client, String uri) throws Exception {
HttpRequest request = HttpRequest.newBuilder()
.uri(URI.create(uri))
.timeout(Duration.ofSeconds(30))
.header("X-Api-Key", "YOUR_API_KEY")
.header("X-Subscription", "pro")
.header("Accept", "application/json")
.GET()
.build();
HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());
if (response.statusCode() >= 400) {
throw new IllegalStateException("HTTP " + response.statusCode() + ": " + response.body());
}
return response.body();
}
public static void main(String[] args) throws Exception {
HttpClient client = HttpClient.newBuilder()
.connectTimeout(Duration.ofSeconds(30))
.build();
System.out.println(get(client, "https://api.example.com/langs-list"));
System.out.println(get(client, "https://api.example.com/countries-list?lang=en"));
System.out.println(get(
client,
"https://api.example.com/economic-events/filter"
+ "?date=current_week&country_id=5,4,72,17,35&importance=high,medium&lang=en"
));
}
}Pagination cookbook
Detecting the last page
Stop when meta.next_cursor is null or missing. Do not assume that returned < limit is the only stop condition, although it usually coincides with a null cursor on this API.
Stable exports to CSV
#!/usr/bin/env python3
"""Paginate high-impact events and export a stable CSV."""
import csv
import requests
BASE_URL = "https://api.example.com"
HEADERS = {
"X-Api-Key": "YOUR_API_KEY",
"X-Subscription": "pro",
"Accept": "application/json",
}
params = {
"date_from": "2026-01-01",
"date_to": "2026-06-30",
"importance": "high",
"lang": "en",
}
rows = []
cursor = None
while True:
page_params = dict(params)
if cursor:
page_params["cursor"] = cursor
body = requests.get(
f"{BASE_URL}/economic-events/filter",
headers=HEADERS,
params=page_params,
timeout=60,
).json()
rows.extend(body.get("data", []))
cursor = body.get("meta", {}).get("next_cursor")
if not cursor:
break
fieldnames = [
"occurrence_id", "event_id", "occurrence_time", "short_name",
"country_name", "currency", "importance", "actual", "forecast", "previous",
]
with open("events.csv", "w", newline="", encoding="utf-8") as handle:
writer = csv.DictWriter(handle, fieldnames=fieldnames, extrasaction="ignore")
writer.writeheader()
writer.writerows(rows)
print("wrote", len(rows), "rows to events.csv")/**
* Paginate high-impact events and export a CSV string.
*/
const BASE_URL = "https://api.example.com";
const HEADERS = {
"X-Api-Key": "YOUR_API_KEY",
"X-Subscription": "pro",
Accept: "application/json",
};
const FIELDS = [
"occurrence_id", "event_id", "occurrence_time", "short_name",
"country_name", "currency", "importance", "actual", "forecast", "previous",
];
function csvEscape(value) {
const text = value == null ? "" : String(value);
if (/[",\n]/.test(text)) return `"${text.replace(/"/g, '""')}"`;
return text;
}
async function fetchAll() {
const rows = [];
let cursor = null;
while (true) {
const url = new URL(`${BASE_URL}/economic-events/filter`);
url.searchParams.set("date_from", "2026-01-01");
url.searchParams.set("date_to", "2026-06-30");
url.searchParams.set("importance", "high");
url.searchParams.set("lang", "en");
if (cursor) url.searchParams.set("cursor", cursor);
const response = await fetch(url, { headers: HEADERS });
const body = await response.json();
if (!response.ok) throw new Error(JSON.stringify(body));
rows.push(...(body.data || []));
cursor = body.meta?.next_cursor || null;
if (!cursor) break;
}
return rows;
}
async function main() {
const rows = await fetchAll();
const lines = [FIELDS.join(",")];
for (const row of rows) {
lines.push(FIELDS.map((field) => csvEscape(row[field])).join(","));
}
const csv = lines.join("\n");
console.log(csv.slice(0, 500));
console.log("total rows:", rows.length);
}
main().catch((err) => {
console.error(err);
process.exit(1);
});<?php
declare(strict_types=1);
/** Paginate high-impact events and export a stable CSV. */
$baseUrl = 'https://api.example.com';
$headers = [
'X-Api-Key: YOUR_API_KEY',
'X-Subscription: pro',
'Accept: application/json',
];
$params = [
'date_from' => '2026-01-01',
'date_to' => '2026-06-30',
'importance' => 'high',
'lang' => 'en',
];
$rows = [];
$cursor = null;
do {
if ($cursor) {
$params['cursor'] = $cursor;
}
$ch = curl_init($baseUrl . '/economic-events/filter?' . http_build_query($params));
curl_setopt_array($ch, [
CURLOPT_HTTPHEADER => $headers,
CURLOPT_RETURNTRANSFER => true,
CURLOPT_TIMEOUT => 60,
]);
$raw = curl_exec($ch);
$status = (int) curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);
$body = json_decode((string) $raw, true);
if ($status >= 400 || !is_array($body)) {
throw new RuntimeException("HTTP {$status}: {$raw}");
}
$rows = array_merge($rows, $body['data'] ?? []);
$cursor = $body['meta']['next_cursor'] ?? null;
} while ($cursor);
$fp = fopen('events.csv', 'w');
$fields = [
'occurrence_id', 'event_id', 'occurrence_time', 'short_name',
'country_name', 'currency', 'importance', 'actual', 'forecast', 'previous',
];
fputcsv($fp, $fields);
foreach ($rows as $row) {
$line = [];
foreach ($fields as $field) {
$line[] = $row[$field] ?? null;
}
fputcsv($fp, $line);
}
fclose($fp);
echo 'wrote ' . count($rows) . " rows to events.csv\n";package main
// Paginate high-impact events (CSV write left to your app).
import (
"encoding/json"
"fmt"
"io"
"net/http"
"net/url"
"os"
"time"
)
func main() {
client := &http.Client{Timeout: 60 * time.Second}
cursor := ""
total := 0
for {
q := url.Values{}
q.Set("date_from", "2026-01-01")
q.Set("date_to", "2026-06-30")
q.Set("importance", "high")
q.Set("lang", "en")
if cursor != "" {
q.Set("cursor", cursor)
}
req, _ := http.NewRequest(http.MethodGet, "https://api.example.com/economic-events/filter?"+q.Encode(), nil)
req.Header.Set("X-Api-Key", "YOUR_API_KEY")
req.Header.Set("X-Subscription", "pro")
req.Header.Set("Accept", "application/json")
resp, err := client.Do(req)
if err != nil {
panic(err)
}
body, _ := io.ReadAll(resp.Body)
resp.Body.Close()
if resp.StatusCode >= 400 {
fmt.Fprintf(os.Stderr, "HTTP %d: %s\n", resp.StatusCode, body)
os.Exit(1)
}
var payload map[string]any
_ = json.Unmarshal(body, &payload)
if data, ok := payload["data"].([]any); ok {
total += len(data)
}
meta, _ := payload["meta"].(map[string]any)
next, _ := meta["next_cursor"].(string)
if next == "" {
break
}
cursor = next
}
fmt.Println("total rows:", total)
}#!/usr/bin/env bash
# Paginate and append JSON lines (convert to CSV with jq/miller as needed)
set -euo pipefail
BASE_URL="https://api.example.com"
API_KEY="YOUR_API_KEY"
SUBSCRIPTION="pro"
CURSOR=""
: > events.ndjson
while true; do
URL="${BASE_URL}/economic-events/filter?date_from=2026-01-01&date_to=2026-06-30&importance=high&lang=en"
[[ -n "${CURSOR}" ]] && URL="${URL}&cursor=${CURSOR}"
PAGE="$(curl -sS "${URL}" \
-H "X-Api-Key: ${API_KEY}" \
-H "X-Subscription: ${SUBSCRIPTION}" \
-H "Accept: application/json")"
echo "${PAGE}" | jq -c '.data[]' >> events.ndjson
CURSOR="$(echo "${PAGE}" | jq -r '.meta.next_cursor // empty')"
[[ -z "${CURSOR}" ]] && break
done
wc -l events.ndjsonimport java.net.URI;
import java.net.URLEncoder;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
import java.nio.charset.StandardCharsets;
import java.time.Duration;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
/** Paginate high-impact events for CSV/warehouse export. */
public class Example {
public static void main(String[] args) throws Exception {
HttpClient client = HttpClient.newBuilder()
.connectTimeout(Duration.ofSeconds(30))
.build();
String cursor = null;
int pages = 0;
while (true) {
StringBuilder q = new StringBuilder("date_from=2026-01-01&date_to=2026-06-30&importance=high&lang=en");
if (cursor != null) {
q.append("&cursor=").append(URLEncoder.encode(cursor, StandardCharsets.UTF_8));
}
HttpRequest request = HttpRequest.newBuilder()
.uri(URI.create("https://api.example.com/economic-events/filter?" + q))
.timeout(Duration.ofSeconds(60))
.header("X-Api-Key", "YOUR_API_KEY")
.header("X-Subscription", "pro")
.header("Accept", "application/json")
.GET()
.build();
HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());
if (response.statusCode() >= 400) {
System.err.println(response.body());
System.exit(1);
}
pages++;
Matcher m = Pattern.compile("\"next_cursor\"\\s*:\\s*\"([^\"]+)\"").matcher(response.body());
if (m.find()) cursor = m.group(1); else break;
}
System.out.println("pages: " + pages);
}
}Resume after interruption
Persist the last successful cursor and the original query parameters. On restart, continue from that cursor with the same filters. Changing filters invalidates the cursor semantics for your export.
History cookbook
Chart series (actual vs forecast)
#!/usr/bin/env python3
"""Build an actual-vs-forecast chart series from event history."""
import json
import requests
BASE_URL = "https://api.example.com"
HEADERS = {
"X-Api-Key": "YOUR_API_KEY",
"X-Subscription": "basic",
"Accept": "application/json",
}
hist = requests.get(
f"{BASE_URL}/economic-events/1057/history",
headers=HEADERS,
params={"released_only": True, "limit": 24, "lang": "en"},
timeout=30,
).json()
series = [
{
"date": row["date"],
"actual": row["actual"],
"forecast": row["forecast"],
"previous": row["previous"],
}
for row in reversed(hist.get("data", [])) # chronological for charts
]
print(json.dumps(series, indent=2, ensure_ascii=False))/**
* Build an actual-vs-forecast chart series from event history.
*/
const BASE_URL = "https://api.example.com";
const HEADERS = {
"X-Api-Key": "YOUR_API_KEY",
"X-Subscription": "basic",
Accept: "application/json",
};
async function main() {
const url = new URL(`${BASE_URL}/economic-events/1057/history`);
url.searchParams.set("released_only", "true");
url.searchParams.set("limit", "24");
url.searchParams.set("lang", "en");
const response = await fetch(url, { headers: HEADERS });
const hist = await response.json();
if (!response.ok) throw new Error(JSON.stringify(hist));
const series = [...(hist.data || [])].reverse().map((row) => ({
date: row.date,
actual: row.actual,
forecast: row.forecast,
previous: row.previous,
}));
console.log(JSON.stringify(series, null, 2));
}
main().catch((err) => {
console.error(err);
process.exit(1);
});<?php
declare(strict_types=1);
/** Build an actual-vs-forecast chart series from event history. */
$baseUrl = 'https://api.example.com';
$headers = [
'X-Api-Key: YOUR_API_KEY',
'X-Subscription: basic',
'Accept: application/json',
];
$ch = curl_init($baseUrl . '/economic-events/1057/history?' . http_build_query([
'released_only' => 'true',
'limit' => 24,
'lang' => 'en',
]));
curl_setopt_array($ch, [
CURLOPT_HTTPHEADER => $headers,
CURLOPT_RETURNTRANSFER => true,
CURLOPT_TIMEOUT => 30,
]);
$raw = curl_exec($ch);
$status = (int) curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);
$hist = json_decode((string) $raw, true);
if ($status >= 400 || !is_array($hist)) {
throw new RuntimeException("HTTP {$status}: {$raw}");
}
$series = [];
foreach (array_reverse($hist['data'] ?? []) as $row) {
$series[] = [
'date' => $row['date'] ?? null,
'actual' => $row['actual'] ?? null,
'forecast' => $row['forecast'] ?? null,
'previous' => $row['previous'] ?? null,
];
}
echo json_encode($series, JSON_PRETTY_PRINT | JSON_UNESCAPED_UNICODE) . PHP_EOL;package main
// Build an actual-vs-forecast chart series from event history.
import (
"encoding/json"
"fmt"
"io"
"net/http"
"os"
"time"
)
func main() {
req, _ := http.NewRequest(
http.MethodGet,
"https://api.example.com/economic-events/1057/history?released_only=true&limit=24&lang=en",
nil,
)
req.Header.Set("X-Api-Key", "YOUR_API_KEY")
req.Header.Set("X-Subscription", "basic")
req.Header.Set("Accept", "application/json")
client := &http.Client{Timeout: 30 * time.Second}
resp, err := client.Do(req)
if err != nil {
panic(err)
}
defer resp.Body.Close()
body, _ := io.ReadAll(resp.Body)
if resp.StatusCode >= 400 {
fmt.Fprintf(os.Stderr, "HTTP %d: %s\n", resp.StatusCode, body)
os.Exit(1)
}
var payload map[string]any
_ = json.Unmarshal(body, &payload)
data, _ := payload["data"].([]any)
// reverse for chronological chart order
for i, j := 0, len(data)-1; i < j; i, j = i+1, j-1 {
data[i], data[j] = data[j], data[i]
}
enc := json.NewEncoder(os.Stdout)
enc.SetIndent("", " ")
_ = enc.Encode(data)
}#!/usr/bin/env bash
# Chart series: reverse history rows for chronological plotting
set -euo pipefail
BASE_URL="https://api.example.com"
API_KEY="YOUR_API_KEY"
curl -sS "${BASE_URL}/economic-events/1057/history?released_only=true&limit=24&lang=en" \
-H "X-Api-Key: ${API_KEY}" \
-H "X-Subscription: basic" \
-H "Accept: application/json" \
| jq '[.data | reverse[] | {date, actual, forecast, previous}]'import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
import java.time.Duration;
/** Build an actual-vs-forecast chart series from event history. */
public class Example {
public static void main(String[] args) throws Exception {
HttpClient client = HttpClient.newBuilder()
.connectTimeout(Duration.ofSeconds(30))
.build();
HttpRequest request = HttpRequest.newBuilder()
.uri(URI.create(
"https://api.example.com/economic-events/1057/history"
+ "?released_only=true&limit=24&lang=en"))
.timeout(Duration.ofSeconds(30))
.header("X-Api-Key", "YOUR_API_KEY")
.header("X-Subscription", "basic")
.header("Accept", "application/json")
.GET()
.build();
HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());
if (response.statusCode() >= 400) {
System.err.println(response.body());
System.exit(1);
}
System.out.println(response.body());
}
}Comparing plan caps
#!/usr/bin/env python3
"""Compare effective history limits across subscription plans."""
import requests
BASE_URL = "https://api.example.com"
BASE_HEADERS = {
"X-Api-Key": "YOUR_API_KEY",
"Accept": "application/json",
}
for plan, want in [("free", 100), ("basic", 100), ("pro", 100)]:
headers = {**BASE_HEADERS, "X-Subscription": plan}
body = requests.get(
f"{BASE_URL}/economic-events/1057/history",
headers=headers,
params={"limit": want, "lang": "en", "released_only": True},
timeout=30,
).json()
meta = body.get("meta", {})
print(
plan,
"requested",
want,
"effective_limit",
meta.get("limit"),
"returned",
meta.get("returned"),
)/**
* Compare effective history limits across subscription plans.
*/
const BASE_URL = "https://api.example.com";
async function checkPlan(plan, want) {
const url = new URL(`${BASE_URL}/economic-events/1057/history`);
url.searchParams.set("limit", String(want));
url.searchParams.set("lang", "en");
url.searchParams.set("released_only", "true");
const response = await fetch(url, {
headers: {
"X-Api-Key": "YOUR_API_KEY",
"X-Subscription": plan,
Accept: "application/json",
},
});
const body = await response.json();
console.log(
plan,
"requested",
want,
"effective_limit",
body.meta?.limit,
"returned",
body.meta?.returned
);
}
async function main() {
for (const [plan, want] of [
["free", 100],
["basic", 100],
["pro", 100],
]) {
await checkPlan(plan, want);
}
}
main().catch((err) => {
console.error(err);
process.exit(1);
});<?php
declare(strict_types=1);
/** Compare effective history limits across subscription plans. */
$baseUrl = 'https://api.example.com';
foreach (['free' => 100, 'basic' => 100, 'pro' => 100] as $plan => $want) {
$headers = [
'X-Api-Key: YOUR_API_KEY',
'X-Subscription: ' . $plan,
'Accept: application/json',
];
$ch = curl_init($baseUrl . '/economic-events/1057/history?' . http_build_query([
'limit' => $want,
'lang' => 'en',
'released_only' => 'true',
]));
curl_setopt_array($ch, [
CURLOPT_HTTPHEADER => $headers,
CURLOPT_RETURNTRANSFER => true,
CURLOPT_TIMEOUT => 30,
]);
$raw = curl_exec($ch);
curl_close($ch);
$body = json_decode((string) $raw, true);
$meta = $body['meta'] ?? [];
echo $plan
. ' requested ' . $want
. ' effective_limit ' . ($meta['limit'] ?? '?')
. ' returned ' . ($meta['returned'] ?? '?')
. PHP_EOL;
}package main
// Compare effective history limits across subscription plans.
import (
"encoding/json"
"fmt"
"io"
"net/http"
"time"
)
func main() {
plans := []string{"free", "basic", "pro"}
client := &http.Client{Timeout: 30 * time.Second}
for _, plan := range plans {
req, _ := http.NewRequest(
http.MethodGet,
"https://api.example.com/economic-events/1057/history?limit=100&lang=en&released_only=true",
nil,
)
req.Header.Set("X-Api-Key", "YOUR_API_KEY")
req.Header.Set("X-Subscription", plan)
req.Header.Set("Accept", "application/json")
resp, err := client.Do(req)
if err != nil {
panic(err)
}
body, _ := io.ReadAll(resp.Body)
resp.Body.Close()
var payload map[string]any
_ = json.Unmarshal(body, &payload)
meta, _ := payload["meta"].(map[string]any)
fmt.Println(plan, "effective_limit", meta["limit"], "returned", meta["returned"])
}
}#!/usr/bin/env bash
# Compare history caps for free / basic / pro
set -euo pipefail
BASE_URL="https://api.example.com"
API_KEY="YOUR_API_KEY"
for PLAN in free basic pro; do
echo "=== ${PLAN} ==="
curl -sS "${BASE_URL}/economic-events/1057/history?limit=100&lang=en&released_only=true" \
-H "X-Api-Key: ${API_KEY}" \
-H "X-Subscription: ${PLAN}" \
-H "Accept: application/json" \
| jq '{plan: .meta.plan, limit: .meta.limit, returned: .meta.returned}'
doneimport java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
import java.time.Duration;
/** Compare effective history limits across subscription plans. */
public class Example {
public static void main(String[] args) throws Exception {
HttpClient client = HttpClient.newBuilder()
.connectTimeout(Duration.ofSeconds(30))
.build();
String[] plans = {"free", "basic", "pro"};
for (String plan : plans) {
HttpRequest request = HttpRequest.newBuilder()
.uri(URI.create(
"https://api.example.com/economic-events/1057/history"
+ "?limit=100&lang=en&released_only=true"))
.timeout(Duration.ofSeconds(30))
.header("X-Api-Key", "YOUR_API_KEY")
.header("X-Subscription", plan)
.header("Accept", "application/json")
.GET()
.build();
HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());
System.out.println(plan + " => " + response.body());
}
}
}Export and stream notes
Full runnable examples for these Ultra endpoints are also in §6 Export and §7 Stream. The snippets below are complete clients for cookbook navigation.
Export
#!/usr/bin/env bash
# Start Ultra export job
set -euo pipefail
BASE_URL="https://api.example.com"
API_KEY="YOUR_API_KEY"
SUBSCRIPTION="ultra"
curl -sS -X POST "${BASE_URL}/economic-events/export" \
-H "X-Api-Key: ${API_KEY}" \
-H "X-Subscription: ${SUBSCRIPTION}" \
-H "Accept: application/json" | jq .#!/usr/bin/env python3
"""Start Ultra export job"""
import json
import requests
BASE_URL = "https://api.example.com"
HEADERS = {
"X-Api-Key": "YOUR_API_KEY",
"X-Subscription": "ultra",
"Accept": "application/json",
}
response = requests.post(f"{BASE_URL}/economic-events/export", headers=HEADERS, timeout=30)
print("status:", response.status_code)
print(json.dumps(response.json(), indent=2, ensure_ascii=False))/**
* Start Ultra export job
*/
const BASE_URL = "https://api.example.com";
const HEADERS = {
"X-Api-Key": "YOUR_API_KEY",
"X-Subscription": "ultra",
Accept: "application/json",
};
async function main() {
const response = await fetch(`${BASE_URL}/economic-events/export`, {
method: "POST",
headers: HEADERS,
});
const payload = await response.json();
console.log("status:", response.status);
console.log(payload);
}
main().catch((err) => {
console.error(err);
process.exit(1);
});<?php
declare(strict_types=1);
/** Start Ultra export job */
$baseUrl = 'https://api.example.com';
$headers = [
'X-Api-Key: YOUR_API_KEY',
'X-Subscription: ultra',
'Accept: application/json',
];
$ch = curl_init($baseUrl . '/economic-events/export');
curl_setopt_array($ch, [
CURLOPT_POST => true,
CURLOPT_HTTPHEADER => $headers,
CURLOPT_RETURNTRANSFER => true,
CURLOPT_TIMEOUT => 30,
]);
$raw = curl_exec($ch);
$status = (int) curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);
$payload = json_decode((string) $raw, true);
echo "status: {$status}" . PHP_EOL;
echo json_encode($payload, JSON_PRETTY_PRINT | JSON_UNESCAPED_UNICODE) . PHP_EOL;package main
// Start Ultra export job
import (
"fmt"
"io"
"net/http"
"os"
"time"
)
func main() {
req, err := http.NewRequest(http.MethodPost, "https://api.example.com/economic-events/export", nil)
if err != nil {
panic(err)
}
req.Header.Set("X-Api-Key", "YOUR_API_KEY")
req.Header.Set("X-Subscription", "ultra")
req.Header.Set("Accept", "application/json")
client := &http.Client{Timeout: 30 * time.Second}
resp, err := client.Do(req)
if err != nil {
panic(err)
}
defer resp.Body.Close()
body, _ := io.ReadAll(resp.Body)
fmt.Println("status:", resp.StatusCode)
fmt.Println(string(body))
}import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
import java.time.Duration;
/** Start Ultra export job */
public class Example {
public static void main(String[] args) throws Exception {
HttpClient client = HttpClient.newBuilder()
.connectTimeout(Duration.ofSeconds(30))
.build();
HttpRequest request = HttpRequest.newBuilder()
.uri(URI.create("https://api.example.com/economic-events/export"))
.timeout(Duration.ofSeconds(30))
.header("X-Api-Key", "YOUR_API_KEY")
.header("X-Subscription", "ultra")
.header("Accept", "application/json")
.POST(HttpRequest.BodyPublishers.noBody())
.build();
HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());
System.out.println("status: " + response.statusCode());
System.out.println(response.body());
}
}Non-Ultra plans receive HTTP 403. Confirm job delivery behavior with your operator for the deployed environment.
Stream
#!/usr/bin/env bash
# NDJSON stream for a date range
set -euo pipefail
BASE_URL="https://api.example.com"
API_KEY="YOUR_API_KEY"
SUBSCRIPTION="ultra"
curl -N -sS "${BASE_URL}/economic-events/stream?date_from=2026-08-01&date_to=2026-08-07" \
-H "X-Api-Key: ${API_KEY}" \
-H "X-Subscription: ${SUBSCRIPTION}" \
-H "Accept: application/x-ndjson"#!/usr/bin/env python3
"""NDJSON stream for a date range"""
import json
import requests
BASE_URL = "https://api.example.com"
HEADERS = {
"X-Api-Key": "YOUR_API_KEY",
"X-Subscription": "ultra",
"Accept": "application/x-ndjson",
}
params = {
"date_from": "2026-08-01",
"date_to": "2026-08-07",
}
with requests.get(
f"{BASE_URL}/economic-events/stream",
headers=HEADERS,
params=params,
stream=True,
timeout=120,
) as response:
response.raise_for_status()
for line in response.iter_lines(decode_unicode=True):
if not line:
continue
event = json.loads(line)
print(json.dumps(event, ensure_ascii=False))/**
* NDJSON stream for a date range
*/
const BASE_URL = "https://api.example.com";
const HEADERS = {
"X-Api-Key": "YOUR_API_KEY",
"X-Subscription": "ultra",
Accept: "application/x-ndjson",
};
async function main() {
const url = new URL(`${BASE_URL}/economic-events/stream`);
url.searchParams.set("date_from", "2026-08-01");
url.searchParams.set("date_to", "2026-08-07");
const response = await fetch(url, { headers: HEADERS });
if (!response.ok) {
throw new Error(`HTTP ${response.status}: ${await response.text()}`);
}
const text = await response.text();
for (const line of text.split("\n").filter(Boolean)) {
console.log(JSON.parse(line));
}
}
main().catch((err) => {
console.error(err);
process.exit(1);
});<?php
declare(strict_types=1);
/** NDJSON stream for a date range */
$baseUrl = 'https://api.example.com';
$headers = [
'X-Api-Key: YOUR_API_KEY',
'X-Subscription: ultra',
'Accept: application/x-ndjson',
];
$query = http_build_query([
'date_from' => '2026-08-01',
'date_to' => '2026-08-07',
]);
$ch = curl_init($baseUrl . '/economic-events/stream?' . $query);
curl_setopt_array($ch, [
CURLOPT_HTTPHEADER => $headers,
CURLOPT_RETURNTRANSFER => true,
CURLOPT_TIMEOUT => 120,
]);
$raw = curl_exec($ch);
$status = (int) curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);
if ($status >= 400) {
throw new RuntimeException("HTTP {$status}: {$raw}");
}
foreach (preg_split('/\r?\n/', (string) $raw) as $line) {
$line = trim($line);
if ($line === '') {
continue;
}
$event = json_decode($line, true);
echo json_encode($event, JSON_UNESCAPED_UNICODE) . PHP_EOL;
}package main
// NDJSON stream for a date range
import (
"bufio"
"fmt"
"net/http"
"net/url"
"os"
"time"
)
func main() {
q := url.Values{}
q.Set("date_from", "2026-08-01")
q.Set("date_to", "2026-08-07")
req, err := http.NewRequest(http.MethodGet, "https://api.example.com/economic-events/stream?"+q.Encode(), nil)
if err != nil {
panic(err)
}
req.Header.Set("X-Api-Key", "YOUR_API_KEY")
req.Header.Set("X-Subscription", "ultra")
req.Header.Set("Accept", "application/x-ndjson")
client := &http.Client{Timeout: 120 * time.Second}
resp, err := client.Do(req)
if err != nil {
panic(err)
}
defer resp.Body.Close()
if resp.StatusCode >= 400 {
fmt.Fprintf(os.Stderr, "HTTP %d\n", resp.StatusCode)
os.Exit(1)
}
scanner := bufio.NewScanner(resp.Body)
for scanner.Scan() {
line := scanner.Text()
if line != "" {
fmt.Println(line)
}
}
}import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
import java.time.Duration;
/** NDJSON stream for a date range */
public class Example {
public static void main(String[] args) throws Exception {
HttpClient client = HttpClient.newBuilder()
.connectTimeout(Duration.ofSeconds(30))
.build();
HttpRequest request = HttpRequest.newBuilder()
.uri(URI.create("https://api.example.com/economic-events/stream?date_from=2026-08-01&date_to=2026-08-07"))
.timeout(Duration.ofSeconds(120))
.header("X-Api-Key", "YOUR_API_KEY")
.header("X-Subscription", "ultra")
.header("Accept", "application/x-ndjson")
.GET()
.build();
HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());
if (response.statusCode() >= 400) {
System.err.println("HTTP " + response.statusCode() + ": " + response.body());
System.exit(1);
}
System.out.println(response.body());
}
}Each line is one JSON object ordered by occurrence_time DESC. Prefer /filter + cursors for interactive UIs.
GET /calendar
HTTP 302 redirect to the HTML calendar host. Useful for browsers, not for most API clients.
#!/usr/bin/env bash
# HTML calendar redirect
set -euo pipefail
BASE_URL="https://api.example.com"
API_KEY="YOUR_API_KEY"
curl -sSI "${BASE_URL}/calendar" \
-H "X-Api-Key: ${API_KEY}" \
-H "Accept: application/json" | head -n 20#!/usr/bin/env python3
"""HTML calendar redirect"""
import requests
BASE_URL = "https://api.example.com"
HEADERS = {
"X-Api-Key": "YOUR_API_KEY",
"Accept": "application/json",
}
response = requests.get(
f"{BASE_URL}/calendar",
headers=HEADERS,
allow_redirects=False,
timeout=30,
)
print("status:", response.status_code)
print("location:", response.headers.get("Location"))/**
* HTML calendar redirect
*/
const BASE_URL = "https://api.example.com";
const HEADERS = {
"X-Api-Key": "YOUR_API_KEY",
Accept: "application/json",
};
async function main() {
const response = await fetch(`${BASE_URL}/calendar`, {
headers: HEADERS,
redirect: "manual",
});
console.log("status:", response.status);
console.log("location:", response.headers.get("Location"));
}
main().catch((err) => {
console.error(err);
process.exit(1);
});<?php
declare(strict_types=1);
/** HTML calendar redirect */
$baseUrl = 'https://api.example.com';
$headers = [
'X-Api-Key: YOUR_API_KEY',
'Accept: application/json',
];
$ch = curl_init($baseUrl . '/calendar');
curl_setopt_array($ch, [
CURLOPT_HTTPHEADER => $headers,
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HEADER => true,
CURLOPT_NOBODY => true,
CURLOPT_FOLLOWLOCATION => false,
CURLOPT_TIMEOUT => 30,
]);
$raw = curl_exec($ch);
$status = (int) curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);
echo "status: {$status}" . PHP_EOL;
if (preg_match('/^Location:\s*(.+)$/mi', (string) $raw, $m)) {
echo "location: " . trim($m[1]) . PHP_EOL;
}package main
// HTML calendar redirect
import (
"encoding/json"
"fmt"
"io"
"net/http"
"net/url"
"os"
"time"
)
func main() {
q := url.Values{}
req, err := http.NewRequest(http.MethodGet, "https://api.example.com/calendar", nil)
if err != nil {
panic(err)
}
req.Header.Set("X-Api-Key", "YOUR_API_KEY")
req.Header.Set("X-Subscription", "basic")
req.Header.Set("Accept", "application/json")
client := &http.Client{Timeout: 30 * time.Second}
resp, err := client.Do(req)
if err != nil {
panic(err)
}
defer resp.Body.Close()
body, _ := io.ReadAll(resp.Body)
if resp.StatusCode >= 400 {
fmt.Fprintf(os.Stderr, "HTTP %d: %s\n", resp.StatusCode, body)
os.Exit(1)
}
var payload any
if err := json.Unmarshal(body, &payload); err != nil {
panic(err)
}
enc := json.NewEncoder(os.Stdout)
enc.SetIndent("", " ")
_ = enc.Encode(payload)
}import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
import java.time.Duration;
/** HTML calendar redirect */
public class Example {
public static void main(String[] args) throws Exception {
HttpClient client = HttpClient.newBuilder()
.connectTimeout(Duration.ofSeconds(30))
.build();
HttpRequest request = HttpRequest.newBuilder()
.uri(URI.create("https://api.example.com/calendar"))
.timeout(Duration.ofSeconds(120))
.header("X-Api-Key", "YOUR_API_KEY")
.header("X-Subscription", "basic")
.header("Accept", "application/json")
.GET()
.build();
HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());
if (response.statusCode() >= 400) {
System.err.println("HTTP " + response.statusCode() + ": " + response.body());
System.exit(1);
}
System.out.println(response.body());
}
}Recommended client patterns
Daily widget
- Call
/economic-events/filter?date=today&importance=high,medium&lang=en. - Refresh every 5–15 minutes during active hours.
- Key list items by
occurrence_id. - Show
actualwhen present; otherwise showforecastwith a “pending” badge.
Weekly planner
- Resolve countries via
/countries-list?lang=en. - Fetch
date=current_weekwith your country/currency basket. - Group by day for a calendar grid.
- Refresh after UTC midnight or when the ISO week changes.
Research archive
- Choose
date_from/date_to. - Use Pro/Ultra page sizes.
- Loop
next_cursoruntil null. - Persist to your warehouse keyed by
occurrence_id. - Enrich selected series with
/history?released_only=true.
Multilingual product
- Load
/langs-listfor UI selectors. - On Pro, send at most five
langcodes per filter request. - Fall back to
enwhen a language is not in the active plan. - Deduplicate multi-language rows if the UI shows one card per release.
Alert-like polling without streams
- Poll
/filter?date=today&importance=highevery 30–60 seconds. - Track
occurrence_idvalues you already processed. - Emit a notification when a known pending row gains a non-null
actual.
FAQ
Q: Why do I see fewer than limit rows?
A: Either fewer matching events exist, or plan/language filters reduced the set. Also check whether you are on the last page.
Q: Why is actual null for an event that already happened?
A: The value is filled after the upstream release is imported. Poll again later or use history with released_only=true for older prints.
Q: Can I sort ascending (soonest first)?
A: Filter results are newest-first (occurrence_time DESC). Reverse client-side for small pages when you need soonest-first ordering.
Q: Does country_id and currency AND together?
A: Yes. All provided filters are combined with AND logic.
Q: What happens if I pass both date and date_from?
A: date wins and overrides the from/to pair.
Q: Is importance=low,medium,high different from omitting importance?
A: The service default is already low,medium,high. Use importance=all when you want the explicit no-importance-filter path.
Q: How do I find an event_id?
A: Call /filter, read data[].event_id, then call /economic-events/{event_id}/history.
Important notes
- Language access is plan-gated; verify your subscription before requesting additional languages.
dateoverridesdate_from/date_towhen both are present.- Prefer compact comma lists without spaces:
USD,EUR. - Cursor pagination requires identical filters across pages.
- History
limitis silently clamped to the plan maximum. - Export and stream require higher tiers; confirm availability before building against them.
- Multi-language responses can contain duplicate economic releases (one row per language).
- This API provides economic information only and does not constitute investment advice.
Quick reference
GET /ping
GET /langs-list
GET /countries-list?lang=en
GET /economic-events/filter?date=today¤cy=USD&importance=high&lang=en
GET /economic-events/filter?date=current_week&country_id=5,4,72&lang=en
GET /economic-events/filter?date_from=2026-08-01&date_to=2026-08-31&lang=en
GET /economic-events/1057/history?limit=24&released_only=true&lang=en
POST /economic-events/export
GET /economic-events/stream?date_from=2026-08-01&date_to=2026-08-07
GET /calendarComplete starters by language
Use the Shared client setup section at the top of this document for full cURL, Python, JavaScript, PHP, Go, and Java clients. For a complete filter request in every language (with tabs), see Filter examples → A — Today in English.
EconPulse Economic Calendar API documentation.