MENU navbar-image

Introduction

REST API documentation.

Use this API to manage account balance, rents, number actions, and refunds.

Authentication for protected endpoints is done via `Authorization: Bearer {token}` header.
You can generate token in your profile page after enabling API access.

Authenticating requests

To authenticate requests, include an Authorization header with the value "Bearer {YOUR_API_TOKEN}".

All authenticated endpoints are marked with a requires authentication badge in the documentation below.

Enable API access, then click Generate Token.

API

GotSMS API methods.

Pricelist

Get public pricelist

Example request:
curl --request GET \
    --get "https://app.gotsms.org/api/pricelist" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://app.gotsms.org/api/pricelist"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'https://app.gotsms.org/api/pricelist';
$response = $client->get(
    $url,
    [
        'headers' => [
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "success": true,
    "data": [
        {
            "id": "9b1f8c3e-1c2a-4f5b-8d7e-0a1b2c3d4e5f",
            "name": "Telegram",
            "slug": "telegram",
            "plans": [
                {
                    "service_name": "Telegram",
                    "period": 1,
                    "period_type": "day",
                    "period_type_label": "day",
                    "duration_translation": "1 day",
                    "price": 1,
                    "renew_price": 1,
                    "country": "USA",
                    "billing_type": "duration"
                }
            ]
        },
        {
            "id": "2c7d9a41-5e6f-4a8b-9c0d-1e2f3a4b5c6d",
            "name": "WhatsApp",
            "slug": "whatsapp",
            "plans": [
                {
                    "service_name": "WhatsApp",
                    "period": 1,
                    "period_type": "month",
                    "period_type_label": "month",
                    "duration_translation": "1 month",
                    "price": 4.99,
                    "renew_price": 4.99,
                    "country": "USA",
                    "billing_type": "duration"
                }
            ]
        }
    ]
}
 

Request   

GET api/pricelist

Headers

Content-Type        

application/json

Accept        

application/json

Rents

List cellular carriers

Example request:
curl --request GET \
    --get "https://app.gotsms.org/api/carriers" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://app.gotsms.org/api/carriers"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'https://app.gotsms.org/api/carriers';
$response = $client->get(
    $url,
    [
        'headers' => [
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "success": true,
    "data": [
        {
            "id": "uuid",
            "name": "T-Mobile"
        }
    ]
}
 

Request      

GET api/carriers

Headers

Content-Type        

application/json

Accept        

application/json

Get available rent plans

requires authentication

Example request:
curl --request GET \
    --get "https://app.gotsms.org/api/rents/plans" \
    --header "Authorization: Bearer {YOUR_API_TOKEN}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://app.gotsms.org/api/rents/plans"
);

const headers = {
    "Authorization": "Bearer {YOUR_API_TOKEN}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'https://app.gotsms.org/api/rents/plans';
$response = $client->get(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer {YOUR_API_TOKEN}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "success": true,
    "data": [
        {
            "id": "uuid",
            "service": {
                "id": "uuid",
                "name": "Telegram"
            },
            "country": {
                "id": "uuid",
                "name": "USA"
            },
            "billing_type": "duration",
            "duration_type": "day",
            "duration_in_type": 1,
            "duration_in_minutes": 1440,
            "duration_translation": "1 day",
            "price": 1,
            "renew_price": 1,
            "is_monthly_supported": false
        }
    ],
    "meta": {
        "current_page": 1,
        "last_page": 1,
        "per_page": 25,
        "total": 1
    }
}
 

Request      

GET api/rents/plans

Headers

Authorization        

Bearer {YOUR_API_TOKEN}

Content-Type        

application/json

Accept        

application/json

Query Parameters

service_id   string  optional    

Filter by service UUID.

country_id   string  optional    

Filter by country UUID.

duration_type   string  optional    

Filter by duration type.

Must be one of:
  • min
  • hour
  • day
  • week
  • month
  • year
billing_type   string  optional    

Filter by billing type.

Must be one of:
  • sms
  • duration
search   string  optional    

Search in service name.

per_page   integer  optional    

Pagination size (max 100).

List user rents

requires authentication

Example request:
curl --request GET \
    --get "https://app.gotsms.org/api/rents" \
    --header "Authorization: Bearer {YOUR_API_TOKEN}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://app.gotsms.org/api/rents"
);

const headers = {
    "Authorization": "Bearer {YOUR_API_TOKEN}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'https://app.gotsms.org/api/rents';
$response = $client->get(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer {YOUR_API_TOKEN}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "success": true,
    "data": [
        {
            "id": "uuid",
            "service": {
                "id": "uuid",
                "name": "Telegram"
            },
            "plan": {
                "id": "uuid",
                "billing_type": "duration",
                "duration_type": "day",
                "duration_in_type": 1,
                "duration_translation": "1 day",
                "price": 1,
                "renew_price": 1
            },
            "phone": "+1 800 123 4567",
            "price": 1,
            "status": "active",
            "is_included_for_next_renewal": false,
            "active_from": "2026-03-11T12:00:00+00:00",
            "active_till": "2026-03-12T12:00:00+00:00",
            "wake_from": null,
            "wake_till": null,
            "can_wake_up": true,
            "notes": "Call customer after activation",
            "transition_options": []
        }
    ],
    "meta": {
        "current_page": 1,
        "last_page": 1,
        "per_page": 20,
        "total": 1
    }
}
 

Request      

GET api/rents

Headers

Authorization        

Bearer {YOUR_API_TOKEN}

Content-Type        

application/json

Accept        

application/json

Query Parameters

status   string  optional    

Filter by status.

Must be one of:
  • active
  • finished
service   string  optional    

Service name search.

phone   string  optional    

Phone search.

per_page   integer  optional    

Pagination size (max 100).

Create new rent

requires authentication

Example request:
curl --request POST \
    "https://app.gotsms.org/api/rents" \
    --header "Authorization: Bearer {YOUR_API_TOKEN}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"plan_id\": null
}"
const url = new URL(
    "https://app.gotsms.org/api/rents"
);

const headers = {
    "Authorization": "Bearer {YOUR_API_TOKEN}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "plan_id": null
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'https://app.gotsms.org/api/rents';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer {YOUR_API_TOKEN}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
        'json' => [
            'plan_id' => null,
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (201):


{
    "success": true,
    "message": "Rent created successfully.",
    "data": {
        "id": "uuid",
        "service": {
            "id": "uuid",
            "name": "Telegram"
        },
        "plan": {
            "id": "uuid",
            "billing_type": "duration",
            "duration_type": "day",
            "duration_in_type": 1,
            "duration_translation": "1 day",
            "price": 1,
            "renew_price": 1
        },
        "phone": "+1 800 123 4567",
        "price": 1,
        "status": "active",
        "is_included_for_next_renewal": false,
        "active_from": "2026-03-11T12:00:00+00:00",
        "active_till": "2026-03-12T12:00:00+00:00",
        "wake_from": null,
        "wake_till": null,
        "can_wake_up": true,
        "notes": null,
        "transition_options": []
    }
}
 

Request      

POST api/rents

Headers

Authorization        

Bearer {YOUR_API_TOKEN}

Content-Type        

application/json

Accept        

application/json

Body Parameters

plan_id   string     

Plan UUID to rent.

area_code   string  optional    

Preferred area code.

cellular_carrier_id   string  optional    

Preferred cellular carrier UUID (see GET /api/carriers).

Transition rent to a longer plan

requires authentication

Example request:
curl --request POST \
    "https://app.gotsms.org/api/rents/9d3f8f6a-1b2c-4d5e-8f90-1a2b3c4d5e6f/transition" \
    --header "Authorization: Bearer {YOUR_API_TOKEN}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"plan_id\": null
}"
const url = new URL(
    "https://app.gotsms.org/api/rents/9d3f8f6a-1b2c-4d5e-8f90-1a2b3c4d5e6f/transition"
);

const headers = {
    "Authorization": "Bearer {YOUR_API_TOKEN}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "plan_id": null
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'https://app.gotsms.org/api/rents/9d3f8f6a-1b2c-4d5e-8f90-1a2b3c4d5e6f/transition';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer {YOUR_API_TOKEN}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
        'json' => [
            'plan_id' => null,
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "success": true,
    "message": "Plan transitioned successfully.",
    "data": {
        "id": "uuid",
        "status": "active"
    }
}
 

Example response (422):


{
    "success": false,
    "message": "Current rent plan must be daily for this transition endpoint."
}
 

Request      

POST api/rents/{rent_id}/transition

Headers

Authorization        

Bearer {YOUR_API_TOKEN}

Content-Type        

application/json

Accept        

application/json

URL Parameters

rent_id   string     

Rent UUID. Example: 9d3f8f6a-1b2c-4d5e-8f90-1a2b3c4d5e6f

Body Parameters

plan_id   string     

Target plan UUID (1/3/6/12 months).

Toggle auto renewal

requires authentication

Auto renewal can be toggled for all plans.

Example request:
curl --request POST \
    "https://app.gotsms.org/api/rents/9d3f8f6a-1b2c-4d5e-8f90-1a2b3c4d5e6f/renewal/toggle" \
    --header "Authorization: Bearer {YOUR_API_TOKEN}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://app.gotsms.org/api/rents/9d3f8f6a-1b2c-4d5e-8f90-1a2b3c4d5e6f/renewal/toggle"
);

const headers = {
    "Authorization": "Bearer {YOUR_API_TOKEN}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "POST",
    headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'https://app.gotsms.org/api/rents/9d3f8f6a-1b2c-4d5e-8f90-1a2b3c4d5e6f/renewal/toggle';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer {YOUR_API_TOKEN}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "success": true,
    "message": "Auto renewal enabled.",
    "data": {
        "id": "uuid",
        "is_included_for_next_renewal": true
    }
}
 

Example response (422):


{
    "success": false,
    "message": "Failed to toggle auto renewal."
}
 

Request      

POST api/rents/{rent_id}/renewal/toggle

Headers

Authorization        

Bearer {YOUR_API_TOKEN}

Content-Type        

application/json

Accept        

application/json

URL Parameters

rent_id   string     

Rent UUID. Example: 9d3f8f6a-1b2c-4d5e-8f90-1a2b3c4d5e6f

Refund rent

requires authentication

Example request:
curl --request POST \
    "https://app.gotsms.org/api/rents/9d3f8f6a-1b2c-4d5e-8f90-1a2b3c4d5e6f/refund" \
    --header "Authorization: Bearer {YOUR_API_TOKEN}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://app.gotsms.org/api/rents/9d3f8f6a-1b2c-4d5e-8f90-1a2b3c4d5e6f/refund"
);

const headers = {
    "Authorization": "Bearer {YOUR_API_TOKEN}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "POST",
    headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'https://app.gotsms.org/api/rents/9d3f8f6a-1b2c-4d5e-8f90-1a2b3c4d5e6f/refund';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer {YOUR_API_TOKEN}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "success": true,
    "message": "Rent has been refunded successfully.",
    "data": {
        "id": "uuid",
        "status": "finished"
    }
}
 

Example response (422):


{
    "success": false,
    "message": "Refund not available for this rent."
}
 

Request      

POST api/rents/{rent_id}/refund

Headers

Authorization        

Bearer {YOUR_API_TOKEN}

Content-Type        

application/json

Accept        

application/json

URL Parameters

rent_id   string     

Rent UUID. Example: 9d3f8f6a-1b2c-4d5e-8f90-1a2b3c4d5e6f

Account

Get account balance

requires authentication

Example request:
curl --request GET \
    --get "https://app.gotsms.org/api/account" \
    --header "Authorization: Bearer {YOUR_API_TOKEN}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://app.gotsms.org/api/account"
);

const headers = {
    "Authorization": "Bearer {YOUR_API_TOKEN}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'https://app.gotsms.org/api/account';
$response = $client->get(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer {YOUR_API_TOKEN}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "success": true,
    "data": {
        "balance": 125.5
    }
}
 

Request      

GET api/account

Headers

Authorization        

Bearer {YOUR_API_TOKEN}

Content-Type        

application/json

Accept        

application/json

Services

Get available services

requires authentication

Example request:
curl --request GET \
    --get "https://app.gotsms.org/api/services" \
    --header "Authorization: Bearer {YOUR_API_TOKEN}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://app.gotsms.org/api/services"
);

const headers = {
    "Authorization": "Bearer {YOUR_API_TOKEN}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'https://app.gotsms.org/api/services';
$response = $client->get(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer {YOUR_API_TOKEN}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "success": true,
    "data": [
        {
            "id": "uuid",
            "name": "Telegram"
        }
    ],
    "meta": {
        "current_page": 1,
        "last_page": 1,
        "per_page": 25,
        "total": 1
    }
}
 

Request      

GET api/services

Headers

Authorization        

Bearer {YOUR_API_TOKEN}

Content-Type        

application/json

Accept        

application/json

Query Parameters

search   string  optional    

Search in service name.

per_page   integer  optional    

Pagination size (max 100).

Messages

List all SMS messages across all rents

requires authentication

Example request:
curl --request GET \
    --get "https://app.gotsms.org/api/messages" \
    --header "Authorization: Bearer {YOUR_API_TOKEN}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://app.gotsms.org/api/messages"
);

const headers = {
    "Authorization": "Bearer {YOUR_API_TOKEN}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'https://app.gotsms.org/api/messages';
$response = $client->get(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer {YOUR_API_TOKEN}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "success": true,
    "data": [
        {
            "id": "uuid",
            "rent_id": "uuid",
            "service": {
                "id": "uuid",
                "name": "Telegram"
            },
            "phone": "+1 800 123 4567",
            "from": "+18001234567",
            "to": "+18009876543",
            "body": "Your verification code is 123456",
            "code": "123456",
            "received_at": "2026-03-11T12:00:00+00:00"
        }
    ],
    "meta": {
        "current_page": 1,
        "last_page": 1,
        "per_page": 20,
        "total": 1
    }
}
 

Request      

GET api/messages

Headers

Authorization        

Bearer {YOUR_API_TOKEN}

Content-Type        

application/json

Accept        

application/json

Query Parameters

service_id   string  optional    

Filter by service UUID. Значение поля value должно быть корректным UUID.

phone   string  optional    

Phone search. Количество символов в значении поля value не может превышать 32.

per_page   integer  optional    

Pagination size (max 100). Значение поля value должно быть не меньше 1. Значение поля value не может быть больше 100.

List unread SMS messages

requires authentication

Example request:
curl --request GET \
    --get "https://app.gotsms.org/api/messages/unread" \
    --header "Authorization: Bearer {YOUR_API_TOKEN}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://app.gotsms.org/api/messages/unread"
);

const headers = {
    "Authorization": "Bearer {YOUR_API_TOKEN}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'https://app.gotsms.org/api/messages/unread';
$response = $client->get(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer {YOUR_API_TOKEN}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "success": true,
    "data": [
        {
            "id": "uuid",
            "rent_id": "uuid",
            "service": {
                "id": "uuid",
                "name": "Telegram"
            },
            "phone": "+1 800 123 4567",
            "from": "+18001234567",
            "to": "+18009876543",
            "body": "Your verification code is 123456",
            "code": "123456",
            "received_at": "2026-03-11T12:00:00+00:00"
        }
    ],
    "meta": {
        "current_page": 1,
        "last_page": 1,
        "per_page": 20,
        "total": 1
    }
}
 

Request      

GET api/messages/unread

Headers

Authorization        

Bearer {YOUR_API_TOKEN}

Content-Type        

application/json

Accept        

application/json

Query Parameters

service_id   string  optional    

Filter by service UUID.

rent_id   string  optional    

Filter by rent UUID.

phone   string  optional    

Phone search.

per_page   integer  optional    

Pagination size (max 100).

mark_as_read   boolean  optional    

Mark returned messages as read.

Numbers

Wake up a rented number

requires authentication

Example request:
curl --request POST \
    "https://app.gotsms.org/api/numbers/9d3f8f6a-1b2c-4d5e-8f90-1a2b3c4d5e6f/wake-up" \
    --header "Authorization: Bearer {YOUR_API_TOKEN}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://app.gotsms.org/api/numbers/9d3f8f6a-1b2c-4d5e-8f90-1a2b3c4d5e6f/wake-up"
);

const headers = {
    "Authorization": "Bearer {YOUR_API_TOKEN}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "POST",
    headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'https://app.gotsms.org/api/numbers/9d3f8f6a-1b2c-4d5e-8f90-1a2b3c4d5e6f/wake-up';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer {YOUR_API_TOKEN}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "success": true,
    "message": "Wake up request sent."
}
 

Request      

POST api/numbers/{rent_id}/wake-up

Headers

Authorization        

Bearer {YOUR_API_TOKEN}

Content-Type        

application/json

Accept        

application/json

URL Parameters

rent_id   string     

Rent UUID. Example: 9d3f8f6a-1b2c-4d5e-8f90-1a2b3c4d5e6f

Get SMS messages for a rent

requires authentication

Example request:
curl --request GET \
    --get "https://app.gotsms.org/api/numbers/9d3f8f6a-1b2c-4d5e-8f90-1a2b3c4d5e6f/messages" \
    --header "Authorization: Bearer {YOUR_API_TOKEN}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://app.gotsms.org/api/numbers/9d3f8f6a-1b2c-4d5e-8f90-1a2b3c4d5e6f/messages"
);

const headers = {
    "Authorization": "Bearer {YOUR_API_TOKEN}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'https://app.gotsms.org/api/numbers/9d3f8f6a-1b2c-4d5e-8f90-1a2b3c4d5e6f/messages';
$response = $client->get(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer {YOUR_API_TOKEN}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "success": true,
    "data": [
        {
            "id": "uuid",
            "from": "+18001234567",
            "to": "+18009876543",
            "body": "Your verification code is 123456",
            "code": "123456",
            "received_at": "2026-03-11T12:00:00+00:00"
        }
    ],
    "meta": {
        "next_before_id": "uuid",
        "count": 1
    }
}
 

Request      

GET api/numbers/{rent_id}/messages

Headers

Authorization        

Bearer {YOUR_API_TOKEN}

Content-Type        

application/json

Accept        

application/json

URL Parameters

rent_id   string     

Rent UUID. Example: 9d3f8f6a-1b2c-4d5e-8f90-1a2b3c4d5e6f

Query Parameters

limit   integer  optional    

Number of records (max 100).

before_id   string  optional    

Fetch messages with id less than this UUID.

Get notes for a rented number

requires authentication

Example request:
curl --request GET \
    --get "https://app.gotsms.org/api/numbers/9d3f8f6a-1b2c-4d5e-8f90-1a2b3c4d5e6f/notes" \
    --header "Authorization: Bearer {YOUR_API_TOKEN}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://app.gotsms.org/api/numbers/9d3f8f6a-1b2c-4d5e-8f90-1a2b3c4d5e6f/notes"
);

const headers = {
    "Authorization": "Bearer {YOUR_API_TOKEN}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'https://app.gotsms.org/api/numbers/9d3f8f6a-1b2c-4d5e-8f90-1a2b3c4d5e6f/notes';
$response = $client->get(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer {YOUR_API_TOKEN}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "success": true,
    "data": {
        "rent_id": "uuid",
        "notes": "Call customer after activation"
    }
}
 

Request      

GET api/numbers/{rent_id}/notes

Headers

Authorization        

Bearer {YOUR_API_TOKEN}

Content-Type        

application/json

Accept        

application/json

URL Parameters

rent_id   string     

Rent UUID. Example: 9d3f8f6a-1b2c-4d5e-8f90-1a2b3c4d5e6f

Update notes for a rented number

requires authentication

Replaces the current note. Notes are plain text, limited to 1000 characters, and may be cleared by sending null.

Example request:
curl --request PUT \
    "https://app.gotsms.org/api/numbers/9d3f8f6a-1b2c-4d5e-8f90-1a2b3c4d5e6f/notes" \
    --header "Authorization: Bearer {YOUR_API_TOKEN}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"notes\": \"Call customer after activation\"
}"
const url = new URL(
    "https://app.gotsms.org/api/numbers/9d3f8f6a-1b2c-4d5e-8f90-1a2b3c4d5e6f/notes"
);

const headers = {
    "Authorization": "Bearer {YOUR_API_TOKEN}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "notes": "Call customer after activation"
};

fetch(url, {
    method: "PUT",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'https://app.gotsms.org/api/numbers/9d3f8f6a-1b2c-4d5e-8f90-1a2b3c4d5e6f/notes';
$response = $client->put(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer {YOUR_API_TOKEN}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
        'json' => [
            'notes' => 'Call customer after activation',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "success": true,
    "message": "Notes updated successfully.",
    "data": {
        "rent_id": "uuid",
        "notes": "Call customer after activation"
    }
}
 

Example response (422, Validation failed):


{
    "message": "The notes field must contain plain text only. HTML is not allowed.",
    "errors": {
        "notes": [
            "The notes field must contain plain text only. HTML is not allowed."
        ]
    }
}
 

Request      

PUT api/numbers/{rent_id}/notes

Headers

Authorization        

Bearer {YOUR_API_TOKEN}

Content-Type        

application/json

Accept        

application/json

URL Parameters

rent_id   string     

Rent UUID. Example: 9d3f8f6a-1b2c-4d5e-8f90-1a2b3c4d5e6f

Body Parameters

notes   string     

Plain-text note. HTML is rejected. Send null to clear the note. Example: Call customer after activation

Get number queue/wakeup/online status

requires authentication

Example request:
curl --request GET \
    --get "https://app.gotsms.org/api/numbers/9d3f8f6a-1b2c-4d5e-8f90-1a2b3c4d5e6f/status" \
    --header "Authorization: Bearer {YOUR_API_TOKEN}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://app.gotsms.org/api/numbers/9d3f8f6a-1b2c-4d5e-8f90-1a2b3c4d5e6f/status"
);

const headers = {
    "Authorization": "Bearer {YOUR_API_TOKEN}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'https://app.gotsms.org/api/numbers/9d3f8f6a-1b2c-4d5e-8f90-1a2b3c4d5e6f/status';
$response = $client->get(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer {YOUR_API_TOKEN}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "success": true,
    "data": {
        "rent_id": "uuid",
        "status": "active",
        "active_from": "2026-03-11T12:00:00+00:00",
        "active_till": "2026-03-12T12:00:00+00:00",
        "wake_from": "2026-03-11T12:00:00+00:00",
        "wake_till": "2026-03-11T12:05:00+00:00",
        "online_till": "2026-03-11T12:35:00+00:00",
        "wakeup_time_left_seconds": 120,
        "online_time_left_seconds": 1800,
        "can_wake_up": false
    }
}
 

Request      

GET api/numbers/{rent_id}/status

Headers

Authorization        

Bearer {YOUR_API_TOKEN}

Content-Type        

application/json

Accept        

application/json

URL Parameters

rent_id   string     

Rent UUID. Example: 9d3f8f6a-1b2c-4d5e-8f90-1a2b3c4d5e6f