Get match prediction
Read one match prediction by ID, with its current status and version and, once settled, its settlement totals.
- Method
- GET
- Path
https://api.returning.ai / v1/ match-predictions/ {matchPredictionId} - Permission
- matchPredictions
- Retries
- Read-only; exact retries are safe
When to use this
- Read the current
versionbefore you patch a match. - Check a match has kicked off and isn't already settled or voided before you settle it.
- Show how many traders won and what was paid out after settlement.
Authentication#
- Header
Authorization: Bearer <API_KEY>- Permission
- matchPredictionsShown in the dashboard as “Match Prediction”
Use a Community API key with matchPredictions, shown in the dashboard as Match Prediction, and keep it on your server. The key decides the community: you only see and change match predictions in that community, and an ID from another community returns 404, the same as an unknown ID. Personal API keys are rejected with 403.
Behaviour#
api.returning.ai doesn't serve this route yet: requests return an empty 404. Ask Returning.AI before you build on it.
This read changes nothing. status is worked out from the clock when you ask: a published match is scheduled before predictionStartAt, open until lockAt, then locked until you settle or void it.
Request#
Path parameters#
Rulemp_ and 24 hex characters
Eg"mp_66f000000000000000000801"
Headers#
curl --request GET \
--url https://api.returning.ai/v1/match-predictions/mp_66f000000000000000000801 \
--header 'Authorization: Bearer <API_KEY>'
Response#
A 200 returns the match prediction. settlement holds the totals once status is settled, and is null in every other status. For each trader's result, use Get settlement results.
Rulesuccess
RuleMATCH_PREDICTION_RETRIEVED
X-Request-Id if you sent one, otherwise a generated req_... ID. Quote it when you contact support.Rulemp_ and 24 hex characters
.000.Ruleregulation or extra_time
correctResult when the called score is also exact.true when predicting costs coins.0 when enabled is false.draft until published. Then scheduled before predictionStartAt, open while traders can predict and locked from lockAt, all worked out from the clock. The rest follow a settle or void.Ruledraft, scheduled, open, locked, settlement_in_progress, settled, settlement_failed, void_in_progress, voided or void_failed
true once published.true while the match is open and the time is between predictionStartAt and lockAt.status is settled; otherwise null.0. Returned entry costs are counted in coinsPaid.mps_...).{
"meta": {
"status": "success",
"statusCode": 200,
"code": "MATCH_PREDICTION_RETRIEVED",
"requestId": "req_66f00000000000000000000000000811"
},
"message": "Match prediction retrieved.",
"data": {
"id": "mp_66f000000000000000000801",
"title": "Australia vs New Zealand",
"teamA": {
"name": "Australia",
"imageUrl": "https://cdn.example.com/teams/australia.png"
},
"teamB": {
"name": "New Zealand",
"imageUrl": "https://cdn.example.com/teams/new-zealand.png"
},
"predictionStartAt": "2026-10-01T08:00:00.000Z",
"lockAt": "2026-10-10T18:55:00.000Z",
"kickoffAt": "2026-10-10T19:00:00.000Z",
"scoreBasis": "regulation",
"viewPermission": {
"roleIds": ["66f000000000000000000806"],
"userIds": []
},
"rewards": {
"correctResult": {
"coins": 100,
"xp": 50
},
"exactScoreBonus": {
"coins": 200,
"xp": 100
}
},
"entryCost": {
"enabled": false,
"coins": 0
},
"status": "settled",
"isPublished": true,
"acceptingPredictions": false,
"attemptCount": 120,
"settlement": {
"fullTimeScore": {
"teamA": 2,
"teamB": 1
},
"predictionsTotal": 120,
"winnerCount": 48,
"correctResultCount": 40,
"exactScoreCount": 8,
"missedCount": 72,
"coinsPaid": 5600,
"xpPaid": 2800,
"entryCoinsReturned": 0,
"payoutFailureCount": 0,
"settledAt": "2026-10-10T21:05:00.000Z",
"operationId": "mps_66f00000000000000000000000000803"
},
"version": 5,
"createdAt": "2026-09-27T09:00:00.000Z",
"updatedAt": "2026-10-10T21:05:00.000Z",
"externalReference": "provider-fixture-123",
"description": "Predict the final score."
}
}
Errors#
Every error carries its code in meta.code and the request's ID in meta.requestId. Validation errors list each problem in details, with a field, code and message. The API key checks (401, 403, 404 COMMUNITY_NOT_FOUND and 500 AUTHENTICATION_FAILED) return detail and solution instead. A 404 with an empty body means the route isn't available on api.returning.ai yet. An ID in the wrong format returns 404 MATCH_PREDICTION_NOT_FOUND, the same as an unknown ID.
Fix the request03
AUTHENTICATION_REQUIREDFix the requestAuthorization: Bearer <API_KEY> with a current Community API key.API_KEY_PERMISSION_DENIEDFix the requestmatchPredictions, or it is a personal key. Use a Community API key and add Match Prediction in Settings > Integration > API Keys.Fix the data02
MATCH_PREDICTION_NOT_FOUNDFix the datamp_ and 24 hex characters. Check the ID with List match predictions.COMMUNITY_NOT_FOUNDFix the dataRetry with backoff04
RATE_LIMITEDRetry with backoffRetry-After, then retry.INTERNAL_ERRORRetry with backoffAUTHENTICATION_FAILEDRetry with backoffMATCH_PREDICTION_FROZENRetry with backoff{
"meta": {
"status": "error",
"statusCode": 404,
"code": "MATCH_PREDICTION_NOT_FOUND",
"requestId": "req_66f00000000000000000000000000811"
},
"message": "Match prediction not found."
}