> This page is for Developers.

> For clean Markdown of any page, append .md to the page URL.
> For a complete documentation index, see https://docs.emnify.com/llms.txt.
> For AI client integration (Claude Code, Cursor, etc.), connect to the MCP server at https://docs.emnify.com/_mcp/server.

# Tariff profile details

GET https://cdn.emnify.net/api/v1/tariff_profile/{tariff_profile_id}

Required permissions Beta [Learn more](/developers/api-guidelines/permissions#how-permissions-work)`TariffProfile` + `Get`Roles: Administrator User ObserverReturns tariff profile specified by id. This tariff profile also contains information about the currently valid ratezones of the tariff in the tariff profile and if the ratezone is selected in the tariff profile.
It also contains applied custom rates for the included tariffs.

Reference: https://docs.emnify.com/developers/api/tariff-profiles/tariff-profile-by-id-get

## Authentication

- `Authorization` header (bearer token, required) — An `auth_token` should be provided to authenticate a session. To obtain an `auth_token`, see the [`/api/v1/authenticate` **POST** request](/developers/api/authentication/authenticate).

## Request

### Path parameters

- `tariff_profile_id` (double, required) — The numeric ID of a Tariff Profile

## Response

### 200

OK

- `id` (double, optional)
- `name` (string, optional)
- `description` (string, optional)
- `used_count` (string, optional)
- `organisation_id` (string, optional)
- `tariff` (ApiV1TariffProfileTariffProfileIdGetResponsesContentApplicationJsonSchemaTariff, optional)
- `inclusive_volume` (ApiV1TariffProfileTariffProfileIdGetResponsesContentApplicationJsonSchemaInclusiveVolume, optional) — If there is an inclusive volume assigned to the tariff profile, the details will be returned within this object

## Errors

### 403 Forbidden Error

Your role doesn't include the permission this endpoint requires. Most endpoints return `error_code`, `error_token`, and `message`. Some return only `status_code` and `message`.

- `error_code` (integer, optional)
- `error_token` (string, optional)
- `status_code` (integer, optional)
- `message` (string, optional)

## Types

### ApiV1TariffProfileTariffProfileIdGetResponsesContentApplicationJsonSchemaTariff

- `id` (double, optional)
- `organisation_id` (string, optional)
- `name` (string, optional)
- `description` (string, optional)
- `created` (string, optional)
- `tariff_status_id` (string, optional)
- `currency_id` (string, optional)
- `default_sms_mt_rate` (double, optional)
- `default_sms_mo_rate` (double, optional)
- `sim_issued_rate` (double, optional)
- `sim_activated_rate` (double, optional)
- `sim_suspended_rate` (double, optional)
- `sim_activation_rate` (double, optional)
- `sim_reactivation_rate` (double, optional)
- `sim_suspension_rate` (double, optional)
- `sim_termination_rate` (double, optional)
- `data_throttle_id` (string, optional)
- `data_blocksize_id` (string, optional)
- `public` (string, optional)
- `tariff_category_id` (string, optional)
- `visibility_id` (string, optional)
- `tariff_currency_category_id` (string, optional)
- `used_count` (string, optional)
- `assigned_count` (string, optional)
- `currency` (ApiV1TariffProfileTariffProfileIdGetResponsesContentApplicationJsonSchemaTariffCurrency, optional)

### ApiV1TariffProfileTariffProfileIdGetResponsesContentApplicationJsonSchemaInclusiveVolume

If there is an inclusive volume assigned to the tariff profile, the details will be returned within this object

- `id` (double, optional)
- `volume` (double, optional)
- `rate` (double, optional)
- `pooled` (boolean, optional)
- `start_date` (string, optional)
- `end_date` (string, optional)
- `ratezone` (ApiV1TariffProfileTariffProfileIdGetResponsesContentApplicationJsonSchemaInclusiveVolumeRatezone, optional)
- `currency` (ApiV1TariffProfileTariffProfileIdGetResponsesContentApplicationJsonSchemaInclusiveVolumeCurrency, optional)

### ApiV1TariffProfileTariffProfileIdGetResponsesContentApplicationJsonSchemaTariffCurrency

- `id` (ApiV1TariffProfileTariffProfileIdGetResponsesContentApplicationJsonSchemaTariffCurrencyId, optional)
- `code` (string, optional)
- `symbol` (string, optional)

### ApiV1TariffProfileTariffProfileIdGetResponsesContentApplicationJsonSchemaInclusiveVolumeRatezone

- `id` (double, optional)
- `name` (string, optional)

### ApiV1TariffProfileTariffProfileIdGetResponsesContentApplicationJsonSchemaInclusiveVolumeCurrency

- `id` (double, optional)
- `code` (string, optional)
- `symbol` (string, optional)

### ApiV1TariffProfileTariffProfileIdGetResponsesContentApplicationJsonSchemaTariffCurrencyId

## Examples

**Response**

```json
{
  "id": 17,
  "name": "Spanien",
  "description": "Spanien",
  "used_count": "1",
  "organisation_id": "44",
  "tariff": {
    "id": 54,
    "organisation_id": "2",
    "name": "Professional",
    "description": "Tariff Plan Professional",
    "created": "2015-06-17T15:19:37.000Z",
    "tariff_status_id": "1",
    "currency_id": "1",
    "default_sms_mt_rate": 0,
    "default_sms_mo_rate": 0,
    "sim_issued_rate": 0,
    "sim_activated_rate": 0,
    "sim_suspended_rate": 0,
    "sim_activation_rate": 5,
    "sim_reactivation_rate": 0,
    "sim_suspension_rate": 0,
    "sim_termination_rate": 0,
    "data_blocksize_id": "11",
    "public": "0",
    "visibility_id": "2",
    "used_count": "41",
    "assigned_count": "24",
    "currency": {
      "id": 1,
      "code": "EUR",
      "symbol": "€"
    }
  },
  "inclusive_volume": {
    "id": 3308,
    "volume": 3,
    "rate": 3,
    "pooled": true,
    "start_date": "2030-01-01T00:00:00.000Z",
    "ratezone": {
      "id": 73,
      "name": "Afrika"
    },
    "currency": {
      "id": 1,
      "code": "EUR",
      "symbol": "€"
    }
  }
}
```

**SDK Code**

```python View single tariff profile
import requests

url = "https://cdn.emnify.net/api/v1/tariff_profile/1.1"

headers = {"Authorization": "Bearer <token>"}

response = requests.get(url, headers=headers)

print(response.json())
```

```javascript View single tariff profile
const url = 'https://cdn.emnify.net/api/v1/tariff_profile/1.1';
const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};

try {
  const response = await fetch(url, options);
  const data = await response.json();
  console.log(data);
} catch (error) {
  console.error(error);
}
```

```go View single tariff profile
package main

import (
	"fmt"
	"net/http"
	"io"
)

func main() {

	url := "https://cdn.emnify.net/api/v1/tariff_profile/1.1"

	req, _ := http.NewRequest("GET", url, nil)

	req.Header.Add("Authorization", "Bearer <token>")

	res, _ := http.DefaultClient.Do(req)

	defer res.Body.Close()
	body, _ := io.ReadAll(res.Body)

	fmt.Println(res)
	fmt.Println(string(body))

}
```

```ruby View single tariff profile
require 'uri'
require 'net/http'

url = URI("https://cdn.emnify.net/api/v1/tariff_profile/1.1")

http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true

request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'

response = http.request(request)
puts response.read_body
```

```java View single tariff profile
import com.mashape.unirest.http.HttpResponse;
import com.mashape.unirest.http.Unirest;

HttpResponse<String> response = Unirest.get("https://cdn.emnify.net/api/v1/tariff_profile/1.1")
  .header("Authorization", "Bearer <token>")
  .asString();
```

```php View single tariff profile
<?php
require_once('vendor/autoload.php');

$client = new \GuzzleHttp\Client();

$response = $client->request('GET', 'https://cdn.emnify.net/api/v1/tariff_profile/1.1', [
  'headers' => [
    'Authorization' => 'Bearer <token>',
  ],
]);

echo $response->getBody();
```

```csharp View single tariff profile
using RestSharp;

var client = new RestClient("https://cdn.emnify.net/api/v1/tariff_profile/1.1");
var request = new RestRequest(Method.GET);
request.AddHeader("Authorization", "Bearer <token>");
IRestResponse response = client.Execute(request);
```

```swift View single tariff profile
import Foundation

let headers = ["Authorization": "Bearer <token>"]

let request = NSMutableURLRequest(url: NSURL(string: "https://cdn.emnify.net/api/v1/tariff_profile/1.1")! as URL,
                                        cachePolicy: .useProtocolCachePolicy,
                                    timeoutInterval: 10.0)
request.httpMethod = "GET"
request.allHTTPHeaderFields = headers

let session = URLSession.shared
let dataTask = session.dataTask(with: request as URLRequest, completionHandler: { (data, response, error) -> Void in
  if (error != nil) {
    print(error as Any)
  } else {
    let httpResponse = response as? HTTPURLResponse
    print(httpResponse)
  }
})

dataTask.resume()
```