Learn how to interact with this route using the Ouro SDK or REST API.
API access requires an API key. Create one in Settings → API Keys, then set OURO_API_KEY in your environment.
Parameters and request body schema for this route.
Range: 10 to 100
0 for metallic, >0 for semiconductor/insulator.
Range: 1 to 15
Classifier-free guidance. 3-7 recommended for HKL.
Chemical composition (e.g. 'FePt', 'BaTiO3', 'LiFePO4'). Stoichiometry preserved exactly.
Range: 1 to 230
0 for on-hull stable structures.
Range: 1 to 50
Generate N candidates and return the best.
NM=non-magnetic, FM=ferromagnetic, AFM=antiferro, FiM=ferrimagnetic.
Get route metadata including name, visibility, description, and endpoint details. You can retrieve by route ID or identifier.
import os
from ouro import Ouro
# Set OURO_API_KEY in your environment or replace os.environ.get("OURO_API_KEY")
ouro = Ouro(api_key=os.environ.get("OURO_API_KEY"))
# Option 1: Retrieve by route ID
route_id = "5dea27b6-7d1f-4cb4-9450-109bd7c5ec71"
route = ouro.routes.retrieve(route_id)
# Option 2: Retrieve by route identifier (username/route-name)
route_identifier = "will/generate-a-crystal-structure-with-gpsk-300"
route = ouro.routes.retrieve(route_identifier)
print(route.name, route.visibility)
print(route.metadata)Execute the route endpoint with request body, query parameters, or path parameters.
# Retrieve the route
route = ouro.routes.retrieve("will/generate-a-crystal-structure-with-gpsk-300")
# Use the route with a request body
response = route.use(
body={
'steps': 50,
'band_gap': 0,
'guidance': 5,
'composition': 'example_string',
'space_group': 1,
'e_above_hull': 0,
'n_candidates': 5,
'formation_energy': 0
}
)
print(response)Get the request and response history for this route. Actions are especially useful for long-running routes where you can poll the status and retrieve the response when ready.
# Retrieve the route
route = ouro.routes.retrieve("will/generate-a-crystal-structure-with-gpsk-300")
# Read all actions (request/response history) for this route
actions = route.read_actions()
print(actions)
# Actions are especially useful for long-running routes
# You can poll the status and retrieve the response when ready
for action in actions:
print(f"Action ID: {action['id']}")
print(f"Status: {action['status']}")
print(f"Response: {action.get('response_data')}")No compatible actions for routes yet
Generate novel crystal structures with multimodal property conditioning using a reciprocal-space DiT. Returns CIF data.