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
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
andHeadingBlock
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 totrue
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.
- The full reference of available block types can be found in the Python SDK Repo or TypeScript SDK Repo.
Markdown Content Imports
Convert existing markdown content into a new journal using theimport_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
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?- Technical Support: devtools@opennote.me
- API Reference: Full API Documentation
- Dashboard: Manage API Keys and the Playground
- SDK Documentation: Python & TypeScript SDKs