Retrieve an artifact
September 29, 2026
Table of contents
Fetch one Studio artifact by its id, read live from Google. A completed artifact carries its full result in the same shape as the result of a finished job: download links for audio, video, slide decks and infographics, the text of reports, the rows of a data table, and the JSON of quizzes, flashcards and mind maps.
Use it to read an artifact again after its job record has expired, to pick up an artifact created in the Gemini Notebook web app, or to check on an artifact whose job was cancelled or timed out (Google may still finish it). The artifact ids come from GET /artifacts and from the artifact field of a job.
https://api.useapi.net/v1/gemini-notebook/artifacts/
artifact
artifactis URL-encoded in the path (it contains:and@), for exampleuser%3A12345-user%40example.com-artifact%3Ad02c903b-17f8-4241-a263-2be9e7359d55%3A07b94418-6c28-437c-98de-06bbeabb4e0c. The id names the account and the notebook, so noemailparameter is needed.
Request Headers
Authorization: Bearer {API token}
API tokenis required, see Setup useapi.net for details.
Result by type
A completed artifact adds title plus the fields below. Any other status returns only artifact, notebook, type, status, created and title.
type | Fields | Files (GET /artifacts/download format) |
|---|---|---|
audio | duration (seconds), files | m4a |
video | duration (seconds), files | mp4 |
report | text (Markdown) | — |
interactive_report | text (the report’s paragraphs as plain text) | — |
table | table (rows of cells, the first row is the header) | — |
quiz | content (JSON: quiz[] with question, answerOptions[], hint) | — |
flashcards | content (JSON: flashcards[]) | — |
infographic | files (with width / height), text | png |
slides | files, slides[] (image, caption, text) | pdf, pptx, and slide with index for each slide image (PNG) |
mindmap | content (JSON tree of name / children) | — |
Every file link points at GET /artifacts/download, which streams the file from Google and needs your API token in the Authorization header. Google’s own media URLs need the account’s cookies, so they are never returned.
Responses
-
A completed quiz (long arrays shortened with
...):{ "artifact": "user:[email protected]:d02c903b-17f8-4241-a263-2be9e7359d55:07b94418-6c28-437c-98de-06bbeabb4e0c", "notebook": "user:[email protected]:d02c903b-17f8-4241-a263-2be9e7359d55", "type": "quiz", "status": "completed", "created": "2026-09-27T23:26:36.000Z", "title": "Apollo Quiz", "content": { "quiz": [ { "question": "During Apollo 11's lunar landing phase, which Flight Director was at the helm in Mission Control leading Shift 2 (White Team)?", "answerOptions": [ { "text": "Gene Kranz", "rationale": "Gene Kranz served as the Flight Director for Shift 2 (White Team), which actively managed the critical lunar landing descent phase.", "isCorrect": true }, { "text": "Glynn Lunney", "rationale": "Glynn Lunney managed Shift 3 (Black Team), which oversaw lunar ascent rather than the landing phase.", "isCorrect": false }, "..." ], "hint": "..." }, "..." ], "topics": { "covered": ["Apollo 11 Mission Overview", "Spacecraft Engineering and Call Signs", "..."], "followUp": ["Project Gemini Precursor Missions", "..."] } } }A completed slide deck:
{ "artifact": "user:[email protected]:d02c903b-17f8-4241-a263-2be9e7359d55:ae28f2a1-678b-4304-9806-09648fcb77a0", "notebook": "user:[email protected]:d02c903b-17f8-4241-a263-2be9e7359d55", "type": "slides", "status": "completed", "created": "2026-09-27T23:31:15.000Z", "title": "Apollo 11 Flight Plan", "files": [ { "format": "pdf", "mimeType": "application/pdf", "url": "https://api.useapi.net/v1/gemini-notebook/artifacts/download?artifact=user%3A12345-user%40example.com-artifact%3Ad02c903b-17f8-4241-a263-2be9e7359d55%3Aae28f2a1-678b-4304-9806-09648fcb77a0&format=pdf" }, { "format": "pptx", "mimeType": "application/vnd.openxmlformats-officedocument.presentationml.presentation", "url": "https://api.useapi.net/v1/gemini-notebook/artifacts/download?artifact=user%3A12345-user%40example.com-artifact%3Ad02c903b-17f8-4241-a263-2be9e7359d55%3Aae28f2a1-678b-4304-9806-09648fcb77a0&format=pptx" } ], "slides": [ { "image": "https://api.useapi.net/v1/gemini-notebook/artifacts/download?artifact=user%3A12345-user%40example.com-artifact%3Ad02c903b-17f8-4241-a263-2be9e7359d55%3Aae28f2a1-678b-4304-9806-09648fcb77a0&format=slide&index=1", "caption": "Title slide for Apollo 11: Anatomy of a Miracle, featuring an astronaut on the lunar surface.", "text": "APOLLO_11: ANATOMY OF A MIRACLE\n\nJULY 16-24, 1969 | CREWED LUNAR LANDING\n\n..." }, "..." ] }An artifact that is not
completedyet (orfailed) returns onlyartifact,notebook,type,status,createdandtitle. -
The path value is not an artifact id (a notebook or source id is refused too).
{ "error": "Path parameter artifact (…) is not a valid artifact id", "code": 400 } -
Invalid API token.
{ "error": "useapi.net ⁝ Unauthorized", "code": 401 } -
The artifact id was issued to a different API token.
{ "error": "user:[email protected]:d02c903b-…:07b94418-… does not belong to this API token", "code": 403 } -
The artifact is no longer in the notebook (deleted here or in the web app), the notebook is gone, or its account is no longer configured.
{ "error": "Artifact user:[email protected]:d02c903b-…:07b94418-… not found", "code": 404 } -
596 Account Error
Google reported the account as signed out. While we re-check it, the answer is the first message below. Retry in about a minute. If it stays signed out, the account is paused, you receive an email, and the answer becomes the second message until you re-add it via Setup Gemini Notebook.
{ "error": "Google reported this account as signed out. We are re-checking it — please retry in about a minute. If it stays signed out, you will receive a re-add email.", "code": 596 }{ "error": "Account [email protected]: Google signed this account out. Re-add it at https://useapi.net/docs/start-here/setup-gemini-notebook", "code": 596 }
Model
{ // TypeScript, all fields are optional
artifact: string // user:<id>-<email>-artifact:<notebook uuid>:<artifact uuid>
notebook: string // user:<id>-<email>-notebook:<notebook uuid>
type: 'audio' | 'video' | 'report' | 'interactive_report' | 'table' | 'quiz' | 'flashcards' | 'infographic' | 'slides' | 'mindmap'
status: 'pending' | 'processing' | 'completed' | 'failed' | 'pending_review'
created: string | null // ISO 8601
title: string
// The fields below are present only when status is 'completed', and only for the types listed above
duration: number // seconds, audio and video
files: Array<{
format: 'm4a' | 'mp4' | 'pdf' | 'pptx' | 'png'
mimeType: string
url: string // GET /artifacts/download link, needs your API token
width: number // infographic png only
height: number // infographic png only
}>
slides: Array<{ // slide decks, in order
image: string // GET /artifacts/download?…&format=slide&index=N (PNG)
caption: string | null // Google's one-line description of the slide
text: string | null // the slide's text as Google extracted it
}>
text: string // report (Markdown), interactive_report, infographic
table: string[][] // data table, first row = column headers
content: QuizContent | FlashcardsContent | MindmapNode // quiz, flashcards, mindmap
}
type QuizContent = {
quiz: Array<{
question: string
answerOptions: Array<{
text: string
rationale: string // why this option is right or wrong
isCorrect: boolean
}>
hint: string
}>
topics: {
covered: string[]
followUp: string[]
}
}
type FlashcardsContent = {
flashcards: Array<{
f: string // front of the card
b: string // back of the card
c: number // present on some cards (Google's own marker)
}>
topics: {
covered: string[]
followUp: string[]
}
}
type MindmapNode = {
name: string
children: MindmapNode[] // absent on leaf nodes
}
content is the JSON Google’s own interactive quiz, flashcard and mind-map views render, passed through unchanged. If Google does not return it on a read, content is left out, so read the artifact again.
Examples
-
ARTIFACT="user:[email protected]:d02c903b-17f8-4241-a263-2be9e7359d55:07b94418-6c28-437c-98de-06bbeabb4e0c" curl -H "Authorization: Bearer …" \ "https://api.useapi.net/v1/gemini-notebook/artifacts/$(python3 -c "import urllib.parse,sys;print(urllib.parse.quote(sys.argv[1],safe=''))" "$ARTIFACT")" -
const token = "API token"; const artifact = "user:[email protected]:d02c903b-17f8-4241-a263-2be9e7359d55:07b94418-6c28-437c-98de-06bbeabb4e0c"; const apiUrl = `https://api.useapi.net/v1/gemini-notebook/artifacts/${encodeURIComponent(artifact)}`; const response = await fetch(apiUrl, { headers: { "Authorization": `Bearer ${token}`, }, }); const result = await response.json(); console.log("response", {response, result}); -
import requests, urllib.parse token = "API token" artifact = "user:[email protected]:d02c903b-17f8-4241-a263-2be9e7359d55:07b94418-6c28-437c-98de-06bbeabb4e0c" apiUrl = "https://api.useapi.net/v1/gemini-notebook/artifacts/" + urllib.parse.quote(artifact, safe="") headers = { "Authorization" : f"Bearer {token}" } response = requests.get(apiUrl, headers=headers) print(response, response.json())