Logion Client SDK
Python SDK for the Logion API.
Installation
uv add logion-client
or
pip install logion-client
Quick Start
from logion import LogionClient
client = LogionClient(api_key="lgk_...")
# Health check
client.v1.health.check()
# Search course listings
client.v1.listings.search(query="rag")
# Get a specific course (UUID required)
client.v1.courses.get(course_id="550e8400-e29b-41d4-a716-446655440000")
# Create a user with an agent
client.v1.identity.create_user_with_agent(
email="user@example.com",
user_password="secure-password",
agent_name="My Agent",
)
# Top up credits (returns a Stripe Checkout URL)
client.v1.credits.create_top_up(amount_cents=1000)
# Purchase a course using credits
client.v1.courses.purchase(
course_id="550e8400-e29b-41d4-a716-446655440000",
expected_price_cents=500,
)
Configuration
The SDK reads LOGION_API_KEY and LOGION_BASE_URL from the
environment by default. Explicit constructor arguments take precedence.
| Parameter | Default | Environment variable | Description |
|---|---|---|---|
api_key |
"" (empty) |
LOGION_API_KEY |
API key for authentication |
base_url |
https://api.logion.sh |
LOGION_BASE_URL |
API base URL |
timeout |
30.0 |
— | Request timeout in seconds |
max_retries |
3 |
— | Max retry attempts (GET only) |
extra_headers |
{} |
— | Additional headers per request |
import os
# Using environment variables
os.environ["LOGION_API_KEY"] = "lgk_..."
client = LogionClient()
# Or passing explicitly
client = LogionClient(
api_key="lgk_...",
base_url="https://api.logion.sh",
timeout=60.0,
max_retries=5,
)
Error Handling
All errors inherit from LogionError. API errors provide structured
details:
LogionError— base exception for all SDK errorsAPIError— base for errors returned by the API (includesstatus_code,detail,request_id)AuthenticationError— 401 responsesForbiddenError— 403 responsesNotFoundError— 404 responsesConflictError— 409 responsesValidationError— 422 responsesRateLimitError— 429 responsesClientError— other 4xx responses not mapped aboveServerError— 5xx responsesTransportError— network failures (DNS, connection, timeout)
from logion import LogionClient, AuthenticationError, RateLimitError
client = LogionClient(api_key="lgk_...")
try:
client.v1.courses.get(course_id="550e8400-e29b-41d4-a716-446655440000")
except AuthenticationError as exc:
print(f"Auth failed: {exc.detail}")
except RateLimitError as exc:
print(f"Rate limited: {exc.detail}")
Versioned Namespaces
The SDK organises endpoints by API version under the v1 namespace:
client.v1.health.check()
client.v1.listings.search(query="rag")
Future API versions will be accessible via client.v2, etc.
Mock Server Development
For local development and testing, you can point the SDK at a Prism mock server:
client = LogionClient(
base_url="http://localhost:4010",
api_key="lgk_test_mock_key",
)
Or set the LOGION_BASE_URL environment variable.
Code Generation
The SDK uses the OpenAPI spec as the source of truth for generated internals:
- Pydantic request and response models live under
src/logion/v1/_types/generated/. - Low-level HTTP operation functions live under
src/logion/v1/_generated/. - Public resource classes under
src/logion/v1/_resources/stay handwritten so the SDK remains ergonomic and stable.
# Generate models only
make generate-models
# Generate low-level operation functions only
make generate-operations
# Generate all client code derived from the OpenAPI contract
make generate-client
# Check if generated models are up to date
make check-models
# Check if generated operation functions are up to date
make check-operations
# Check all generated client code
make check-client
License
See the root repository LICENSE for details.
Metadata
Release files for logion-client 0.1.15
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| logion_client-0.1.15.tar.gz | 52.4 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| logion_client-0.1.15-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 102.2 kB
Release files / logion_client-0.1.15.tar.gz
| Download URL | logion_client-0.1.15.tar.gz |
|---|---|
| Size | 52.4 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
d1eca8d519512bc75cd8eaed71f423eab4e29d185824501cea0cdba9a0d20e18
|
|
BLAKE2b-256 checksum How to use checksums |
ebefbd9f92ab98e11dadea949eafc8e26f9fb11b13eb08d196ab717b75f50980
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.12
|
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 Jul 19, 2026.
Transparency logRelease files / logion_client-0.1.15-py3-none-any.whl
| Download URL | logion_client-0.1.15-py3-none-any.whl |
|---|---|
| Size | 49.7 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
80f1b72fd1e0da44357f0a41ddbfa43877f7b7a416abf78653471e488701a388
|
|
BLAKE2b-256 checksum How to use checksums |
e9b7334abf03310aa3d9a7e384a09a04990d24f71a853326f55a1f8f6a895e44
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.12
|
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 Jul 19, 2026.
Transparency log