Skip to main content

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.

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)

Source distribution for orshot 0.2.0
File Size Uploaded
orshot-0.2.0.tar.gz 7.1 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for orshot 0.2.0
File Interpreter ABI Platform
orshot-0.2.0-py3-none-any.whl Python 3 none any Details

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

Release history Release notifications | RSS feed

This release

0.2.0 This release

2 release files

0.1.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page