Skip to main content

Documentation Index

Fetch the complete documentation index at: https://docs.emergence.ai/llms.txt

Use this file to discover all available pages before exploring further.

Python SDK

The CRAFT Python SDK provides type-safe, auto-generated clients for all platform APIs. Built with Pydantic models and httpx for async support.

Installation

# Install all SDKs
uv add em-runtime-governance-sdk em-runtime-assets-sdk em-runtime-utils-sdk \
  --index-url https://us-central1-python.pkg.dev/aip-artifacts-store/aipy/simple/

# Or install individually
uv add em-runtime-governance-sdk \
  --index-url https://us-central1-python.pkg.dev/aip-artifacts-store/aipy/simple/

Quick Start

Create a Client

from em_runtime_governance_sdk import AuthenticatedClient

# Create an authenticated client
client = AuthenticatedClient(
    base_url="https://your-instance.emergence.ai/governance",
    token="your-jwt-token",
)

List Organizations

from em_runtime_governance_sdk.api.organizations import list_organizations
from em_runtime_governance_sdk.models import OrganizationListResponse

response = list_organizations.sync(client=client)
for org in response.items:
    print(f"{org.id}: {org.name}")

Create a Project

from em_runtime_governance_sdk.api.projects import create_project
from em_runtime_governance_sdk.models import ProjectCreate

project = create_project.sync(
    client=client,
    body=ProjectCreate(
        name="My Project",
        description="Data analysis workspace",
    ),
)
print(f"Created project: {project.id}")

Create a Data Connection

from em_runtime_assets_sdk import AuthenticatedClient as AssetsClient
from em_runtime_assets_sdk.api.data import create_data_connection
from em_runtime_assets_sdk.models import DataConnectionCreate

assets_client = AssetsClient(
    base_url="https://your-instance.emergence.ai/assets",
    token="your-jwt-token",
)

connection = create_data_connection.sync(
    client=assets_client,
    body=DataConnectionCreate(
        name="analytics-db",
        connection_type="postgres",
        description="Analytics PostgreSQL database",
    ),
)

Async Usage

All SDK methods support async via the .asyncio() variant:
import asyncio
from em_runtime_governance_sdk.api.organizations import list_organizations

async def main():
    response = await list_organizations.asyncio(client=client)
    for org in response.items:
        print(f"{org.id}: {org.name}")

asyncio.run(main())

Error Handling

from em_runtime_governance_sdk.types import Response
from httpx import HTTPStatusError

try:
    response = list_organizations.sync_detailed(client=client)
    if response.status_code == 200:
        data = response.parsed
    elif response.status_code == 401:
        print("Token expired — refresh and retry")
    elif response.status_code == 403:
        print("Insufficient permissions")
except HTTPStatusError as e:
    print(f"HTTP error: {e.response.status_code}")

Package Reference

PackageCoversImport
em-runtime-governance-sdkOrganizations, Projects, Permissions, Rolesfrom em_runtime_governance_sdk import ...
em-runtime-assets-sdkArtifacts, Data Connections, Files, Modelsfrom em_runtime_assets_sdk import ...
em-runtime-utils-sdkData Catalog, Scheduling, Context Packs, Memoriesfrom em_runtime_utils_sdk import ...

Next Steps

TypeScript SDK

TypeScript/JavaScript client guide

API Reference

Interactive API playground