Skip to main content

Journals API

The Journals API lets you programmatically access and manage journals from your Opennote account. Create, edit, and organize your study materials through code. Note: Your API key only has access to journals you’ve created. OAuth support for accessing user journals in third-party apps is coming soon.

Available Operations

The Journals API provides the following endpoints:

Core Operations

  • Create Journal - Start a new blank journal
  • List Journals - Get all your journals with pagination support
  • Get Content - Retrieve full journal content in markdown format
  • Rename Journal - Change a journal’s title
  • Delete Journal - Remove a journal (returns deleted data for recovery)

Advanced Operations

  • Import from Markdown - Create a journal from existing markdown content
  • Edit and Build Journal - Modify journal structure with create/update/delete operations
  • Get Model Info - Access the ProseMirror JSON representation
The full API reference can be found here.

Quick Start

Editing Journals

The edit endpoint allows you to modify journal content by applying operations in sequence. Each operation can create, update, or delete blocks within the journal.

Edit Operations

Use the SDK’s utility functions to build edit operations:

Important Notes on Editing

  • Markdown Support: Both ParagraphBlock and HeadingBlock accept markdown strings that are automatically converted to the proper document structure
  • Sync to Collaborators: Setting sync_realtime_state: true applies changes immediately to all connected users, but (warning) disables undo functionality for those changes. This is default to true to make sure document changes aren’t overwritten by conflict resolution.
  • Operation Order: Operations are applied sequentially - earlier operations can affect later ones
  • Editing through SDK: Editing operations are quite complex in the API. The SDKs provide utility functions to help you build edit operations in a very simple way, and we recommend you prioritize using them over direct API calls.

Markdown Content Imports

Convert existing markdown content into a new journal using the import_from_markdown endpoint. This can be used to translate LLM generated content into a journal that can be edited and shared:

Pagination

When listing journals, use pagination for large collections to improve performance:

Responses

Response formats can be viewed in the API Reference.

Error Handling

The API returns standard HTTP status codes:
  • 200: Success
  • 401: Invalid or missing API key
  • 422: Invalid request parameters
  • 429: Rate limit exceeded (check Retry-After header)
  • 500: Server error
Example error response:
When rate limited, the API returns a 429 status with a Retry-After header indicating when you can retry. You can always view your rate limits in the API Dashboard.

Support

Need help with the Journals API?