Skip to content

Game Detail / Replay Lookup ​

Use the wager data that VCT pushed to your Agent to request the provider's original wager detail or replay URL. Store betId, hubSessionId, and status from each callback. VCT locates the original record and handles provider-specific lookup differences.

Lookup scope

An Agent can query only its own pushed wagers. VCT matches the authenticated Agent together with bet_id, hub_session_id, and status.

Environment URLs ​

EnvironmentBase URL
Productionhttps://hub-panel-api.v7stech.com
Staginghttps://hub-panel-api-dev.v7stech.com

Endpoint ​

PropertyValue
PathPOST /api/partner/v1/gamedetail
AuthAgent Token (Bearer)
Content-Typeapplication/json

See Authentication for the Authorization header.

Request Parameters ​

ParameterTypeRequiredDescription
bet_idstringYeswagers[].bet_id from the callback, or stored betId.
hub_session_idstringYeswagers[].session_id from the callback, or stored hubSessionId. This is the VCT session ID, not the Agent's internal sessionId.
statusstringYeswagers[].status, such as BET, SETTLED, BONUS, CANCEL, ROLLBACK, REFUND, or VOID.
round_idstringNowagers[].round_id. VCT uses it as a fallback provider query ID when needed.
request_idstringNoYour unique request ID for traceability. VCT generates one when omitted.

The callback-style names betId, hubSessionId, roundId, and requestId are accepted as aliases. Snake_case takes precedence if both forms are supplied.

Request Example ​

json
{
  "betId": "02537e2ae3e943f68a8e4eabc41f15a4",
  "hubSessionId": "7fb2b4fd-09cf-41ed-b24f-9c30ed9c08bb",
  "roundId": "wxGPGe3e9cTZNwzRDYyLqa",
  "status": "SETTLED",
  "requestId": "agent-detail-20261007-001"
}

Processing ​

VCT finds the unique game log for the authenticated Agent, prepares the lookup data, handles provider-specific query rules, and returns a unified result.

Success Response ​

VCT returns a unified detail response. A successful business response has code: 0.

json
{
  "code": 0,
  "message": "success",
  "data": {
    "url": "https://provider.example/replay/xxxx",
    "detail": {
      "bet_amount": 0,
      "prize_amount": 42.4
    }
  }
}

data.url is present only when the provider supports a replay or detail URL. data.detail is provider-specific and may be empty.

Provider Support Scope ​

This is the current capability snapshot as of 2026-10-07. It may be used to explain availability, but do not turn it into a permanent client-side rule; the API response is authoritative.

Currently unsupported ​

Wagers from these providers return UNSUPPORTED_ACTION. Display that detail/replay is unavailable and do not automatically retry:

fachai, sbobet, ct855, ug, afb, fastspin, odin, nextspin, spadegaming, apollogames, ace333, marioclub, vpower, luckysport

  • fachai: no outbound API exists for lookup by a single wager ID.
  • sbobet: the provider requires portfolio; the unified GameDetail API does not currently integrate it.
  • Other providers in the list: VCT does not currently provide GameDetail.

Partial support and retention limits ​

ProviderCurrent limitationAgent behavior
microgamingThe feature is still under maintenanceShow temporarily unavailable; do not continuously retry
jdbOnly replay-enabled games; normally requires a positive win except Buy Feature; wagers within 60 days; link valid about 30 daysPreserve the provider error; do not report the wager as missing
funkygamesSettled wagers from the last three months onlyShow unavailable when outside retention
afbslotPlayback URL for winning wagers only; other wagers may still return detailRender detail even when url is empty
759gamingReplay link valid for about one hourDo not cache the URL long-term
rich88Replay link valid for about three minutesQuery again when needed; do not cache the URL long-term
3singNo data after the event has been closed for more than 14 daysShow unavailable when outside retention
allbetWagers within 90 days onlyShow unavailable when outside retention
metagamingGaming Panda game codes 167000–167035 do not support detailShow unsupported; do not automatically retry
scr888h5Detail URL for winning rounds only; losing rounds may return a provider errorDo not classify a missing URL as a platform outage

UI guidance

The bet-push payload does not guarantee a provider field that can determine this capability directly. Do not rely only on a hard-coded front-end list to hide the action. The UI may offer a detail lookup and render the result according to code, message, and error.error_code; a confirmed UNSUPPORTED_ACTION result may be cached locally for that record.

Common Errors ​

