Get Mind Map, eBook or Quiz

Reads the AI resources of a video in one language: eBook, Mind Map and Quiz. One file per language in AI Package v2.

Recent Requests
Log in to see full request history
TimeStatusUser Agent
Retrieving recent requests…
LoadingLoading…

GET /{pullzone_name}/{video_external_id}-ai.{lang}.json

Returns the AI resources generated for a video in one language: eBook (abstract), Mind Map (mindmap) and Quiz (questions). This is the file an integrator reads to build their own interface — the Panda player consumes exactly these files.

In the AI Package v2 there is one file per language, identified by the .{lang} suffix in the name. Each file carries schema_version: 2 and only the keys of the resources that exist in that language. A video with an eBook in English and a Quiz in Portuguese has two files, each with its own block.

📘

Authorization

None. The file is served by the configuration CDN and does not require an authentication header. Do not send your API key in this call.

Naming reference

The API uses technical names; the Panda interface uses commercial names. In fields and enum values, always the technical ones.

APIInterface
abstracteBook
mindmapMind Map
questionsQuiz

HTTP Method & Path

GET /{pullzone_name}/{video_external_id}-ai.{lang}.json

Base URL: https://config.tv.pandavideo.com.br

Path Parameters

ParameterTypeRequiredDescription
pullzone_namestringYesPullzone of the video library. Returned as pullzone_name by GET /videos/{video_id}. E.g. vz-163a34ba-25b
video_external_idstringYesExternal ID of the video (uuid). Returned as video_external_id by GET /videos/{video_id}. This is not the video_id
langstringYesLanguage of the resource, exactly as it appears in srclang inside config.ai.resources[]. E.g. pt-BR, en, es

How to find out which files exist

⚠️

Do not build the path by trial and error. The correct entry point is the video manifest: config.ai.resources[] lists the type and language of every existing resource. Requesting a language that does not exist returns 404.

1. Call GET /videos/{video_id} and read config.ai.resources[]:

{
  "ai": {
    "abstract": true,
    "mindmap": true,
    "questions": true,
    "pdf_generated": true,
    "resources": [
      { "type": "abstract",  "srclang": "en" },
      { "type": "abstract",  "srclang": "pt-BR", "is_legacy": true },
      { "type": "questions", "srclang": "pt-BR", "is_legacy": true },
      { "type": "mindmap",   "srclang": "pt-BR", "is_legacy": true }
    ]
  }
}

2. For every entry without is_legacy, build the path using its srclang in place of {lang}. In the example above, only the English eBook is v2:

GET /{pullzone_name}/{video_external_id}-ai.en.json

3. Entries flagged is_legacy: true are read at the path without a language suffix — see the Legacy section at the end of this page. Entries flagged is_created: true were created by hand instead of generated by AI, and are read at the normal language-suffixed path.

Response

Success Response (200) — file with an eBook

{
  "schema_version": 2,
  "lang": "en",
  "abstract": "# Chapter 1\n\nThe first chapter in markdown...",
  "abstract_html": "<section class=\"panda-ebook\">...</section>",
  "abstract_summary": "A short summary of the whole eBook.",
  "abstract_cover": {
    "kicker": "Biochemistry",
    "title": "Vitamins",
    "subtitle": "Functions, sources and deficiencies",
    "edition_label": "Edition 1"
  },
  "abstract_config": {
    "layout": "modern",
    "title_font": "Rubik",
    "content_font": "Rubik",
    "accent_color": "#3F55EE",
    "secondary_color": "#E12AFB",
    "format": "portrait",
    "header_footer": true,
    "logo_key": null
  },
  "images": [
    {
      "storage_path": "USER_ID/ai_abstract_image/{uuid}.jpeg",
      "cdn_base": "https://images-cdn.pandavideo.com",
      "caption": "Molecular structure of vitamin C"
    }
  ]
}

Success Response (200) — file with a Quiz

The same video, another language, another resource. Note that there is no eBook key here, and that questions_config is a sibling of questions:

