Skip to main content
All B2B endpoints require an API key via the X-API-Key header. Some endpoints require Pro tier access.

Suggestions

GET
Get market suggestions based on entity signals and attribute changes.

Query Parameters

category
string
Filter by category
limit
number
Maximum results
offset
number
Pagination offset
hours
number
Lookback window in hours

Response

{
  "success": true,
  "suggestions": [
    {
      "id": "suggestion-uuid",
      "entity": {
        "slug": "patrick-mahomes",
        "displayName": "Patrick Mahomes"
      },
      "signal": "injury_status changed to questionable",
      "market": {
        "title": "Chiefs to win Super Bowl",
        "venue": "polymarket",
        "price": 0.35
      },
      "confidence": 0.85,
      "createdAt": "2025-01-28T10:00:00Z"
    }
  ],
  "pagination": {
    "total": 50,
    "limit": 20,
    "offset": 0
  }
}
curl -H "X-API-Key: your_api_key" \
  "https://api.marketmotion.xyz/api/b2b/suggestions?category=sports&limit=10"

GET
Get currently trending market suggestions.

Query Parameters

limit
number
Maximum results

Response

{
  "success": true,
  "suggestions": [...]
}

List People

GET
Get people entities with market exposure and alert activity.

Query Parameters

q
string
Search by name
category
string
Filter by category
subcategory
string
Filter by subcategory
limit
number
Maximum results
offset
number
Pagination offset

Response

{
  "success": true,
  "people": [
    {
      "slug": "patrick-mahomes",
      "displayName": "Patrick Mahomes",
      "entityType": "person",
      "category": "sports",
      "marketCount": 12,
      "alertCount7d": 3
    }
  ],
  "pagination": {
    "total": 500,
    "limit": 20,
    "offset": 0
  }
}
curl -H "X-API-Key: your_api_key" \
  "https://api.marketmotion.xyz/api/b2b/people?category=sports&subcategory=nfl&limit=20"

Get Person

GET
Get detailed person information with attributes, relationships, markets, and recent alerts.

Path Parameters

slug
string
required
Person slug

Response

{
  "success": true,
  "person": {
    "slug": "patrick-mahomes",
    "displayName": "Patrick Mahomes",
    "attributes": [
      { "key": "injury_status", "value": "questionable", "source": "ESPN" }
    ],
    "relationships": [...],
    "markets": [...],
    "recentAlerts": [...]
  }
}

Person Markets

GET
Get markets for a person with cross-venue spread data.

Path Parameters

slug
string
required
Person slug

Query Parameters

venue
string
Filter by venue
limit
number
Maximum results

Response

{
  "success": true,
  "markets": [
    {
      "title": "Chiefs to win Super Bowl",
      "venue": "polymarket",
      "price": 0.35
    }
  ],
  "crossVenue": [
    {
      "outcomeLabel": "Chiefs to win",
      "spread": 0.03,
      "signalType": "mispricing"
    }
  ]
}

Market Gaps

GET
Get detected market gaps — entities with strong signals but no corresponding market.
Requires Pro tier API key.

Query Parameters

category
string
Filter by category
limit
number
Maximum results
minSignals
number
Minimum signal count threshold

Response

{
  "success": true,
  "gaps": [
    {
      "entity": {
        "slug": "some-entity",
        "displayName": "Entity Name"
      },
      "signalCount": 15,
      "category": "sports",
      "reason": "High activity with no prediction market coverage"
    }
  ],
  "total": 25
}

Get Gap

GET
Get detailed gap information for a specific entity.
Requires Pro tier API key.

Path Parameters

slug
string
required
Entity slug

Response

{
  "success": true,
  "gap": {
    "entity": { ... },
    "signals": [...],
    "markets": [...]
  }
}

Webhooks

Webhook endpoints allow you to receive real-time notifications when events occur.
Requires Pro tier API key.

List Webhooks

GET
List your configured webhook endpoints.
{
  "success": true,
  "endpoints": [
    {
      "id": "webhook-uuid",
      "url": "https://your-server.com/webhook",
      "events": ["alert.injury", "alert.arbitrage"],
      "isActive": true,
      "description": "Production webhook"
    }
  ]
}

Create Webhook

POST
Register a new webhook endpoint.
Body:
{
  "url": "https://your-server.com/webhook",
  "events": ["alert.injury", "alert.arbitrage", "gap.detected"],
  "description": "My webhook"
}
Response:
{
  "success": true,
  "id": "webhook-uuid",
  "secret": "whsec_..."
}

Update Webhook

PUT
Update a webhook endpoint.
Body:
{
  "url": "https://your-server.com/webhook-v2",
  "events": ["alert.injury"],
  "isActive": true,
  "description": "Updated webhook"
}

Delete Webhook

DELETE
Delete a webhook endpoint.

Test Webhook

POST
Send a test payload to your webhook endpoint.
Response:
{
  "success": true,
  "statusCode": 200
}

Webhook Deliveries

GET
Get delivery history for a webhook endpoint.
Query Parameters:
limit
number
Maximum results
offset
number
Pagination offset
Response:
{
  "success": true,
  "deliveries": [
    {
      "id": "delivery-uuid",
      "event": "alert.injury",
      "statusCode": 200,
      "deliveredAt": "2025-01-28T10:00:00Z",
      "payload": { ... }
    }
  ],
  "pagination": {
    "total": 100,
    "limit": 20,
    "offset": 0
  }
}

Webhook Events

EventDescription
alert.injuryInjury status change detected
alert.arbitrageCross-venue mispricing detected
alert.crowdingPosition crowding detected
alert.politicalPolitical change detected
alert.financeFinancial indicator change
alert.rumorUnconfirmed rumor detected
gap.detectedMarket gap identified