Business failures have a non-zero code. Errors may appear in message, error.error_code, and error.error_message. Read all of them and never treat HTTP 200 as business success.

message / error.error_codeMeaningAutomatic retry
err.hub.game_detail_lookup_fields_requiredbet_id, hub_session_id, or status is missingNo; fix the request
err.hub.game_log_not_foundNo matching game log exists for this Agent; the log may not have arrived yetNo; allow a later manual lookup
err.hub.game_log_lookup_ambiguousMultiple records matched and VCT refuses to guessNo; contact VCT support
err.hub.game_log_storage_unavailableVCT game-log storage is temporarily unavailableYes; bounded retry
MISSING_REQUIRED_FIELDRestored provider lookup data is incompleteNo; record the response and contact VCT support
INVALID_PROVIDERThe provider is currently unavailableNo; contact VCT support
UNSUPPORTED_ACTIONThis provider or game does not support GameDetailNo; display unsupported
PROVIDER_API_ERRORProvider rejection, retention expiry, or no usable replay/detailNo by default; retain the raw response
Network error or HTTP 5xxThe request did not complete or the service is temporarily unavailableYes; exponential backoff, at most 2–3 attempts

Not every provider has a replay or detail API. A successful response may therefore have no url; retain the original wager callback for audit purposes.

Coding-Agent Implementation Specification (Copy Ready) ​

text
Implement VCT Game Detail / Replay lookup in the current Agent project, including backend, frontend, audit logging, and tests.

Endpoint: POST {VCT_BASE_URL}/api/partner/v1/gamedetail
Content-Type: application/json
Authorization: Bearer {agent_token}, freshly generated by the Agent backend for every request. Never reuse the token or send it to the browser.
Required: bet_id, hub_session_id, status. Optional: round_id, request_id. Camel-case aliases betId, hubSessionId, roundId, and requestId are accepted.

Requirements:
1. Take all lookup fields from the same bet-push wager: bet_id, session_id as hub_session_id, status, and optional round_id.
2. hub_session_id is the VCT session, not the Agent's internal sessionId.
3. Send only the fields defined in this endpoint's request table. Do not add undefined request parameters.
4. Call VCT from the Agent backend only. Generate a new Agent Token with a fresh Unix-second timestamp for every call. API Key, Secret, and Bearer Token must not appear in the browser, frontend bundle, URL, normal logs, or error messages.
5. Business success requires code=0; HTTP 200 alone is not success. On failure read message, error.error_code, and error.error_message.
6. On success: allow data.url only when it uses http/https and open it in a new tab with rel="noopener noreferrer"; render non-empty data.detail as provider JSON. An empty URL can still be a successful detail-only response. If both fields are empty, display that the provider supplied no replay/detail.
7. For UNSUPPORTED_ACTION display that the provider/game does not support detail or replay and do not retry. Do not make the current unsupported-provider list a permanent frontend rule; the API response is authoritative.
8. Do not retry game_log_not_found, game_log_lookup_ambiguous, validation errors, INVALID_PROVIDER, or MISSING_REQUIRED_FIELD. Retry network errors, HTTP 5xx, and game_log_storage_unavailable at most 2–3 times with exponential backoff. Do not retry PROVIDER_API_ERROR by default.
9. Audit request_id, query time, bet_id, hub_session_id, status, HTTP status, business code/message, error_code/error_message, duration, and raw response. Never log the Agent Secret, full Bearer Token, or provider credentials.
10. This feature is strictly read-only and must not modify wallets, wager amounts, settlement/callback state, or game sessions.
11. Reuse the existing HTTP client, authentication service, wager-detail UI, and error components. Do not introduce a second signing, HTTP, or JSON abstraction.

Required tests:
- snake_case and camelCase mapping, with snake_case precedence;
- fresh Token per request and no credential exposure in browser/logs;
- code=0 with URL, detail only, empty URL, and a non-http/https URL;
- missing fields, not found, ambiguity, UNSUPPORTED_ACTION, and PROVIDER_API_ERROR;
- network timeout, HTTP 5xx, and bounded retry count;
- the same bet_id under different hub_session_id/status values cannot select the wrong record;
- the lookup does not write wallet, wager, settlement, or session state.

Definition of done: backend proxy, frontend action, error states, audit logging, and tests are complete. Report changed files, test commands, and results. Do not replace real response parsing with a mocked success path.

VCT Gaming Integration Platform