Reload page

Sports analytics and AI conversations for your business

Add match analysis to your product through an API or an embeddable widget. In the pilot, Sportexa Core presents the reasoning and risks, while Sportexa AI explains them in the context of the match.

For sportsbooks, sports media, analytics platforms and apps.

  1. Sports data
  2. Feature engineering
  3. Sportexa ML Engine
Sportexa Core
Structured analysis
Sportexa AI
Explanation and dialogue
Target architecture

Why Sportexa

  1. Sports data

    Analysis draws on available statistics and context for the match.

  2. Two integration options

    Build your own interface with the Server API or embed the match widget.

  3. Keep users in your product

    Users can explore the analysis and follow-ups without leaving your interface.

  4. Independent products

    The proposed plans let you choose Core and AI separately and estimate costs against their quotas.

How the platform is designed

Sportexa has its own ML Engine for sports data analysis. For the partner integration release, we’re preparing to bring model insights and probability estimates into match previews. Sportexa AI will explain the factors behind an estimate and where uncertainty remains.

Two products for different needs

Sportexa Core

Partner pilot

Match analysis and button-based follow-ups for match centres, sports publishers and products that need predictable costs at higher volumes.

  • Reasoning and risks grounded in available data
  • Answers and available actions through the Server API
  • Ready-to-embed match widget

Sportexa AI

Pilot by agreement

A match assistant that explains findings and discusses risks. The partner pilot continues conversations through suggested actions.

  • Match context carries across follow-ups
  • Answers draw on available sports data
  • API or widget access depends on integration readiness

Sportexa Distribution

Pilot concept

Branded sports widgets with ML analytics, AI conversations and bookmaker odds integrations for sports publishers.

Explore Distribution

Sportexa in action

Illustrative scenarios. The match, figures and dialogue are fictional.

Sportexa Core demo

Run a fictional match preview and explore the reasoning behind a suggested market.

Sportexa AI conversation example

See how Sportexa AI talks through a match and explains its picks.

What do you think of over 2.5 offsides in Atlas vs Beacon?

I’d give it a look. Beacon like to defend high, and the Atlas striker is always looking to get in behind. A couple of runs a fraction too early and you’re already close to three offsides. I’d check that he’s starting before making a call.

What if Beacon sit deeper?

Then I’d pass on the total. If the defenders are already near their own box, Atlas have very little space to run into. A lot comes down to how Beacon set up from kickoff.

Indicative pricing

Monthly subscription, included quota and overage. Choose Core, AI or both. RUB and USD prices are set separately and subject to agreement.

Sportexa Core

Business

29,900 ₽

per month

  • 10,000 analyses per month
  • 2 ₽ per additional analysis
  • Server API and widget
  • Button-based follow-ups
  • SLA by agreement

Enterprise

99,900 ₽

per month

  • 50,000 analyses per month
  • Overage quoted individually
  • Server API and widget
  • Button-based follow-ups
  • Individual SLA terms

Sportexa AI

AI Business

49,900 ₽

per month

  • 1,000 AI sessions per month
  • 30 ₽ per additional AI session
  • Contextual AI conversation
  • API and widget subject to readiness
  • Limits by agreement

AI Enterprise

149,900 ₽

per month

  • 5,000 AI sessions per month
  • 25 ₽ per additional AI session
  • Contextual AI conversation
  • API and widget subject to readiness
  • Limits by agreement

Core is priced per analysis. Technical HTTP requests, idempotent retries and reuse of prepared analysis are addressed separately in the contract. These plans do not trigger automated billing.

The proposed AI session covers one user conversation about one event and up to 10 billable replies. Reopening or technically recovering the chat does not create a new session. Extra replies, session duration and context limits are subject to agreement.

Cost calculator

Choose your products and enter your expected monthly usage.

Sportexa Core

Inactive

Sportexa AI

Inactive

Monthly estimate · RUB

0 ₽ Request a quote

This estimate is indicative. Final pricing and service terms are set by individual agreement.

Pilot programme

14 days Up to 500 Core analyses
Request a pilot

Test an API or widget integration by agreement. AI access requires separate approval. The pilot ends without automatic enrolment in a paid plan.

API and widget

API documentation Authentication, requests, actions, idempotency and operation status.

Authentication and retries

The base URL is https://sportexa.online/api/partner/v1. Send requests from your server with Authorization: Bearer <token> and Accept: application/json. Set Content-Type: application/json for JSON requests. Keep the partner key on your server.

For session creation and follow-up actions, send an Idempotency-Key of up to 128 characters. Generate a unique key for each turn within your partner account. After a network failure, retry the same request with the same key.

Sessions and operations are scoped to the partner account that created them. Coverage is limited to agreed leagues and upcoming events in the calendar. Request limits depend on the access configuration.

Open a session

POST /sessions starts a preview of an upcoming match in a league enabled for your account. Replace the example ID 12345 with an available match ID.

curl https://sportexa.online/api/partner/v1/sessions \
  -H "Authorization: Bearer ${SPORTEXA_PARTNER_TOKEN}" \
  -H 'Accept: application/json' \
  -H 'Content-Type: application/json' \
  -H 'Idempotency-Key: open-42-001' \
  -d '{"external_user_id":"customer-42","match_id":12345,"locale":"en"}'
  • external_user_id is a stable user identifier from your platform, up to 128 characters. Use an internal ID in place of a name or email address.
  • match_id is a positive integer. You can use match_query instead, with the full names of both participants, up to 200 characters.
  • locale sets the language of the answer and actions. Use ru or en.
  • bookmaker_id is an optional positive ID from the Sportexa catalog. Your account's configured bookmaker takes precedence.

