List Request Logs
curl --request GET \
--url https://api.signa.so/v1/organization/logs \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.signa.so/v1/organization/logs"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.signa.so/v1/organization/logs', 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.signa.so/v1/organization/logs",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>"
],
]);
$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.signa.so/v1/organization/logs"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Bearer <token>")
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.signa.so/v1/organization/logs")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.signa.so/v1/organization/logs")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body{
"object": "list",
"data": [
{
"id": "req_01HXYZ...",
"object": "request_log",
"method": "GET",
"path": "/v1/trademarks",
"status_code": 200,
"duration_ms": 142,
"endpoint_type": "search",
"credits": 1,
"api_key_prefix": "sig_7kMn",
"error_type": null,
"error_detail": null,
"created_at": "2026-04-18T10:12:33Z"
},
{
"id": "req_01HXYA...",
"object": "request_log",
"method": "GET",
"path": "/v1/trademarks/tm_bogus",
"status_code": 404,
"duration_ms": 18,
"endpoint_type": "read",
"credits": 0,
"api_key_prefix": "sig_7kMn",
"error_type": "not_found",
"error_detail": "Trademark tm_bogus does not exist.",
"created_at": "2026-04-18T10:11:05Z"
}
],
"has_more": true,
"pagination": {
"cursor": "eyJpZCI6I..."
},
"request_id": "req_currentCall"
}
Logs
List Request Logs
List API request logs for the organization
GET
/
v1
/
organization
/
logs
List Request Logs
curl --request GET \
--url https://api.signa.so/v1/organization/logs \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.signa.so/v1/organization/logs"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.signa.so/v1/organization/logs', 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.signa.so/v1/organization/logs",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>"
],
]);
$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.signa.so/v1/organization/logs"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Bearer <token>")
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.signa.so/v1/organization/logs")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.signa.so/v1/organization/logs")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body{
"object": "list",
"data": [
{
"id": "req_01HXYZ...",
"object": "request_log",
"method": "GET",
"path": "/v1/trademarks",
"status_code": 200,
"duration_ms": 142,
"endpoint_type": "search",
"credits": 1,
"api_key_prefix": "sig_7kMn",
"error_type": null,
"error_detail": null,
"created_at": "2026-04-18T10:12:33Z"
},
{
"id": "req_01HXYA...",
"object": "request_log",
"method": "GET",
"path": "/v1/trademarks/tm_bogus",
"status_code": 404,
"duration_ms": 18,
"endpoint_type": "read",
"credits": 0,
"api_key_prefix": "sig_7kMn",
"error_type": "not_found",
"error_detail": "Trademark tm_bogus does not exist.",
"created_at": "2026-04-18T10:11:05Z"
}
],
"has_more": true,
"pagination": {
"cursor": "eyJpZCI6I..."
},
"request_id": "req_currentCall"
}
Beta. The request logs schema is new and may evolve. Field names should be stable, but we reserve the right to add fields or adjust response shape before general availability.
Overview
Returns a paginated list of API request logs for the authenticated organization. Filterable by date range, HTTP status code, success/failure outcome, method, API key, endpoint type, and path. Per-plan access control limits the historical window:| Plan | Retention window |
|---|---|
free | Last 7 days |
starter | Last 30 days |
beta, pro, enterprise | Last 90 days |
billing:read scope. Querying logs does not consume metered usage.
Query Parameters
string
Start of date range (ISO 8601). Accepts
YYYY-MM-DD or full ISO datetime. Defaults to 24 hours ago.string
End of date range (ISO 8601). Accepts
YYYY-MM-DD or full ISO datetime. Defaults to now.string
Alias for
start_date. If both are sent, start_date wins.string
Alias for
end_date. If both are sent, end_date wins.integer
Filter to a specific HTTP status code (100—599).
boolean
Filter by outcome:
true returns succeeded requests (status < 400), false returns failed requests (status >= 400).string
Filter by HTTP method (
GET, POST, PATCH, DELETE, etc.).string
Filter to requests made with a specific API key (
key_...).string
Filter by classified endpoint type. One of
search, read, monitoring, screening, clearance, check, image_search, export, reference, utility.string
Case-insensitive substring match against path or request ID (max 200 characters).
integer
default:"50"
Items per page (1—100).
string
Pagination cursor from a previous response.
Response
string
Always
"list".object[]
Show Request log object
Show Request log object
string
The logged request’s identifier (
req_...).string
Always
"request_log".string
HTTP method (
GET, POST, etc.).string
Request path (e.g.
/v1/trademarks).integer
HTTP status code returned.
integer
Request duration in milliseconds.
string
Classified endpoint type (e.g.
search, read, utility).integer
Credits charged against your plan for this request.
string
Prefix of the API key used (null if the request predates prefix capture).
string
Error type slug (null on success).
string
Error detail message (null on success).
string
ISO timestamp when the request was logged.
boolean
Whether more pages are available.
{
"object": "list",
"data": [
{
"id": "req_01HXYZ...",
"object": "request_log",
"method": "GET",
"path": "/v1/trademarks",
"status_code": 200,
"duration_ms": 142,
"endpoint_type": "search",
"credits": 1,
"api_key_prefix": "sig_7kMn",
"error_type": null,
"error_detail": null,
"created_at": "2026-04-18T10:12:33Z"
},
{
"id": "req_01HXYA...",
"object": "request_log",
"method": "GET",
"path": "/v1/trademarks/tm_bogus",
"status_code": 404,
"duration_ms": 18,
"endpoint_type": "read",
"credits": 0,
"api_key_prefix": "sig_7kMn",
"error_type": "not_found",
"error_detail": "Trademark tm_bogus does not exist.",
"created_at": "2026-04-18T10:11:05Z"
}
],
"has_more": true,
"pagination": {
"cursor": "eyJpZCI6I..."
},
"request_id": "req_currentCall"
}
Code Examples
curl "https://api.signa.so/v1/organization/logs?limit=50&status_code=429" \
-H "Authorization: Bearer sig_xxxxxxxxxxxx"
import { Signa } from "@signa-so/sdk";
const signa = new Signa({ api_key: "sig_xxxxxxxxxxxx" });
const logs = await signa.organization.logs.list({
start_date: "2026-04-17",
end_date: "2026-04-18",
status_code: 429,
limit: 50,
});
import requests
resp = requests.get(
"https://api.signa.so/v1/organization/logs",
headers={"Authorization": "Bearer sig_xxxxxxxxxxxx"},
params={"status_code": 429, "limit": 50},
)
logs = resp.json()["data"]
Errors
| Status | Type | Description |
|---|---|---|
| 400 | validation_error | Invalid date format or start_date > end_date |
| 401 | unauthorized | Missing or invalid API key |
| 403 | forbidden | API key lacks billing:read |
| 403 | plan_limit_exceeded | Requested window exceeds your plan’s log retention |
| 429 | rate_limited | Too many requests |
Related Endpoints
- Retrieve Request Log — single request log detail
- Get Usage Summary — aggregate usage by day, endpoint type, or API key