# Get pricing

> Retrieve per-country and per-network SMS rates via GET /user/pricing — MCC/MNC identifiers, current and previous rates, and rate-change tracking.
> Source: https://docs.23telecom.co.uk/account/pricing/

Instructions for LLMs: This is one page of the 23 Telecom messaging API docs
(SMS today; more channels planned). Base URL: https://restlink23telecom.com/api/v1,
auth via the X-API-Key header. Match errors on the error_code field, never on
description text. Full docs: https://docs.23telecom.co.uk/llms-full.txt · Schemas: https://docs.23telecom.co.uk/openapi.yaml

SMS rates per destination country and network.

`GET /api/v1/user/pricing` (permission: `pricing.read`)

## Request

```
GET https://restlink23telecom.com/api/v1/user/pricing
Header: X-API-Key: <your key>
```
*(The web page shows this example in cURL, Node.js, Python, PHP, Ruby, Java, Go and .NET.)*

## Response

An array of pricing entries — one per network:

```json title="200 OK (one entry shown)"
[
  {
    "mcc": "310",
    "mnc": "004",
    "mccmnc": "310004",
    "dialcode": "1",
    "country": "United States",
    "network": "Verizon Wireless",
    "rate": 0.0085,
    "prev_rate": 0.0080,
    "rate_start_date": "2026.01.08 22:15:29",
    "rate_end_date": "2100.01.01 00:00:00",
    "change_type": "Increase"
  }
]
```

| Field | Description |
| --- | --- |
| `mcc` / `mnc` / `mccmnc` | Mobile Country Code, Network Code and the combined identifier |
| `dialcode` | International dialing prefix |
| `country` / `network` | Human-readable names |
| `rate` | Current rate in your account currency |
| `prev_rate` | Previous rate, for change tracking |
| `rate_start_date` | When the current rate took effect (`YYYY.MM.DD HH:MM:SS`) |
| `rate_end_date` | Far-future sentinel (`2100.01.01`) while the rate is ongoing |
| `change_type` | `Same`, `Increase` or `Decrease` |

  Cache the pricing array and diff `change_type != "Same"` entries on each
  refresh — that gives you a rate-change feed per network for cost alerting.

## Notes

- `POST /user/pricing` returns identical data (kept for frontend
  compatibility; the request body is ignored).
- `GET /user/pricing/:id` is currently a stub returning `{}` — fetch the full
  list and filter client-side by `mccmnc`.
- During account setup the endpoint returns HTTP 200 with
  `{"status": false, "error": "Account is in setup process", …}`.
- Degraded-cache behavior matches [balance](/account/balance#degraded-state):
  an empty array `[]` plus `X-Sms-Gateway-Status: unavailable`.