> This page is for APIs, version Calculations.
> For other versions, use one of these documentation indexes:
> - Overview (default): https://avalara.ferndocs.com/api-reference/overview/llms.txt
> - Calculations: https://avalara.ferndocs.com/api-reference/calculations/llms.txt
> - E-invoicing: https://avalara.ferndocs.com/api-reference/e-invoicing/llms.txt
> - Brazil: https://avalara.ferndocs.com/api-reference/brazil/llms.txt
> - Returns: https://avalara.ferndocs.com/api-reference/returns/llms.txt
> - Shared service: https://avalara.ferndocs.com/api-reference/shared-service/llms.txt
> - 1099 & W-9: https://avalara.ferndocs.com/api-reference/1099-w9/llms.txt
> - Tax registrations & business licenses: https://avalara.ferndocs.com/api-reference/tax-registrations/llms.txt
> - ECM: https://avalara.ferndocs.com/api-reference/ecm/llms.txt
> - Cross-Border: https://avalara.ferndocs.com/api-reference/cross-border/llms.txt

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

# Ping

GET https://rest.avatax.com/api/v2/utilities/ping

> **Access control:** this endpoint is available to users with the `everyone` role.

Check connectivity to AvaTax and return information about the AvaTax API server.
            
This API is intended to help you verify that your connection is working.  This API will always succeed and will
never return a error.  It provides basic information about the server you connect to:
            
* `version` - The version number of the AvaTax API server that responded to your request.  The AvaTax API version number is updated once per month during Avalara's update process.
* `authenticated` - A boolean flag indicating whether or not you sent valid credentials with your API request.
* `authenticationType` - If you provided valid credentials to the API, this field will tell you whether you used Bearer, Username, or LicenseKey authentication.
* `authenticatedUserName` - If you provided valid credentials to the API, this field will tell you the username of the currently logged in user.
* `authenticatedUserId` - If you provided valid credentials to the API, this field will tell you the user ID of the currently logged in user.
* `authenticatedAccountId` - If you provided valid credentials to the API, this field will contain the account ID of the currently logged in user.
            
This API helps diagnose connectivity problems between your application and AvaTax; you may call this API even
if you do not have verified connection credentials.  If this API fails, either your computer is not connected to
the internet, or there is a routing problem between your office and Avalara, or the Avalara server is not available.
For more information on the uptime of AvaTax, please see [Avalara's AvaTax Status Page](https://status.avalara.com/).

### Security Policies

* This API may be called without providing authentication credentials.


Reference: https://avalara.ferndocs.com/api-reference/calculations/ava-tax/public-reference/ping

## Authentication

- `Authorization` header (required) — API Key authentication via header

## Request

### Headers

- `X-Avalara-Client` (string, optional, default: Swagger UI; 26.7.0; Custom; 1.0) — Identifies the software you are using to call this API. For more information on the client header, see [Client Headers](https://developer.avalara.com/avatax/client-headers/) .

## Response

### 200

Success

- `version` (string, optional) — Version number
- `authenticated` (boolean, optional) — Returns true if you provided authentication for this API call; false if you did not.
- `authenticationType` (enum, optional) — Returns the type of authentication you provided, if authenticated
  - Allowed values: `None`, `UsernamePassword`, `AccountIdLicenseKey`, `OpenIdBearerToken`, `ClientMtlsCertificate`
- `authenticatedUserName` (string, optional) — The username of the currently authenticated user, if any.
- `authenticatedUserId` (integer, optional) — The ID number of the currently authenticated user, if any.
- `authenticatedAccountId` (integer, optional) — The ID number of the currently authenticated user's account, if any.
- `authenticatedCompanyId` (integer, optional) — The ID number of the currently authenticated user's company, if any.
- `crmid` (string, optional) — The connected Salesforce account.

## Errors

### 400 Bad Request Error

Bad Request

- `type` (string, optional)
- `title` (string, optional)
- `status` (integer, optional)
- `detail` (string, optional)
- `instance` (string, optional)

### 401 Unauthorized Error

Unauthorized

- `type` (string, optional)
- `title` (string, optional)
- `status` (integer, optional)
- `detail` (string, optional)
- `instance` (string, optional)

## Examples

**Response**

```json
{
  "version": "1.0.0.0",
  "authenticated": true,
  "authenticationType": "UsernamePassword",
  "authenticatedUserName": "TestUser",
  "authenticatedUserId": 98765,
  "authenticatedAccountId": 123456789,
  "authenticatedCompanyId": 123456789,
  "crmid": "1111"
}
```

**SDK Code**

```python
import requests

url = "https://rest.avatax.com/api/v2/utilities/ping"

headers = {"Authorization": "<apiKey>"}

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

print(response.json())
```

```javascript
const url = 'https://rest.avatax.com/api/v2/utilities/ping';
const options = {method: 'GET', headers: {Authorization: '<apiKey>'}};

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

```go
package main

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

func main() {

	url := "https://rest.avatax.com/api/v2/utilities/ping"

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

	req.Header.Add("Authorization", "<apiKey>")

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

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

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

}
```

```ruby
require 'uri'
require 'net/http'

url = URI("https://rest.avatax.com/api/v2/utilities/ping")

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

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

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

```java
import com.mashape.unirest.http.HttpResponse;
import com.mashape.unirest.http.Unirest;

HttpResponse<String> response = Unirest.get("https://rest.avatax.com/api/v2/utilities/ping")
  .header("Authorization", "<apiKey>")
  .asString();
```

```php
<?php
require_once('vendor/autoload.php');

$client = new \GuzzleHttp\Client();

$response = $client->request('GET', 'https://rest.avatax.com/api/v2/utilities/ping', [
  'headers' => [
    'Authorization' => '<apiKey>',
  ],
]);

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

```csharp
using RestSharp;

var client = new RestClient("https://rest.avatax.com/api/v2/utilities/ping");
var request = new RestRequest(Method.GET);
request.AddHeader("Authorization", "<apiKey>");
IRestResponse response = client.Execute(request);
```

```swift
import Foundation

let headers = ["Authorization": "<apiKey>"]

let request = NSMutableURLRequest(url: NSURL(string: "https://rest.avatax.com/api/v2/utilities/ping")! 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()
```