> For the complete documentation index, see [llms.txt](https://docs.hydromancer.xyz/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.hydromancer.xyz/readme/rest-api/outcomes/outcometemplates.md).

# outcomeTemplates

Returns the live list of registered outcome templates.

A template defines the name and description text for a market, the placeholder keywords that must be filled in, and the role the template plays (standalone market, question, or an outcome under a question). Use it to construct a valid `registerOutcome` action.

This is the raw node view of the template registry, exactly as the chain reports it.

<table><thead><tr><th width="115">Field</th><th width="177">Type</th><th>Description</th></tr></thead><tbody><tr><td><code>type</code></td><td>string</td><td>Must be <code>"outcomeTemplates"</code></td></tr></tbody></table>

## Request

{% tabs %}
{% tab title="cURL" %}

```bash
curl -X POST https://api.hydromancer.xyz/info \
  -H "Authorization: Bearer $HYDROMANCER_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "type": "outcomeTemplates"
  }'
```

{% endtab %}

{% tab title="Python" %}

```python
import requests
import os
import json

response = requests.post(
    'https://api.hydromancer.xyz/info',
    json={
        'type': 'outcomeTemplates'
    },
    headers={
        'Authorization': f'Bearer {os.environ["HYDROMANCER_API_KEY"]}',
        'Content-Type': 'application/json'
    }
)
print(json.dumps(response.json(), indent=2))
```

{% endtab %}

{% tab title="Javascript" %}

```javascript
import axios from 'axios';

const response = await axios.post(
  'https://api.hydromancer.xyz/info',
  {
    type: 'outcomeTemplates'
  },
  {
    headers: {
      'Authorization': `Bearer ${process.env.HYDROMANCER_API_KEY}`,
      'Content-Type': 'application/json'
    }
  }
);

console.log(JSON.stringify(response.data, null, 2));
```

{% endtab %}
{% endtabs %}

***

## Response Fields

Returns an array of template objects.

| Field         | Type             | Description                                                                                                                                                     |
| ------------- | ---------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `id`          | string           | Template identifier (e.g. `"binaryPrice"`), referenced when registering an outcome                                                                              |
| `role`        | string \| object | The role the template plays — see [Template roles](#template-roles)                                                                                             |
| `name`        | string           | Market title, with `{keyword}` placeholders                                                                                                                     |
| `description` | string           | Full resolution criteria, with `{keyword}` placeholders. May carry a trailing `metadata=…` segment holding `category`, `subCategory`, and `semanticRestriction` |
| `keywords`    | array            | List of `[name, type]` pairs, one per placeholder. Types include `hlPerp`, `string`, `uInt`, `uDecimal`, and `dateTime`                                         |

### Template roles

`role` takes one of three shapes:

| Shape                                                 | Meaning                                                                                                                                                       |
| ----------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `{ "standaloneOutcome": { "sideNames": [...] } }`     | A self-contained market. `sideNames` lists the side labels, which may themselves be placeholders (e.g. `["Yes", "No"]` or `["{shortNameA}", "{shortNameB}"]`) |
| `"question"`                                          | A question grouping several outcomes. Note this is a bare string, not an object                                                                               |
| `{ "questionOutcome": { "parent": "<templateId>" } }` | One outcome under a question template; `parent` names the `question` template it belongs to                                                                   |

<details>

<summary>Response</summary>

```json
[
  {
    "id": "binaryPrice",
    "role": {
      "standaloneOutcome": {
        "sideNames": ["Yes", "No"]
      }
    },
    "name": "{perp} above {threshold} at {time}?",
    "description": "The market resolves to Yes if the {perp} price is above {threshold} at {time}, and otherwise resolves to No. Settlement is according to the {seconds}-second TWAP of {priceDescription} price ending at {time}. If {perp} is delisted before this market settles, settlement is instead according to the {perp} settlement price at delisting. metadata=category:price|subCategory:N/A|semanticRestriction:This market must refer to the price of a Hyperliquid perp.",
    "keywords": [
      ["perp", "hlPerp"],
      ["priceDescription", "string"],
      ["seconds", "uInt"],
      ["threshold", "uDecimal"],
      ["time", "dateTime"]
    ]
  },
  {
    "id": "policyRateDecision",
    "role": "question",
    "name": "{institution} {decisionLabel} rate decision",
    "description": "This market has three possible results: No change, Decrease, or Increase. Exactly one corresponding named outcome resolves to Yes; the other two and the protocol-created fallback resolve to No. It covers the {decisionLabel} {institution} decision concerning {policyMeasure}, scheduled for {scheduledDecision} UTC (the \"Decision\"). The Decision Value is the numeric value of {policyMeasure} announced by {officialSource}. The Prior Value is the value of that same measure in effect immediately before the Decision. No change resolves to Yes if the Decision Value equals the Prior Value. Decrease resolves to Yes if the Decision Value is lower. Increase resolves to Yes if the Decision Value is higher. … metadata=category:economics|subCategory:N/A|semanticRestriction:This market must refer to a scheduled policy rate decision by an official institution.",
    "keywords": [
      ["decisionDeadline", "dateTime"],
      ["decisionLabel", "string"],
      ["institution", "string"],
      ["officialSource", "string"],
      ["policyMeasure", "string"],
      ["scheduledDecision", "dateTime"]
    ]
  },
  {
    "id": "policyRateDecrease",
    "role": {
      "questionOutcome": {
        "parent": "policyRateDecision"
      }
    },
    "name": "Decrease",
    "description": "This outcome resolves to Yes if the Decision Value is lower than the Prior Value under the parent question's rules.",
    "keywords": []
  }
]
```

</details>
