Perplexity Admin API
The Admin API from Perplexity — 1 operation(s) for admin.
The Admin API from Perplexity — 1 operation(s) for admin.
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/perplexity:perplexity-admin-api"
curl "https://apis.io/api/v1/apis?limit=25"
Calls without X-API-Key need no key. Calls with it need a paid plan — get a key.
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: Perplexity AI Admin API
description: Perplexity AI API
version: 1.0.0
servers:
- url: https://api.perplexity.ai
description: Perplexity AI API
tags:
- name: Admin
paths:
/v1/admin/audit-events:
get:
summary: List audit events
description: Returns the organization's audit events, newest first. Requires an **audit log API key** (scope `audit_logs:read`) created by an org admin under **Enterprise APIs → Audit API**; Sonar API keys are rejected with `403`. Without time parameters the endpoint covers the most recent 30 days; a single request can span at most 30 days. See the Audit API guide for key setup, pagination patterns, and event fields.
operationId: list_admin_audit_events_v1_admin_audit_events_get
security:
- HTTPBearer: []
parameters:
- name: limit
in: query
required: false
description: Maximum number of events to return in one page.
schema:
type: integer
minimum: 1
maximum: 500
default: 100
- name: start_time
in: query
required: false
description: Inclusive lower bound on `created_at`, as an RFC 3339 timestamp with a timezone offset (for example `2026-10-01T00:00:00Z`). Defaults to 30 days before `end_time`.
schema:
type: string
format: date-time
- name: end_time
in: query
required: false
description: Inclusive upper bound on `created_at`, as an RFC 3339 timestamp with a timezone offset. Defaults to the current time. The window between `start_time` and `end_time` cannot exceed 30 days.
schema:
type: string
format: date-time
- name: event_type
in: query
required: false
description: Return only events of this type, for example `member_role_changed`. Required to see `audit_events_accessed` events, which the default feed omits.
schema:
type: string
- name: after_id
in: query
required: false
description: Opaque cursor. Return events older than this cursor; pass the previous page's `last_id` to fetch the next older page. Cannot be combined with `before_id`.
schema:
type: string
- name: before_id
in: query
required: false
description: Opaque cursor. Return events newer than this cursor; pass a saved `first_id` to fetch only events that arrived since. Cannot be combined with `after_id`.
schema:
type: string
responses:
'200':
description: One page of audit events, newest first.
content:
application/json:
schema:
$ref: '#/components/schemas/AuditEventsResponse'
example:
data:
- id: 6a0d9a2c-3c6f-4e0e-9e2b-1a2b3c4d5e6f
created_at: '2026-10-27T18:42:11.512000Z'
type: member_role_changed
actor_email: admin@example.com
actor_external_user_id: ''
ip_address: 203.0.113.42
user_agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 14_6) AppleWebKit/605.1.15 Safari/605.1.15
session_id: 7c1e0e2a-9f3d-4a2e-8c1e-4b9d6e2f1a3c
metadata:
target_user_email: jordan@example.com
target_external_user_id: ''
org_user_uuid: 0d2f0b1e-7a4c-4b6e-9f3a-2c1d5e6f7a8b
old_role: member
new_role: admin
has_more: true
first_id: eyJ2ZXJzaW9uIjoxLCJ0aW1lc3RhbXAiOiIyMDI2LTEwLTI3VDE4OjQyOjExLjUxMjAwMCswMDowMCIsInV1aWQiOiI2YTBkOWEyYy0zYzZmLTRlMGUtOWUyYi0xYTJiM2M0ZDVlNmYifQ
last_id: eyJ2ZXJzaW9uIjoxLCJ0aW1lc3RhbXAiOiIyMDI2LTEwLTI3VDA5OjAzOjU0LjAwMTAwMCswMDowMCIsInV1aWQiOiIzZjJhMWIwYy1kNGU1LTRmNmEtOGI3Yy05ZDBlMWYyYTNiNGMifQ
'400':
description: 'Invalid parameters (type: bad_request), or a semantically invalid request (type: invalid_request) such as a timestamp without a timezone offset, a window longer than 30 days, an invalid cursor, or `after_id` and `before_id` used together.'
content:
application/json:
schema:
$ref: '#/components/schemas/AdminApiErrorResponse'
example:
error:
message: The requested time range cannot exceed 30 days.
type: invalid_request
code: 400
'401':
description: Missing, invalid, or revoked API key.
content:
application/json:
schema:
$ref: '#/components/schemas/AdminApiErrorResponse'
example:
error:
message: Authentication required.
type: unauthorized
code: 401
'403':
description: The API key does not have the `audit_logs:read` scope (for example, a Sonar API key was used).
content:
application/json:
schema:
$ref: '#/components/schemas/AdminApiErrorResponse'
example:
error:
message: This API key is not authorized to read audit events.
type: permission_denied
code: 403
'404':
description: Audit logging is not enabled for the organization.
content:
application/json:
schema:
$ref: '#/components/schemas/AdminApiErrorResponse'
example:
error:
message: Enterprise Admin API audit events are not available for this organization.
type: not_found
code: 404
'429':
description: Rate limit exceeded. Each organization may make up to 2 requests per second across all of its audit log API keys. Honor the `Retry-After` header.
content:
application/json:
schema:
$ref: '#/components/schemas/AdminApiErrorResponse'
example:
error:
message: Request rate limit exceeded, please try again later.
type: request_rate_limit_exceeded
code: 429
'503':
description: The audit log store is temporarily unavailable. Retry with backoff.
content:
application/json:
schema:
$ref: '#/components/schemas/AdminApiErrorResponse'
example:
error:
message: Enterprise Admin API audit events are temporarily unavailable.
type: service_unavailable
code: 503
tags:
- Admin
components:
schemas:
AuditEventsResponse:
type: object
properties:
data:
type: array
items:
$ref: '#/components/schemas/AuditEvent'
description: Events in this page, newest first.
has_more:
type: boolean
description: Whether more events exist beyond this page in the direction you are paging. Stop when `false`; do not wait for an empty page.
first_id:
type:
- string
- 'null'
description: Opaque cursor for the newest event in the page, or `null` when `data` is empty. Save it and pass it as `before_id` on a later poll.
last_id:
type:
- string
- 'null'
description: Opaque cursor for the oldest event in the page, or `null` when `data` is empty. Pass it as `after_id` to fetch the next older page.
required:
- data
- has_more
- first_id
- last_id
AuditEvent:
type: object
description: A single audit event. Field semantics match audit log webhooks.
properties:
id:
type: string
description: Stable, unique event identifier.
created_at:
type: string
format: date-time
description: When the event occurred, in UTC.
type:
type: string
description: Event type, for example `query`, `member_invited`, or `connector_connected`.
actor_email:
type: string
description: Email of the member who performed the action. Empty for system-generated events such as `audit_events_accessed`.
actor_external_user_id:
type: string
description: The actor's external identifier from your identity provider (SCIM `externalId`) when set; otherwise an empty string.
ip_address:
type: string
description: Client IP address recorded for the action, or an empty string when unavailable.
user_agent:
type: string
description: Client user agent recorded for the action, or an empty string when unavailable.
session_id:
type:
- string
- 'null'
description: Identifier for the actor's sign-in session, or `null` when no session applies.
metadata:
type: object
additionalProperties: true
description: Event-specific details. Keys vary by `type` and match the audit log webhook payload for that event. Treat the object as additive; new keys may appear without a version change.
required:
- id
- created_at
- type
- actor_email
- actor_external_user_id
- ip_address
- user_agent
- session_id
- metadata
AdminApiErrorResponse:
type: object
properties:
error:
type: object
properties:
message:
type: string
type:
type: string
code:
type: integer
required:
- message
- type
- code
required:
- error
securitySchemes:
HTTPBearer:
type: http
scheme: bearer