> This page is for API Reference.

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

# Fail Admit Token

PUT https://api.npretail.app/{tenant}/{environment}/{company}/speedgate/failAdmitToken
Content-Type: application/json

This endpoint marks a token as invalid, preventing its future use for admission. It can also fail an already admitted token, effectively revoking the speedgate admission. Note, however, that the actual admission cannot be undone in the system; only the speedgate token can be marked as failed. This is useful for handling situations where scanner personnel override the business rules of an admission attempt.

Reference: https://docs.navipartner.com/apis/api-reference/speedgate/service-speedgate/fail-admit-token

## Authentication

- `x-np-api-key` header (required) — API Key authentication via header

## Request

### Path parameters

- `tenant` (string, required) — Your Entra Tenant ID. [More details.](/paths#1-tenant)
- `environment` (string, required) — Your Business Central Environment. [More details.](/paths#2-environment)
- `company` (string, required) — Your Business Central Company. [More details.](/paths#3-company)

### Body (application/json)

This endpoint expects a FailAdmitTokenRequest.

- `token` (UUID, required) — A unique token that identifies a specific admission request
- `reason` (string, required) — The reason for failing to admit the token.

## Examples

Example of a successful failure of an admit token.

**Request**

```json
{
  "token": "aaaaaaaa-aaaa-aaaa-aaaa-426614174000",
  "reason": "Guest was dismissed due to disorderly conduct."
}
```

**Response**

```json
{}
```

**SDK Code**

```python Fail Admit Token
import requests

url = "https://api.npretail.app/01234567-89ab-cdef-0123-456789abcdef/production/CRONUS%2520International%2520Ltd./speedgate/failAdmitToken"

payload = {
    "token": "aaaaaaaa-aaaa-aaaa-aaaa-426614174000",
    "reason": "Guest was dismissed due to disorderly conduct."
}
headers = {
    "x-np-api-key": "<NaviPartner API Key>",
    "Content-Type": "application/json"
}

response = requests.put(url, json=payload, headers=headers)

print(response.json())
```

```javascript Fail Admit Token
const url = 'https://api.npretail.app/01234567-89ab-cdef-0123-456789abcdef/production/CRONUS%2520International%2520Ltd./speedgate/failAdmitToken';
const options = {
  method: 'PUT',
  headers: {'x-np-api-key': '<NaviPartner API Key>', 'Content-Type': 'application/json'},
  body: '{"token":"aaaaaaaa-aaaa-aaaa-aaaa-426614174000","reason":"Guest was dismissed due to disorderly conduct."}'
};

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

```go Fail Admit Token
package main

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

func main() {

	url := "https://api.npretail.app/01234567-89ab-cdef-0123-456789abcdef/production/CRONUS%2520International%2520Ltd./speedgate/failAdmitToken"

	payload := strings.NewReader("{\n  \"token\": \"aaaaaaaa-aaaa-aaaa-aaaa-426614174000\",\n  \"reason\": \"Guest was dismissed due to disorderly conduct.\"\n}")

	req, _ := http.NewRequest("PUT", url, payload)

	req.Header.Add("x-np-api-key", "<NaviPartner API Key>")
	req.Header.Add("Content-Type", "application/json")

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

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

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

}
```

```ruby Fail Admit Token
require 'uri'
require 'net/http'

url = URI("https://api.npretail.app/01234567-89ab-cdef-0123-456789abcdef/production/CRONUS%2520International%2520Ltd./speedgate/failAdmitToken")

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

request = Net::HTTP::Put.new(url)
request["x-np-api-key"] = '<NaviPartner API Key>'
request["Content-Type"] = 'application/json'
request.body = "{\n  \"token\": \"aaaaaaaa-aaaa-aaaa-aaaa-426614174000\",\n  \"reason\": \"Guest was dismissed due to disorderly conduct.\"\n}"

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

```java Fail Admit Token
import com.mashape.unirest.http.HttpResponse;
import com.mashape.unirest.http.Unirest;

HttpResponse<String> response = Unirest.put("https://api.npretail.app/01234567-89ab-cdef-0123-456789abcdef/production/CRONUS%2520International%2520Ltd./speedgate/failAdmitToken")
  .header("x-np-api-key", "<NaviPartner API Key>")
  .header("Content-Type", "application/json")
  .body("{\n  \"token\": \"aaaaaaaa-aaaa-aaaa-aaaa-426614174000\",\n  \"reason\": \"Guest was dismissed due to disorderly conduct.\"\n}")
  .asString();
```

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

$client = new \GuzzleHttp\Client();

$response = $client->request('PUT', 'https://api.npretail.app/01234567-89ab-cdef-0123-456789abcdef/production/CRONUS%2520International%2520Ltd./speedgate/failAdmitToken', [
  'body' => '{
  "token": "aaaaaaaa-aaaa-aaaa-aaaa-426614174000",
  "reason": "Guest was dismissed due to disorderly conduct."
}',
  'headers' => [
    'Content-Type' => 'application/json',
    'x-np-api-key' => '<NaviPartner API Key>',
  ],
]);

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

```csharp Fail Admit Token
using RestSharp;

var client = new RestClient("https://api.npretail.app/01234567-89ab-cdef-0123-456789abcdef/production/CRONUS%2520International%2520Ltd./speedgate/failAdmitToken");
var request = new RestRequest(Method.PUT);
request.AddHeader("x-np-api-key", "<NaviPartner API Key>");
request.AddHeader("Content-Type", "application/json");
request.AddParameter("application/json", "{\n  \"token\": \"aaaaaaaa-aaaa-aaaa-aaaa-426614174000\",\n  \"reason\": \"Guest was dismissed due to disorderly conduct.\"\n}", ParameterType.RequestBody);
IRestResponse response = client.Execute(request);
```

```swift Fail Admit Token
import Foundation

let headers = [
  "x-np-api-key": "<NaviPartner API Key>",
  "Content-Type": "application/json"
]
let parameters = [
  "token": "aaaaaaaa-aaaa-aaaa-aaaa-426614174000",
  "reason": "Guest was dismissed due to disorderly conduct."
] as [String : Any]

let postData = JSONSerialization.data(withJSONObject: parameters, options: [])

let request = NSMutableURLRequest(url: NSURL(string: "https://api.npretail.app/01234567-89ab-cdef-0123-456789abcdef/production/CRONUS%2520International%2520Ltd./speedgate/failAdmitToken")! as URL,
                                        cachePolicy: .useProtocolCachePolicy,
                                    timeoutInterval: 10.0)
request.httpMethod = "PUT"
request.allHTTPHeaderFields = headers
request.httpBody = postData as Data

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()
```