TypeScript
// First-party cookie auth: this runs in a signed-in trdrs session, not under an API key.
const res = await fetch('https://app.trdrs.co/api/operator/venues/{venueId}/keys/{keyId}', {
method: 'DELETE',
headers: {
'content-type': 'application/json',
"Idempotency-Key": "example-request-1",
},
credentials: 'include',
body: JSON.stringify({}),
})
const data = await res.json()curl -X DELETE 'https://app.trdrs.co/api/operator/venues/{venueId}/keys/{keyId}' \
-b "session=$TRDRS_SESSION" \
-H 'Idempotency-Key: example-request-1' \
-H 'content-type: application/json' \
-d '{}'import requests
url = "https://app.trdrs.co/api/operator/venues/{venueId}/keys/{keyId}"
payload = {}
headers = {
"cookie": "session=",
"Idempotency-Key": "<idempotency-key>",
"Content-Type": "application/json"
}
response = requests.delete(url, json=payload, headers=headers)
print(response.text)<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://app.trdrs.co/api/operator/venues/{venueId}/keys/{keyId}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "DELETE",
CURLOPT_POSTFIELDS => json_encode([
]),
CURLOPT_COOKIE => "session=",
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"Idempotency-Key: <idempotency-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://app.trdrs.co/api/operator/venues/{venueId}/keys/{keyId}"
payload := strings.NewReader("{}")
req, _ := http.NewRequest("DELETE", url, payload)
req.Header.Add("cookie", "session=")
req.Header.Add("Idempotency-Key", "<idempotency-key>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.delete("https://app.trdrs.co/api/operator/venues/{venueId}/keys/{keyId}")
.header("cookie", "session=")
.header("Idempotency-Key", "<idempotency-key>")
.header("Content-Type", "application/json")
.body("{}")
.asString();require 'uri'
require 'net/http'
url = URI("https://app.trdrs.co/api/operator/venues/{venueId}/keys/{keyId}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Delete.new(url)
request["cookie"] = 'session='
request["Idempotency-Key"] = '<idempotency-key>'
request["Content-Type"] = 'application/json'
request.body = "{}"
response = http.request(request)
puts response.read_body{
"key": {
"id": "00000000-0000-0000-0000-000000000001",
"revokedAt": "2026-09-14T12:00:00.000Z"
}
}{
"error": "invalid_instrument"
}{
"error": "invalid_instrument"
}{
"error": "invalid_instrument"
}{
"error": "invalid_instrument"
}{
"error": "invalid_instrument"
}{
"error": "invalid_instrument"
}{
"error": "invalid_instrument"
}{
"error": "invalid_instrument"
}Venue keys (session)
Revoke a venue operator key
Private preview, disabled unless VENUE_CONFIGURATION_ENABLED is enabled and the vault is configured. This branch has not enabled these routes in the public sandbox. Existing trdrs_sk partner/tenant keys do not authorize these routes. Verified owner session and trusted origin required. Empty JSON body. Repeating revocation returns the original timestamp. Subsequent operations recheck revocation inside their database transaction, even when key lookup happened earlier.
DELETE
/
api
/
operator
/
venues
/
{venueId}
/
keys
/
{keyId}
TypeScript
// First-party cookie auth: this runs in a signed-in trdrs session, not under an API key.
const res = await fetch('https://app.trdrs.co/api/operator/venues/{venueId}/keys/{keyId}', {
method: 'DELETE',
headers: {
'content-type': 'application/json',
"Idempotency-Key": "example-request-1",
},
credentials: 'include',
body: JSON.stringify({}),
})
const data = await res.json()curl -X DELETE 'https://app.trdrs.co/api/operator/venues/{venueId}/keys/{keyId}' \
-b "session=$TRDRS_SESSION" \
-H 'Idempotency-Key: example-request-1' \
-H 'content-type: application/json' \
-d '{}'import requests
url = "https://app.trdrs.co/api/operator/venues/{venueId}/keys/{keyId}"
payload = {}
headers = {
"cookie": "session=",
"Idempotency-Key": "<idempotency-key>",
"Content-Type": "application/json"
}
response = requests.delete(url, json=payload, headers=headers)
print(response.text)<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://app.trdrs.co/api/operator/venues/{venueId}/keys/{keyId}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "DELETE",
CURLOPT_POSTFIELDS => json_encode([
]),
CURLOPT_COOKIE => "session=",
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"Idempotency-Key: <idempotency-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://app.trdrs.co/api/operator/venues/{venueId}/keys/{keyId}"
payload := strings.NewReader("{}")
req, _ := http.NewRequest("DELETE", url, payload)
req.Header.Add("cookie", "session=")
req.Header.Add("Idempotency-Key", "<idempotency-key>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.delete("https://app.trdrs.co/api/operator/venues/{venueId}/keys/{keyId}")
.header("cookie", "session=")
.header("Idempotency-Key", "<idempotency-key>")
.header("Content-Type", "application/json")
.body("{}")
.asString();require 'uri'
require 'net/http'
url = URI("https://app.trdrs.co/api/operator/venues/{venueId}/keys/{keyId}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Delete.new(url)
request["cookie"] = 'session='
request["Idempotency-Key"] = '<idempotency-key>'
request["Content-Type"] = 'application/json'
request.body = "{}"
response = http.request(request)
puts response.read_body{
"key": {
"id": "00000000-0000-0000-0000-000000000001",
"revokedAt": "2026-09-14T12:00:00.000Z"
}
}{
"error": "invalid_instrument"
}{
"error": "invalid_instrument"
}{
"error": "invalid_instrument"
}{
"error": "invalid_instrument"
}{
"error": "invalid_instrument"
}{
"error": "invalid_instrument"
}{
"error": "invalid_instrument"
}{
"error": "invalid_instrument"
}Authorizations
The signed session cookie of a logged-in trdrs user. First-party/browser only; a firm API key cannot reach a route secured this way.
Headers
Required string length:
1 - 128Body
application/json
The body is of type object.
Response
Scoped result. Cache-Control: no-store.
Show child attributes
Show child attributes