Skip to content
Back to skills

Predict

ASecurity

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.

  • 2 stars
  • 0 votes
  • 0 copies
  • 0 views
  • Added September 29, 2026
ai-agentsapi

Works with

  • api

Security analysis

A100/100

Scanned September 29, 2026

npx -y skills add Arry8/openclaw-edge --skill predict --agent claude-code

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.

Security grade badge for Predict
[![Security: A β€” Skills Directory](https://www.skillsdirectory.com/api/skills/arry8-predict/badge)](https://www.skillsdirectory.com/skills/arry8-predict)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
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>` |

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…