Skip to main content

Quickstart

This guide walks you through creating an account, browsing events, and placing your first trade on Intotes -- all in about 5 minutes.

Base URL: https://intotes.com/api/v1

All examples use curl. Responses are abbreviated for clarity.


Step 1: Create an Account​

Register with your email and password. The password must be at least 8 characters.

curl -X POST https://intotes.com/api/v1/auth/sign-up \
-H "Content-Type: application/json" \
-d '{
"email": "you@example.com",
"password": "your_secure_password",
"language": "en"
}'

Response (201):

{
"success": true,
"message": "User created successfully. Please check your email for verification code.",
"user_id": 42
}

A 4-digit verification code is sent to your email. Note the user_id -- you will need it in the next step.

You can also pass an optional referral_code field if you were invited by another user.


Step 2: Verify Your Email​

Enter the verification code from the email you received.

curl -X POST https://intotes.com/api/v1/auth/verify-email \
-H "Content-Type: application/json" \
-c cookies.txt \
-d '{
"user_id": 42,
"verification_code": "1234"
}'

Response (200):

{
"success": true,
"message": "Email verified successfully",
"user": {
"id": 42,
"email": "you@example.com",
"balance": 0,
"email_verified": true
}
}

This response also sets two HTTP-only cookies: access_token and refresh_token. The -c cookies.txt flag saves them to a file so subsequent requests can use them automatically with -b cookies.txt.


Step 3: Get Your Profile​

Verify that authentication is working by fetching your profile.

curl https://intotes.com/api/v1/auth/me \
-b cookies.txt

Response (200):

{
"id": 42,
"email": "you@example.com",
"name": "User42",
"balance": 0,
"bonus_balance": 0,
"email_verified": true,
"language": "en",
"theme": "s"
}

Step 4: Browse Events​

Fetch the events feed to see what is available to trade on. This endpoint does not require authentication.

curl https://intotes.com/api/v1/events/feed

Response (200):

{
"events": [
{
"event": {
"id": 1,
"title": "Will BTC reach $100k by end of 2026?",
"status": "active",
"image_url": "https://..."
},
"main_pool": {
"id": 10,
"event_id": 1,
"title": "Main",
"finish_at": "2026-12-31T23:59:59Z"
},
"markets": [
{
"id": 100,
"pool_id": 10,
"title": "Yes",
"yes_probability": 6500,
"volume": 5000000
}
],
"total_volume": 5000000
}
],
"next_cursor": "eyJpZCI6...",
"has_more": true
}

Note the market_id (e.g., 100) -- you will use it to place a trade. Probabilities are in the 0-10000 range, so 6500 means 65.00%.


Step 5: Place a Trade via LMSR​

Buy YES shares on a market using the LMSR automated market maker. This example spends 1000 cents ($10.00) on YES shares in market 100.

curl -X POST https://intotes.com/api/v1/lmsr/trade \
-H "Content-Type: application/json" \
-b cookies.txt \
-d '{
"market_id": 100,
"side": "buy_yes",
"amount_type": "spend",
"amount": 1000
}'

Parameters:

FieldTypeDescription
market_idintegerThe market to trade in.
sidestringOne of: buy_yes, sell_yes, buy_no, sell_no.
amount_typestringspend (how many cents to spend) or shares (number of shares).
amountintegerAmount in cents. Must be positive.

You can also set "use_bonus": true to pay with your bonus balance instead.

Response (200):

{
"trade_id": 501,
"market_id": 100,
"side": "buy_yes",
"shares": 1450,
"cost": 1000,
"avg_price": 6896,
"new_yes_probability": 6700
}

You spent 1000 cents and received 1450 shares of YES. The market probability moved from 65.00% to 67.00%.

Before trading, you can preview the cost without executing by calling:

curl "https://intotes.com/api/v1/lmsr/preview?market_id=100&side=buy_yes&amount_type=spend&amount=1000" \
-b cookies.txt

Step 6: Check Your Positions​

View all your open positions across all markets.

curl https://intotes.com/api/v1/market/positions/my \
-b cookies.txt

Response (200):

[
{
"market_id": 100,
"market_title": "Yes",
"pool_id": 10,
"event_id": 1,
"event_title": "Will BTC reach $100k by end of 2026?",
"side": "long",
"shares": 1450,
"avg_price": 6896,
"current_price": 6700,
"unrealized_pnl": -284
}
]

A long position means you hold YES tokens. A short position means you hold NO tokens.


What Next?​

  • Read Key Concepts to understand the full market structure: events, pools, markets, and settlement.
  • Explore the orderbook endpoints to place limit orders at specific prices.
  • Set up a WebSocket connection to /api/v1/ws/trades for real-time trade updates.