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: 1 to 200
Maximum number of slab structures to emit.
Generate primitive slabs instead of conventional slabs.
Range: 1 to 4
Enumerate symmetrically distinct Miller indices up to this bound.
Return symmetrized slabs when pymatgen can identify equivalent terminations.
Center each slab within the cell.
Range: to 40
Minimum slab thickness in Ã….
Optional explicit Miller indices to generate instead of max_miller enumeration.
Range: to 40
Minimum vacuum spacing in Ã….
Convert the input to a conventional standard structure before slab generation.
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 = "6a5e6e41-5b06-4e10-84b0-d9e05b8d7713"
route = ouro.routes.retrieve(route_id)
# Option 2: Retrieve by route identifier (username/route-name)
route_identifier = "mmoderwell/generate-surface-slabs"
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("mmoderwell/generate-surface-slabs")
# Use the route with a request body
response = route.use(
body={
'max_slabs': 32,
'primitive': False,
'max_miller': 2,
'symmetrize': False,
'center_slab': True,
'min_slab_size': 10,
'min_vacuum_size': 15,
'conventional_standard_structure': True
}
)
print(response)input_assetPass asset IDs separately from the request body and Ouro will resolve them into the body sent to the service.
# Retrieve the route
route = ouro.routes.retrieve("mmoderwell/generate-surface-slabs")
# Use route with asset IDs - Ouro resolves them into the request body
response = route.use(
body={
'max_slabs': 32,
'primitive': False,
'max_miller': 2,
'symmetrize': False,
'center_slab': True,
'min_slab_size': 10,
'min_vacuum_size': 15,
'conventional_standard_structure': True
},
input_asset={
"assetId": "your-file-id",
"assetType": "file"
},
)
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("mmoderwell/generate-surface-slabs")
# 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')}")Enumerate surface slabs from a bulk structure and return a zipped set of slab CIFs plus a manifest.