{
  "schema_version": 2,
  "lang": "pt-BR",
  "questions": [
    {
      "id": "{question_id}",
      "enunciate": "Which vitamin is synthesised through sun exposure?",
      "options": [
        { "text": "Vitamin A", "correct": false },
        { "text": "Vitamin D", "correct": true },
        { "text": "Vitamin K", "correct": false }
      ]
    }
  ],
  "questions_config": {
    "num_questions": 5,
    "num_answers": 3,
    "allow_skip": false,
    "show_explanation": true,
    "show_results": true,
    "collect_lead": false
  }
}

Response Schema

FieldTypeContent
schema_versioninteger2 in this format. Absent = file written by the previous model (v1)
langstringLanguage of this file
abstractstringeBook text in markdown
abstract_htmlstringCanonical HTML of the eBook — the same source that renders the PDF. Generator panda-ebook-html@1
abstract_summarystringShort summary
abstract_coverobjectCover copy
abstract_cover.kickerstringLine above the title
abstract_cover.titlestringCover title
abstract_cover.subtitlestringCover subtitle
abstract_cover.edition_labelstringEdition label
abstract_configobjectThe layout used during generation — lets you reproduce the PDF look in your own interface
imagesarrayChapter images of the eBook
images[].storage_pathstringPath of the file in storage
images[].cdn_basestringPublic CDN base. Final URL = cdn_base + / + storage_path
images[].captionstringImage caption
mindmapobjectMind Map tree. May carry mindmap_config nested
questionsarrayQuiz questions
questions[].idstringQuestion ID
questions[].enunciatestringQuestion text shown to the viewer
questions[].optionsarrayAlternatives: text and correct (boolean)
questions_configobjectQuiz behaviour. Sibling key of questions, never inside the array

The fields of abstract_config and questions_config are detailed on Generate an AI Resource.

⚠️

Important

  • The file carries only the keys of the resource that exists in that language — do not treat a missing field as an error.
  • questions_config is a sibling of questions. Do not look for it inside the array.
  • pdf_url does not exist in this file. The PDF URL is returned only by GET /videos/{video_id}, inside config.ai.resources[]. This is deliberate: in the public file it would be a direct download link, bypassing the per-resource download permission.
  • abstract_html is the canonical source of the eBook. If you render the abstract markdown yourself, the result may differ from the PDF.

Error Responses

  • 404: no resource exists for this video in this language, or the language suffix is wrong (e.g. pt instead of pt-BR). Check config.ai.resources[] instead of guessing the path.
  • 403: invalid pullzone or video_external_id.

Legacy (v1) — -ai.json

The old path keeps working and is still written. Content generated with the previous model appears in the manifest flagged is_legacy: true and is read without a language suffix:

GET /{pullzone_name}/{video_external_id}-ai.json

v2 — -ai.{lang}.jsonv1 (legacy) — -ai.json
LanguagesOne file per languageOne file, one language
schema_version2absent
abstract_htmlyesno
abstract_configyesno
abstract_coveryesno
imagesyesno
eBook PDFabstract.{lang}.pdfabstract.pdf (no suffix)
🚧

Migration

Nothing already published became invalid — it became incomplete. Anyone reading only -ai.json will not find content generated with v2. Move to entering through the manifest (config.ai.resources[]) and handling both paths.

Example Usage

cURL

# v2 — eBook in English
curl -X GET "https://config.tv.pandavideo.com.br/vz-163a34ba-25b/{video_external_id}-ai.en.json"

# v2 — Quiz in Portuguese
curl -X GET "https://config.tv.pandavideo.com.br/vz-163a34ba-25b/{video_external_id}-ai.pt-BR.json"

# v1 (legacy) — no language suffix
curl -X GET "https://config.tv.pandavideo.com.br/vz-163a34ba-25b/{video_external_id}-ai.json"
Path Params
string
required

Pullzone of the video library, as returned by GET /videos/{video_id} in pullzone_name.

uuid
required

External id of the video, as returned by GET /videos/{video_id} in video_external_id. This is not the video_id.

string
required

Language of the resource, exactly as listed in srclang inside config.ai.resources[]. Example: pt-BR, en, es.

Responses

404

No resource exists for this video in this language, or the language suffix is wrong. Read config.ai.resources[] instead of guessing the path.

Language
LoadingLoading…
Response
Click Try It! to start a request and see the response here! Or choose an example:
application/json