curl "https://api.neuraldraft.io/v1/content/bulk?keys=hero.headline,hero.cta&lang=en" \
-H "Authorization: Bearer ndsk_live_yourkey"const map = await nd.content.bulk(["hero.headline", "hero.cta"], { lang: "en" });
r = requests.get(
"https://api.neuraldraft.io/v1/content/bulk",
params={"keys": "hero.headline,hero.cta", "lang": "en"},
headers={"Authorization": f"Bearer {key}"},
)
content_map = r.json()
<?php
$map = json_decode((string) $client->get('content/bulk', [
'query' => ['keys' => 'hero.headline,hero.cta', 'lang' => 'en'],
'headers' => ['Authorization' => 'Bearer '.$key],
])->getBody(), true);
{
"hero.headline": "Find your calm, one breath at a time",
"hero.cta": "Book a class",
"footer.copy": "© 2026 Lakeside Yoga"
}{
"type": "https://api.neuraldraft.io/errors/bad_request",
"title": "Bad request",
"status": 400,
"detail": "Request body could not be parsed.",
"code": "bad_request",
"instance": "req_2Nh4PqRsTuVw"
}{
"type": "https://api.neuraldraft.io/errors/unauthorized",
"title": "Unauthorized",
"status": 401,
"detail": "API key missing or invalid.",
"code": "unauthorized",
"instance": "req_2Nh4PqRsTuVw"
}Bulk read content keys
Returns values for many translation keys in one round trip. Designed
for build-time / SSG fetches: pass every key your page references and
get a flat {key: value} map back.
Cacheable — the response includes Cache-Control: public, max-age=60
and an ETag. Re-fetch with If-None-Match to revalidate cheaply.
Read-only. Does not consume credits.
curl "https://api.neuraldraft.io/v1/content/bulk?keys=hero.headline,hero.cta&lang=en" \
-H "Authorization: Bearer ndsk_live_yourkey"const map = await nd.content.bulk(["hero.headline", "hero.cta"], { lang: "en" });
r = requests.get(
"https://api.neuraldraft.io/v1/content/bulk",
params={"keys": "hero.headline,hero.cta", "lang": "en"},
headers={"Authorization": f"Bearer {key}"},
)
content_map = r.json()
<?php
$map = json_decode((string) $client->get('content/bulk', [
'query' => ['keys' => 'hero.headline,hero.cta', 'lang' => 'en'],
'headers' => ['Authorization' => 'Bearer '.$key],
])->getBody(), true);
{
"hero.headline": "Find your calm, one breath at a time",
"hero.cta": "Book a class",
"footer.copy": "© 2026 Lakeside Yoga"
}{
"type": "https://api.neuraldraft.io/errors/bad_request",
"title": "Bad request",
"status": 400,
"detail": "Request body could not be parsed.",
"code": "bad_request",
"instance": "req_2Nh4PqRsTuVw"
}{
"type": "https://api.neuraldraft.io/errors/unauthorized",
"title": "Unauthorized",
"status": 401,
"detail": "API key missing or invalid.",
"code": "unauthorized",
"instance": "req_2Nh4PqRsTuVw"
}Authorizations
Project API key. Pass as Authorization: Bearer ndsk_live_.... Manage
keys via /projects/me/api-keys. Test-mode keys use
the ndsk_test_ prefix.
Query Parameters
Comma-separated list of translation keys. Up to 200 per request.
Keys use dot.notation (e.g. hero.headline,hero.cta,footer.copy).
BCP-47 language tag. Defaults to the project's default language. Falls back to default language if a key is not translated.
"en"
Optional filter — limit to keys tied to a specific scope type.
page, component Used together with scope to filter further.
Response
Map of key → value.