---
title: Retrieve OATH token by ID
description: "This example uses the oathTokens endpoint to retrieve the details of a single OATH token by including the OATH token ID in the URL: {{apiPathTest}}/environments/{{envID}}/oathTokens/{{oathTokenID}}."
component: pingone-api
page_id: pingone-api:mfa:oath-tokens/get_oath_token_by_id
canonical_url: https://developer.pingidentity.com/pingone-api/mfa/oath-tokens/get_oath_token_by_id.html
section_ids:
  headers: Headers
  example-request: Example Request
  example-response: Example Response
---

# Retrieve OATH token by ID

##

```none
GET {{apiPath}}/v1/environments/{{envID}}/oathTokens/{{oathTokenID}}
```

This example uses the `oathTokens` endpoint to retrieve the details of a single OATH token by including the OATH token ID in the URL: `{{apiPathTest}}/environments/{{envID}}/oathTokens/{{oathTokenID}}`.

The ID to include in the URL is the value that was returned in the `id` field of the response when the OATH token was created.

The response includes the basic information for the OATH token such as serial number and OTP length as well as TOTP-specific and HOTP-specific information such as time step and counter.

### Headers

Authorization      Bearer {{accessToken}}

##

### Example Request

* cURL

* C#

* Go

* HTTP

* Java

* jQuery

* NodeJS

* Python

* PHP

* Ruby

* Swift

```shell
curl --location --globoff '{{apiPath}}/v1/environments/{{envID}}/oathTokens/{{oathTokenID}}' \
--header 'Authorization: Bearer {{accessToken}}'
```

```csharp
var options = new RestClientOptions("{{apiPath}}/v1/environments/{{envID}}/oathTokens/{{oathTokenID}}")
{
  MaxTimeout = -1,
};
var client = new RestClient(options);
var request = new RestRequest("", Method.Get);
request.AddHeader("Authorization", "Bearer {{accessToken}}");
RestResponse response = await client.ExecuteAsync(request);
Console.WriteLine(response.Content);
```

```golang
package main

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

func main() {

  url := "{{apiPath}}/v1/environments/{{envID}}/oathTokens/{{oathTokenID}}"
  method := "GET"

  client := &http.Client {
  }
  req, err := http.NewRequest(method, url, nil)

  if err != nil {
    fmt.Println(err)
    return
  }
  req.Header.Add("Authorization", "Bearer {{accessToken}}")

  res, err := client.Do(req)
  if err != nil {
    fmt.Println(err)
    return
  }
  defer res.Body.Close()

  body, err := io.ReadAll(res.Body)
  if err != nil {
    fmt.Println(err)
    return
  }
  fmt.Println(string(body))
}
```

```http
GET /v1/environments/{{envID}}/oathTokens/{{oathTokenID}} HTTP/1.1
Host: {{apiPath}}
Authorization: Bearer {{accessToken}}
```

```java
OkHttpClient client = new OkHttpClient().newBuilder()
  .build();
MediaType mediaType = MediaType.parse("text/plain");
RequestBody body = RequestBody.create(mediaType, "");
Request request = new Request.Builder()
  .url("{{apiPath}}/v1/environments/{{envID}}/oathTokens/{{oathTokenID}}")
  .method("GET", body)
  .addHeader("Authorization", "Bearer {{accessToken}}")
  .build();
Response response = client.newCall(request).execute();
```

```javascript
var settings = {
  "url": "{{apiPath}}/v1/environments/{{envID}}/oathTokens/{{oathTokenID}}",
  "method": "GET",
  "timeout": 0,
  "headers": {
    "Authorization": "Bearer {{accessToken}}"
  },
};

$.ajax(settings).done(function (response) {
  console.log(response);
});
```

```javascript
var request = require('request');
var options = {
  'method': 'GET',
  'url': '{{apiPath}}/v1/environments/{{envID}}/oathTokens/{{oathTokenID}}',
  'headers': {
    'Authorization': 'Bearer {{accessToken}}'
  }
};
request(options, function (error, response) {
  if (error) throw new Error(error);
  console.log(response.body);
});
```

```python
import requests

url = "{{apiPath}}/v1/environments/{{envID}}/oathTokens/{{oathTokenID}}"

payload = {}
headers = {
  'Authorization': 'Bearer {{accessToken}}'
}

response = requests.request("GET", url, headers=headers, data=payload)

print(response.text)
```

```php
<?php
require_once 'HTTP/Request2.php';
$request = new HTTP_Request2();
$request->setUrl('{{apiPath}}/v1/environments/{{envID}}/oathTokens/{{oathTokenID}}');
$request->setMethod(HTTP_Request2::METHOD_GET);
$request->setConfig(array(
  'follow_redirects' => TRUE
));
$request->setHeader(array(
  'Authorization' => 'Bearer {{accessToken}}'
));
try {
  $response = $request->send();
  if ($response->getStatus() == 200) {
    echo $response->getBody();
  }
  else {
    echo 'Unexpected HTTP status: ' . $response->getStatus() . ' ' .
    $response->getReasonPhrase();
  }
}
catch(HTTP_Request2_Exception $e) {
  echo 'Error: ' . $e->getMessage();
}
```

```ruby
require "uri"
require "net/http"

url = URI("{{apiPath}}/v1/environments/{{envID}}/oathTokens/{{oathTokenID}}")

http = Net::HTTP.new(url.host, url.port);
request = Net::HTTP::Get.new(url)
request["Authorization"] = "Bearer {{accessToken}}"

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

```swift
var request = URLRequest(url: URL(string: "{{apiPath}}/v1/environments/{{envID}}/oathTokens/{{oathTokenID}}")!,timeoutInterval: Double.infinity)
request.addValue("Bearer {{accessToken}}", forHTTPHeaderField: "Authorization")

request.httpMethod = "GET"

let task = URLSession.shared.dataTask(with: request) { data, response, error in
  guard let data = data else {
    print(String(describing: error))
    return
  }
  print(String(data: data, encoding: .utf8)!)
}

task.resume()
```

### Example Response

200 OK

```json
{
    "_links": {
        "self": {
            "href": "https://api-test.pingone.com/v1/environments/abfba8f6-49eb-49f5-a5d9-80ad5c98f9f6/oathTokens/8de8f078-120f-4e64-b7c4-efe19145422e"
        },
        "environment": {
            "href": "https://api-test.pingone.com/v1/environments/abfba8f6-49eb-49f5-a5d9-80ad5c98f9f6"
        }
    },
    "id": "8de8f078-120f-4e64-b7c4-efe19145422e",
    "environment": {
        "id": "abfba8f6-49eb-49f5-a5d9-80ad5c98f9f6"
    },
    "serialNumber": "ab1456ggg98ty754",
    "type": "TOTP",
    "totp": {
        "timeStep": 30,
        "drift": 0
    },
    "otpLength": 8,
    "hashAlgorithm": "HmacSHA1",
    "createdAt": "2024-08-15T09:37:38.876Z",
    "updatedAt": "2024-08-15T09:37:38.966Z"
}
```
