BYO providers
Register a bring-your-own provider
POST /v1/byo-providers: Register a bring-your-own provider
POST /v1/byo-providers
| Operation id | createByoProvider |
| Key scope | admin: admin keys only |
| Section | BYO providers |
#Request body
| Field | Type | Required | Description |
|---|---|---|---|
kind | "proxy" | yes | |
name | string | yes | min length 1 · max length 64 |
config | object | yes | |
config.type | "static", "list", "gateway" | yes | |
config.vendor | "brightdata", "oxylabs", "decodo", "iproyal", "webshare" | ||
config.url | string | min length 1 · max length 2048 · pattern ^(https?|socks5h?):\/\/[^\s]+$ | |
config.urls | string | min items 1 · max items 1000 | |
config.api_key | string | min length 1 · max length 512 | |
config.pool | "datacenter", "residential", "mobile" | default "datacenter" | |
config.country | string | pattern ^[A-Z]{2}$ | |
config.base_url | string (uri) | ||
config.model | string | yes | min length 1 · max length 128 |
#Example request
curl -X POST "https://api.kaab.ist/v1/byo-providers" \
-H "Authorization: Bearer $KAAB_API_KEY" \
-H "Content-Type: application/json" \
-d '{"kind":"proxy","name":"my-bright-data","config":{"type":"gateway","url":"http://user:[email protected]:22225","pool":"residential","country":"DE"}}'
#Responses
#201
Provider
{
"id": "byo_01j9zqk3q7m4n5p6r7s8t9v0wx",
"object": "byo_provider",
"kind": "proxy",
"name": "my-bright-data",
"status": "healthy",
"last_health_at": "2026-09-18T10:00:00Z",
"config_public": {
"vendor": "brightdata",
"pool": "residential"
},
"created_at": "2026-09-18T10:00:00Z"
}
#Errors
Every error answers with the error envelope; its code is one of the error codes.
| Status | When |
|---|---|
| 400 | request_invalid: request validation failed |
| 401 | Missing or invalid API key |
| 402 | insufficient_credits: top up to continue |
| 403 | The key's scope does not cover this operation |
| 409 | Conflicting state (see error.code) |
| 422 | Semantically invalid request (see error.code) |
| 429 | Rate limited; see Retry-After |
| 500 | internal: unexpected server error |