POST /api/v1/events/{id}/pools
Creates a new pool within an event. The pool defines a question with one or more outcomes, each backed by an LMSR automated market maker. Only the event creator can add pools.
Authentication
Creator -- requires a valid Bearer token in the Authorization header. The authenticated user must be the creator of the parent event.
Request
Path Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
id | integer | Yes | The parent event ID |
Body
| Field | Type | Required | Description |
|---|---|---|---|
name | string | Yes | Pool name in English |
name_ru | string | No | Pool name in Russian |
margin | integer | No | Margin value (default 0) |
finish_at | string (ISO 8601) | Yes | When the pool closes for trading |
live_at | string (ISO 8601) | No | When the pool becomes visible and tradeable |
rules | string | No | Resolution rules in English |
rules_ru | string | No | Resolution rules in Russian |
metadata | object | Yes | Market configuration (see below) |
Metadata Object
| Field | Type | Required | Description |
|---|---|---|---|
market_names | array of strings | Yes | Display name for each outcome |
market_probabilities | array of floats | Yes | Initial probabilities for each outcome (must sum to 1) |
lmsr_b_kopecks | integer | No | LMSR liquidity parameter b in kopecks. Higher values mean deeper liquidity. |
Example
curl -X POST https://intotes.com/api/v1/events/10/pools \
-H "Authorization: Bearer <token>" \
-H "Content-Type: application/json" \
-d '{
"name": "Match Winner",
"name_ru": "Победитель матча",
"margin": 0,
"finish_at": "2026-04-10T18:00:00Z",
"live_at": "2026-04-04T12:00:00Z",
"rules": "Resolves to the team that wins the match in regular time.",
"rules_ru": "Разрешается в пользу команды, победившей в основное время.",
"metadata": {
"market_names": ["Team A", "Draw", "Team B"],
"market_probabilities": [0.40, 0.25, 0.35],
"lmsr_b_kopecks": 1000000
}
}'
Response
201 Created
{
"id": 42,
"name": "Match Winner",
"name_ru": "Победитель матча",
"rules": "Resolves to the team that wins the match in regular time.",
"rules_ru": "Разрешается в пользу команды, победившей в основное время.",
"won_side": null,
"margin": 0,
"finish_at": "2026-04-10T18:00:00Z",
"live_at": "2026-04-04T12:00:00Z",
"markets": [
{
"id": 101,
"pool_id": 42,
"name": "Team A",
"yes_probability": 0.40,
"market_type": "lmsr",
"volume": 0,
"b": 10000,
"q_yes": 0,
"q_no": 0,
"paused": false,
"resolved": false,
"outcome_index": 0
},
{
"id": 102,
"pool_id": 42,
"name": "Draw",
"yes_probability": 0.25,
"market_type": "lmsr",
"volume": 0,
"b": 10000,
"q_yes": 0,
"q_no": 0,
"paused": false,
"resolved": false,
"outcome_index": 1
},
{
"id": 103,
"pool_id": 42,
"name": "Team B",
"yes_probability": 0.35,
"market_type": "lmsr",
"volume": 0,
"b": 10000,
"q_yes": 0,
"q_no": 0,
"paused": false,
"resolved": false,
"outcome_index": 2
}
],
"metadata": {
"market_names": ["Team A", "Draw", "Team B"],
"market_probabilities": [0.40, 0.25, 0.35],
"lmsr_b_kopecks": 1000000
}
}
Errors
| Status | Code | Description |
|---|---|---|
| 400 | invalid_request | Missing required fields or invalid values |
| 400 | invalid_probabilities | Probabilities do not sum to 1 or contain out-of-range values |
| 401 | unauthorized | Missing or invalid authentication token |
| 403 | forbidden | Authenticated user is not the event creator |
| 404 | event_not_found | No event exists with the given ID |
| 500 | internal_error | Unexpected server error |