Global AI Cinema Journal API
Read-only JSON access to The Global AI Cinema Journal — today's cover story, the day's edition in running order, and every edition on file, in English, Chinese and German. Version 1.0.0.
https://api.globalaicinema.org/v1429Quick start
The one call most integrations need — the story the Journal is leading with right now, with its original link:
curl -s "https://api.globalaicinema.org/v1/journal/cover"
# → { "edition": {…}, "story": { "title": "…", "url": "https://publisher…", "source": "…", … }, "image": {…} }
Add ?locale=zh or ?locale=de for the translated papers. Everything is plain GET, JSON, UTF-8, with Access-Control-Allow-Origin: *, so it can be called straight from a browser page.
How to read the data
- The API reports what the Journal printed.
todayis the live edition — the same object the front page renders from. The cover is the story in the lead slot (rank 1). Earlier days are the snapshot the page itself kept, so an archived day is exactly the paper as it stood at the end of that day. - One edition, three papers. The paper is assembled once in English;
zhanddeare translations of the same edition, so ranks, links and ids agree across languages. A translated live edition may still be in progress —translationon the edition says so. - Links go to the source.
urlis the publisher's own article. While the newsroom's resolver has not yet followed a feed link,urlResolvedisfalseandurlis the news-feed entry, which redirects to the publisher. - GAC's copy is GAC's.
summary,insight,whyItMattersandwhatToWatchare written by the Journal; publishers' article text is never redistributed, and publishers' photographs are never served. Cover art is either GAC's own, an editor-supplied picture, or a freely-licensed Wikimedia Commons photograph with the credit its licence requires — reproduceimage.creditwhen you reproduce the picture. - Dates are UTC. An edition is keyed by its UTC date;
edition.labelis the date as printed on the masthead.
Endpoints
/journal/cover— Today's cover story/journal/covers— Cover stories, day by day/journal/covers/{date}— The cover story of one edition/journal/editions— Editions on file/journal/editions/{date}— A whole edition/journal/headlines— Rolling feed of stories/journal/search— Search the archive/journal/sections— The Journal's desks/health— Service health
GET /journal/cover
Today's cover story
The story the Journal is leading with right now — the lead slot of today's live edition — together with the cover art as shown and its attribution. This is the headline news of the day as the newsroom has set it.
Parameters
| Name | In | Type | Description |
|---|---|---|---|
locale |
query | en | zh | de | Language of the paper: en (the master edition), zh or de (the translated editions). Defaults to en. |
Example
curl -s "https://api.globalaicinema.org/v1/journal/cover?locale=en"
Response · cached 60 s
{
"edition": {
"date": "2026-08-21",
"locale": "en",
"label": "Thursday, August 21, 2026",
"status": "live",
"storyCount": 18,
"url": "https://www.globalaicinema.org/journal"
},
"story": {
"id": "9f2c1a7b3e4d",
"rank": 1,
"isCover": true,
"kind": "wire",
"title": "Venice adds an AI-assisted feature to its main competition",
"url": "https://example-publisher.com/venice-ai-feature-competition",
"urlResolved": true,
"source": "Example Publisher",
"publishedAt": "2026-08-21T08:12:00.000Z",
"section": "Festivals",
"sectionLabel": "Festivals",
"summary": "The festival placed a feature made with generative tools in its official competition, the first A-list festival to do so.",
"insight": "Selection, not technology, is the signal: a major jury will now judge an AI-assisted film on the same terms as any other.",
"whyItMatters": "Filmmakers working with these tools gain a precedent for eligibility; festivals that have held back now face a comparison.",
"whatToWatch": "Whether the film is reviewed on its merits in the trade press, and whether other A-list festivals adjust their rules before the next cycle.",
"image": null,
"pinned": false,
"journalUrl": "https://www.globalaicinema.org/journal"
},
"image": {
"url": "https://www.globalaicinema.org/api/news-image?u=https%3A%2F%2Fupload.wikimedia.org%2F…",
"credit": "Jane Doe · CC BY-SA 4.0 · via Wikimedia Commons",
"license": "CC BY-SA 4.0",
"sourceUrl": "https://commons.wikimedia.org/wiki/File:…",
"kind": "commons"
},
"spotlight": null,
"generatedAt": "2026-08-21T14:02:11.000Z",
"links": {
"self": "https://api.globalaicinema.org/v1/journal/cover",
"edition": "https://api.globalaicinema.org/v1/journal/editions/today?locale=en",
"docs": "https://api.globalaicinema.org/v1/docs"
}
}GET /journal/covers
Cover stories, day by day
The cover story of every edition on file, newest first: today's live paper, then the archive. Use before to page backwards from a date; links.next carries the ready-made cursor.
Parameters
| Name | In | Type | Description |
|---|---|---|---|
locale |
query | en | zh | de | Language of the paper: en (the master edition), zh or de (the translated editions). Defaults to en. |
limit |
query | integer 1–100 | Maximum number of items to return (1–100). Defaults to 30. |
before |
query | date (YYYY-MM-DD) | Only editions dated strictly before this YYYY-MM-DD (UTC). |
Example
curl -s "https://api.globalaicinema.org/v1/journal/covers?locale=en"
Response · cached 60 s
{
"covers": [
{
"edition": {
"date": "2026-08-21",
"locale": "en",
"label": "Thursday, August 21, 2026",
"status": "live",
"storyCount": 18,
"url": "https://www.globalaicinema.org/journal"
},
"story": {
"id": "9f2c1a7b3e4d",
"rank": 1,
"isCover": true,
"kind": "wire",
"title": "Venice adds an AI-assisted feature to its main competition",
"url": "https://example-publisher.com/venice-ai-feature-competition",
"urlResolved": true,
"source": "Example Publisher",
"publishedAt": "2026-08-21T08:12:00.000Z",
"section": "Festivals",
"sectionLabel": "Festivals",
"summary": "The festival placed a feature made with generative tools in its official competition, the first A-list festival to do so.",
"insight": "Selection, not technology, is the signal: a major jury will now judge an AI-assisted film on the same terms as any other.",
"whyItMatters": "Filmmakers working with these tools gain a precedent for eligibility; festivals that have held back now face a comparison.",
"whatToWatch": "Whether the film is reviewed on its merits in the trade press, and whether other A-list festivals adjust their rules before the next cycle.",
"image": null,
"pinned": false,
"journalUrl": "https://www.globalaicinema.org/journal"
},
"image": {
"url": "https://www.globalaicinema.org/api/news-image?u=https%3A%2F%2Fupload.wikimedia.org%2F…",
"credit": "Jane Doe · CC BY-SA 4.0 · via Wikimedia Commons",
"license": "CC BY-SA 4.0",
"sourceUrl": "https://commons.wikimedia.org/wiki/File:…",
"kind": "commons"
},
"spotlight": null
},
{
"edition": {
"date": "2026-08-20",
"locale": "en",
"label": "Wednesday, August 20, 2026",
"status": "archived",
"storyCount": 18,
"url": "https://www.globalaicinema.org/journal?date=2026-08-20"
},
"story": {
"id": "4b8e0d12c9aa",
"rank": 1,
"isCover": true,
"kind": "wire",
"title": "…",
"url": "https://example-publisher.com/venice-ai-feature-competition",
"urlResolved": true,
"source": "Example Publisher",
"publishedAt": "2026-08-21T08:12:00.000Z",
"section": "Festivals",
"sectionLabel": "Festivals",
"summary": "The festival placed a feature made with generative tools in its official competition, the first A-list festival to do so.",
"insight": "Selection, not technology, is the signal: a major jury will now judge an AI-assisted film on the same terms as any other.",
"whyItMatters": "Filmmakers working with these tools gain a precedent for eligibility; festivals that have held back now face a comparison.",
"whatToWatch": "Whether the film is reviewed on its merits in the trade press, and whether other A-list festivals adjust their rules before the next cycle.",
"image": null,
"pinned": false,
"journalUrl": "https://www.globalaicinema.org/journal?date=2026-08-20"
},
"image": null,
"spotlight": null
}
],
"count": 2,
"generatedAt": "2026-08-21T14:02:11.000Z",
"links": {
"self": "…",
"next": "https://api.globalaicinema.org/v1/journal/covers?locale=en&limit=30&before=2026-07-22",
"docs": "…"
}
}GET /journal/covers/{date}
The cover story of one edition
Same shape as /journal/cover, for today or any calendar date on file.
Parameters
| Name | In | Type | Description |
|---|---|---|---|
date required |
path | string | today for the live edition, or a calendar date (YYYY-MM-DD, UTC) of an edition on file. |
locale |
query | en | zh | de | Language of the paper: en (the master edition), zh or de (the translated editions). Defaults to en. |
Example
curl -s "https://api.globalaicinema.org/v1/journal/covers/today?locale=en"
Response · cached 60 s live · 1 h archived
{
"edition": {
"date": "2026-08-20",
"locale": "en",
"label": "Wednesday, August 20, 2026",
"status": "archived",
"storyCount": 18,
"url": "https://www.globalaicinema.org/journal?date=2026-08-20"
},
"story": {
"id": "9f2c1a7b3e4d",
"rank": 1,
"isCover": true,
"kind": "wire",
"title": "Venice adds an AI-assisted feature to its main competition",
"url": "https://example-publisher.com/venice-ai-feature-competition",
"urlResolved": true,
"source": "Example Publisher",
"publishedAt": "2026-08-21T08:12:00.000Z",
"section": "Festivals",
"sectionLabel": "Festivals",
"summary": "The festival placed a feature made with generative tools in its official competition, the first A-list festival to do so.",
"insight": "Selection, not technology, is the signal: a major jury will now judge an AI-assisted film on the same terms as any other.",
"whyItMatters": "Filmmakers working with these tools gain a precedent for eligibility; festivals that have held back now face a comparison.",
"whatToWatch": "Whether the film is reviewed on its merits in the trade press, and whether other A-list festivals adjust their rules before the next cycle.",
"image": null,
"pinned": false,
"journalUrl": "https://www.globalaicinema.org/journal?date=2026-08-20"
},
"image": null,
"spotlight": null,
"generatedAt": "2026-08-21T14:02:11.000Z",
"links": {
"self": "…",
"edition": "…",
"docs": "…"
}
}GET /journal/editions
Editions on file
Every edition kept in the requested language, newest first — today's live paper at the top — with the date as printed on the masthead, the story count and the API link to the full edition.
Parameters
| Name | In | Type | Description |
|---|---|---|---|
locale |
query | en | zh | de | Language of the paper: en (the master edition), zh or de (the translated editions). Defaults to en. |
limit |
query | integer 1–366 | Maximum number of items to return (1–366). Defaults to 60. |
Example
curl -s "https://api.globalaicinema.org/v1/journal/editions?locale=en"
Response · cached 60 s
{
"editions": [
{
"date": "2026-08-21",
"locale": "en",
"label": "Thursday, August 21, 2026",
"status": "live",
"storyCount": 18,
"url": "https://www.globalaicinema.org/journal",
"api": "https://api.globalaicinema.org/v1/journal/editions/today?locale=en"
},
{
"date": "2026-08-20",
"locale": "en",
"label": "Wednesday, August 20, 2026",
"status": "archived",
"storyCount": 18,
"url": "https://www.globalaicinema.org/journal?date=2026-08-20",
"api": "https://api.globalaicinema.org/v1/journal/editions/2026-08-20?locale=en"
}
],
"count": 2,
"generatedAt": "2026-08-21T14:02:11.000Z",
"links": {
"self": "…",
"docs": "…"
}
}GET /journal/editions/{date}
A whole edition
Every story of one edition in the running order the newsroom set — rank 1 is the cover story — plus the cover art. today is the live paper; a calendar date is the snapshot kept for that day. For zh/de, translation says whether the paper is fully translated yet.
Parameters
| Name | In | Type | Description |
|---|---|---|---|
date required |
path | string | today for the live edition, or a calendar date (YYYY-MM-DD, UTC) of an edition on file. |
locale |
query | en | zh | de | Language of the paper: en (the master edition), zh or de (the translated editions). Defaults to en. |
Example
curl -s "https://api.globalaicinema.org/v1/journal/editions/today?locale=en"
Response · cached 60 s live · 1 h archived
{
"edition": {
"date": "2026-08-21",
"locale": "en",
"label": "Thursday, August 21, 2026",
"status": "live",
"storyCount": 18,
"url": "https://www.globalaicinema.org/journal"
},
"cover": {
"image": {
"url": "https://www.globalaicinema.org/api/news-image?u=https%3A%2F%2Fupload.wikimedia.org%2F…",
"credit": "Jane Doe · CC BY-SA 4.0 · via Wikimedia Commons",
"license": "CC BY-SA 4.0",
"sourceUrl": "https://commons.wikimedia.org/wiki/File:…",
"kind": "commons"
},
"spotlight": null
},
"stories": [
{
"id": "9f2c1a7b3e4d",
"rank": 1,
"isCover": true,
"kind": "wire",
"title": "Venice adds an AI-assisted feature to its main competition",
"url": "https://example-publisher.com/venice-ai-feature-competition",
"urlResolved": true,
"source": "Example Publisher",
"publishedAt": "2026-08-21T08:12:00.000Z",
"section": "Festivals",
"sectionLabel": "Festivals",
"summary": "The festival placed a feature made with generative tools in its official competition, the first A-list festival to do so.",
"insight": "Selection, not technology, is the signal: a major jury will now judge an AI-assisted film on the same terms as any other.",
"whyItMatters": "Filmmakers working with these tools gain a precedent for eligibility; festivals that have held back now face a comparison.",
"whatToWatch": "Whether the film is reviewed on its merits in the trade press, and whether other A-list festivals adjust their rules before the next cycle.",
"image": null,
"pinned": false,
"journalUrl": "https://www.globalaicinema.org/journal"
},
{
"id": "c01d3e5f7a9b",
"rank": 2,
"isCover": false,
"kind": "wire",
"title": "…",
"url": "https://example-publisher.com/venice-ai-feature-competition",
"urlResolved": true,
"source": "Example Publisher",
"publishedAt": "2026-08-21T08:12:00.000Z",
"section": "Technology",
"sectionLabel": "Technology",
"summary": "The festival placed a feature made with generative tools in its official competition, the first A-list festival to do so.",
"insight": "Selection, not technology, is the signal: a major jury will now judge an AI-assisted film on the same terms as any other.",
"whyItMatters": "Filmmakers working with these tools gain a precedent for eligibility; festivals that have held back now face a comparison.",
"whatToWatch": "Whether the film is reviewed on its merits in the trade press, and whether other A-list festivals adjust their rules before the next cycle.",
"image": null,
"pinned": false,
"journalUrl": "https://www.globalaicinema.org/journal"
}
],
"translation": null,
"generatedAt": "2026-08-21T14:02:11.000Z",
"links": {
"self": "…",
"cover": "…",
"editions": "…",
"docs": "…"
}
}GET /journal/headlines
Rolling feed of stories
The Journal's stories across editions, newest first: today's paper in running order, then earlier days. A story that ran on several days appears once. Filter by desk (section, use the key from /journal/sections), outlet (source) or start date (since).
Parameters
| Name | In | Type | Description |
|---|---|---|---|
locale |
query | en | zh | de | Language of the paper: en (the master edition), zh or de (the translated editions). Defaults to en. |
limit |
query | integer 1–100 | Maximum number of items to return (1–100). Defaults to 20. |
section |
query | string | Desk to restrict to, e.g. Festivals. |
source |
query | string | Outlet name to restrict to (exact, case-insensitive). |
since |
query | date (YYYY-MM-DD) | Only editions dated on or after this YYYY-MM-DD (today's live paper is always considered). |
Example
curl -s "https://api.globalaicinema.org/v1/journal/headlines?locale=en"
Response · cached 60 s
{
"headlines": [
{
"id": "9f2c1a7b3e4d",
"rank": 1,
"isCover": true,
"kind": "wire",
"title": "Venice adds an AI-assisted feature to its main competition",
"url": "https://example-publisher.com/venice-ai-feature-competition",
"urlResolved": true,
"source": "Example Publisher",
"publishedAt": "2026-08-21T08:12:00.000Z",
"section": "Festivals",
"sectionLabel": "Festivals",
"summary": "The festival placed a feature made with generative tools in its official competition, the first A-list festival to do so.",
"insight": "Selection, not technology, is the signal: a major jury will now judge an AI-assisted film on the same terms as any other.",
"whyItMatters": "Filmmakers working with these tools gain a precedent for eligibility; festivals that have held back now face a comparison.",
"whatToWatch": "Whether the film is reviewed on its merits in the trade press, and whether other A-list festivals adjust their rules before the next cycle.",
"image": null,
"pinned": false,
"journalUrl": "https://www.globalaicinema.org/journal",
"edition": {
"date": "2026-08-21",
"status": "live"
}
},
{
"id": "4b8e0d12c9aa",
"rank": 3,
"isCover": false,
"kind": "wire",
"title": "…",
"url": "https://example-publisher.com/venice-ai-feature-competition",
"urlResolved": true,
"source": "Example Publisher",
"publishedAt": "2026-08-21T08:12:00.000Z",
"section": "Festivals",
"sectionLabel": "Festivals",
"summary": "The festival placed a feature made with generative tools in its official competition, the first A-list festival to do so.",
"insight": "Selection, not technology, is the signal: a major jury will now judge an AI-assisted film on the same terms as any other.",
"whyItMatters": "Filmmakers working with these tools gain a precedent for eligibility; festivals that have held back now face a comparison.",
"whatToWatch": "Whether the film is reviewed on its merits in the trade press, and whether other A-list festivals adjust their rules before the next cycle.",
"image": null,
"pinned": false,
"journalUrl": "https://www.globalaicinema.org/journal?date=2026-08-20",
"edition": {
"date": "2026-08-20",
"status": "archived"
}
}
],
"count": 2,
"filters": {
"locale": "en",
"section": "Festivals",
"source": null,
"since": null,
"limit": 20
},
"generatedAt": "2026-08-21T14:02:11.000Z",
"links": {
"self": "…",
"docs": "…"
}
}GET /journal/search
Search the archive
Stories whose title, GAC summary or GAC take contains q (case-insensitive), across every edition on file. Newest appearance first, one entry per story.
Parameters
| Name | In | Type | Description |
|---|---|---|---|
q required |
query | string | Text to look for, 2–100 characters. |
locale |
query | en | zh | de | Language of the paper: en (the master edition), zh or de (the translated editions). Defaults to en. |
limit |
query | integer 1–100 | Maximum number of items to return (1–100). Defaults to 20. |
Example
curl -s "https://api.globalaicinema.org/v1/journal/search?q=Venice&locale=en"
Response · cached 60 s
{
"query": "Venice",
"results": [
{
"id": "9f2c1a7b3e4d",
"rank": 1,
"isCover": true,
"kind": "wire",
"title": "Venice adds an AI-assisted feature to its main competition",
"url": "https://example-publisher.com/venice-ai-feature-competition",
"urlResolved": true,
"source": "Example Publisher",
"publishedAt": "2026-08-21T08:12:00.000Z",
"section": "Festivals",
"sectionLabel": "Festivals",
"summary": "The festival placed a feature made with generative tools in its official competition, the first A-list festival to do so.",
"insight": "Selection, not technology, is the signal: a major jury will now judge an AI-assisted film on the same terms as any other.",
"whyItMatters": "Filmmakers working with these tools gain a precedent for eligibility; festivals that have held back now face a comparison.",
"whatToWatch": "Whether the film is reviewed on its merits in the trade press, and whether other A-list festivals adjust their rules before the next cycle.",
"image": null,
"pinned": false,
"journalUrl": "https://www.globalaicinema.org/journal",
"edition": {
"date": "2026-08-21",
"status": "live"
}
}
],
"count": 1,
"generatedAt": "2026-08-21T14:02:11.000Z",
"links": {
"self": "…",
"docs": "…"
}
}GET /journal/sections
The Journal's desks
The sections currently in print, with the label each carries in the requested language. Pass key as section= to /journal/headlines.
Parameters
| Name | In | Type | Description |
|---|---|---|---|
locale |
query | en | zh | de | Language of the paper: en (the master edition), zh or de (the translated editions). Defaults to en. |
Example
curl -s "https://api.globalaicinema.org/v1/journal/sections?locale=en"
Response · cached 1 h
{
"sections": [
{
"key": "AI Films",
"label": "AI Films",
"headlines": "https://api.globalaicinema.org/v1/journal/headlines?locale=en§ion=AI%20Films"
},
{
"key": "Festivals",
"label": "Festivals",
"headlines": "https://api.globalaicinema.org/v1/journal/headlines?locale=en§ion=Festivals"
}
],
"count": 2,
"links": {
"self": "…",
"docs": "…"
}
}GET /health
Service health
ok when the service is up and today's paper is on file; degraded (HTTP 503) when the live edition is empty or unavailable.
Parameters
No parameters.
Example
curl -s "https://api.globalaicinema.org/v1/health"
Response · cached none
{
"status": "ok",
"version": "1.0.0",
"time": "2026-08-21T14:02:11.000Z",
"uptimeSeconds": 86400,
"edition": {
"date": "2026-08-21",
"storyCount": 18,
"translation": "master"
}
}The Story object
| Field | Type | Meaning |
|---|---|---|
id | string | Stable short identifier derived from the story's feed link. |
rank | integer | Position in the edition; 1 is the cover story. |
isCover | boolean | |
kind | wire | editor | original | wire = from the news feed; editor = added by the newsroom; original = a GAC original article. |
title | string | |
url | string | The original article at its publisher (GAC's own page for originals). |
urlResolved | boolean | False while url is still the news-feed entry that redirects to the publisher. |
source | string | Outlet name. |
publishedAt | string | null | |
section | string | Desk key, in English — pass it back as section=. |
sectionLabel | string | Desk label in the edition's language. |
summary | string | GAC's neutral recap: what happened. |
insight | string | GAC's editorial take. |
whyItMatters | string | Why It Matters. May be empty on older editions. |
whatToWatch | string | What to Watch. May be empty on older editions. |
image | object | Only editor-supplied or GAC-owned imagery; publisher photographs are never redistributed. |
pinned | boolean | The editor fixed this story on the cover. |
journalUrl | string | Where the story is read on the Journal. |
Errors
Every error is JSON in one shape, with an HTTP status to match:
{ "error": { "status": 404, "code": "edition_not_found", "message": "No en edition is on file for 2026-01-01.", "date": "2026-01-01", "locale": "en" } }
| Status | Code | When |
|---|---|---|
| 400 | invalid_locale · invalid_limit · invalid_date · invalid_before · invalid_since · invalid_query · invalid_section · invalid_source | A parameter was malformed. |
| 404 | edition_not_found · not_found | No paper on file for that date/language, or an unknown route. |
| 429 | rate_limited | More than 10 requests/second from one address (bursts of 20 tolerated). Honour Retry-After. |
| 500 / 503 | internal_error · unavailable | Something failed on our side; retry with backoff. |
Caching & freshness
Responses carry Cache-Control: the live paper for 60 s (s-maxage 300), archived editions for an hour, health not at all. The newsroom refreshes the feed on a fixed cycle and edits the paper through the day; polling the cover more often than once a minute gains nothing. Use /journal/editions to discover what is on file rather than guessing dates — editions may be missing on a given day, and a translated paper may exist for one language and not another.
Terms & attribution
The API is offered free for non-commercial and editorial use. Credit the source of anything you republish as The Global AI Cinema Journal (globalaicinema.org/journal), link stories to their original publishers via url, and reproduce image credits as given. For commercial licensing, higher limits, or an authenticated feed, write to info@globalaicinema.org. No warranty is given; the service may change with notice on this page.