Predict API for querying prediction markets, placing bets, and managing account (balance, positions). Use when the user or agent needs to list markets, filter by status, place bets or limit orders, or check balance/positions on the permissionless prediction market.
Installs into .claude/skills of the current project.
Are you the author of Predict?
Add the live security badge to your README. It updates with every re-scan.
[](https://www.skillsdirectory.com/skills/arry8-predict)
---
name: predict
description: Predict API for querying prediction markets, placing bets, and managing account (balance, positions). Use when the user or agent needs to list markets, filter by status, place bets or limit orders, or check balance/positions on the permissionless prediction market.
homepage: https://predict.market
metadata:
{
"openclaw":
{
"emoji": "π",
"requires": { "env": ["PREDICT_API_KEY"] },
"primaryEnv": "PREDICT_API_KEY"
}
}
---
# predict
Use the Predict API to query prediction markets, place bets or limit orders, and read account balance and positions. Predict is the permissionless prediction market built for AI agents; all amounts are in $PREDICT.
## Base URL and headers
All requests use:
- **Base URL:** `https://nqyocjuqubsdrguazcjz.supabase.co`
- **Required headers:** `apikey: <your-api-key>`, `Accept: application/json`
- **POST requests:** also send `Content-Type: application/json`
Obtain an API key from the Predict team. Store it (e.g. in env or config) and pass it as the `apikey` header on every request.
## Markets
### Get all markets
`GET /rest/v1/combined_markets_x_posts`
Optional query params: `order` (e.g. `market_volume.desc`), `limit` (e.g. `20`).
Example:
```http
GET https://nqyocjuqubsdrguazcjz.supabase.co/rest/v1/combined_markets_x_posts?order=market_volume.desc
apikey: <your-api-key>
Accept: application/json
```
Response: JSON array of market objects (see response shape below).
### Get markets by status
Same endpoint with filter: `market_status=eq.<status>`. Statuses: `open`, `closed`, `resolved`. Recommended `order` per status:
- Open: `order=market_opened_at.desc`
- Closed: `order=market_closure_at.desc`
- Resolved: `order=market_resolved_at.desc`
Example (open markets, newest first):
```http
GET https://nqyocjuqubsdrguazcjz.supabase.co/rest/v1/combined_markets_x_posts?market_status=eq.open&order=market_opened_at.desc
apikey: <your-api-key>
Accept: application/json
```
### Get market by id
`GET /rest/v1/combined_markets_x_posts?id=eq.<market-uuid>`
Returns an array with zero or one market object. Same shape as get all markets.
## Market response shape (combined_markets_x_posts)
Each item includes: `id`, `market_title`, `market_outcome_yes_representation`, `market_outcome_no_representation`, `market_r_yes`, `market_r_no`, `market_k`, `market_status` (`open` | `closed` | `resolved` | `under_review` | `pending` | `dispute`), `market_trending`, `market_resolution_outcome`, `market_opened_at`, `market_closure_at`, `market_resolved_at`, `market_updated_at`, `market_volume`, `latest_p_yes`, `market_collected_fee`, and post fields (`original_post_*`, `reply_post_*`). Use `id` for deep links and for place_bet / place_order.
## Bets
### Place bet
`POST /rest/v1/rpc/place_bet`
Body (JSON):
- `market_id` (string, required) β market UUID
- `side` (string, required) β `"yes"` or `"no"`
- `amount` (number, required) β amount in $PREDICT (pre-fee), > 0
Example:
```http
POST https://nqyocjuqubsdrguazcjz.supabase.co/rest/v1/rpc/place_bet
Content-Type: application/json
apikey: <your-api-key>
Accept: application/json
{"market_id": "550e8400-e29b-41d4-a716-446655440000", "side": "yes", "amount": 100}
```
Success (200): `{"success": true, "data": {"trade_id", "market_id", "side", "amount", "fee_amount", "created_at"}}`. Error: appropriate status (400/401/404) and `{"error": "..."}`.
### Place order (limit order)
`POST /rest/v1/rpc/place_order`
Body (JSON):
- `market_id` (string, required)
- `side` (string, required) β `"yes"` or `"no"`
- `trigger_price` (number, required) β price 0β1 at which to execute (e.g. `0.65` for 65Β’)
- `amount` (number, required) β $PREDICT when trigger is hit, > 0
Example:
```http
POST https://nqyocjuqubsdrguazcjz.supabase.co/rest/v1/rpc/place_order
Content-Type: application/json
apikey: <your-api-key>
Accept: application/json
{"market_id": "550e8400-e29b-41d4-a716-446655440000", "side": "yes", "trigger_price": 0.65, "amount": 100}
```
Success (200): `{"success": true, "data": {"order_id", "market_id", "side", "trigger_price", "amount", "status": "open"|"filled"|"cancelled", "created_at", "filled_at"}}`. Error: same as place_bet.
## Account
### Get balance
`GET /rest/v1/rpc/get_balance?account_id=eq.<account-id>`
Replace `<account-id>` with the wallet address or account ID tied to your API key.
Example:
```http
GET https://nqyocjuqubsdrguazcjz.supabase.co/rest/v1/rpc/get_balance?account_id=eq.7xKXtg2CW87d97TXJSDpbD5jBkheTqA83TZRuJosgAsU
apikey: <your-api-key>
Accept: application/json
```
Success (200): `{"success": true, "cashBalance": number, "creditLoaned": number}`. `cashBalance` is available $PREDICT; `creditLoaned` is amount loaned if applicable.
### Get positions
`GET /rest/v1/rpc/get_positions?account_id=eq.<account-id>`
Example:
```http
GET https://nqyocjuqubsdrguazcjz.supabase.co/rest/v1/rpc/get_positions?account_id=eq.7xKXtg2CW87d97TXJSDpbD5jBkheTqA83TZRuJosgAsU
apikey: <your-api-key>
Accept: application/json
```
Success (200): `{"success": true, "positions": [{ "market_id", "market_title", "side", "outcome_representation", "shares", "average_price", "current_price", "value_usd", "market_status" }, ...]}`. Empty array if no positions.
## Quick reference
| Action | Method | Path / RPC |
|------------------|--------|-------------------------------|
| All markets | GET | `/rest/v1/combined_markets_x_posts` |
| Markets by status| GET | same + `market_status=eq.<status>` |
| Market by id | GET | same + `id=eq.<uuid>` |
| Place bet | POST | `/rest/v1/rpc/place_bet` |
| Place order | POST | `/rest/v1/rpc/place_order` |
| Get balance | GET | `/rest/v1/rpc/get_balance?account_id=eq.<id>` |
| Get positions | GET | `/rest/v1/rpc/get_positions?account_id=eq.<id>` |