picsart-ai-sdk
Generate images, video, audio, and text with 100+ AI models — the Python counterpart of
@picsart/ai-sdk (TypeScript), with the same public surface:
snake_case names, async like the TypeScript client, Python 3.10+.
Documentation
- Documentation — overview and guides
- Quickstart — install, authenticate, first generation
- Authentication — create an API key
- Model catalog — browse every supported model
Repository: github.com/PicsArt/ai-sdk-python
Quick start
pip install picsart-ai-sdk
import asyncio
import os
from picsart_ai_sdk import Model, catalog, create_client
async def main() -> None:
async with create_client(api_key=os.environ["PICSART_API_KEY"], api_url="https://api.picsart.com") as ai:
# Generate — model ids are plain strings, resolved server-side; no catalog load needed.
result = await ai.generate("flux-2-pro", {"prompt": "a cat on mars"})
print(result.url)
text = await ai.generate_text("gemini-2.5-flash", {"prompt": "Name three colors"})
print(text.text)
# The local catalog accessors (Model / catalog / ai.validate) read the models catalog: load it once.
await ai.init_model_catalog()
catalog.all() # every model
catalog.find(output="video") # video models only
catalog.search("kling") # by name / id / provider
Model("flux-2-pro").meta() # mode, provider, badges, …
Model("flux-2-pro").params().to_schema() # param schema
print(Model("flux-2-pro").validate({"prompt": "a cat"})) # ValidationResult(valid=True, errors=None)
asyncio.run(main())
Every generation rides the models-hub v1/models workflow: the server resolves the model, builds the vendor
payload and normalizes the result. The catalog accessors raise ApiError 409 catalog_not_loaded until
await ai.init_model_catalog(); generate() / generate_text() / run() / submit() never wait on it.
Authentication
Pass api_key and the SDK sends Authorization: Bearer <api_key> on every request. Apps that handle auth
themselves can pass their own async fetch(url, init) -> httpx.Response instead (it wins over api_key):
ai = create_client(fetch=my_authenticated_fetch, api_url="https://api.picsart.com")
Or replace the requests altogether with a custom transport (execute, and optionally submit / poll /
status / options) — the same contract as the TypeScript SdkTransport.
Async jobs, progress and cancellation
from picsart_ai_sdk import AbortController, GenerateOptions, GenerationEventType
generation_id = await ai.submit("kling-v3", {"prompt": "a drone shot over the sea"})
async with ai.subscribe("kling-v3", generation_id) as events:
async for event in events:
if event.type == GenerationEventType.Completed:
print(event.result.url)
controller = AbortController()
job = asyncio.create_task(ai.generate("kling-v3", {"prompt": "…"}, GenerateOptions(signal=controller.signal)))
controller.abort() # `await job` raises ApiError 499 `aborted`; `job.cancel()` works too
Failures are always ApiError (status, code, message), as in the TypeScript SDK.
More
- Typed inputs —
picsart_ai_sdk.model_typeshas oneTypedDictper model (Flux2ProInput, …) plusTypedModelId,TextModelId,JsonModelId; it is regenerated from the models catalog on every catalog release. - Raw APIs —
await ai.apis.run("vendor/v1/task", payload)runs any model API by name. - Catalogs —
await ai.catalogs.voices(model)/avatars/templates: paged, cached, and hydrated intoModel(id).params(). - Drive —
create_client(..., drive=DriveConfig(folder="AI"))saves generations to Picsart Drive and exposesai.drive(folders, listing,save, reactions,get_generation). - Deep links —
encode_deep_link_payload(model, context)/decode_deep_link_payload(encoded), compatible with the links the TypeScript SDK makes. - Credits —
await ai.get_credits(model, params);catalog.pricingfor credit ranges.
Development
python3 -m venv .venv && . .venv/bin/activate
pip install -e '.[dev]'
ruff check . && ruff format --check . && mypy && pytest
scripts/generate_model_types.py regenerates model_types.py (PICSART_TOKEN, or --from-file a saved
/v1/models-catalog response). tests/golden/ts-sdk.json holds cases recorded from the TypeScript SDK that
this SDK must reproduce.
License
MIT
Metadata
Release files for picsart-ai-sdk 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 |
|---|---|---|---|---|
| picsart_ai_sdk-0.2.0.tar.gz | 155.3 kB | With provenance | Details for picsart_ai_sdk-0.2.0.tar.gz |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| picsart_ai_sdk-0.2.0-py3-none-any.whl | Python 3 | none | any | Details for picsart_ai_sdk-0.2.0-py3-none-any.whl |
Total release size: 253.4 kB
Release files / picsart_ai_sdk-0.2.0.tar.gz
| Download URL | picsart_ai_sdk-0.2.0.tar.gz |
|---|---|
| Size | 155.3 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
122d23279cacb0ebdbfd8357c4615460d48034f16965a64aa1e57109ff42a2a7
|
|
BLAKE2b-256 checksum How to use checksums |
3b31e8fe87265f7034ddaf59422a6458c7bbd53a7101b0417effcb891e380771
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.16
|
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.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Nov 4, 2026.
Transparency logRelease files / picsart_ai_sdk-0.2.0-py3-none-any.whl
| Download URL | picsart_ai_sdk-0.2.0-py3-none-any.whl |
|---|---|
| Size | 98.1 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
f76a0e3c86c7b26a1f498c0bc35e9283381b06e431b6af32ee624623cb58505b
|
|
BLAKE2b-256 checksum How to use checksums |
81e9e3922125b707e717c0ad4d4dca233da0c8af54e4a946a707770a8695bf9e
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.16
|
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.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Nov 4, 2026.
Transparency logSecurity for picsart-ai-sdk 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.
Full provenance
All 2 files in this release have been uploaded with provenance metadata.
Attestation for picsart_ai_sdk-0.2.0.tar.gz
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Nov 4, 2026.
Transparency logA 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.