Developers
The guide as data: every dimension and skill, in thirteen languages, as public JSON. No key, no sign-up, no rate plan — take it. One rule: the attribution block ships in every payload, and it stays with any use.
Resources
GET /api/v1/
Discovery: versions, the language list, and every resource with its sha256 and size — verify a download with nothing but this index.
GET /api/v1/guides
The whole guide — five dimensions, twenty-five skills, text keyed by language on every node, all thirteen languages at once.
GET /api/v1/guides/{lang}
One language — the same shape with the text maps filtered, so there
is one schema to learn, never two. cy, de, en, es, fr, it, nl, pt, sv, tr, ar, ja, sn.
The shape
A real excerpt of /api/v1/guides/en — first dimension, first
skill — generated from the same bytes as the API itself, so this example
cannot drift from what you will receive. Every skill carries a stable
anchor and a url into the
reading pages; every language carries its official
PDF and release date from the shelf.
{
"api_version": 1,
"content_version": 1,
"content_published_at": "2026-08-16",
"license": {
"attribution": "The Inner Development Guide is published by Inner Development Goals · innerdevelopmentgoals.org",
"publisher_url": "https://innerdevelopmentgoals.org",
"documents_url": "https://idg.guide/translations/",
"note": "The guide text is the Inner Development Goals' own words, transcribed verbatim from the published guides. Keep this attribution with any use, and do not edit the text for style — corrections only against the source documents."
},
"languages": [
{
"code": "cy",
"native_name": "Cymraeg",
"rtl": false,
"pdf_url": "https://idg.guide/overview/cy.pdf?download=Inner%20Development%20Guide%20%28Welsh%29.pdf"
}
],
"dimensions": [
{
"key": "being",
"code": "B",
"order": 1,
"color": "#d4b88c",
"url": "https://idg.guide/dimensions/#being",
"text": {
"en": {
"title": "Being",
"subtitle": "Cultivating Our Inner Life",
"description": "Deepening our awareness of inner experiences and their dynamic relationship with the world around us nurtures embodied presence, clarity of purpose, and thoughtful responses when we face complexity."
}
},
"skills": [
{
"code": "B1",
"anchor": "inner-compass",
"url": "https://idg.guide/skills/#inner-compass",
"text": {
"en": {
"title": "Inner Compass",
"description": "A deeply felt commitment to live and act in accordance with values and purposes that serve the good of the whole."
}
}
}
]
}
]
}
The index's shape
And a real excerpt of the discovery document at /api/v1/ —
the first entry of each list, from the same bytes as the API. The full
document carries every language and every resource; each resource's
sha256 is the checksum of its exact bytes, so a download
verifies against nothing but this index.
{
"api_version": 1,
"content_version": 1,
"content_published_at": "2026-08-16",
"documentation_url": "https://idg.guide/developers/",
"license": {
"attribution": "The Inner Development Guide is published by Inner Development Goals · innerdevelopmentgoals.org",
"publisher_url": "https://innerdevelopmentgoals.org",
"documents_url": "https://idg.guide/translations/",
"note": "The guide text is the Inner Development Goals' own words, transcribed verbatim from the published guides. Keep this attribution with any use, and do not edit the text for style — corrections only against the source documents."
},
"languages": [
{
"code": "cy",
"native_name": "Cymraeg",
"rtl": false,
"pdf_url": "https://idg.guide/overview/cy.pdf?download=Inner%20Development%20Guide%20%28Welsh%29.pdf"
}
],
"resources": [
{
"path": "/api/v1/guides",
"sha256": "098808531ef84af83a0c3a4968b87d018e3e34b238c4b320c005b8607842163e",
"bytes": 114589
}
]
}
Field reference
languages[].code— ISO 639-1 two-letter code, and the value/guides/{lang}accepts. One nuance:ptis Brazilian Portuguese — treat it aspt-BRwhere BCP 47 matters (hreflang, locale matching).languages[].native_name— the language's own name for itself, as the guide's language switcher shows it.languages[].rtl— boolean;truemeans the language is written right-to-left (Arabic, today).released_atandcontent_published_at— ISO 8601 calendar dates,YYYY-MM-DD, no time component: when that language's guide document was released, and when thiscontent_versionof the corpus was published.dimensions[].key— permanent lowercase identifier (being…acting);orderis the dimension's 1-based position in the guide.dimensions[].codeandskills[].code— the guide's own short codes:B,B1…A5.color— sRGB hex,#rrggbb. The five are Inner Development Goals' brand colours and are identical in light and dark themes — do not dim or restyle them per theme.anchor— a permanent URL-safe slug from the skill's English title; also the fragment on itsurl.languages[].pdf_url— direct download of that language's official guide PDF from the shelf, friendly filename included. Every field ending in_urlis an absolute https URL.resources[].sha256— lowercase hex SHA-256 of the resource's exact bytes;bytesis its size. All responses are UTF-8, as JSON requires (RFC 8259).
Be a polite client
Caching works in two layers here, and they do different jobs.
Freshness: responses carry
Cache-Control: public, max-age=3600, so a copy you hold is
good for an hour without asking anyone — and any cache between you and us
may answer for us in that window. Revalidation: after
the hour, don't re-download — ask. Responses carry strong ETags, and
If-None-Match is honoured with a 304, an empty-bodied "you
already have it" that resets the clock for headers' worth of bandwidth.
The guide changes a few times a year, so a well-behaved consumer pays a
handful of 304s a day and downloads a body only when
content_version actually moved.
And the boundary that keeps this keyless: fetch on your server or at build time and serve the guide to your users yourself — don't make each of their devices call this API on every use. The files are free; being someone else's runtime is not, and traffic with that shape may be rate-limited or blocked.
The promises
/v1/ is additive-only: fields may appear, existing fields
never change meaning or disappear. A breaking reshape would be
/v2/, with /v1/ kept serving. Language lives in
the path, never in content negotiation — one URL, one representation,
one ETag. The text itself is the Inner Development Goals' own, transcribed
verbatim from the published guides and verified against
them; it changes only when the guide does, tracked by
content_version and dated by
content_published_at — the two move together.
The one rule
Keep the license.attribution line visible wherever the
guide's words appear, and do not edit the text for style — it is
Inner Development Goals', not ours, and not yours. That attribution is
the entire price of the API.