Confirmed Score
When a provider confirms a match score, the API sends a confirmed_score notification to the seamless agent's configured transfer webhook. This is a score notification; it does not debit or credit a balance. See Transfer for monetary webhook events.
Request
POST https://transferWebhookURL
The webhook URL is the transferWebhookURL configured in the backoffice.
Payload
The event name is sent in type (there is no event field in this payload).
| Parameter | Type | Description |
|---|---|---|
type | String | Required. Always confirmed_score. |
betId | String | Required. Artemis's local ticket ID, the same betId used in other ticket webhooks. |
refId | String | Required. The provider reference ID for the ticket. |
matchId | String | Required. The exact match ID on the ticket. Corner match IDs include their suffix, such as 13284865700000004. |
scores | Object | Required. The score saved for this match ID. Score fields below may be omitted when unavailable. |
scores.matchStatus | String | Match status. |
scores.homeScore | Number | Home score. For corner matches, this is the corner score. |
scores.awayScore | Number | Away score. For corner matches, this is the corner score. |
scores.periodScores | Array | Optional. Period scores saved for this match ID. |
A period item may contain homeScore, awayScore, matchStatusCode, number, and description; fields are omitted when unavailable. Score values, status codes, and period numbers are numeric. Internal database fields such as _id are not sent.
Delivery behavior
The API sends one notification for each distinct ticket and matching matchId. For example, three tickets with different betId values and one matching matchId each produce three POST requests. If a ticket contains duplicate legs with the same match ID, it receives one notification for that ID. If the same ticket has both a normal match and a corner match, it receives a separate notification for each exact ID. A base match callback can update the base ID and its matching corner IDs; a callback whose ID already has a corner suffix targets that exact ID only. Notifications are sent to configured seamless agents.
For a corner match, incoming scores.corner.homeScore and scores.corner.awayScore populate the outgoing scores.homeScore and scores.awayScore when numeric, including 0; the outgoing payload has no nested scores.corner object. Outgoing period scores come from each incoming scores.periodScores[].corner value. Each supplied aggregate total takes precedence over a period sum. If an aggregate total is absent, complete corner scores for both halves can supply its sum; if neither source has that total, the saved total is retained. Incomplete corner periods do not replace saved period details, even when supplied aggregate totals update.
Examples
These two notifications can be sent for the same ticket. The normal match has a 1–3 score; the corner match has a 0–0 score and keeps its exact suffixed ID.
{
"type": "confirmed_score",
"betId": "bet-7341",
"refId": "provider-ref-90521",
"matchId": "132848657",
"scores": {
"matchStatus": "ended",
"homeScore": 1,
"awayScore": 3,
"periodScores": [
{
"homeScore": 0,
"awayScore": 0,
"matchStatusCode": 6,
"number": 1,
"description": ""
},
{
"homeScore": 1,
"awayScore": 3,
"matchStatusCode": 7,
"number": 2,
"description": ""
}
]
}
}
{
"type": "confirmed_score",
"betId": "bet-7341",
"refId": "provider-ref-90521",
"matchId": "13284865700000004",
"scores": {
"matchStatus": "ended",
"homeScore": 0,
"awayScore": 0,
"periodScores": [
{
"homeScore": 0,
"awayScore": 0,
"matchStatusCode": 6,
"number": 1
},
{
"homeScore": 0,
"awayScore": 0,
"matchStatusCode": 7,
"number": 2
}
]
}
}
Response
Return HTTP 200 with a JSON body containing error: 0 to acknowledge delivery:
{
"error": 0
}
HTTP 200 without error: 0 is treated as a failed delivery. A response with only code: 0 is not sufficient.
Retries
Each webhook request has a 10-second timeout. If one notification fails, the API continues sending to the other matching tickets and match IDs, then reports the callback as failed. The provider may retry the callback, so the same (betId, matchId) can be delivered more than once or out of order. Apply each delivery as a score update for that pair and accept corrected scores; do not permanently ignore an event just because that pair was seen before.