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