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.
This field is automatically populated by Ouro when using input_asset or constructed with ouro.files.retrieve()
Range: to 0.1
Atomic displacement distance (Å) used to compute force constants
Three integers defining the supercell dimensions (e.g., [2,2,2])
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 = "c4d7aa14-f5a7-496e-93a5-542e09482eb5"
route = ouro.routes.retrieve(route_id)
# Option 2: Retrieve by route identifier (username/route-name)
route_identifier = "mmoderwell/post-materials-phonons-dispersion"
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/post-materials-phonons-dispersion")
# Use the route with a request body
response = route.use(
body={
'file': {
'url': 'example_string',
'type': 'example_string',
'org_id': 'example_string',
'team_id': 'example_string',
'filename': 'example_string',
'visibility': 'example_string'
},
'distance': 0.01,
'supercell': []
}
)
print(response)input_assetThis route accepts a file as input. You can pass an asset using the input_asset parameter and Ouro will handle including it in the request.
# Retrieve the route
route = ouro.routes.retrieve("mmoderwell/post-materials-phonons-dispersion")
# Use route with input_asset - Ouro handles passing the file to the route
response = route.use(
body={
'distance': 0.01,
'supercell': []
},
input_asset={
"assetId": "your-file-id",
"assetType": "file"
},
)
print(response)Alternatively, you can retrieve a file and include its details directly in the request body.
# Retrieve a file to use as input
file = ouro.files.retrieve("your-file-id") # or "username/file-name"
# Use the route with the file in the request body
response = ouro.routes.use(
"mmoderwell/post-materials-phonons-dispersion",
body={
"file": {
"type": file.metadata.type,
"filename": file.metadata.name,
"url": file.data.url
}
},
)
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/post-materials-phonons-dispersion")
# 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')}")Calculate phonon dispersion and return band structure plot
That's the mission here. The process is pretty simple. Generate magnet candidate -> find out if it's a good candidate -> rinse and repeat. Anyone can contribute. It's a numbers game, so the more peopl
Route views over time