APIAPI reference
Search observations by structures and condition filters
POST /v1/reactions/search
POST /v1/reactions/search
Authorization
This operation requires a bearer credential. The description defines additional role, scope or first-party-session restrictions; an API key does not grant those permissions by itself.
Request body
| Property | Type | Required | Details |
|---|---|---|---|
reactants | string ∣ null | no | Complete dot-separated reactant side (SMILES). |
products | string ∣ null | no | Complete dot-separated product side (SMILES). |
temperature_min | number ∣ null | no | °C; matches overlapping intervals. |
temperature_max | number ∣ null | no | °C; matches overlapping intervals. |
pressure_min | number ∣ null | no | |
pressure_max | number ∣ null | no | |
pressure_kind | string ∣ null | no | Source pressure label, e.g. absolute or gauge. |
agent | string ∣ null | no | Agent SMILES; every molecule must be present. |
solvent | string ∣ null | no | Exact source solvent label. |
min_balance_confidence | number ∣ null | no | Upstream, uncalibrated SynRBL score. |
validated_only | boolean | no | Only observations with a positive upstream verdict. Default: true. |
limit | integer | no | Maximum records, from 1 to 100. Default: 10. |
offset | integer | no | Zero-based pagination offset. Default: 0. |
Full schema: SearchReactionsRequest
{
"properties": {
"reactants": {
"anyOf": [
{
"type": "string",
"maxLength": 10000,
"minLength": 1
},
{
"type": "null"
}
],
"title": "Reactants",
"description": "Complete dot-separated reactant side (SMILES)."
},
"products": {
"anyOf": [
{
"type": "string",
"maxLength": 10000,
"minLength": 1
},
{
"type": "null"
}
],
"title": "Products",
"description": "Complete dot-separated product side (SMILES)."
},
"temperature_min": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
],
"title": "Temperature Min",
"description": "°C; matches overlapping intervals."
},
"temperature_max": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
],
"title": "Temperature Max",
"description": "°C; matches overlapping intervals."
},
"pressure_min": {
"anyOf": [
{
"type": "number",
"description": "Pressure in bar; negative bounds require an explicit gauge pressure_kind."
},
{
"type": "null"
}
],
"title": "Pressure Min"
},
"pressure_max": {
"anyOf": [
{
"type": "number",
"description": "Pressure in bar; negative bounds require an explicit gauge pressure_kind."
},
{
"type": "null"
}
],
"title": "Pressure Max"
},
"pressure_kind": {
"anyOf": [
{
"type": "string",
"maxLength": 100,
"minLength": 1
},
{
"type": "null"
}
],
"title": "Pressure Kind",
"description": "Source pressure label, e.g. absolute or gauge."
},
"agent": {
"anyOf": [
{
"type": "string",
"maxLength": 10000,
"minLength": 1
},
{
"type": "null"
}
],
"title": "Agent",
"description": "Agent SMILES; every molecule must be present."
},
"solvent": {
"anyOf": [
{
"type": "string",
"maxLength": 1000,
"minLength": 1
},
{
"type": "null"
}
],
"title": "Solvent",
"description": "Exact source solvent label."
},
"min_balance_confidence": {
"anyOf": [
{
"type": "number",
"maximum": 1,
"minimum": 0
},
{
"type": "null"
}
],
"title": "Min Balance Confidence",
"description": "Upstream, uncalibrated SynRBL score."
},
"validated_only": {
"type": "boolean",
"title": "Validated Only",
"description": "Only observations with a positive upstream verdict.",
"default": true
},
"limit": {
"type": "integer",
"maximum": 100,
"minimum": 1,
"title": "Limit",
"description": "Maximum records, from 1 to 100.",
"default": 10
},
"offset": {
"type": "integer",
"maximum": 1000000,
"minimum": 0,
"title": "Offset",
"description": "Zero-based pagination offset.",
"default": 0
}
},
"additionalProperties": false,
"type": "object",
"title": "SearchReactionsRequest"
}Responses
| HTTP | Details | Type |
|---|---|---|
| 200 | Successful Response | application/json: ObservationPage |
| 401 | Unauthorized | application/problem+json: ProblemDetails |
| 402 | Payment Required | application/problem+json: ProblemDetails |
| 403 | Forbidden | application/problem+json: ProblemDetails |
| 408 | Request Timeout | application/problem+json: ProblemDetails |
| 413 | Request Entity Too Large | application/problem+json: ProblemDetails |
| 422 | Unprocessable Entity | application/problem+json: ProblemDetails |
| 429 | Too Many Requests | application/problem+json: ProblemDetails |
| 502 | Bad Gateway | application/problem+json: ProblemDetails |
| 503 | Service Unavailable | application/problem+json: ProblemDetails |
Response: ObservationPage
| Property | Type | Required | Details |
|---|---|---|---|
items | Observation[] | yes | |
limit | integer | yes | |
offset | integer | yes | |
has_more | boolean | yes | |
next_offset | integer ∣ null | yes |
Full schema
{
"properties": {
"items": {
"items": {
"$ref": "#/components/schemas/Observation"
},
"type": "array",
"title": "Items"
},
"limit": {
"type": "integer",
"title": "Limit"
},
"offset": {
"type": "integer",
"title": "Offset"
},
"has_more": {
"type": "boolean",
"title": "Has More"
},
"next_offset": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"title": "Next Offset"
}
},
"additionalProperties": true,
"type": "object",
"required": [
"items",
"limit",
"offset",
"has_more",
"next_offset"
],
"title": "ObservationPage"
}This page is generated from OpenAPI; examples are schemas, not a fabricated successful response.