Short.io Audit API
The Audit API from Short.io — 1 operation(s) for audit.
The Audit API from Short.io — 1 operation(s) for audit.
Every API here is available over the APIs.io API and to AI agents over MCP.
One button, every client — Claude, Cursor, VS Code and the rest.
https://apis.io/mcp
find_apisBrowse and filter every API in the catalog.get_api_artifactsOne API's artifacts, grouped by type.get_openapiThe primary OpenAPI for this API.find_similar_apisAPIs that look like this one.apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.resolveTurn a domain, URL or GitHub org into the provider it belongs to.find_cohortsEvery scored population of providers in the catalog.curl "https://apis.io/api/v1/apis/short-io:short-io-audit-api"
curl "https://apis.io/api/v1/apis?limit=25"
Discovery needs no key. Ratings and market analysis are Pro.
Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.
A second provider on the same verified email joins the account you already have.
openapi: 3.2.0
info:
title: Short.io Audit API
version: 1.0.0
x-scalar-sdk-installation:
- lang: Node
description: 'Install the official **Short.io Node.js SDK** from npm:'
source: npm install @short.io/client-node
servers:
- url: https://api.short.io
description: API server
security:
- apiKey: []
tags:
- name: Audit
paths:
/audit:
get:
summary: List audit log entries
tags:
- Audit
description: Lists audit log entries for a team or a domain.
parameters:
- schema:
type: number
example: 12345
in: query
name: domainId
required: true
description: Domain to fetch audit records for
- schema:
type: number
example: 67890
in: query
name: userId
required: false
description: Filter records by team member user id
- schema:
type: number
example: 4321
in: query
name: teamId
required: false
description: Team scope; current user must be owner
- schema:
type: string
examples:
create:
value: create
update:
value: update
delete:
value: delete
create-bulk:
value: create-bulk
transfer:
value: transfer
in: query
name: actionType
required: false
description: Filter records by operation type, e.g. "create", "update", "delete"
- schema:
type: string
example: lnk_6Z3t_abc123
in: query
name: linkId
required: false
description: Filter records by link id, matched exactly as stored
- schema:
type: number
example: 100
in: query
name: limit
required: false
description: Maximum number of records to return
- schema:
type: string
example: eyJwayI6...
in: query
name: pageToken
required: false
description: Pagination cursor from previous response
responses:
'200':
description: Default Response
content:
application/json:
schema:
type: object
required:
- records
- nextPageToken
properties:
records:
type: array
items:
type: object
required:
- id
- UserId
- DomainId
- TeamId
- target
- actionType
- createdAt
- userEmail
- apiKeyId
- linkId
- statusCode
- errorMessage
- operationTime
properties:
id:
type: string
description: Audit record TimeUUID
UserId:
type: number
description: Acting user id
DomainId:
type: number
description: Domain id the action was performed against
TeamId:
anyOf:
- type: number
- type: 'null'
description: Team id, if the action was scoped to a team
target:
type: string
description: Audited entity, e.g. "link", "ipExclusion"
actionType:
type: string
description: Action performed, e.g. "create", "update"
createdAt:
type: string
description: ISO timestamp derived from the record TimeUUID
ttl:
type: string
description: ISO timestamp when the record expires
userEmail:
type: string
description: Email of the requesting user
apiKeyId:
anyOf:
- type: string
- type: 'null'
description: API key id used to perform the action, if any
linkId:
anyOf:
- type: string
- type: 'null'
description: Link id the action targeted, if any
statusCode:
anyOf:
- type: integer
- type: 'null'
description: HTTP status code returned by the audited request. Null for legacy records written before status tracking.
example: 200
operationTime:
anyOf:
- type: integer
- type: 'null'
description: Total request duration in milliseconds (request received → response sent). Null for legacy records written before timing was tracked.
example: 12
nextPageToken:
anyOf:
- type: string
- type: 'null'
description: Cursor to pass as `pageToken` to fetch the next page, or null when the listing is exhausted
'400':
description: Default Response
content:
application/json:
schema:
type: object
properties:
error:
type: string
message:
type: string
statusCode:
type: integer
'401':
description: Default Response
content:
application/json:
schema:
type: object
required:
- error
properties:
error:
type: string
'403':
description: Default Response
content:
application/json:
schema:
type: object
required:
- error
properties:
error:
type: string
operationId: listAudit
x-codeSamples:
- lang: JavaScript
label: '@short.io/client-node'
source: "const { data } = await listAudit({\n \"query\": {\n \"domainId\": 12345,\n \"userId\": 67890,\n \"teamId\": 4321,\n \"actionType\": \"string\",\n \"linkId\": \"lnk_6Z3t_abc123\",\n \"limit\": 100,\n \"pageToken\": \"eyJwayI6...\"\n }\n});\n"
components:
securitySchemes:
apiKey:
type: apiKey
name: Authorization
in: header