Developer Docs

API Reference

Access predictions, AI chat, and webhook delivery programmatically. All endpoints return JSON.

Getting Started

The SykikAI API gives you programmatic access to AI-powered predictions across sports, forex, and crypto markets. You can also use our AI chat models for custom analysis and receive predictions via webhooks in real-time.

Base URL

https://sykikai.com/api

Requirements

  • Developer plan subscription
  • API key generated from your dashboard

Response Format

All responses are JSON with Content-Type: application/json

Quick test

GET /api/health
curl https://sykikai.com/api/health
Response
{
  "status": "ok",
  "timestamp": "2026-02-11T12:00:00.000000Z"
}

Authentication

Authenticate requests using an API key. Keys are prefixed with sk- and can be created from your dashboard under API Keys.

Two supported methods:

Bearer Token (recommended)

Authorization: Bearer sk-abc123...

Custom Header

X-API-Key: sk-abc123...
Example authenticated request
curl https://sykikai.com/api/predictions \
  -H "Authorization: Bearer sk-your-api-key-here"

Error responses

Status Cause
401 Missing or invalid API key
403 Your plan does not include API access — upgrade to Developer plan

AI Chat

POST /api/ai/chat

Send a prompt to one of our AI models. Supports optional real-time market data injection for crypto, forex, and commodities analysis.

Request body

Parameter Type Description
model string Model ID from /api/models
prompt string Your prompt. Max 10,000 characters
max_tokens integer 1–4,000. Default: 1,000
temperature float 0–2. Controls randomness. Default: 1.0
include_market_data boolean Inject live market data into prompt context
market_category string crypto, forex, or commodities
POST /api/ai/chat
curl -X POST https://sykikai.com/api/ai/chat \
  -H "Authorization: Bearer sk-your-api-key" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "lightning-pro",
    "prompt": "Analyze the upcoming Liverpool vs Arsenal match",
    "max_tokens": 500,
    "temperature": 0.7
  }'
{
  "response": "Based on current form and head-to-head stats...",
  "model": "Lightning Pro",
  "usage": {
    "input_tokens": 45,
    "output_tokens": 320,
    "total_tokens": 365,
    "cost": "0.01095"
  }
}

Credits

Each request costs (input_tokens + output_tokens) × cost_per_token. Subscription credits are used first, then purchased credits.

Predictions

GET /api/predictions

Returns today's published predictions. Optionally filter by sport.

Query Param Description
sport Filter by sport: football, basketball, tennis, etc.
{
  "data": [
    {
      "id": 42,
      "sport": "football",
      "league": "Premier League",
      "home_team": "Liverpool",
      "away_team": "Arsenal",
      "match_time": "2026-02-15T15:00:00Z",
      "market_type": "BTTS",
      "pick": "Yes",
      "odds": 1.72,
      "confidence": "high",
      "analysis": "Both teams have scored in 5 of last 6...",
      "status": "pending",
      "created_at": "2026-02-11T09:00:00Z"
    }
  ],
  "count": 1,
  "date": "2026-02-11"
}
GET /api/predictions/history

Returns settled predictions (won, lost, void) with pagination.

Query Param Description
per_page Results per page. Default: 20
GET /api/predictions/{id}

Returns a single published prediction by ID.

Prediction fields

Field Type Values
statusstringpending won lost void postponed
confidencestringhigh medium-high medium value-play
oddsfloatDecimal odds (e.g. 1.85)
match_timestringISO 8601 UTC datetime
sportstringfootball, basketball, tennis, hockey, mma, boxing, esports, cricket, rugby

Webhooks

Receive predictions in real-time via HTTP POST to your endpoint. When new predictions are published, we send them to all active webhook endpoints on your account. Configure webhooks from your dashboard.

Event prediction.created

Fired when one or more new predictions are published.

Payload

{
  "event": "prediction.created",
  "data": [
    {
      "id": 42,
      "sport": "football",
      "league": "Premier League",
      "home_team": "Liverpool",
      "away_team": "Arsenal",
      "match_time": "2026-02-15T15:00:00Z",
      "market_type": "BTTS",
      "pick": "Yes",
      "odds": 1.72,
      "confidence": "high",
      "analysis": "Both teams scored in 5 of last 6...",
      "status": "pending"
    }
  ],
  "count": 1,
  "timestamp": "2026-02-11T10:30:45Z"
}

Request headers

Header Description
X-SykikAI-SignatureHMAC-SHA256 signature: sha256=<hex>
X-SykikAI-EventEvent type (e.g. prediction.created)
X-SykikAI-DeliveryUnique delivery UUID
X-SykikAI-TimestampUnix timestamp of delivery

Verifying signatures (PHP)

// Verify the webhook signature
$payload = file_get_contents('php://input');
$signature = hash_hmac('sha256', $payload, $webhookSecret);
$header = str_replace('sha256=', '', $_SERVER['HTTP_X_SYKIKAI_SIGNATURE']);

if (!hash_equals($signature, $header)) {
    http_response_code(401);
    exit('Invalid signature');
}

Retry policy

  • 3 attempts with exponential backoff: 30 seconds, 2 minutes, 10 minutes
  • Your endpoint must respond with 2xx within 15 seconds
  • After 10 consecutive failures, the endpoint is automatically disabled

Models & Credits

GET /api/models Public

Returns all available AI models with their pricing. No authentication required.

{
  "models": [
    {
      "name": "Lightning Pro",
      "model": "lightning-pro",
      "cost_per_token": "0.00003000"
    },
    {
      "name": "Swift Basic",
      "model": "swift-basic",
      "cost_per_token": "0.00000200"
    }
  ]
}

How credits work

  • Subscription credits — included with your plan, reset each billing period
  • Purchased credits — buy top-ups from the billing page, never expire
  • Deduction priority — subscription credits are consumed first, then purchased credits
  • Cost formula(input_tokens + output_tokens) × cost_per_token

Rate Limits

Endpoints Limit
Authenticated endpoints (chat, predictions, user) 100 requests / minute
Public endpoints (health, models, market-data) No limit

Exceeding the rate limit returns 429 Too Many Requests. Rate limits are per API key.

Errors

All errors return a JSON object with an error field.

{
  "error": "Insufficient credits"
}

HTTP status codes

Code Meaning
200 OK
400 Bad Request
401 Unauthorized
403 Forbidden
404 Not Found
429 Too Many Requests
500 Server Error

Ready to integrate?

Create your API key and start making requests in minutes.