Video Generation API
The Opennote Video API enables you to create high-quality educational videos from text prompts, scripts, or conversational message formats. Our AI-powered video generation system transforms your content into engaging visual presentations with narration, graphics, and educational elements. You can create videos from text prompts, direct scripts, or conversational messages.1
Submit Video Job Request
Send your content with model preferences and configuration options.
2
Check Status While Processing
Our system processes your content, generates visuals, and creates narration. You can view the status of your video job by polling the status endpoint, or wait for the webhook to be triggered.
3
Deliver Your Video
Get your completed video via S3 URL or direct
base64
encoded video.Quick Start Example
Configuration Options
The onlymodel
available as of right now is picasso
. We are working on more models in the future, as well as dated compatability for models.
Message Formats
System Messages (Optional)
Provide context about the audience, style, or educational goals:User and Assistant Messages
With themessages
parameter, you can provide a list of messages, with the first message being the system message, and the last message being a user message.
This can simulate a conversation between an assistant and a user, which can be useful for creating more natural videos that work towards the conversation. The user message will be the last message in the video, and ideally is where the user “requests” the video.
The last message will also be the primary message that the video will be about, and the rest of the conversation is used as context for the video. Here is an example of a good user message, though it does not always have to be this verbose:
length
parameter.
Stating things like “Make a 10-minute video” will not change anything about the video.
Using Scripts instead of Messages
Thescript
parameter is a more verbose way to create a video, and is more useful for creating detailed videos. It is also cheaper than using the messages
parameter, as no script is generated.
Scripts are spoken exactly as is, so write them fully, such as f of x
for f(x)
, otherwise the text-to-speech model will not understand the special formatting of characters.
You can seperate a script into different sections by using the -----
separator. An example of this is shown in the Extra Examples section.
Advanced Options
Web Search within Videos
Web Search within Videos
Webhooks
Webhooks
POST
request to the provided webhook URL,
with the same schema as the status endpoint.Storage Options
Storage Options
False
, then we will return a base64
encoded video in the response. Otherwise, we return the s3_url
of the video, which is uploaded to our S3 bucket for you.
These videos are stored permanently for you to access at your conveinece, and will always come back with the following base URL: https://videofs-opennote-us-east-1.s3.us-east-1.amazonaws.com...
Webhooks
When using webhooks, you’ll receive an update about your video once it has been completed, with the same schema as the status endpoint, which you can view in the API Reference. Keep in mind that even though the status endpoint is usually aGET
request, the webhook will deliver a POST
request to your webhook URL.
Security
To verify that your webhook is coming from the right location, you can expect the following headers to be returned alongside your video:Error Handling
Common Error Responses
401 Unauthorized
401 Unauthorized
402 Insufficient Credits
402 Insufficient Credits
429 Rate Limited
429 Rate Limited
You will get a
Retry-After
header in the response, which you can use to wait before making another request.500 Processing Error
500 Processing Error
Best Practices
Creating Effective Videos
- Be specific: Include target audience, duration, and key concepts in the
system
prompt. - Provide context: Use system messages to set educational goals
- Structure content: Break complex topics into clear sections
- Include examples: Mention specific examples or case studies to include
- Use Web Search: Enable web search to bring more context to the video model.
- Literal Scripts: If you are using the
script
parameter, note that what you write will be spoken exactly as is.- Math, formulas, etc. will be spoken exactly as you write them, so write them fully, such as
f of x
forf(x)
. - The more literal you are in your script for what you want it to say, the better the video will be.
- Math, formulas, etc. will be spoken exactly as you write them, so write them fully, such as
Optimizing Performance
- Use focused prompts: Specific requests generate faster than broad topics
- Enable webhooks: Avoid polling overhead with real-time notifications
- Cache results: Store completed videos to avoid regenerating similar content
Cost Management
- Preview content: Use shorter videos with the
length
parameter for testing before creating full-length content - Optimize usage: Fewer sources and no web search means lower costs, as well as no title or script generation.
- Using the
script
parameter will always be cheaper than using themessages
parameter, as no script is generated. - Using the
title
parameter will be cheaper than not, as no title is generated. - Mark
upload_to_s3
asFalse
to avoid storage costs.
- Using the
- Reuse content: Leverage existing videos for similar topics
- Monitor usage: Track credit consumption in your dashboard
Example Use Cases
Course Materials
Create lecture videos from course outlines or textbook chapters for flipped classroom models.
Training Content
Transform training manuals into engaging video content for employee onboarding and skills development.
Educational Summaries
Convert research papers or long-form content into digestible video summaries.
Interactive Tutorials
Build step-by-step tutorial videos from written instructions or documentation.
Support
Need help with video generation?- Technical Issues: devtools@opennote.me
- Content Guidelines: Check our best practices above
- API Questions: See our API Reference for detailed documentation
- Account Issues: Visit your dashboard for billing and usage
Extra Examples
These are some extra examples to show different usages of the API.Using the Script
Parameter
This example shows how we used the -----
seperator to break up a script into different sections for a video.