Add your Key ID and Secret to send test requests.
List a service’s countries
Returns the countries where one service is available, with their prices.
Authorization
KeyId ApiSecret x-key-id<token>
Your API key id.
In: header
x-api-secret<token>
Your API key secret.
In: header
Path Parameters
serviceSlug*string
Query Parameters
q?string
page?integer
pageSize?integer
Response Body
application/json
application/json
application/json
application/json
application/json
application/json
application/json
application/json
curl -X GET "https://example.com/v1/otp/services/string/countries?page=1&pageSize=50"{
"data": [
{
"countryCode": "string",
"name": "string",
"flag": "string",
"serviceCount": 0,
"availableCount": 0,
"startingPrice": {
"amount": 0,
"currency": "string"
},
"price": {
"min": 0,
"max": 0,
"average": 0,
"currency": "string"
},
"pools": [
{
"serviceId": "string",
"price": 0,
"availableCount": 0,
"successRate": 0
}
]
}
],
"meta": {
"page": -9007199254740991,
"pageSize": -9007199254740991,
"total": -9007199254740991,
"totalPages": -9007199254740991,
"hasNext": true
}
}{
"error": {
"code": "VALIDATION_ERROR",
"message": "The request is not valid. See `fields` for what to correct.",
"requestId": "9f1c7b2e-…"
}
}{
"error": {
"code": "AUTHENTICATION_REQUIRED",
"message": "This endpoint requires an API key.",
"requestId": "9f1c7b2e-…"
}
}{
"error": {
"code": "NOT_FOUND",
"message": "No such resource.",
"requestId": "9f1c7b2e-…"
}
}{
"error": {
"code": "RATE_LIMITED",
"message": "Too many requests. Retry after the interval in `Retry-After`.",
"requestId": "9f1c7b2e-…"
}
}{
"error": {
"code": "INTERNAL_ERROR",
"message": "Something went wrong on our side.",
"requestId": "9f1c7b2e-…"
}
}{
"error": {
"code": "SERVICE_RESPONSE_INVALID",
"message": "The upstream service returned an unexpected response.",
"requestId": "9f1c7b2e-…"
}
}{
"error": {
"code": "SERVICE_UNAVAILABLE",
"message": "The service is temporarily unavailable. Try again shortly.",
"requestId": "9f1c7b2e-…"
}
}Get a service GET
Returns one service across countries and pools — one row per offer, each with the `serviceId` you send to [POST /v1/otp/request](#operation/requestOtpNumber). The path takes free text (`viber`).
Get one service in one country GET
Returns the offers for a service in a country — one per pool, with price, availability and success rate. This is the last step before renting: each offer carries the `serviceId` you send to [POST /v1/otp/request](#operation/requestOtpNumber).