Python SDK for the Reve image generation API
Project description
Reve Python SDK
A Pythonic interface to the Reve image-generation API. Generate, remix, and edit images with a handful of function calls.
Installation
From PyPI:
pip install reve
From source:
git clone https://github.com/reve-ai/reve-core.git
cd reve-core/sdk/python
pip install -e .
Quick Start
from reve.v1.image import create
img = create(prompt="A beautiful sunset over the ocean")
img.save("sunset.jpg")
print(img.credits_remaining)
Set the
REVE_API_TOKENenvironment variable before running, or passapi_token=directly to any function.
Authentication
The SDK reads credentials from environment variables by default:
| Variable | Description | Default |
|---|---|---|
REVE_API_TOKEN |
Bearer token (required) | — |
REVE_API_HOST |
API base URL | https://api.reve.com |
REVE_PROXY_AUTHORIZATION |
Proxy-authorization header | — |
export REVE_API_TOKEN="papi.your-token-here"
You can also pass them per-call:
img = create(
prompt="A sunset",
api_token="papi.your-token-here",
api_url="https://custom-endpoint.example.com",
)
API Reference
All image functions live in reve.v1.image.
create(prompt, *, aspect_ratio, version, test_time_scaling, postprocessing, ...)
Generate an image from a text prompt.
from reve.v1.image import create
from reve.v1.postprocessing import upscale, remove_background
img = create(
prompt="A red dragon flying over mountains",
aspect_ratio="16:9",
version="latest",
test_time_scaling=3,
postprocessing=[upscale(factor=2), remove_background()],
)
img.save("dragon.png")
| Parameter | Type | Description |
|---|---|---|
prompt |
str |
Text description of the image (positional). |
aspect_ratio |
str | None |
One of "16:9", "3:2", "4:3", "1:1", "3:4", "2:3", "9:16", "auto". Default "auto". |
version |
str | None |
Model version identifier or "latest". |
test_time_scaling |
int | None |
Quality factor 1–5. Higher = better quality, more credits. |
postprocessing |
list[dict] | None |
Postprocessing pipeline (see below). |
remix(prompt, reference_images, *, ...)
Remix reference images into a new image guided by a prompt.
Use <ref>0</ref>, <ref>1</ref>, … to refer to each reference image.
from reve.v1.image import remix
img = remix(
prompt="The subject from <ref>0</ref> standing in a magical forest",
reference_images=["photo.jpg"],
aspect_ratio="1:1",
)
| Parameter | Type | Description |
|---|---|---|
prompt |
str |
Text prompt with optional <ref>N</ref> tags (positional). |
reference_images |
Sequence[str | bytes | PIL.Image] |
Reference images — file paths, raw bytes, or PIL Images (positional). |
aspect_ratio |
str | None |
Aspect ratio (see create). |
version |
str | None |
Model version. |
test_time_scaling |
int | None |
Quality factor 1–5. |
postprocessing |
list[dict] | None |
Postprocessing pipeline. |
edit(edit_instruction, reference_image, *, ...)
Edit an existing image with a natural-language instruction.
from reve.v1.image import edit
img = edit(
edit_instruction="Make the sky more dramatic with storm clouds",
reference_image="original.jpg",
)
| Parameter | Type | Description |
|---|---|---|
edit_instruction |
str |
Description of the edit (positional). |
reference_image |
str | bytes | PIL.Image |
Source image (positional). |
aspect_ratio |
str | None |
Aspect ratio (see create). |
version |
str | None |
Model version. |
test_time_scaling |
int | None |
Quality factor 1–5. |
postprocessing |
list[dict] | None |
Postprocessing pipeline. |
get_balance(*, ...)
Return the current credit balance.
from reve.v1.image import get_balance
balance = get_balance()
print(balance) # {"budget_id": "abc123", "new_balance": 500}
Returns a dict with keys budget_id (str) and new_balance (number).
list_effects(source=None, *, ...)
List available effects for postprocessing.
from reve.v1.image import list_effects
effects = list_effects(source="preset")
for e in effects:
print(e["name"], "-", e["description"])
| Parameter | Type | Description |
|---|---|---|
source |
str | None |
Filter by source: "all", "project", or "preset". |
Returns a list of dicts with name, description, source, and category keys.
Postprocessing
Build postprocessing pipelines with helpers from reve.v1.postprocessing:
from reve.v1.postprocessing import upscale, remove_background, fit_image, effect
| Helper | Description |
|---|---|
upscale(factor=2) |
Upscale the image by the given factor. |
remove_background() |
Remove the background (produces transparent PNG). |
fit_image(max_width=None, max_height=None, max_dim=None) |
Constrain dimensions (pixels, 1–1024). |
effect(name, parameters=None) |
Apply a named effect. Use list_effects() for available names. |
Pass them as a list to the postprocessing parameter:
img = create(
prompt="A cat astronaut",
postprocessing=[upscale(factor=2), remove_background()],
)
Response Object
create(), remix(), and edit() return an ImageResponse (a Pydantic BaseModel):
| Field | Type | Description |
|---|---|---|
image |
PIL.Image.Image |
The generated image. |
request_id |
str | None |
Unique request identifier. |
credits_used |
int | None |
Credits consumed by this request. |
credits_remaining |
int | None |
Credits remaining in the budget. |
version |
str | None |
Model version used. |
content_violation |
bool |
Whether a content violation was flagged. |
img = create(prompt="A sunset")
img.image # PIL.Image.Image
img.request_id # "req_abc123"
img.credits_used # 10
img.credits_remaining # 490
img.version # "v1.2"
img.save("out.jpg") # delegates to PIL.Image.save()
Error Handling
All exceptions inherit from ReveAPIError:
ReveAPIError # Base — any API error
├── ReveAuthenticationError # HTTP 401 — bad or missing token
├── ReveBudgetExhaustedError # HTTP 402 — out of credits
├── ReveRateLimitError # HTTP 429 — rate limited (has .retry_after)
├── ReveValidationError # HTTP 400 — invalid parameters
└── ReveContentViolationError # Content policy violation
from reve.exceptions import ReveAPIError, ReveRateLimitError
from reve.v1.image import create
try:
img = create(prompt="A sunset")
except ReveRateLimitError as exc:
print(f"Rate limited — retry after {exc.retry_after}s")
except ReveAPIError as exc:
print(f"API error (status {exc.status_code}): {exc.message}")
Examples
Working example scripts are in the examples/ directory:
create_image.py— Generate images with optional postprocessing.remix_image.py— Remix a reference image with a prompt.edit_image.py— Edit an existing image.
Development
Install development dependencies:
pip install -e ".[dev]"
Run the test suite:
pytest
License
This SDK is released under the Creative Commons Attribution 4.0 International License.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file reve-0.1.2.tar.gz.
File metadata
- Download URL: reve-0.1.2.tar.gz
- Upload date:
- Size: 23.5 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.8
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
16516f05be71ce58eca6d54bdef6cdfe11299aab4d5eab86e287169b834e27d5
|
|
| MD5 |
364bb7fd7c07980e9684da75b23816b6
|
|
| BLAKE2b-256 |
da270aea31a866bbdf4ec24d6049a1261ca5fbb92f8fcaa019757bdefac6c676
|
File details
Details for the file reve-0.1.2-py3-none-any.whl.
File metadata
- Download URL: reve-0.1.2-py3-none-any.whl
- Upload date:
- Size: 18.9 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.8
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
0d87adb2cf215977cce6a80e6313d8786bed548a60c17183000c821023c5ff27
|
|
| MD5 |
e105f4e027c84ee8abc61899390ef8c2
|
|
| BLAKE2b-256 |
18bc07f617afd839e07d0d0937c983b94a1551f2905fb94d1ee29fadd152c0fb
|