Skip to main content

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​

ParameterTypeRequiredDescription
idintegerYesThe parent event ID

Body​

FieldTypeRequiredDescription
namestringYesPool name in English
name_rustringNoPool name in Russian
marginintegerNoMargin value (default 0)
finish_atstring (ISO 8601)YesWhen the pool closes for trading
live_atstring (ISO 8601)NoWhen the pool becomes visible and tradeable
rulesstringNoResolution rules in English
rules_rustringNoResolution rules in Russian
metadataobjectYesMarket configuration (see below)

Metadata Object​

FieldTypeRequiredDescription
market_namesarray of stringsYesDisplay name for each outcome
market_probabilitiesarray of floatsYesInitial probabilities for each outcome (must sum to 1)
lmsr_b_kopecksintegerNoLMSR 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​

StatusCodeDescription
400invalid_requestMissing required fields or invalid values
400invalid_probabilitiesProbabilities do not sum to 1 or contain out-of-range values
401unauthorizedMissing or invalid authentication token
403forbiddenAuthenticated user is not the event creator
404event_not_foundNo event exists with the given ID
500internal_errorUnexpected server error