Skip to main content

arcenciel 0.8.0 source beta

Official Python 3.11+ client for the immutable Arc en Ciel Developer API 1.8.0 contract. The package provides synchronous and asynchronous generated APIs behind a small stable facade. It remains a source beta until the public release manifest reports published-beta; it is not currently available from PyPI.

Install the source beta

git clone --branch sdk-v0.8.0 --depth 1 https://github.com/FallenIncursio/arcenciel-sdks.git
cd arcenciel-sdks
python3.11 -m pip install ./packages/sdk-python

After trusted publication, the release manifest and Developer Portal switch to:

python3.11 -m pip install arcenciel==0.8.0

Search and inspect a model

from arcenciel import ArcEnCielClient

client = ArcEnCielClient(api_key="...", timeout=30.0)
page = client.call_sync(
    lambda: client.models.search_models_sync(
        search="landscape",
        page=1,
        limit=20,
    )
)

model = page.data[0] if page.data else None
if model and model.id:
    detail = client.call_sync(lambda: client.models.get_model_sync(id=model.id))
    print(detail.name)

Public catalogue reads do not require credentials. Configure api_key for account-specific filters and attribution. Use one key per integration and grant only the documented scope.

Async calls use the same typed namespace and opt into retries only when the operation is safe:

async with ArcEnCielClient(api_key="...") as client:
    model = await client.call(
        lambda: client.models.get_model(id=42),
        retry_safe=True,
    )

Stream and verify a download

from pathlib import Path

from arcenciel import ArcEnCielClient


async def download() -> Path:
    async with ArcEnCielClient(api_key="...") as client:
        info = await client.call(
            lambda: client.downloads.get_model_version_download_info(
                model_id=42,
                version_id=81,
            ),
            retry_safe=True,
        )
        return await client.download_to_file(
            42,
            81,
            "model.safetensors",
            filename=info.file_name,
            expected_sha256=info.sha256,
        )

download_to_file and download_to_file_sync follow HTTPS redirects, stream into an atomic temporary file, optionally preserve a Range header, and compare the complete SHA-256 before replacing the destination. A failed checksum removes only the temporary file and leaves an existing destination untouched. Use stream_download or stream_download_sync when the caller needs direct control over the response stream.

Errors and retries

ArcEnCielError exposes status, API code, request_id, response headers, and retry_after. Generated async calls are retried only when client.call(..., retry_safe=True) is used and the failure is a network error or 429, 502, 503, or 504. Writes are never retried implicitly. For a deliberately retried comment create, pass the same idempotency_key from the closure on every attempt. Synchronous calls are normalized with call_sync and are not automatically retried.

Create a comment with an idempotency key

from uuid import uuid4

from arcenciel.generated.models.create_article_comment_request import (
    CreateArticleCommentRequest,
)

key = str(uuid4())
created = client.call_sync(
    lambda: client.comments.create_model_comment_sync(
        model_id=42,
        idempotency_key=key,
        create_article_comment_request=CreateArticleCommentRequest(
            content="Useful training notes—thank you!"
        ),
    )
)
print(created.comment.id)

Unknown future response enum values remain strings instead of failing deserialization.

Read conversations and send once

from uuid import uuid4

inbox = client.call_sync(
    lambda: client.chat.list_chat_threads_sync(folder="inbox", limit=30)
)
for thread in inbox.data:
    print(thread.id, thread.title, thread.has_unread)

created = client.call_sync(
    lambda: client.chat.create_chat_message_sync(
        thread_id=81,
        idempotency_key=str(uuid4()),
        content="The release render is ready.",
    )
)
print(created.id)

Grant ChatRead for thread, message, presence, unread, and preview reads. Add ChatWrite only for requests, groups, messages, reactions, read state, and group mutations. Reuse the same idempotency key when deliberately retrying a request, group, or message create.

Stable namespaces

Namespace Stable operations
client.articles Article discovery, drafts, media, scheduling, publication, updates, and deletion
client.chat Private threads, requests, groups, messages, reactions, presence, and read state
client.collabs Collaboration discovery, showcases, requests, participant media, and membership
client.collections Collection discovery, creation, collaborators, contribution review, items, and media
client.comments Typed article, image, model, and video comment reads and mutations
client.downloads Model download metadata, binary transfers, training TOML, archives, and registration
client.emotes Anonymous emote catalogue reads
client.feedback Caller-owned product feedback, attachments, and deletion
client.generator Image/video generation options, presets, uploads, jobs, events, outputs, and publish
client.images Image discovery, uploads, metadata, crossposts, publishing, and bulk transfer
client.models Models, versions, resumable uploads, managed media, resources, and publishing
client.notifications Cursor-paginated inbox, summary, and read-state updates
client.profile Own profile, uploads, export, history, pinned templates, links, and profile media
client.social Favorites, follows, image/video reactions, and their explicit removal operations
client.tags Anonymous tag-usage discovery
client.trust_safety Illegal-content notices, private evidence, review requests, and content reports
client.users Public profiles, creator statistics, search, and visible uploads
client.videos Video discovery, uploads, metadata, publishing, HLS, streaming, and downloads

The generated low-level APIs and Pydantic models remain available under arcenciel.generated.

Contract and generation

Generated code is committed and deterministically regenerated from the immutable contract. The hand-written facade, tests, and this README are preserved across regeneration.

License

MIT

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

arcenciel-0.8.0.tar.gz (318.9 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

arcenciel-0.8.0-py3-none-any.whl (911.9 kB view details)

Uploaded Python 3

File details

Details for the file arcenciel-0.8.0.tar.gz.

File metadata

  • Download URL: arcenciel-0.8.0.tar.gz
  • Upload date:
  • Size: 318.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for arcenciel-0.8.0.tar.gz
Algorithm Hash digest
SHA256 0a3836d929e09d8465267c9d8982c51c43d5232998c9b0b7029fee6d8ea8d0e5
MD5 c69eb5a4c9b00451c3c0e0a8c59391a6
BLAKE2b-256 80a8bf3a3d3576103c44541d7a7ae74f15c2cd17da14efa0e216aee092e0c3d2

See more details on using hashes here.

Provenance

The following attestation bundles were made for arcenciel-0.8.0.tar.gz:

Publisher: publish.yml on FallenIncursio/arcenciel-sdks

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file arcenciel-0.8.0-py3-none-any.whl.

File metadata

  • Download URL: arcenciel-0.8.0-py3-none-any.whl
  • Upload date:
  • Size: 911.9 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for arcenciel-0.8.0-py3-none-any.whl
Algorithm Hash digest
SHA256 38934dd312ffaa7748e44e89784eacfb9bbeb99a5c07f9f3a10b6241a6687aed
MD5 d1b4ec2f91afce597ef5600ae13d11ef
BLAKE2b-256 d75170fb2e6f36ca3e0e3cdc4466818b5df90d724b0d2bc09882689529535fed

See more details on using hashes here.

Provenance

The following attestation bundles were made for arcenciel-0.8.0-py3-none-any.whl:

Publisher: publish.yml on FallenIncursio/arcenciel-sdks

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page