Convert a note to a source
September 29, 2026
Table of contents
Copy a note into its notebook as a source, the “Convert to source” action of the Gemini Notebook web app. Notes are not read by chat or Studio artifacts. The source made from one is.
The new source is a Markdown source (kind markdown) titled after the note. Its text is the note’s title as a ### heading, followed by the note’s text. A saved chat answer (type: saved_answer) loses its citation markers such as [1] or [1, 3] on the way, as in the web app.
The note itself is kept. The source is a separate copy, so later edits to the note do not reach it, and deleting the note does not remove it.
https://api.useapi.net/v1/gemini-notebook/notes/source
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
{
"note": "user:[email protected]:d02c903b-17f8-4241-a263-2be9e7359d55:e5514ee8-22e5-414d-aa67-86e8476ece09"
}
noteis required, the note id returned by POST /notes or GET /notes. The id names its account and notebook, so noemailornotebookis needed.
Responses
-
The new source.
{ "notebook": "user:[email protected]:d02c903b-17f8-4241-a263-2be9e7359d55", "source": "user:[email protected]:d02c903b-17f8-4241-a263-2be9e7359d55:7f6f776d-2cb6-43e3-842d-bd37b5ba8f74", "title": "Eagle landing timeline", "kind": "markdown", "status": "ready", "words": 12, "created": "2026-09-29T04:09:07.000Z" } -
A missing or malformed
note.{ "error": "Parameter note is required", "code": 400 } -
Invalid API token.
{ "error": "useapi.net ⁝ Unauthorized", "code": 401 } -
The note id was issued to a different API token.
{ "error": "user:[email protected]:d02c903b-17f8-4241-a263-2be9e7359d55:e5514ee8-22e5-414d-aa67-86e8476ece09 does not belong to this API token", "code": 403 } -
The note was deleted, its notebook was deleted, or its account is no longer configured.
{ "error": "Note user:[email protected]:d02c903b-17f8-4241-a263-2be9e7359d55:e5514ee8-22e5-414d-aa67-86e8476ece09 not found", "code": 404 } -
Google accepted the note but did not return the new source, or answered with an unexpected error. Check the notebook with GET /notebooks/
notebookbefore you retry, since the source may have been added.{ "error": "Google accepted the note but returned no source; check GET /notebooks/{notebook}", "code": 502 } -
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.
{ "error": "Google is temporarily unavailable (izAoDd grpc 14), please retry", "code": 503 }
Model
The source object, as in POST /sources, plus its notebook.
{ // TypeScript, all fields are optional
notebook: string
source: string // user:<id>-<email>-source:<notebook uuid>:<source uuid>
title: string // the note's title
kind: string // markdown
status: string // preparing | processing | ready | error
words?: number
created?: string // ISO 8601
error: string // error responses only
code: number // error responses only, the HTTP status
}
Examples
-
curl -X POST "https://api.useapi.net/v1/gemini-notebook/notes/source" \ -H "Content-Type: application/json" \ -H "Authorization: Bearer …" \ -d '{ "note": "user:[email protected]:d02c903b-17f8-4241-a263-2be9e7359d55:e5514ee8-22e5-414d-aa67-86e8476ece09" }' -
const token = "API token"; const apiUrl = "https://api.useapi.net/v1/gemini-notebook/notes/source"; const response = await fetch(apiUrl, { method: "POST", headers: { "Content-Type": "application/json", "Authorization": `Bearer ${token}`, }, body: JSON.stringify({ note: "user:[email protected]:d02c903b-17f8-4241-a263-2be9e7359d55:e5514ee8-22e5-414d-aa67-86e8476ece09" }) }); const result = await response.json(); console.log("response", {response, result}); -
import requests token = "API token" apiUrl = "https://api.useapi.net/v1/gemini-notebook/notes/source" headers = { "Content-Type": "application/json", "Authorization" : f"Bearer {token}" } data = { "note": "user:[email protected]:d02c903b-17f8-4241-a263-2be9e7359d55:e5514ee8-22e5-414d-aa67-86e8476ece09" } response = requests.post(apiUrl, headers=headers, json=data) print(response, response.json())