Foresight API quickstart
Create a developer key, request UNRATE observations, and read the stable response envelope.
1. Get a key
Start the Developer checkout at /api/billing/checkout?plan=developer. Use the returned API key as a bearer token.
2. First curl
curl "https://api.creativeforesight.io/v1/observations?indicator=UNRATE&limit=2" \
-H "Authorization: Bearer $CF_API_KEY"3. JavaScript
const response = await fetch(
"https://api.creativeforesight.io/v1/observations?indicator=UNRATE&limit=2",
{ headers: { Authorization: `Bearer ${process.env.CF_API_KEY}` } },
);
if (!response.ok) {
throw new Error(await response.text());
}
const body = await response.json();
for (const row of body.data) {
console.log(row.period_start, row.value, row.revision, row.is_preliminary);
}
console.log(body.meta.indicator, body.meta.region, body.meta.unit);4. Python
import os
import requests
response = requests.get(
"https://api.creativeforesight.io/v1/observations",
params={"indicator": "UNRATE", "limit": 2},
headers={"Authorization": f"Bearer {os.environ['CF_API_KEY']}"},
timeout=30,
)
response.raise_for_status()
body = response.json()
for row in body["data"]:
print(row["period_start"], row["value"], row["revision"], row["is_preliminary"])
print(body["meta"]["indicator"], body["meta"]["region"], body["meta"]["unit"])Response shape
GET /v1/observations returns { data, meta }. Each observation includes period bounds, a numeric value, revision number, preliminary flag, and source update timestamp.
{
"data": [
{
"period_start": "2026-05-01",
"period_end": null,
"period_type": "month",
"value": 4.2,
"revision": 0,
"is_preliminary": false,
"source_updated_at": "2026-06-06T12:00:00.000Z"
}
],
"meta": {
"indicator": "UNRATE",
"region": "US",
"unit": "percent",
"total": 1,
"limit": 2,
"offset": 0
}
}