Retrieve a source

September 29, 2026

Table of contents

  1. Request Headers
  2. Query Parameters
  3. Responses
  4. Model
  5. Examples
  6. Try It

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

Request Headers
Authorization: Bearer {API token}
Query Parameters
  • content is optional, true adds the source’s indexed text as content.
    Default: false.
Responses
  • 200 OK

    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..."
    }
    
  • 400 Bad Request

    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
    }
    
  • 401 Unauthorized

    Invalid API token.

    {
      "error": "useapi.net ⁝ Unauthorized",
      "code": 401
    }
    
  • 403 Forbidden

    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
    }
    
  • 404 Not Found

    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
    }
    
  • 503 Service Unavailable

    Google is temporarily unavailable or is challenging our network. Retry in a few minutes. A 502 means 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())
    
Try It