Create a note

September 29, 2026

Table of contents

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

Add a note to a notebook, the same as writing one in the notes panel of the Gemini Notebook web app. A note is not a source: chat and Studio do not read it until you turn it into one with POST /notes/source.

Instead of writing the text yourself, you can save a whole chat conversation as one note: pass its conversation id from POST /chat or GET /chat. The note is titled Chat History unless you pass title, and its text lists the turns oldest first, each question as **Q:** … and each answer as **A:** …, separated by blank lines. Up to the last 100 turns are included.

List a notebook’s notes with GET /notes, and change one with POST /notes/note.

https://api.useapi.net/v1/gemini-notebook/notes

Request Headers
Authorization: Bearer {API token}
Content-Type: application/json
# Alternatively you can use multipart/form-data
# Content-Type: multipart/form-data
Request Body
{
  "notebook": "user:[email protected]:d02c903b-17f8-4241-a263-2be9e7359d55",
  "title": "Landing timeline",
  "content": "Powered descent began at 102:33 GET."
}
  • notebook is required, the notebook id returned by POST /notebooks or GET /notebooks. The id names its account, so no email is needed.
  • content is optional, the note’s text.
    Length: 1 to 500,000 characters.
  • conversation is optional, the id of a chat conversation of this notebook, from POST /chat or GET /chat. The whole conversation is saved as the note’s text.
  • title is optional, the note’s title.
    Default: New Note, or Chat History with conversation. Length: 1 to 200 characters.

Provide either content or conversation, not both.

Responses
  • 201 Created

    {
      "notebook": "user:[email protected]:d02c903b-17f8-4241-a263-2be9e7359d55",
      "note": "user:[email protected]:d02c903b-17f8-4241-a263-2be9e7359d55:e5514ee8-22e5-414d-aa67-86e8476ece09",
      "title": "Landing timeline",
      "content": "Powered descent began at 102:33 GET.",
      "type": "note",
      "created": "2026-09-29T04:08:58.000Z",
      "updated": "2026-09-29T04:08:58.000Z"
    }
    

    Saved from a conversation ("conversation": "fd20f12d-611f-4008-9e61-94e02af005a9", answer shortened):

    {
      "notebook": "user:[email protected]:d02c903b-17f8-4241-a263-2be9e7359d55",
      "note": "user:[email protected]:d02c903b-17f8-4241-a263-2be9e7359d55:463766a0-92ce-4182-9cae-2649d1d7231d",
      "title": "Chat History",
      "content": "**Q:** What were the 1202 alarms?\n\n**A:** The 1202 program alarms during lunar descent indicated \"executive overflows,\" meaning the guidance computer was overloaded...\n\n**Q:** Who told the crew it was safe to continue?\n\n**A:** ...",
      "type": "note",
      "created": "2026-09-29T20:20:33.000Z",
      "updated": "2026-09-29T20:20:33.000Z"
    }
    
  • 400 Bad Request

    A missing, empty or malformed parameter.

    {
      "error": "Provide content, or conversation to save a chat conversation as a note",
      "code": 400
    }
    
  • 401 Unauthorized

    Invalid API token.

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

    The notebook id was issued to a different API token.

    {
      "error": "user:[email protected]:d02c903b-17f8-4241-a263-2be9e7359d55 does not belong to this API token",
      "code": 403
    }
    
  • 404 Not Found

    The notebook was deleted, its account is no longer configured, or the conversation has no turns in this notebook (Conversation <id> has no turns in this notebook).

    {
      "error": "Account [email protected] of user:[email protected]:d02c903b-17f8-4241-a263-2be9e7359d55 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 (CYK0Xb grpc 14), please retry",
      "code": 503
    }
    
Model

The note, as GET /notes lists it, plus its notebook.

{ // TypeScript, all fields are optional
  notebook: string
  note: string                 // user:<id>-<email>-note:<notebook uuid>:<note uuid>
  title: string
  content: string
  type: string                 // note
  created?: string             // ISO 8601. Google moves it to the edit time when the content changes
  updated?: 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" \
       -H "Content-Type: application/json" \
       -H "Authorization: Bearer …" \
       -d '{
         "notebook": "user:[email protected]:d02c903b-17f8-4241-a263-2be9e7359d55",
         "title": "Landing timeline",
         "content": "Powered descent began at 102:33 GET."
       }'
    
  • const token = "API token";
    const apiUrl = "https://api.useapi.net/v1/gemini-notebook/notes";
    const response = await fetch(apiUrl, {
      method: "POST",
      headers: {
        "Content-Type": "application/json",
        "Authorization": `Bearer ${token}`,
      },
      body: JSON.stringify({
        notebook: "user:[email protected]:d02c903b-17f8-4241-a263-2be9e7359d55",
        title: "Landing timeline",
        content: "Powered descent began at 102:33 GET."
      })
    });
    const result = await response.json();
    console.log("response", {response, result});
    
  • import requests
    token = "API token"
    apiUrl = "https://api.useapi.net/v1/gemini-notebook/notes"
    headers = {
        "Content-Type": "application/json",
        "Authorization" : f"Bearer {token}"
    }
    data = {
        "notebook": "user:[email protected]:d02c903b-17f8-4241-a263-2be9e7359d55",
        "title": "Landing timeline",
        "content": "Powered descent began at 102:33 GET."
    }
    response = requests.post(apiUrl, headers=headers, json=data)
    print(response, response.json())
    
Try It