Rename a source

September 29, 2026

Table of contents

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

Change the title of a source added via POST /sources or POST /sources/upload. The title is what chat citations and the notebook’s source list show. The source id does not change.

https://api.useapi.net/v1/gemini-notebook/sources/source

Request Headers
Authorization: Bearer {API token}
Content-Type: application/json
# Alternatively you can use multipart/form-data
# Content-Type: multipart/form-data
Request Body
{
  "title": "Apollo 11 timeline"
}
  • title is required, the new title.
    Length: 1 to 200 characters.
Responses
  • 200 OK

    The renamed source. When Google does not echo the source back, the response carries only source and title.

    {
      "source": "user:[email protected]:d02c903b-17f8-4241-a263-2be9e7359d55:9df5b3d2-0afd-4ea7-9c20-e42c4af17d46",
      "title": "Apollo 11 timeline",
      "kind": "text",
      "status": "ready",
      "words": 57,
      "mimeType": "text/plain",
      "created": "2026-09-27T23:25:04.000Z"
    }
    
  • 400 Bad Request

    A malformed source id, or a missing or too long title.

    {
      "error": "Parameter title is required",
      "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:9df5b3d2-0afd-4ea7-9c20-e42c4af17d46 does not belong to this API token",
      "code": 403
    }
    
  • 404 Not Found

    The account named in the source id is no longer configured, or Google reports the source or its notebook as not found.

    {
      "error": "Account [email protected] of user:[email protected]:d02c903b-17f8-4241-a263-2be9e7359d55:9df5b3d2-0afd-4ea7-9c20-e42c4af17d46 is not configured",
      "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 (b7Wfje grpc 14), please retry",
      "code": 503
    }
    
Model

The source object, as in 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               // the new title
  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
}
Examples
  • SOURCE="user:[email protected]:d02c903b-17f8-4241-a263-2be9e7359d55:9df5b3d2-0afd-4ea7-9c20-e42c4af17d46"
    curl -X POST "https://api.useapi.net/v1/gemini-notebook/sources/$(python3 -c "import urllib.parse,sys;print(urllib.parse.quote(sys.argv[1],safe=''))" "$SOURCE")" \
       -H "Content-Type: application/json" \
       -H "Authorization: Bearer …" \
       -d '{ "title": "Apollo 11 timeline" }'
    
  • const token = "API token";
    const source = "user:[email protected]:d02c903b-17f8-4241-a263-2be9e7359d55:9df5b3d2-0afd-4ea7-9c20-e42c4af17d46";
    const apiUrl = `https://api.useapi.net/v1/gemini-notebook/sources/${encodeURIComponent(source)}`;
    const response = await fetch(apiUrl, {
      method: "POST",
      headers: {
        "Content-Type": "application/json",
        "Authorization": `Bearer ${token}`,
      },
      body: JSON.stringify({ title: "Apollo 11 timeline" })
    });
    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:9df5b3d2-0afd-4ea7-9c20-e42c4af17d46"
    apiUrl = "https://api.useapi.net/v1/gemini-notebook/sources/" + urllib.parse.quote(source, safe="")
    headers = {
        "Content-Type": "application/json",
        "Authorization" : f"Bearer {token}"
    }
    response = requests.post(apiUrl, headers=headers, json={"title": "Apollo 11 timeline"})
    print(response, response.json())
    
Try It