Rename a source
September 29, 2026
Table of contents
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
sourceis 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}
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
{
"title": "Apollo 11 timeline"
}
titleis required, the new title.
Length:1to200characters.
Responses
-
The renamed source. When Google does not echo the source back, the response carries only
sourceandtitle.{ "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" } -
A malformed source id, or a missing or too long
title.{ "error": "Parameter title is required", "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:9df5b3d2-0afd-4ea7-9c20-e42c4af17d46 does not belong to this API token", "code": 403 } -
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 } -
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 (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())