---
title: "Bet Share"
canonical_url: "https://apidocs.sportradar.com/resources/virtual-stadium/docs/web/adapter/custom/features/betShare"
markdown_url: "https://apidocs.sportradar.com/resources/virtual-stadium/docs/web/adapter/custom/features/betShare.md"
last_updated: "2026-09-14T11:55:40Z"
---

# Bet Share

Implement bet sharing functionality in your custom adapter to allow users to share their bets with other Virtual Stadium users.

## Overview

To integrate bet sharing with Virtual Stadium:

1. **Step 1**

   Register your adapter with the [global SIR function](https://apidocs.sportradar.com/resources/widgets/docs/tutorials/SIR.md), ensuring only one adapter is registered per page load.

2. **Step 2**

   Implement the [`tickets` endpoint](https://apidocs.sportradar.com/resources/widgets/docs/adapter/Types.md#tickets-function) to fetch and return [`TicketResponseV2`](https://apidocs.sportradar.com/resources/widgets/docs/adapter/Types.md#ticketresponsev2) via `callback`.

3. **Step 3**

   Choose a delivery method — non-paginated (full list) or paginated (`ticketsFetchMore`). See [Implementation options](#implementation-options) below.

4. **Step 4**

   Return tickets by calling `callback(undefined, data)` from your adapter. For paginated integrations, also handle `onAction` `ticketsFetchMore` on the embed page.

The widget stack calls your `tickets` endpoint when users open the bet-share picker. The same adapter contract also powers **Central Hub** share-betslip screens.

> **Who calls callback?**
>
> The widget invokes `tickets(args, callback)` once. **You** call `callback` to deliver data — including subsequent pagination pages via the stored callback reference. The widget never calls `callback`.

## Implementation options

New integrations must return [`TicketResponseV2`](https://apidocs.sportradar.com/resources/widgets/docs/adapter/Types.md#ticketresponsev2) — not the deprecated `BetShareResponse` format.

|                       | **Option A — Non-paginated**                           | **Option B — Paginated**                                                                                            |
| --------------------- | ------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------- |
| **When to use**       | Small ticket lists                                     | Large ticket histories                                                                                              |
| **First callback**    | `{ tickets: Ticket[] }` — complete list                | `{ tickets, pageSize, hasMore, nextCursor }` — first batch                                                          |
| **Further callbacks** | Usually none — single `{ tickets }` emission is tested | **You** call the stored `callback` with `{ newTickets, hasMore?, nextCursor? }` after `onAction` `ticketsFetchMore` |
| **Pagination**        | N/A                                                    | Widget fires `onAction` `ticketsFetchMore` when the next page is needed                                             |

Flow diagrams, field tables, and code examples: [Tickets Function reference](https://apidocs.sportradar.com/resources/widgets/docs/adapter/Types.md#tickets-function).

Step-by-step tutorials:

- [Track A — Non-paginated](https://apidocs.sportradar.com/resources/widgets/docs/tutorials/examples/adapter-tickets-endpoint-example.md#track-a--non-paginated-recommended-for-getting-started)
- [Track B — Paginated](https://apidocs.sportradar.com/resources/widgets/docs/tutorials/examples/adapter-tickets-endpoint-example.md#track-b--paginated-large-ticket-histories)

> **Warning**
>
> Paginated integrations require an `onAction` handler on the embed page. Page 2+ is **not** fetched by calling `tickets()` again — store the `callback` from the initial `tickets()` call and invoke it with `{ newTickets, ... }`.

## Implementation

**Backend**: Implement the `tickets` endpoint handler.

For a full walkthrough with copy-pasteable examples, see the [Adapter Tickets Endpoint Example](https://apidocs.sportradar.com/resources/widgets/docs/tutorials/examples/adapter-tickets-endpoint-example.md).

**Frontend**: Enable the Copy Bet Button widget

To allow users to interact with and copy bets in the UI, see the [Copy Bet Button documentation](https://apidocs.sportradar.com/resources/virtual-stadium/docs/web/widgets/virtualStadium/features/copyBetButton.md).

For paginated ticket loading, see the [Bet Share widget documentation](https://apidocs.sportradar.com/resources/virtual-stadium/docs/web/widgets/virtualStadium/features/betShare.md) (`ticketsFetchMore` onAction).
