For the complete documentation index, see llms.txt. This page is also available as Markdown.

🔒Private Notebooks

Private Notebooks gives you a dedicated notebook account for keeping reusable sources, asking grounded questions with citations, and generating finished assets from the same source workspace.

The subscription is €99 per month. One license provides one dedicated notebook account and is activated within one business day after payment. Private Notebook operations do not consume AutoContent API credits; the subscription limits below apply instead.

Authentication and Idempotency

Use your AutoContent API token on every request:

Authorization: Bearer YOUR_API_TOKEN

An active Private Notebooks license is required. A notebook belongs to the customer that created it; another customer cannot read, change, query, or delete that notebook ID.

Every operation that changes state or asks a question also requires an Idempotency-Key header:

Idempotency-Key: pn-create-018f4f6e-23b1-7ef1-a867-acde48001122

Use an opaque printable ASCII value between 8 and 192 characters. Keep the same key when retrying the same operation. Reusing it with different input returns 409 Conflict.

The header is required for:

  • POST /dedicated-account/notebooks

  • DELETE /dedicated-account/notebooks/:notebookId

  • POST /dedicated-account/notebooks/:notebookId/sources

  • POST /dedicated-account/notebooks/:notebookId/questions

  • POST /Content/Create when the body contains notebookId

It is not required for the GET endpoints.

Endpoints

Method
Endpoint
Purpose

POST

/dedicated-account/notebooks

Create a notebook, optionally with initial sources

GET

/dedicated-account/notebooks

List your notebooks

GET

/dedicated-account/notebooks/:notebookId

Get one owned notebook

DELETE

/dedicated-account/notebooks/:notebookId

Delete one owned notebook and its sources

POST

/dedicated-account/notebooks/:notebookId/sources

Add sources to an owned notebook

POST

/dedicated-account/notebooks/:notebookId/questions

Ask a grounded question

GET

/dedicated-account/usage

Read capacity and current rolling 24-hour usage

POST

/Content/Create

Generate an asset from an owned notebook's saved sources

GET

/Content/Status/:requestId

Poll a generated asset until it completes

Individual source deletion is not supported. Delete the notebook when all of its sources should be removed.

Supported Sources

Each source has a type, content, and, for uploaded files, an optional fileName.

Type

content

Notes

text

Plain text

Up to 500,000 characters

website

An http or https URL

The provider reads the page

youtube

A YouTube URL

youtube.com and youtu.be URLs are accepted

pdf

Base64-encoded PDF bytes

Up to 50 MB; a base64 data URL is also accepted

file

Base64-encoded file bytes

Up to 50 MB; include fileName

file accepts .pdf, .txt, .md, .csv, .docx, .pptx, .xlsx, .mp3, .wav, .m4a, .png, .jpg, .jpeg, and .webp files.

Create a Notebook with cURL

Creating a notebook may include an empty sources array or up to 20 initial sources. Add more in batches of 20 until the notebook reaches its 100-source capacity:

A new request returns 201 Created:

An idempotent replay returns 200 OK with replay: true. Source ingestion can partially succeed, so inspect every item in sources even when the HTTP request succeeds. A failed item has success: false and an errorMessage.

Add a PDF Source

Base64-encode the file bytes and send them as content:

The response identifies the result for each submitted source:

Ask a Question and Read Citations

Questions can contain up to 5,000 characters:

citations is an object keyed by the citation marker used in the answer:

Citation fields depend on the underlying source and may be empty. Treat the citations keys as strings and render only citations returned by the API.

Licensed Generation Capacity

Every notebook-bound generation runs on the same dedicated account assigned to your license. It uses the notebook's existing sources, does not consume AutoContent generation credits, and never rotates through the shared account pool.

The supported outputType values are:

  • audio

  • video

  • text

  • faq

  • study_guide

  • timeline

  • briefing_doc

  • quiz

  • infographic

  • slide_deck

  • datatable

Submit the job through /Content/Create with the owned notebookId, then poll /Content/Status/:requestId exactly as you would for other AutoContent jobs. Do not add resources, topic, projects, feeds, research IDs, channels, or episode IDs to a notebook-bound request. Add sources to the notebook first so the persistent source workspace remains the only generation context.

The create response contains request_id. Poll its status until status is 100. Depending on the output, the terminal response contains grounded response_text and citations, or a downloadable field such as audio_url, video_url, image_url, briefing_doc_url, slide_deck_url, or datatable_url. Replaying the same request with the same idempotency key returns the same request ID and does not submit a second provider generation.

Node.js Example

This example creates a notebook and asks it a question using the built-in fetch available in Node.js 18 and later:

Python Example

This example creates an empty notebook, uploads a PDF, and asks a question. Install the requests package first.

In production, retain each idempotency key with its operation so a network retry sends the same key instead of generating a new one.

List, Read, Delete, and Check Usage

These examples use the same Bearer token. Only deletion needs an idempotency key.

The list response wraps records in notebooks; the single-notebook response returns one record directly:

A successful deletion returns success: true, the deleted notebookId, and a replay flag.

Usage response:

Plan Limits

Capability
Limit

Dedicated accounts per license

1

Notebooks

200

Sources per notebook

100

Grounded questions

200 after each 24-hour reset

Audio overview account capacity

6 after each 24-hour reset

Video overview account capacity

6 after each 24-hour reset

Reports: FAQ, study guide, timeline, briefing document

20 after each 24-hour reset

Quizzes

20 after each 24-hour reset

Infographics, slide decks, and data tables

Provider-governed capacity; no invented numeric limit

text generation uses the same question allowance as the direct questions endpoint. All listed output request and retrieval paths have been verified end to end. Upstream capacity can still change, and the API returns a clear provider error if the assigned account reaches a provider limit that has no published numeric allowance.

Google's published help says daily quotas reset after 24 hours but does not expose an account reset timestamp to this API. AutoContent therefore applies a conservative rolling 24-hour admission window and also surfaces upstream quota errors. Use GET /dedicated-account/usage instead of calculating availability locally; each used capability includes its next local resetsOn timestamp.

Error Handling

Status
Meaning
Recommended action

400

Invalid body, source, notebook ID, question, or idempotency key

Correct the request before retrying

401

Missing or invalid Bearer token

Supply a valid AutoContent API token

403

No active Private Notebooks license

Wait for activation or restore the subscription

404

Notebook not found or not owned by the authenticated customer

Verify the notebook ID and token

409

The key was reused with different input, work is already in flight, or the prior mutation must be reconciled

If Retry-After is present, wait and retry the identical request with the same key; otherwise inspect the error code

429

Notebook/source capacity or a rolling 24-hour allowance was reached

Read /dedicated-account/usage and wait until resetsOn when applicable

503

The service, dedicated account, or third-party provider is temporarily unavailable

Retry the identical request with the same key and exponential backoff

Private Notebook endpoints commonly return error, errorMessage, and optional details. Managed mutation conflicts may instead include success: false, code, and error. Parse the HTTP status first and preserve these fields in logs.

Last updated