Skip to main content
ManagedResearchClient is the canonical Python entrypoint for Managed Research.
from managed_research import ManagedResearchClient

client = ManagedResearchClient()
Use Python SDK Quickstart for a first run.

Main routes

RoutePurpose
client.runs.start(...)Start a one-off run on the default project.
client.projects.create(...)Create a durable project.
client.project(project_id)Work with a project-scoped API.
project.repositories.attach(...)Attach a GitHub repo.
project.runs.preflight(...)Get structured launch blockers before runtime spend.
project.runs.start(...)Start a project-scoped run.
run.wait(...)Poll until completion or timeout.
run.messages(...)Read runtime messages.
run.artifact_manifest()Read output files.
run.artifacts()Read artifact records.
run.create_checkpoint(...)Create a durable checkpoint.
run.branch_from_checkpoint(...)Start a child run from a checkpoint.

Launch fields

The common launch fields are documented in Launch Fields. Backend preflight remains authoritative.
run = client.runs.start(
    "Review the repo and leave evidence.",
    host_kind="daytona",
    work_mode="directed_effort",
    providers=[{"provider": "openrouter"}],
    runbook="lite",
    agent_harness="codex",
    agent_model="gpt-5.4-mini",
    agent_model_params={"reasoning_effort": "medium"},
)

Compatibility note

SmrControlClient may remain importable for compatibility, but new docs and integrations should use ManagedResearchClient.

Errors

Launch-time denials raise errors instead of returning success-shaped payloads. Use preflight when you need structured blocker data before runtime spend.