List API Keys
curl --request GET \
--url https://api.example.com/v1/api-keysimport requests
url = "https://api.example.com/v1/api-keys"
response = requests.get(url)
print(response.text)const options = {method: 'GET'};
fetch('https://api.example.com/v1/api-keys', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.example.com/v1/api-keys",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.example.com/v1/api-keys"
req, _ := http.NewRequest("GET", url, nil)
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.example.com/v1/api-keys")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.example.com/v1/api-keys")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
response = http.request(request)
puts response.read_body{
"data": {
"api_keys": [
{
"id": "<string>",
"name": "<string>",
"description": "<string>",
"prefix": "<string>",
"permissions": [
{}
],
"rate_limit_tier": "<string>",
"created_by": "<string>",
"created_at": "<string>",
"last_used_at": "<string>",
"expires_at": "<string>",
"revoked_at": "<string>"
}
]
},
"meta": {}
}API Keys
List API Keys
Return metadata for every API key in the workspace, without exposing plaintext secrets
GET
/
v1
/
api-keys
List API Keys
curl --request GET \
--url https://api.example.com/v1/api-keysimport requests
url = "https://api.example.com/v1/api-keys"
response = requests.get(url)
print(response.text)const options = {method: 'GET'};
fetch('https://api.example.com/v1/api-keys', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.example.com/v1/api-keys",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.example.com/v1/api-keys"
req, _ := http.NewRequest("GET", url, nil)
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.example.com/v1/api-keys")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.example.com/v1/api-keys")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
response = http.request(request)
puts response.read_body{
"data": {
"api_keys": [
{
"id": "<string>",
"name": "<string>",
"description": "<string>",
"prefix": "<string>",
"permissions": [
{}
],
"rate_limit_tier": "<string>",
"created_by": "<string>",
"created_at": "<string>",
"last_used_at": "<string>",
"expires_at": "<string>",
"revoked_at": "<string>"
}
]
},
"meta": {}
}Request
API key secrets are only displayed once, at creation time. This endpoint returns metadata only: the name, permissions, rate-limit tier, and last-used timestamp. You cannot recover a plaintext key after its creation.Query Parameters
integer
default:"1"
Page number.
integer
default:"25"
Results per page. Maximum 100.
boolean
default:"false"
When
true, soft-deleted (revoked) keys are included.string
Search by key name or description.
Headers
Authorization: Bearer wbk_your_api_key_here
Response
object
Show properties
Show properties
array
Show API key object
Show API key object
string
API key UUID
string
User-assigned name
string
Optional description
string
First 8 characters of the key (e.g.
wbk_a1b2c3)array
Scopes granted to the key
string
Rate-limit tier
string
User UUID who created the key
string
ISO 8601 timestamp
string
ISO 8601 timestamp of last authorized request
string
ISO 8601 expiry timestamp, if set
string
ISO 8601 timestamp when the key was revoked, if any
object
Pagination metadata.
X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset, and X-Request-ID.
curl https://data.leadlex.com/functions/v1/api-gateway/v1/api-keys \
-H "Authorization: Bearer wbk_your_api_key_here"
import requests
API_KEY = "wbk_your_api_key_here"
BASE_URL = "https://data.leadlex.com/functions/v1/api-gateway"
r = requests.get(
f"{BASE_URL}/v1/api-keys",
headers={"Authorization": f"Bearer {API_KEY}"},
)
for k in r.json()["data"]["api_keys"]:
print(k["name"], k["prefix"], k["last_used_at"])
const res = await fetch(
'https://data.leadlex.com/functions/v1/api-gateway/v1/api-keys',
{ headers: { Authorization: 'Bearer wbk_your_api_key_here' } },
);
const { data } = await res.json();
console.log(data.api_keys.length);
Example Response
{
"data": {
"api_keys": [
{
"id": "key_01HY1",
"name": "Production ingestion",
"description": "Used by the nightly ingestion job",
"prefix": "wbk_a1b2c3",
"permissions": ["read:contacts", "write:contacts", "read:deals"],
"rate_limit_tier": "standard",
"created_by": "usr_01HW0",
"created_at": "2026-02-11T09:00:00Z",
"last_used_at": "2026-04-17T10:30:00Z",
"expires_at": null,
"revoked_at": null
}
]
},
"meta": { "page": 1, "per_page": 25, "total": 3 }
}
Errors
| Status | Code | Description |
|---|---|---|
| 401 | invalid_key | Invalid or expired API key |
| 403 | insufficient_permissions | Missing admin:api_keys permission |
| 429 | rate_limited | Rate limit exceeded |