Global AI Cinema · Developer reference

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.

Base URLhttps://api.globalaicinema.org/v1
AuthNone — public, read-only
Rate limit10 req/s per IP, bursts of 20 → 429

Quick 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

Endpoints

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

NameInTypeDescription
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

NameInTypeDescription
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

NameInTypeDescription
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

NameInTypeDescription
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

NameInTypeDescription
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

NameInTypeDescription
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/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

NameInTypeDescription
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&section=AI%20Films"
    },
    {
      "key": "Festivals",
      "label": "Festivals",
      "headlines": "https://api.globalaicinema.org/v1/journal/headlines?locale=en&section=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

FieldTypeMeaning
idstringStable short identifier derived from the story's feed link.
rankintegerPosition in the edition; 1 is the cover story.
isCoverboolean
kindwire | editor | originalwire = from the news feed; editor = added by the newsroom; original = a GAC original article.
titlestring
urlstringThe original article at its publisher (GAC's own page for originals).
urlResolvedbooleanFalse while url is still the news-feed entry that redirects to the publisher.
sourcestringOutlet name.
publishedAtstring | null
sectionstringDesk key, in English — pass it back as section=.
sectionLabelstringDesk label in the edition's language.
summarystringGAC's neutral recap: what happened.
insightstringGAC's editorial take.
whyItMattersstringWhy It Matters. May be empty on older editions.
whatToWatchstringWhat to Watch. May be empty on older editions.
imageobjectOnly editor-supplied or GAC-owned imagery; publisher photographs are never redistributed.
pinnedbooleanThe editor fixed this story on the cover.
journalUrlstringWhere 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" } }
StatusCodeWhen
400invalid_locale · invalid_limit · invalid_date · invalid_before · invalid_since · invalid_query · invalid_section · invalid_sourceA parameter was malformed.
404edition_not_found · not_foundNo paper on file for that date/language, or an unknown route.
429rate_limitedMore than 10 requests/second from one address (bursts of 20 tolerated). Honour Retry-After.
500 / 503internal_error · unavailableSomething 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.