Returning.AIDevelopers
v1

API reference / Community Analytics

.md

Get phone verification contacts

Page through the phone numbers your traders verified by SMS in your community, each with the trader's email.

Last updated 26 Sep 2026API v1

Method
GET
Path
https://api.returning.ai/v1/community-analytics/phone-verification-contacts
Permission
customerSuccess
Retries
Read-only; exact retries are safe

When to use this

  • Copy verified phone numbers into your CRM or marketing tool on a schedule.
  • Check which traders have completed phone verification in your community.
  • Match verified numbers to your own client records by email.

Authentication#

Header
Authorization: Bearer <API_KEY>
Permission
customerSuccessShown in the dashboard as “Customer Success”

Use a Community API key with customerSuccess, shown in the dashboard as Customer Success, and keep it on your server. The key decides the community, so you only see contacts from your own community and never send a communityId. A key without the permission gets 401, not 403. Personal API keys are rejected with 401.

Behaviour#

A trader appears here once they verify a phone number by SMS in your community. If they verify again with another number, the new number replaces the old one, so each trader has at most one contact. Contacts are returned in a fixed order, so you can page through all of them; read every page up to totalPages.

Every row is personal data. Responses are sent with Cache-Control: no-store, and you should store them with the same care as the rest of your client records.

Request#

Query parameters#

page#integerOPTIONAL
Page number, starting at 1.

RuleWhole number, 1 or more; default 1

Eg1

limit#integerOPTIONAL
Contacts per page.

RuleDefault 100; max 500

Eg100

Headers#

Authorization#stringREQUIRED
Community API key with customerSuccess.

RuleBearer <API_KEY>

curl --request GET \
  --url 'https://api.returning.ai/v1/community-analytics/phone-verification-contacts?page=1&limit=100' \
  --header 'Authorization: Bearer <API_KEY>'

Response#

A 200 returns the page in data.data and the totals in data.pagination. A community with no verified numbers returns 200 with an empty data.data and total 0, not 404.

status#stringALWAYS
Result of the request.

Rulesuccess

message#stringALWAYS
Human-readable summary. Do not branch on it.
data#objectALWAYS
This page of contacts and the paging totals.
data#object[]ALWAYS
One contact per verified phone record on this page. Empty when nothing matches or past the last page.
email#stringALWAYS
The trader's email, or null when the account has none.

Eg"trader@example.com"

phoneNumber#stringALWAYS
The verified phone number in international format, with the country code.

RuleE.164, such as +6581234567

Eg"+6581234567"

pagination#objectALWAYS
Paging totals for every contact in your community.
total#integerALWAYS
Contacts across all pages.
page#integerALWAYS
The page you asked for.
limit#integerALWAYS
The page size used.
totalPages#integerALWAYS
Pages at this limit. 0 when there are no contacts.
{
  "status": "success",
  "message": "Phone verification contacts fetched successfully",
  "data": {
    "data": [
      {
        "email": "trader@example.com",
        "phoneNumber": "+6581234567"
      }
    ],
    "pagination": {
      "total": 1,
      "page": 1,
      "limit": 100,
      "totalPages": 1
    }
  }
}

Errors#

Errors on this endpoint have no machine-readable code; branch on the HTTP status. A validation 400 lists each problem in details, as field and message. A 401 carries only message, or status and message.

Fix the request02

400Fix the request
A query value is invalid. Each entry in details names a field and says why: page must be a whole number of 1 or more, limit a whole number from 1 to 500, and query means an unknown parameter was sent. Only page and limit are accepted; communityId is rejected.
401Fix the request
The key is missing (Invalid token), unknown (Invalid API key) or expired, it's a personal key, or it lacks customerSuccess (Your api key does not have permission to access this action). Send Authorization: Bearer <API_KEY> with a Community API key, and add Customer Success in Settings > Integration > API Keys.

Retry with backoff02

429Retry with backoff
Your community has a rate limit for these analytics endpoints, and this caller has used it up for the current window. Wait until the window resets, as shown in the RateLimit header, then retry.
500Retry with backoff
The contacts could not be read, or the key could not be checked (Authentication failed). Retry the same request with exponential backoff.
{
  "status": "fail",
  "message": "Validation error",
  "details": [
    {
      "field": "query",
      "message": "Unknown query parameter"
    }
  ]
}

Next step#

Look up the trader behind a contact with Get User DataPOST/v1/users/infoUse the contact's email to read the trader's profile and platform user ID.