Generate a suggested item
October 15, 2026
Table of contents
Generate one of the items an interactive report suggests. When an interactive report completes, its result lists embedded items in reading order: infographics, slide decks, mind maps, quizzes and flashcards that Google wrote for that report. Each one starts with status: "suggested". It has a title and a description, and nothing has been generated yet. This is the Generate button on the item’s tile in the Gemini Notebook web app.
With no options, the item’s description is the prompt and every other option uses the web app’s default. instructions replaces the description as the prompt. The other options depend on the item’s type, see Options by type.
The item keeps its artifact id. Once the job completes, the report’s embedded list on GET /artifacts/artifact shows the item as completed. To drop a suggested item instead, delete it with DELETE /artifacts/artifact.
Only an item whose status is suggested can be generated. Any other artifact returns 409.
The generation is a job, exactly like a new one. It counts toward the account’s maxJobs, and Google can refuse it with 429 when its usage window is short. mode, replyUrl and replyRef behave as on POST /artifacts: sync waits up to 90 seconds, async returns 201 at once, and GET /jobs/jobid returns the result.
Options by type
Each type accepts only the options in its row. Omitted options use the default shown.
Item type | Options | language | instructions |
|---|---|---|---|
infographic | orientation: landscape (default), portrait, squaredetail: concise, standard (default), detailedstyle: auto (default), sketch_note, professional, bento_grid, editorial, instructional, bricks, clay, anime, kawaii, scientific | ✅ | ✅ |
slides | format: detailed (default), presenterlength: short, default (default), long | ✅ | ✅ |
quiz | quantity: fewer, standard (default), moredifficulty: easy, medium (default), hard | ✅ | ✅ |
flashcards | quantity: fewer, standard (default), moredifficulty: easy, medium (default), hard | ✅ | ✅ |
mindmap | — | ✅ | ✅ |
https://api.useapi.net/v1/gemini-notebook/artifacts/generate
Request Headers
Authorization: Bearer {API token}
Content-Type: application/json
# Alternatively you can use multipart/form-data
# Content-Type: multipart/form-data
API tokenis required, see Setup useapi.net for details.
Request Body
With the item’s own description as the prompt:
{
"artifact": "user:[email protected]:d02c903b-17f8-4241-a263-2be9e7359d55:e4ec67bd-4f7e-4e09-8f6d-e88e6fa53cf6",
"mode": "async"
}
With options:
{
"artifact": "user:[email protected]:d02c903b-17f8-4241-a263-2be9e7359d55:5ac11006-86b7-43a8-91c9-72bc5ba1164f",
"instructions": "A visual breakdown showing the three modules of the Apollo 11 spacecraft, the three crew members, and the key steps of the moon landing sequence. Keep it simple.",
"orientation": "portrait",
"detail": "concise",
"style": "sketch_note",
"mode": "async",
"replyUrl": "https://your-domain.com/webhook",
"replyRef": "apollo-infographic"
}
artifactis required, the suggested item’s id from the report’sembeddedlist. The id names its account and notebook, so noemailis needed.instructionsis optional, the prompt for the item, up to 10,000 characters.
Default: the item’sdescription.languageis optional, the output language as a language code such asen,es,pt_BRorzh_Hans.
Default: the language the report suggested the item in.orientationis optional,infographiconly.
Supported values:landscape(default),portrait,square.detailis optional,infographiconly.
Supported values:concise,standard(default),detailed.styleis optional,infographiconly.
Supported values:auto(default),sketch_note,professional,bento_grid,editorial,instructional,bricks,clay,anime,kawaii,scientific.formatis optional,slidesonly.
Supported values:detailed(default),presenter.lengthis optional,slidesonly.
Supported values:short,default(default),long.quantityis optional,quizandflashcardsonly.
Supported values:fewer,standard(default),more.difficultyis optional,quizandflashcardsonly.
Supported values:easy,medium(default),hard.modeis optional,sync(default, waits up to 90 seconds) orasync(returns201at once).replyUrlis optional, a publichttp(s)URL that receives onePOSTof the job record when the job completes or fails. See GET /jobs/jobidfor the record’s shape.replyRefis optional, your own reference echoed back in the job record, up to 1024 characters.
Responses
-
Sync mode, finished within 90 seconds.
resulthas the same shape as on POST /artifacts for the item’s type. A suggested quiz generated with no options (long arrays shortened with...):{ "jobid": "job:95680290-a009-4d0e-8a0f-56c580d47336-user:[email protected]:gemini_notebook", "email": "[email protected]", "type": "quiz", "status": "completed", "notebook": "user:[email protected]:d02c903b-17f8-4241-a263-2be9e7359d55", "artifact": "user:[email protected]:d02c903b-17f8-4241-a263-2be9e7359d55:e4ec67bd-4f7e-4e09-8f6d-e88e6fa53cf6", "created_at": "2026-10-15T05:07:29.911Z", "request": { "artifact": "user:[email protected]:d02c903b-17f8-4241-a263-2be9e7359d55:e4ec67bd-4f7e-4e09-8f6d-e88e6fa53cf6" }, "completed_at": "2026-10-15T05:08:19.169Z", "result": { "title": "Apollo Quiz", "content": { "quiz": [ { "question": "Who served as the Command Module Pilot for Apollo 11, staying in lunar orbit while his crewmates walked on the Moon?", "answerOptions": [ { "text": "Michael Collins", "isCorrect": true, "rationale": "He piloted Columbia in lunar orbit alone while Neil Armstrong and Buzz Aldrin descended to the surface in Eagle." }, { "text": "Jim Lovell", "isCorrect": false, "rationale": "He served as the backup commander for Apollo 11 and later commanded Apollo 13, rather than flying as Apollo 11's Command Module Pilot." }, "..." ], "hint": "Think of the astronaut who remained onboard the Command Module Columbia during the surface walk." }, "..." ], "topics": { "covered": ["Apollo 11 Crew and Spacecraft", "Apollo 13 Emergency and Recovery", "..."], "followUp": ["Lunar Orbit Rendezvous Strategy", "..."] } } } }The infographic from the second request body above, as GET /jobs/
jobidreturns it once completed:{ "jobid": "job:c923752d-5083-4a7a-a726-f84aa06005c5-user:[email protected]:gemini_notebook", "email": "[email protected]", "type": "infographic", "status": "completed", "notebook": "user:[email protected]:d02c903b-17f8-4241-a263-2be9e7359d55", "artifact": "user:[email protected]:d02c903b-17f8-4241-a263-2be9e7359d55:5ac11006-86b7-43a8-91c9-72bc5ba1164f", "created_at": "2026-10-15T05:08:38.373Z", "request": { "artifact": "user:[email protected]:d02c903b-17f8-4241-a263-2be9e7359d55:5ac11006-86b7-43a8-91c9-72bc5ba1164f", "instructions": "A visual breakdown showing the three modules of the Apollo 11 spacecraft, the three crew members, and the key steps of the moon landing sequence. Keep it simple.", "orientation": "portrait", "detail": "concise", "style": "sketch_note" }, "completed_at": "2026-10-15T05:10:02.328Z", "replyUrl": "https://your-domain.com/webhook", "replyRef": "apollo-infographic", "result": { "title": "Apollo 11 Moon Landing Anatomy", "files": [ { "format": "png", "mimeType": "image/png", "url": "https://api.useapi.net/v1/gemini-notebook/artifacts/download?artifact=user%3A12345-user%40example.com-artifact%3Ad02c903b-17f8-4241-a263-2be9e7359d55%3A5ac11006-86b7-43a8-91c9-72bc5ba1164f&format=png", "width": 1536, "height": 2752 } ], "text": "APOLLO 11: ANATOMY OF THE MOON LANDING\n\n\nSPACECRAFT MODULES\n\n- Command Module Columbia (crew cabin)\n- Service Module (propulsion/power)\n- Lunar Module Eagle (moon lander)\n..." } } -
Async mode. Poll GET /jobs/
jobiduntilstatusiscompletedorfailed.{ "jobid": "job:95680290-a009-4d0e-8a0f-56c580d47336-user:[email protected]:gemini_notebook", "email": "[email protected]", "type": "quiz", "status": "processing", "notebook": "user:[email protected]:d02c903b-17f8-4241-a263-2be9e7359d55", "artifact": "user:[email protected]:d02c903b-17f8-4241-a263-2be9e7359d55:e4ec67bd-4f7e-4e09-8f6d-e88e6fa53cf6", "created_at": "2026-10-15T05:07:29.911Z", "request": { "artifact": "user:[email protected]:d02c903b-17f8-4241-a263-2be9e7359d55:e4ec67bd-4f7e-4e09-8f6d-e88e6fa53cf6" } } -
Sync mode, still running after 90 seconds. The body is the running job record, as in the
201tab. Poll GET /jobs/jobidfor the result. -
A missing or invalid parameter, or an option that does not fit the item’s type.
{ "error": "Parameter format does not apply to type quiz", "code": 400 }{ "error": "Parameter orientation (tall) valid values for infographic: landscape, portrait, square", "code": 400 } -
Invalid API token.
{ "error": "useapi.net ⁝ Unauthorized", "code": 401 } -
The artifact id belongs to a different API token.
{ "error": "user:[email protected]:d02c903b-17f8-4241-a263-2be9e7359d55:e4ec67bd-4f7e-4e09-8f6d-e88e6fa53cf6 does not belong to this API token", "code": 403 } -
The item is no longer in its notebook (for example it was dismissed), or the account it names is not configured.
{ "error": "Artifact user:[email protected]:d02c903b-17f8-4241-a263-2be9e7359d55:e4ec67bd-4f7e-4e09-8f6d-e88e6fa53cf6 not found", "code": 404 } -
The artifact is not a suggested item, or it was already generated.
{ "error": "Only an interactive report's suggested item can be generated (this interactive_report is completed)", "code": 409 } -
Sync mode, Google reported the generation as failed. The body is the failed job record with
error.code: "generation_failed". Re-run it with POST /artifacts/retry. -
The account already runs
maxJobsjobs:{ "error": "Account [email protected] is busy: 3/3 jobs running (maxJobs)", "code": 429 }Or Google refused the job because not enough of its usage window is left, before any job was created.
retryAtis when the window resets andwindowis5horweekly, both present only when Google’s refusal names the window. See GET /accounts/email:{ "error": "Not enough of Google's 5h window is left on account [email protected] for this job; it resets at 2026-10-15T09:29:23.000Z. GET /accounts/[email protected] shows what each job needs", "code": 429, "retryAt": "2026-10-15T09:29:23.000Z", "window": "5h" } -
A temporary condition, retry in a few minutes.
{ "error": "Async mode is unavailable right now, use mode sync", "code": 503 }The job could not be added to our job schedule. It is failed at once with
error.code: "scheduler". Google may already have started the generation, since only a one-shot request creates the artifact inside the job. Check GET /artifacts before you submit it again.{ "error": "Unable to lock the job schedule of user 12345, please retry", "code": 503 }{ "error": "Failed to create the job schedule (QStash HTTP 500): …", "code": 503 } -
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 }In sync mode, a job whose account is confirmed signed out while it runs answers
596with the failed job record (error.code: "account").
Model
The job record, the same shape as POST /artifacts returns. request echoes artifact and the options you sent, and type is the item’s type. The full field list is on GET /jobs/jobid.
{ // TypeScript, all fields are optional
jobid: string // job:<uuid>-user:<id>-<email>-bot:gemini_notebook
email: string // the account the job runs on
type: 'audio' | 'video' | 'report' | 'interactive_report' | 'table' | 'quiz' | 'flashcards' | 'infographic' | 'slides' | 'mindmap' | 'research'
status: 'pending' | 'processing' | 'completed' | 'failed'
notebook: string // notebook id; for a one-shot, the notebook created for it
artifact?: string // artifact id, once Google has created it (never on a research job)
created_at: string // ISO 8601, when the job was accepted
updated_at?: string // one-shot only: when its artifact was created
completed_at?: string // ISO 8601, when the job completed or failed
request: Record<string, unknown> // your request body echoed back (ids as strings), without mode, replyUrl and replyRef
replyUrl?: string
replyRef?: string
warnings?: string[] // one-shot only: sources Google could not process and that were left out
error?: { // status 'failed'
code: 'quota' | 'account' | 'not_found' | 'sources' | 'generation_failed' | 'timeout' | 'google_error' | 'scheduler' | 'cancelled'
message: string
retryAt?: string // code 'quota', when Google names the window: ISO 8601 time it resets
}
result?: { // status 'completed', a Studio artifact
title: string
duration?: number // audio, video: seconds
files?: Array<{ // audio, video, infographic, slides
format: 'm4a' | 'mp4' | 'png' | 'pdf' | 'pptx'
mimeType: string
url: string // GET /artifacts/download link, needs your API token
width?: number // infographic
height?: number
}>
slides?: Array<{ // slides
image: string // GET /artifacts/download link (format=slide&index=N)
caption: string | null
text: string | null
}>
text?: string // report (Markdown), interactive_report, infographic
table?: string[][] // table: rows of cells, header row first
content?: unknown // quiz, flashcards, mindmap: Google's JSON
embedded?: Array<{ // interactive_report: the items it suggests, in reading order
artifact: string // the item's id, for POST /artifacts/generate or DELETE /artifacts/{artifact}
type: string // 'infographic', 'slides', 'mindmap', 'quiz' or 'flashcards'
title: string
description?: string
status: string // 'suggested' until generated
}>
} | { // status 'completed', type 'research' (POST /research)
mode: 'fast' | 'deep'
query: string
summary?: string // fast: Google's one-line summary of what it found
report?: { // deep: the Deep Research report
title: string
markdown: string
}
noResults?: true // the run found nothing (sources is [])
sources: Array<{
url: string
title: string
description: string | null
cited: boolean // deep: the report cites it. fast: always true
}>
}
}
Examples
-
curl -X POST "https://api.useapi.net/v1/gemini-notebook/artifacts/generate" \ -H "Content-Type: application/json" \ -H "Authorization: Bearer …" \ -d '{ "artifact": "user:[email protected]:d02c903b-17f8-4241-a263-2be9e7359d55:5ac11006-86b7-43a8-91c9-72bc5ba1164f", "orientation": "portrait", "style": "sketch_note", "mode": "async" }' -
const token = "API token"; const apiUrl = "https://api.useapi.net/v1/gemini-notebook"; const headers = { "Content-Type": "application/json", "Authorization": `Bearer ${token}` }; const report = "user:[email protected]:..."; const { embedded = [] } = await (await fetch(`${apiUrl}/artifacts/${encodeURIComponent(report)}`, { headers })).json(); const item = embedded.find(x => x.status === "suggested" && x.type === "quiz"); const response = await fetch(`${apiUrl}/artifacts/generate`, { method: "POST", headers, body: JSON.stringify({ artifact: item.artifact, difficulty: "hard", mode: "async" }) }); const job = await response.json(); console.log("response", response.status, job); -
import requests from urllib.parse import quote token = "API token" apiUrl = "https://api.useapi.net/v1/gemini-notebook" headers = {"Content-Type": "application/json", "Authorization": f"Bearer {token}"} report = "user:[email protected]:..." embedded = requests.get(f"{apiUrl}/artifacts/{quote(report, safe='')}", headers=headers).json().get("embedded", []) item = next(x for x in embedded if x["status"] == "suggested" and x["type"] == "slides") response = requests.post( f"{apiUrl}/artifacts/generate", headers=headers, json={"artifact": item["artifact"], "length": "short", "mode": "async"} ) print(response.status_code, response.json())