DEVELOPER RESOURCES

Work with number data.

Connect your scripts and dashboards to number availability, country details and recent activity. Start with the integration guide, then contact the team for an API token.

Access by request

numbers-status.jsonJSON

GET/api/public/numbers

{
  "success": true,
  "paging": {
    "limit": 20,
    "offset": 0,
    "hasMore": false
  },
  "numbers": [...] 
}
Access by request
On this page

01 / API reference

One feed for number availability

The numbers status feed describes the free public and members-only inventory listed by the site. Use it to build a number directory, filter by country or app, or monitor which numbers are active.

Read-only access

Retrieve number metadata with GET requests.

JSON responses

Use the same structured response from your preferred language.

Filter and paginate

Select the inventory you need and read it in batches.

What this API includes

This guide covers number metadata and availability. SMS message bodies, verification codes, paid private numbers and assigned numbers are excluded. Listing a members-only number does not unlock its inbox. An active number is not a guarantee that a particular service will deliver an SMS.

02 / Quickstart

Make your first request

Ask the site administration for an API token. After access is approved, replace YOUR_API_TOKEN in the example or set RECEIVE_SMS_API_TOKEN on your server.

cURL
curl --get 'https://receive-smss.live/api/public/numbers' \
  --header 'X-API-Key: YOUR_API_TOKEN' \
  --header 'Accept: application/json' \
  --data-urlencode 'status=active' \
  --data-urlencode 'access=public' \
  --data-urlencode 'limit=20' \
  --data-urlencode 'offset=0'
JavaScript
// Server-side JavaScript (Node.js). Keep the token on your server.
const token = process.env.RECEIVE_SMS_API_TOKEN;
if (!token) throw new Error('Set RECEIVE_SMS_API_TOKEN first');

const url = new URL('https://receive-smss.live/api/public/numbers');
url.search = new URLSearchParams({
  status: 'active', access: 'public', limit: '20', offset: '0'
}).toString();

const response = await fetch(url, {
  headers: { 'X-API-Key': token, Accept: 'application/json' },
  signal: AbortSignal.timeout(10000)
});

if (!response.ok) {
  throw new Error('API request failed: HTTP ' + response.status);
}

const data = await response.json();
console.log(data.numbers);
Python
# Python 3 standard library. Keep the token on your server.
import json
import os
from urllib.error import HTTPError, URLError
from urllib.parse import urlencode
from urllib.request import Request, urlopen

query = urlencode({
    'status': 'active', 'access': 'public', 'limit': 20, 'offset': 0
})
request = Request(
    'https://receive-smss.live/api/public/numbers?' + query,
    headers={
        'X-API-Key': os.environ['RECEIVE_SMS_API_TOKEN'],
        'Accept': 'application/json',
    },
)

try:
    with urlopen(request, timeout=10) as response:
        data = json.load(response)
    print(data['numbers'])
except HTTPError as error:
    raise RuntimeError('API request failed: HTTP ' + str(error.code)) from error
except URLError as error:
    raise RuntimeError('Could not reach the API') from error

Examples are for reference. This page does not send API requests or generate tokens.

03 / Authentication

Authenticate with your API token

Send the token issued by the site administration in the X-API-Key header. An API token is separate from your website password and login session.

Request headers
X-API-Key: YOUR_API_TOKEN
Accept: application/json

Clients that use a Bearer header can send the same token this way. This is an API key, not an OAuth access token. X-API-Key takes precedence if both headers are sent.

Alternative header
Authorization: Bearer YOUR_API_TOKEN

Keep your token in a server environment variable or secret store. Avoid browser code, mobile bundles, public repositories and query strings. Contact the administration if a token needs to be replaced.

04 / List numbers

List numbers and their status

Returns the matching number metadata, filtered totals and pagination information. All query parameters are optional. Combine filters to narrow the results.

GET/api/public/numbersJSON
ParameterValues / defaultDescription
statusall | active | inactiveDefault: all. Filter by the number’s enabled status.
accessall | public | membersDefault: all. Select public or members-only free inventory.
countryISO code or country slugFor example US. Use the country code or slug from the site.
appApp slugFor example whatsapp. Use the app’s configured slug.
limit1–2000 · default 500Maximum number of records returned in one response.
offsetInteger ≥ 0 · default 0Number of matching records to skip.

Unknown status or access values fall back to all. Numeric values are clamped to their supported range. A country or app with no matches returns an empty numbers array.

05 / Response format

Read the response

The example below uses fictional data. It illustrates the response structure, not the live inventory or an available phone number.

