Retrieve a source
September 29, 2026
Table of contents
Read one source live from Google: the same fields GET /notebooks/notebook lists for it, plus the source guide the web app shows when you open a source (a summary and its key topics).
For a Google Drive source (kind google_docs or drive) the response also says whether the notebook’s copy still matches the file in Drive (inSync). When it does not, re-import the file with POST /sources/sync. For a changed Google Doc, this check itself can start Google’s re-import, so the source may already hold the new text a few seconds later.
Add content=true to get the full text Google indexed for the source, which is what chat answers from.
summary, topics, inSync and content are returned only once the source’s status is ready.
https://api.useapi.net/v1/gemini-notebook/sources/
source?content=content
sourceis required, the source id, URL-encoded in the path (it contains:and@). Source ids are returned by POST /sources, POST /sources/upload and GET /notebooks/notebook. The id names its account, so noemailis needed.
Request Headers
Authorization: Bearer {API token}
API tokenis required, see Setup useapi.net for details.
Query Parameters
contentis optional,trueadds the source’s indexed text ascontent.
Default:false.
Responses
-
A pasted-text source, with
content=true:{ "source": "user:[email protected]:d02c903b-17f8-4241-a263-2be9e7359d55:10f43c6b-a0a6-46a8-b330-06a5718dffb2", "title": "Why Apollo 11 almost did not land", "kind": "text", "status": "ready", "words": 90, "created": "2026-09-29T04:08:46.000Z", "notebook": "user:[email protected]:d02c903b-17f8-4241-a263-2be9e7359d55", "summary": "The historic Apollo 11 mission faced **critical dangers during its final descent**, including unexpected computer malfunctions and a hazardous boulder field that forced the crew to **take manual control of the spacecraft**...", "topics": [ "Apollo 11 landing", "Computer program alarms", "Manual final approach", "Historic moonwalk", "Lunar sample collection" ], "content": "Why Apollo 11 almost did not land\n\nThe lunar module Eagle landed in the Sea of Tranquility on July 20, 1969. During the descent the guidance computer raised 1202 and 1201 program alarms..." } -
The path does not hold a valid source id, for example it holds a notebook or note id.
{ "error": "Path parameter source (user%3A12345-user%40example.com-notebook%3Ad02c903b-17f8-4241-a263-2be9e7359d55) is not a valid source id", "code": 400 } -
Invalid API token.
{ "error": "useapi.net ⁝ Unauthorized", "code": 401 } -
The source id was issued to a different API token.
{ "error": "user:[email protected]:d02c903b-17f8-4241-a263-2be9e7359d55:10f43c6b-a0a6-46a8-b330-06a5718dffb2 does not belong to this API token", "code": 403 } -
The source is no longer in its notebook, the notebook was deleted, or the account named in the id is no longer configured.
{ "error": "Source user:[email protected]:d02c903b-17f8-4241-a263-2be9e7359d55:10f43c6b-a0a6-46a8-b330-06a5718dffb2 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 } -
Google is temporarily unavailable or is challenging our network. Retry in a few minutes. A
502means Google answered with an unexpected error.{ "error": "Google is temporarily unavailable (tr032e grpc 14), please retry", "code": 503 }
Model
The source fields are those of POST /sources. All kind and status values are listed in Source kinds and statuses.
{ // TypeScript, all fields are optional
source: string // user:<id>-<email>-source:<notebook uuid>:<source uuid>
title: string
kind: string
status: string // preparing | processing | ready | error
words?: number
url?: string // web page or YouTube URL
mimeType?: string // file sources
driveFileId?: string // Google Drive sources: the Drive file id
created?: string // ISO 8601
notebook: string // the notebook the source belongs to
summary?: string | null // status ready: Google's summary of the source (Markdown)
topics?: string[] // status ready: key topics
inSync?: boolean // status ready, Drive sources only: false once the Drive file changed since it was added
content?: string // status ready, with content=true: the text Google indexed
error: string // error responses only
code: number // error responses only, the HTTP status
}
Examples
-
SOURCE="user:[email protected]:d02c903b-17f8-4241-a263-2be9e7359d55:10f43c6b-a0a6-46a8-b330-06a5718dffb2" curl "https://api.useapi.net/v1/gemini-notebook/sources/$(python3 -c "import urllib.parse,sys;print(urllib.parse.quote(sys.argv[1],safe=''))" "$SOURCE")?content=true" \ -H "Authorization: Bearer …" -
const token = "API token"; const source = "user:[email protected]:d02c903b-17f8-4241-a263-2be9e7359d55:10f43c6b-a0a6-46a8-b330-06a5718dffb2"; const apiUrl = `https://api.useapi.net/v1/gemini-notebook/sources/${encodeURIComponent(source)}?content=true`; 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" source = "user:[email protected]:d02c903b-17f8-4241-a263-2be9e7359d55:10f43c6b-a0a6-46a8-b330-06a5718dffb2" apiUrl = "https://api.useapi.net/v1/gemini-notebook/sources/" + urllib.parse.quote(source, safe="") headers = { "Authorization" : f"Bearer {token}" } response = requests.get(apiUrl, headers=headers, params={"content": "true"}) print(response, response.json())