Orshot API Python SDK
View on pypi.org: pypi.org/project/orshot
Installation
pip install orshot
Usage
If you don't have your API key, get one from orshot.com.
Initialise
import orshot
os = orshot.Orshot('YOUR_ORSHOT_API_KEY')
render_from_studio_template
Render from a custom Studio template. Supports image, PDF, video generation and publishing to social accounts.
Generate Image
response = os.render_from_studio_template({
'template_id': 1234,
'modifications': {
'title': 'Orshot Studio',
'description': 'Generate images from custom templates',
},
'response': { 'type': 'url', 'format': 'png', 'scale': 2 },
})
Generate PDF
response = os.render_from_studio_template({
'template_id': 1234,
'modifications': { 'title': 'Invoice #1234' },
'response': { 'type': 'url', 'format': 'pdf' },
'pdf_options': {
'margin': '20px',
'range_from': 1,
'range_to': 2,
'color_mode': 'rgb',
'dpi': 300,
},
})
Generate Video
response = os.render_from_studio_template({
'template_id': 1234,
'modifications': {
'videoElement': 'https://example.com/custom-video.mp4',
'videoElement.trimStart': 0,
'videoElement.trimEnd': 10,
},
'response': { 'type': 'url', 'format': 'mp4' },
'video_options': { 'trim_start': 0, 'trim_end': 20, 'muted': False, 'loop': True },
})
Publish to Social Accounts
response = os.render_from_studio_template({
'template_id': 1234,
'modifications': { 'title': 'Check out our latest update!' },
'response': { 'type': 'url', 'format': 'png' },
'publish': {
'accounts': [1, 2],
'content': 'Check out our latest design!',
},
})
# response['publish'] => [{'platform': 'twitter', 'username': 'acmehq', 'status': 'published'}, ...]
Schedule a Post
response = os.render_from_studio_template({
'template_id': 1234,
'modifications': { 'title': 'Scheduled post' },
'response': { 'type': 'url', 'format': 'png' },
'publish': {
'accounts': [1],
'content': 'This will be posted later!',
'schedule': { 'scheduled_for': '2026-04-01T10:00:00Z' },
'timezone': 'America/New_York',
},
})
Parameters
| argument | required | description |
|---|---|---|
template_id |
Yes | ID of the Studio template (integer). |
modifications |
No | Dict of dynamic modifications for the template. |
response.type |
No | base64, binary, url (Defaults to url). |
response.format |
No | png, webp, jpg, jpeg, pdf, mp4, webm, gif (Defaults to png). |
response.scale |
No | Scale of the output (1 = original, 2 = double). Defaults to 1. |
response.include_pages |
No | Page numbers to render for multi-page templates (e.g. [1, 3]). |
response.file_name |
No | Custom file name (without extension). Works with url and binary types. |
pdf_options |
No | { margin, range_from, range_to, color_mode, dpi } |
video_options |
No | { trim_start, trim_end, muted, loop } |
publish.accounts |
No | List of social account IDs from your workspace. |
publish.content |
No | Caption/text for the social post. |
publish.is_draft |
No | True to save as draft instead of publishing. |
publish.schedule.scheduled_for |
No | ISO date string to schedule the post. |
publish.timezone |
No | Timezone string (e.g. "America/New_York"). |
publish.platform_options |
No | Per-account options keyed by account ID. |
render_from_template
Render from a pre-built Orshot template.
response = os.render_from_template({
'template_id': 'open-graph-image-1',
'modifications': { 'title': 'Hello World' },
'response_type': 'url',
'response_format': 'png',
})
| argument | required | description |
|---|---|---|
template_id |
Yes | ID of the template (open-graph-image-1, tweet-image-1, etc.) |
modifications |
Yes | Modifications for the selected template. |
response_type |
No | base64, binary, url (Defaults to url). |
response_format |
No | png, webp, pdf, jpg, jpeg (Defaults to png). |
For available templates and their modifications refer Orshot Templates Page
generate_signed_url
Generate a signed URL for a template.
response = os.generate_signed_url({
'template_id': 'open-graph-image-1',
'modifications': { 'title': 'Hello World' },
'expires_at': 1744276943,
'render_type': 'images',
'response_format': 'png',
})
| argument | required | description |
|---|---|---|
template_id |
Yes | ID of the template. |
modifications |
Yes | Modifications for the selected template. |
expires_at |
Yes | Expires at time in UNIX timestamp (Integer). |
render_type |
No | images, pdfs (Defaults to images). |
response_format |
No | png, webp, pdf, jpg, jpeg (Defaults to png). |
Local development and testing
Install uv - https://docs.astral.sh/uv/getting-started/installation/#installation-methods
uv venv to create the virtual environment.
Uninstall before building and installing again
uv pip uninstall orshot
Build
python -m build
To install the package locally for testing
uv pip install dist/orshot-0.2.1-py3-none-any.whl
You can create a test.py file with a sample code to render an image.
Metadata
Release files for orshot 0.2.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | Actions |
|---|---|---|---|---|
| orshot-0.2.0.tar.gz | 7.1 kB | Without provenance | Details for orshot-0.2.0.tar.gz |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| orshot-0.2.0-py3-none-any.whl | Python 3 | none | any | Details for orshot-0.2.0-py3-none-any.whl |
Total release size: 13.0 kB
Release files / orshot-0.2.0.tar.gz
| Download URL | orshot-0.2.0.tar.gz |
|---|---|
| Size | 7.1 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
fd11b7f30da3a922ec9906c2f878b7d372c463b69f3e46d327ef516673227f74
|
|
BLAKE2b-256 checksum How to use checksums |
a61c88ebf43405d2481e0d888e61794c681c09d9fe68d5d43014c475c76c91f6
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.9.18
|
Release files / orshot-0.2.0-py3-none-any.whl
| Download URL | orshot-0.2.0-py3-none-any.whl |
|---|---|
| Size | 5.8 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
890462953148f222d27c63d5362afe97b7b246fce5ac0874dbf3ae368f52502c
|
|
BLAKE2b-256 checksum How to use checksums |
97327356ae0bb91508c6b8429d62d6e8b9b59f88fa3e776aaf49b730b724489d
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.9.18
|
Security for orshot 0.2.0
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.