Skip to content

Audit Log

GET /v1/audit

Retrieve the append-only audit log for your tenant. Entries are written for every sign, verify, lookup, recipe creation, key creation, and billing event. Requires admin-scoped key.

GET https://api.verbitas.io/v1/audit
Authorization: Bearer vb_admin_...

Query parameters

ParameterTypeDescription
fromISO 8601Start of time range (inclusive)
toISO 8601End of time range (exclusive)
event_typestringFilter by event type (see below)
asset_idstringFilter by specific asset ID
limitintMax entries per page (default 100, max 1000)
cursorstringPagination cursor from previous response
formatstringjson (default) or ndjson (for streaming export)
Terminal window
curl "https://api.verbitas.io/v1/audit?from=2026-05-01T00:00:00Z&to=2026-05-09T00:00:00Z&format=ndjson" \
-H "Authorization: Bearer $VERBITAS_API_KEY"

Response: 200 OK (JSON)

{
"entries": [
{
"id": "audit_01j...",
"event_type": "asset.signed",
"timestamp": "2026-05-09T10:00:00Z",
"tenant_id": "t_01j...",
"actor_key_id": "key_01j...",
"request_id": "req_01j...",
"data": {
"asset_id": "a_01j...",
"recipe_id": "image-genai-v1",
"file_type": "image/jpeg",
"file_size_bytes": 204800
}
},
{
"id": "audit_02k...",
"event_type": "asset.verified",
"timestamp": "2026-05-09T10:05:00Z",
"data": {
"asset_id": "a_01j...",
"status": "verified_manifest_and_watermark_match",
"confidence": 0.97
}
}
],
"cursor": "cur_01j...",
"has_more": true
}

Event types

Event typeTriggered by
asset.signedSuccessful POST /v1/sign
asset.sign_failedFailed sign attempt (includes error code)
asset.verifiedPOST /v1/verify
asset.lookupPOST /v1/lookup
anchor.batch_submittedAnchor batch sent to OTS/Arbitrum
anchor.confirmedAnchor batch confirmed on-chain
recipe.createdPOST /v1/recipes
key.createdNew API key minted
key.revokedAPI key revoked
billing.quota_exceededPlan quota hit
billing.payment_failedStripe payment failure
webhook.deliveredWebhook successfully delivered
webhook.failedWebhook delivery failed after all retries

NDJSON export

For SIEM integration or large date ranges, use format=ndjson. Each line is a JSON object.

Terminal window
curl "https://api.verbitas.io/v1/audit?from=2026-01-01T00:00:00Z&format=ndjson" \
-H "Authorization: Bearer $VERBITAS_API_KEY" \
> audit-2026.ndjson

S3 continuous export (Enterprise)

Enterprise tenants can configure continuous S3 export in the admin console. Audit events are streamed to your S3 bucket in NDJSON format, partitioned by year/month/day. This is the recommended pattern for SIEM integration (Splunk, Elastic, Datadog).

Retention

Audit log entries are retained for:

PlanRetention
Free / Developer30 days
Growth365 days
Enterprise7 years (2555 days)

Enterprise retention is configurable up to 7 years. Entries cannot be deleted or modified — the log is append-only.

Error codes

HTTPCodeMeaning
401verbitas.auth.invalid_keyAPI key invalid
403verbitas.auth.insufficient_scopeadmin scope required
400verbitas.audit.invalid_date_rangefrom is after to, or range exceeds 365 days for non-enterprise

SDK example

import verbitas
from datetime import datetime, timezone
client = verbitas.Client()
entries = client.audit.list(
from_dt=datetime(2026, 5, 1, tzinfo=timezone.utc),
to_dt=datetime(2026, 5, 9, tzinfo=timezone.utc),
event_type="asset.signed"
)
for entry in entries:
print(entry.timestamp, entry.data.get("asset_id"))