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
curl https://sykikai.com/api/health
{
"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...
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
/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 |
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
/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"
}
/api/predictions/history
Returns settled predictions (won, lost, void) with pagination.
| Query Param | Description |
|---|---|
| per_page | Results per page. Default: 20 |
/api/predictions/{id}
Returns a single published prediction by ID.
Prediction fields
| Field | Type | Values |
|---|---|---|
| status | string | pending won lost void postponed |
| confidence | string | high medium-high medium value-play |
| odds | float | Decimal odds (e.g. 1.85) |
| match_time | string | ISO 8601 UTC datetime |
| sport | string | football, 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.
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-Signature | HMAC-SHA256 signature: sha256=<hex> |
| X-SykikAI-Event | Event type (e.g. prediction.created) |
| X-SykikAI-Delivery | Unique delivery UUID |
| X-SykikAI-Timestamp | Unix 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
2xxwithin 15 seconds - After 10 consecutive failures, the endpoint is automatically disabled
Models & Credits
/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.