Skip to main content

Rayon Python SDK

Synchronous and asynchronous Python clients for RayonAPI Shape header and form generation and account usage. Requires Python 3.10+. Keep your API key on your server.

Documentation · Examples · Releases

Install

python -m pip install 'rayon-sdk-py>=1,<2'

Generate headers

Prepare shape.json with the required raw protection JavaScript in execution order, including loaders and payloads where used. Include their context URLs, a current browser profile, JavaScript-visible cookies (document_cookie) and the exact target URL, method, content type and body string. See material preparation and profiles and sessions. The SDK and API use URLs as context; they do not download scripts or send the target request.

import json
import os
from pathlib import Path
from rayon_sdk_py import Client, ShapeRequest

shape: ShapeRequest = json.loads(Path("shape.json").read_text(encoding="utf-8"))
with Client(os.environ["RAYON_API_KEY"], timeout=45) as client:
    result = client.generate(shape)
    target_headers = dict(result.headers)
    print(result.request_id)

Apply every returned target_headers to that exact request using your own target client and session. Header mode returns the six required same-family a, b, c, d, f, z headers and may include a fresh same-family a0 header. Preserve all returned names, case and values. Keep its browser identity consistent with result.profile_used and retain the session's cookies. The response also includes generation_ms, material_ref and material_expires_at; it does not return target cookies or verify target acceptance.

Supply exactly one of scripts or a server-issued material_ref with its original source_url. All four request fields are required; GET/HEAD use content_type=None, body=None. Preserve body whitespace and encoding. Persistent clients reuse unexpired material references, while each call generates fresh headers from the supplied profile, request and cookies. If a cached reference fails, use a fresh client with the saved scripts.

Generate form telemetry

Requires SDK 1.1+. Set mode="form" and provide a POST with application/x-www-form-urlencoded. request.body is the application form before telemetry insertion, including duplicate fields and current CSRF/session values. Optional form={"id": "checkout", "name": "checkout"} describes the form selector.

from rayon_sdk_py import Client, FormShapeRequest

# prepared_material contains source_url, scripts (or material_ref), profile and cookies.
application_body = "item=first&item=second&csrf=current%2Bvalue"
form_shape: FormShapeRequest = {
    **prepared_material,
    "mode": "form",
    "form": {"id": "checkout"},
    "request": {
        "url": "https://example.com/submit",
        "method": "POST",
        "content_type": "application/x-www-form-urlencoded",
        "body": application_body,
    },
}
with Client(os.environ["RAYON_API_KEY"]) as client:
    result = client.generate(form_shape)  # FormShapeResult; no headers
    target_body = result.form_body + ("&" + application_body if application_body else "")

form_fields contains exactly six raw values under the exact observed names and case; a larger a value remains one field and does not add a0. form_body contains only those telemetry fields, already encoded once in observed insertion order. Prepend it once to the original application body; do not encode it again, convert application fields to a dictionary, or send stale telemetry in the input. Retain the same cookies and browser identity for the target request. The SDK calls public POST /v1/shape.

Clients and errors

The SDK authenticates with Authorization: Bearer <API key> and defaults to https://api.rayonapi.com with a 45-second API request timeout. AsyncClient supports async with, await client.generate(shape) and await client.usage(). client.usage() reads account usage; generate(shape, api_key) is a one-shot helper.

Errors inherit RayonError: ValidationError for invalid input, TransportError for network failures/timeouts, HTTPError for API failures and InvalidResponseError for invalid responses. HTTP errors expose sanitized status_code, request_id, code and retry_after. No automatic retries. A client timeout may occur after successful generation; check history before retrying. See the API reference and errors.

Support · Discord · MIT license

Metadata

Release files for rayon-sdk-py 1.1.1

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for rayon-sdk-py 1.1.1
File Size Uploaded Provenance
rayon_sdk_py-1.1.1.tar.gz 25.0 kB With provenance Details

Built distribution (wheel)

Table of built distributions (wheels) for rayon-sdk-py 1.1.1
File Interpreter ABI Platform
rayon_sdk_py-1.1.1-py3-none-any.whl Python 3 none any Details

Total release size: 39.7 kB

Release files / rayon_sdk_py-1.1.1.tar.gz

Download URL rayon_sdk_py-1.1.1.tar.gz
Size 25.0 kB
Tags Source
SHA-256 checksum
How to use checksums
df1f15fe36e21f4972be0bc319b7db6000c347e8c6ed49960c76631a5a12365b
BLAKE2b-256 checksum
How to use checksums
bac23446eb2d4d09a26c723a14436e843a326d0780797ebca9441d0a11a40bc8
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

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 Oct 15, 2026.

Transparency log

Release files / rayon_sdk_py-1.1.1-py3-none-any.whl

Download URL rayon_sdk_py-1.1.1-py3-none-any.whl
Size 14.7 kB
Tags Python 3
SHA-256 checksum
How to use checksums
83205ee7d798b889b9e94f12f6bac77e105339f4f8e7cd161273df76a997d202
BLAKE2b-256 checksum
How to use checksums
f3abe0441a76c58675fa743e2d3e80e02b0210e741f569b62c3d78d64577e447
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

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 Oct 15, 2026.

Transparency log

Security for rayon-sdk-py 1.1.1

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.

Select from 2 files

Attestation for rayon_sdk_py-1.1.1.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 Oct 15, 2026.

Transparency log

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.

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