A ready result returns HTTP 200 with the following structure.

{
  "session_id": "00000000-0000-4000-8000-000000000001",
  "operation_id": "00000000-0000-4000-8000-000000000002",
  "status": "ready",
  "answer_id": "00000000-0000-4000-8000-000000000002",
  "answer": "A short match preview.",
  "actions": [{"id": "why", "label": "Why?"}]
}

Continue the conversation

POST /sessions/{session_id}/messages accepts the answer_id from the latest answer and an action_id from its actions array. Use each action's label as the button text and refresh the buttons after every ready answer. Use why from the example only when it appears in the available actions.

curl "https://sportexa.online/api/partner/v1/sessions/${SESSION_ID}/messages" \
  -H "Authorization: Bearer ${SPORTEXA_PARTNER_TOKEN}" \
  -H 'Accept: application/json' \
  -H 'Content-Type: application/json' \
  -H 'Idempotency-Key: followup-42-001' \
  -d "{\"answer_id\":\"${ANSWER_ID}\",\"action_id\":\"why\"}"

Check operation status

Standard mode returns previews synchronously. While a turn is still processing, the API returns HTTP 202 with status: processing, session_id and operation_id. Poll GET /sessions/{session_id}/operations/{operation_id} with the same Bearer token while processing continues. Stop polling after 200 or a terminal error. Asynchronous AI mode requires separate pilot approval. The mode is set on your account.

Errors

  • 401 — the key is missing, invalid or revoked.
  • 404 match_not_found — the match is unavailable or outside your enabled events.
  • 409 match_ambiguous — choose a match_id from candidates and send a new request.
  • 409 action_unavailable — the action is no longer available. Use the actions from the latest ready answer.
  • 409 idempotency_conflict — the key is already associated with a different request.
  • 422 — check the request fields.
  • 429 — rate limit reached. Honor Retry-After when present.
  • 503 — the operation failed or the preview is temporarily unavailable.
Embed the widget Match context, secure token issuance and starting a conversation.

Issue a widget token from your backend

Send POST /api/partner/v1/widget-tokens with your partner key. Use the session creation fields and add the embedding page's origin. Its scheme, host and port must match the agreed website origin. Resolve external_user_id on your server from the user's authenticated session.

curl https://sportexa.online/api/partner/v1/widget-tokens \
  -H "Authorization: Bearer ${SPORTEXA_PARTNER_TOKEN}" \
  -H 'Accept: application/json' \
  -H 'Content-Type: application/json' \
  -d '{"external_user_id":"customer-42","match_id":12345,"locale":"en","origin":"https://partner.example"}'

The HTTP 201 response contains token and expires_at. Pass only the widget token to the browser. It is valid for one hour and scoped to the user, match and origin.

Load the script on a match page

In this example, widgetToken is the token from your backend. Use the same locale you used to issue the token.

<script src="https://sportexa.online/sportexa-widget.js"></script>
<script>
  const widget = window.SportexaWidget.mount({ token: widgetToken, locale: 'en' });
</script>

The preview starts when the user presses the widget button. For a different match, call widget.destroy() before remounting and request a new token. After expiry, request a new token to open a new chat. If your site restricts CSP, allow https://sportexa.online in script-src and frame-src.

Frequently asked questions

What is the difference between Core and AI?

Core provides analysis and ready-made follow-ups. AI adds a conversational layer to explain match context. The partner pilot continues conversations through available actions.

Does Sportexa have its own ML Engine?

Yes. For the release, we’re integrating the ML Engine into partner match previews so model insights and probability estimates can be delivered through the API and widget.

Can the LLM produce predictions independently?

The conversational layer explains available facts and signals. When evidence is missing, the assistant should flag the limitation and avoid inventing probabilities, odds or predictions.

How do I connect to the API?

Contact us to agree coverage and get a server key. The API documentation on this page includes request examples.

Can I embed the widget?

Yes, through the pilot. Your backend issues a short-lived token scoped to a match, a user and an allowed origin.

How is pricing calculated?

The indicative estimate combines the selected monthly plans and any charges above the included quotas.

What is an AI session?

The proposed unit is one user conversation about one event with up to 10 billable replies. Final rules are set in the agreement.

What happens if I exceed the quota?

Fixed overage is charged per extra unit under the proposed model. Core Enterprise overage requires an individual quote.

Can I use AI without Core?

Yes, the proposed plans are independent. AI availability is reviewed for each pilot.

Is there a trial?

We offer a 14-day pilot by agreement, with up to 500 Core analyses.

Can international partners integrate?

We review coverage, availability and terms for each country and use case. Switch the pricing currency to view USD prices.

Can we discuss individual terms?

Yes. Email us with your intended integration and expected monthly usage.

Discuss your integration

Email the Sportexa team to discuss your use case, available leagues and integration options.

Discuss your integration support@sportexa.online

What to include in your email

  • Company, contact person and work email
  • Product of interest: Core, AI or both
  • If known: website, monthly volume and any notes
Privacy policy