Provider Limits
Use Case
Provider limits control the minimum and maximum bet amounts that the platform enforces per game provider. Limits operate at two levels:
- Team-level limits — Default min/max bet amounts that apply across all Brands for a given provider.
- Brand-level limits — Per-brand overrides that take precedence over team-level defaults for a specific provider.
This two-tier system lets you set sensible platform-wide defaults and then fine-tune limits for individual brands (e.g. to accommodate VIP or high-volume operators).
Effective limit priority:
Brand-level limit → (if set, this takes effect)
Team-level limit → (fallback when no brand override)
No limit → (if neither is configured, no enforcement)
Complete Flow — Team-Level Limits
Step 1 — List Team-Level Limits
GET /api/provider-limit/team
Returns all team-level provider limits configured for your team.
No query parameters.
Response:
[
{
"provider_id": 3,
"provider_code": "evolution",
"min_bet": "1000.00",
"max_bet": "5000000.00"
},
{
"provider_id": 7,
"provider_code": "pragmatic",
"min_bet": "500.00",
"max_bet": "2000000.00"
},
{
"provider_id": 12,
"provider_code": "betconstruct",
"min_bet": "1000.00",
"max_bet": "10000000.00"
}
]
Only providers that have a limit record are returned. Providers without any configured limit are not listed.
Step 2 — Set or Update a Team-Level Limit
PUT /api/provider-limit/team/{provider_id}
Creates or updates the team-level min/max bet for a specific provider. This is an upsert operation — if a limit already exists it is updated, otherwise a new record is created.
Path parameter: provider_id — the numeric ID of the provider.
Request body:
{
"min_bet": "1000.00",
"max_bet": "5000000.00"
}
| Field | Type | Required | Constraints | Description |
|---|---|---|---|---|
min_bet | decimal string | Yes | ≥ 0 | Minimum allowed bet amount |
max_bet | decimal string | Yes | ≥ 0, ≥ min_bet | Maximum allowed bet amount |
Response (200 OK):
{
"provider_id": 3,
"provider_code": "evolution",
"min_bet": "1000.00",
"max_bet": "5000000.00"
}
Limit changes propagate automatically to game servers. No manual restart or refresh is required.
Complete Flow — Brand-Level Limits
Step 3 — List Brand-Level Limits
GET /api/provider-limit/brand/{brand_id}
Returns the limit configuration for all providers in a specific Brand's whitelist. Each entry shows the team-level limit, the brand-level override (if any), and the computed effective limit.
Path parameter: brand_id — the numeric ID of the Brand.
Response:
[
{
"provider_id": 3,
"provider_code": "evolution",
"team_min_bet": "1000.00",
"team_max_bet": "5000000.00",
"brand_min_bet": "5000.00",
"brand_max_bet": "10000000.00",
"effective_min_bet": "5000.00",
"effective_max_bet": "10000000.00",
"has_override": true
},
{
"provider_id": 7,
"provider_code": "pragmatic",
"team_min_bet": "500.00",
"team_max_bet": "2000000.00",
"brand_min_bet": null,
"brand_max_bet": null,
"effective_min_bet": "500.00",
"effective_max_bet": "2000000.00",
"has_override": false
}
]
| Field | Description |
|---|---|
team_min_bet / team_max_bet | The team-level defaults for this provider. "0.00" if no team limit is set. |
brand_min_bet / brand_max_bet | The brand-specific override. null if no override is set for this brand. |
effective_min_bet / effective_max_bet | The limit actually enforced: brand override if present, otherwise team default. |
has_override | true if this brand has an explicit override for this provider. |
Only providers in the Brand's provider whitelist are returned. See the Brand Management guide for how to configure the whitelist.
404 Not Found is returned if the brand does not exist or belongs to a different team.
Step 4 — Set or Update a Brand-Level Limit
PUT /api/provider-limit/brand/{brand_id}/{provider_id}
Creates or updates a brand-level limit override for a specific provider. This is an upsert operation.
Path parameters:
| Parameter | Description |
|---|---|
brand_id | Numeric ID of the Brand |
provider_id | Numeric ID of the provider |
Request body:
{
"min_bet": "5000.00",
"max_bet": "10000000.00"
}
| Field | Type | Required | Constraints | Description |
|---|---|---|---|---|
min_bet | decimal string | Yes | ≥ 0 | Brand-specific minimum bet amount |
max_bet | decimal string | Yes | ≥ 0, ≥ min_bet | Brand-specific maximum bet amount |
Response (200 OK): Full BrandLimitResponse with effective values:
{
"provider_id": 3,
"provider_code": "evolution",
"team_min_bet": "1000.00",
"team_max_bet": "5000000.00",
"brand_min_bet": "5000.00",
"brand_max_bet": "10000000.00",
"effective_min_bet": "5000.00",
"effective_max_bet": "10000000.00",
"has_override": true
}
Limit changes propagate automatically to game servers. No manual restart or refresh is required.
Important Notes
min_betmust be less than or equal tomax_bet. A request wheremin_bet > max_betreturns422 Unprocessable Entity.- Both limits are required in each PUT request. There is no partial update for limits — always supply both
min_betandmax_bet. - A team-level limit of
"0.00"/"0.00"is treated as "no limit configured" from the effective-value perspective. If neither team nor brand limits are set, the platform does not enforce a bet size cap. - Brand-level limits are only visible for providers in the brand's whitelist. Add the provider to the brand's whitelist before configuring brand-specific limits.
- Removing a brand-level override is not yet supported via the API. To effectively revert to team defaults, set the brand limit to match the team limit values.
- Provider IDs are required. Contact your Ruby account manager to obtain the list of available provider IDs and codes for your team.
- Limit changes propagate automatically to game servers. No manual restart or refresh is required.