Skip to main content

Python client SDK for the Logion API

Project description

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 errors
  • APIError — base for errors returned by the API (includes status_code, detail, request_id)
  • AuthenticationError — 401 responses
  • ForbiddenError — 403 responses
  • NotFoundError — 404 responses
  • ConflictError — 409 responses
  • ValidationError — 422 responses
  • RateLimitError — 429 responses
  • ClientError — other 4xx responses not mapped above
  • ServerError — 5xx responses
  • TransportError — 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.

Project details


Download files

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

Source Distribution

logion_client-0.1.4.tar.gz (46.7 kB view details)

Uploaded Source

Built Distribution

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

logion_client-0.1.4-py3-none-any.whl (43.2 kB view details)

Uploaded Python 3

File details

Details for the file logion_client-0.1.4.tar.gz.

File metadata

  • Download URL: logion_client-0.1.4.tar.gz
  • Upload date:
  • Size: 46.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for logion_client-0.1.4.tar.gz
Algorithm Hash digest
SHA256 ae77423acdaad9f596d975ea1c74d67158d7cd6f68e50b51be1e395078a5ed3c
MD5 bab4cc639bf2294bcd5c20ab187a59ad
BLAKE2b-256 3b071ad98c60d370b92b4d2a8342e07fb17770504f2bf42f6ed906716503a7fa

See more details on using hashes here.

Provenance

The following attestation bundles were made for logion_client-0.1.4.tar.gz:

Publisher: release-client.yml on nicolasmelo1/logion

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

File details

Details for the file logion_client-0.1.4-py3-none-any.whl.

File metadata

  • Download URL: logion_client-0.1.4-py3-none-any.whl
  • Upload date:
  • Size: 43.2 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for logion_client-0.1.4-py3-none-any.whl
Algorithm Hash digest
SHA256 8c2425233175de1f425935e8afcbbfff21a55c5dc57f1e84ad79131c9d79f7fd
MD5 232fea2073ac8193c38a639bd090f522
BLAKE2b-256 d71daa7eadb0f9254d8610728fcef21ed7d1375d5a7121866cdb486537f19da4

See more details on using hashes here.

Provenance

The following attestation bundles were made for logion_client-0.1.4-py3-none-any.whl:

Publisher: release-client.yml on nicolasmelo1/logion

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 Pingdom Monitoring Sentry Error logging StatusPage Status page