Example successful response200 OK
application/json · example data
{
  "success": true,
  "generatedAt": "2026-10-29T12:00:00.000Z",
  "filters": {
    "status": "active",
    "access": "public",
    "country": null,
    "app": null
  },
  "counts": {
    "total": 1,
    "active": 1,
    "inactive": 0,
    "returned": 1
  },
  "paging": {
    "limit": 20,
    "offset": 0,
    "hasMore": false
  },
  "numbers": [
    {
      "number": "+12025550123",
      "status": "active",
      "access": "public",
      "type": "mobile",
      "country": {
        "code": "US",
        "slug": "usa",
        "name": "United States",
        "nameAr": "الولايات المتحدة",
        "phoneCode": "+1"
      },
      "region": null,
      "apps": [
        "whatsapp"
      ],
      "receivedCount": 12,
      "lastMessageAt": "2026-10-29T11:58:00.000Z",
      "url": "https://receive-smss.live/sms/usa/12025550123",
      "addedAt": "2026-10-01T09:00:00.000Z",
      "updatedAt": "2026-10-29T11:58:00.000Z"
    }
  ]
}

success / generatedAt

Request result and the UTC time the response was generated.

filters

The status, access, country and app filters applied to the request.

counts

Totals for the full filtered set. returned is the number of records in this response. active + inactive equals total.

paging

The effective limit, offset and whether more matching records remain.

number / status / access / type

Phone number, active or inactive status, visibility and the configured line type (null if unset). Keep phone numbers as strings.

country / region / apps

Country details, an optional region (null when absent) and an array of app slugs. An app listing does not guarantee delivery.

receivedCount / lastMessageAt

Received-message count and the latest timestamp in the current message table. lastMessageAt can be null when no recent message remains.

url / addedAt / updatedAt

Canonical number-page URL and record timestamps. Use the returned url instead of building an inbox URL yourself.

06 / Pagination

Read the next page

Start with offset=0. If paging.hasMore is true, increase offset by counts.returned and keep the same filters. Stop when hasMore is false. The inventory can change between requests, so deduplicate by number when collecting multiple pages.

Pagination · JavaScript
// Keep the same filters and page size on every request.
// After each successful response:
if (data.paging.hasMore) {
  const nextOffset = data.paging.offset + data.counts.returned;
  // Use nextOffset as the offset parameter for the next page.
}

07 / Rate limits

Stay within the request limit

60requests / minute / IP

The limit is shared by requests from the same IP address. A 429 response includes Retry-After: 60. Wait before retrying and avoid parallel polling loops.

Successful responses can be cached for 30 seconds, with a stale-while-revalidate window of 60 seconds. Allow for this delay when showing availability. Repeated requests will not make incoming SMS arrive sooner.

08 / Errors

Handle errors by HTTP status

200

OK

Read the numbers array. An empty array is a valid result.

401

Unauthorized

The API token is missing or incorrect. Check the authentication header or contact the administration.

404

Unavailable

The feed is disabled or its required key is not configured. Contact the administration to confirm access.

429

Too many requests

Wait for the Retry-After interval before trying again.

500

Server error

Retry with increasing delays. Contact support if the failure persists.

401 · application/json
{
  "success": false,
  "error": "Invalid API key."
}

09 / Integration practices

Build a predictable integration

Run requests on your server

Keep credentials out of frontend code and return only the data your application needs.

Treat availability as a snapshot

Cache the latest successful response and display when it was fetched. Handle empty results and inactive numbers.

Use timeouts and backoff

Set a request timeout, respect Retry-After and space out retries after temporary failures.

Keep access boundaries intact

Number metadata does not grant inbox access. Follow the site’s terms and the access rules of each number.

Terms of service

10 / FAQ

Before you integrate

How do I get an API token?

Contact the site administration through the contact page. Describe your project and expected request volume so the team can review your access request.

Can I receive SMS messages or verification codes through this feed?

This feed returns number metadata and activity timestamps. It does not return SMS text or verification codes. Contact the administration to discuss requirements beyond this feed.

Can I send SMS, rent a number or change account data?

The documented feed is read-only. It does not send SMS, create rentals or change account data.

Does a website account include API access?

A website session is separate from API authentication. Request an API token from the site administration.

Is API access free, and is there a delivery guarantee?

Contact the administration for access terms and any pricing. This guide does not promise service-specific SMS delivery or a service-level agreement.

11 / Request access

Tell us what you’re building.

To request an API token, contact the site administration. Include a short project description, the data you need and your expected request volume. The team will confirm access terms and the appropriate next steps.

  • Project or website URL
  • Use case and required countries or apps
  • Expected requests per minute

API tokens are supplied by the administration. There is no self-service token generator on this page.