Why it Matters
Not an Afterthought API
The Plexara REST API is the canonical surface of the platform. The portal is a SPA that consumes it. Admin tooling, user workflows, and automated pipelines all speak the same HTTP. Whatever the portal can do, your code can do, under the same governance.
Fail-Closed Authentication
Every request is authenticated against your identity provider before any tool or data access occurs. No anonymous mode. No permissive fallback.
Persona-Enforced Authorization
Each call is evaluated against the caller persona. Unauthorized tools, connections, and resources are not just blocked; they are not visible.
Audit on Every Call
Tool calls, queries, and errors flow into structured audit with indexed fields for user, tool, timestamp, status, and latency. Query the same log the platform does.
Typed Schemas, Live Catalog
Every tool exposes a JSON schema. Every endpoint returns typed responses. The catalog is live: new tools appear the moment they are registered.
Authentication
Three Methods, One Identity Model
Every method resolves to the same persona system. Whether a request arrives from a human, a service, or an MCP client, Plexara evaluates it against the same policy graph and writes the same audit record.
API Key
Service accounts, CI pipelines, scheduled jobs.
Minted per service with explicit persona scope, expiration, and rotation. Revocable in one click. Usage is audited.
X-API-Key: <key>
Bearer Token (OIDC)
Interactive human users via your identity provider.
Tokens validated against your upstream IdP with JWKS auto-discovery. Roles map to personas through your existing identity infrastructure.
Authorization: Bearer <id_token>
OAuth 2.1 + PKCE
MCP clients, desktop agents, third-party integrations.
The built-in OAuth 2.1 server bridges MCP clients to your upstream IdP with PKCE, rotating refresh tokens, and bcrypt-hashed client secrets.
Authorization: Bearer <access_token>
Quickstart
Your First Request
List the tools your persona has access to. No SDK required. Any HTTP client works.
List tools (Admin)
curl https://api.plexara.io/api/v1/admin/tools \ -H "X-API-Key: $PLEXARA_API_KEY" \ -H "Accept: application/json"
Get current session (Portal)
curl https://api.plexara.io/api/v1/portal/me \ -H "Authorization: Bearer $PLEXARA_TOKEN" \ -H "Accept: application/json"
Execute a tool
curl https://api.plexara.io/api/v1/admin/tools/call \
-X POST \
-H "X-API-Key: $PLEXARA_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"name": "trino.query",
"arguments": { "sql": "SELECT 1" }
}'API Surface
Three Namespaces, One Platform
The full API is organized into three top-level namespaces. A representative subset of each is shown below. The complete endpoint catalog with request and response schemas lives in the API reference.
Portal
/api/v1/portalPractitioner-scoped endpoints. Everything the portal SPA calls on behalf of a signed-in user. Scoped to the caller and their persona.
- GET
/Current session identity and persona.api/ v1/ portal/ me - GET
/List personal assets.api/ v1/ portal/ assets - POST
/Copy a shared asset.api/ v1/ portal/ assets/ {id}/ copy - GET
/Asset version history.api/ v1/ portal/ assets/ {id}/ versions - GET
/List personal collections.api/ v1/ portal/ collections - PUT
/Reorder collection sections.api/ v1/ portal/ collections/ {id}/ sections - POST
/Share an asset.api/ v1/ portal/ assets/ {id}/ shares - GET
/Assets shared with me.api/ v1/ portal/ shared-with-me - GET
/User activity metrics.api/ v1/ portal/ activity/ overview - GET
/Insights captured by me.api/ v1/ portal/ knowledge/ insights - GET
/My memory records.api/ v1/ portal/ memory/ records - GET
/Personal and accessible prompts.api/ v1/ portal/ prompts
Admin
/api/v1/adminPlatform administration. Audit, personas, connections, knowledge governance, memory, configuration, tools catalog, and tool execution.
- GET
/Platform identity and features.api/ v1/ admin/ system/ info - GET
/Structured audit log search.api/ v1/ admin/ audit/ events - GET
/Latency and success rates.api/ v1/ admin/ audit/ metrics/ overview - GET
/Full tool catalog.api/ v1/ admin/ tools - POST
/Execute a tool.api/ v1/ admin/ tools/ call - GET
/JSON schemas for all tools.api/ v1/ admin/ tools/ schemas - GET
/Persona definitions.api/ v1/ admin/ personas - PUT
/Update persona policy.api/ v1/ admin/ personas/ {name} - GET
/Upstream data-source inventory.api/ v1/ admin/ connections - GET
/Pending and applied changesets.api/ v1/ admin/ knowledge/ changesets - POST
/Reverse a changeset.api/ v1/ admin/ knowledge/ changesets/ {id}/ rollback - POST
/Mint a service API key.api/ v1/ admin/ auth/ keys - GET
/Platform change history.api/ v1/ admin/ config/ changelog
Resources
/api/v1/resourcesMCP resource CRUD. The same resource surface exposed to AI agents, directly accessible for tooling, validation, and automation.
- GET
/List visible resources.api/ v1/ resources - POST
/Create a resource.api/ v1/ resources - GET
/Get resource metadata.api/ v1/ resources/ {id} - GET
/Get resource content.api/ v1/ resources/ {id}/ content - PATCH
/Update resource.api/ v1/ resources/ {id} - DELETE
/Delete resource.api/ v1/ resources/ {id}
Conventions
Predictable by Design
- Versioned, stable paths
- Every route is rooted at
/api/v1. Breaking changes are versioned, never patched in place. - Pagination
- List endpoints accept
pageandper_pagequery parameters. Responses includetotal. - Content types
- JSON request and response bodies. Binary asset content is returned with the original content type. Errors use
application/problem+json. - Idempotency
- PUT and DELETE are idempotent. POST creation endpoints accept an
Idempotency-Keyheader when deduplication matters.
Errors
RFC 7807 Problem Details
Errors are never a wall of HTML or a terse string. Every failure returns a structured problem response with a machine-readable type, a human-readable title, an HTTP status, and a detail line that explains what went wrong in the context of this specific call.
HTTP/1.1 403 Forbidden
Content-Type: application/problem+json
{
"type": "about:blank",
"title": "Forbidden",
"status": 403,
"detail": "persona 'analyst' does not allow tool 'trino.admin.drop_table'",
"instance": "/api/v1/admin/tools/call"
}Common questions
Developer FAQ
OIDC with required JWT claims is the primary path. OAuth 2.1 with PKCE and Dynamic Client Registration is supported for new client types. API key management (X-API-Key header) is available for service accounts that cannot do interactive auth. Your IdP provides the identity; Plexara provides the persona resolution.
They expose the same governed surface (assets, collections, knowledge, memory, prompts, personas, audit, tool execution). Choose REST when you need a service-to-service call with a stable contract. Choose MCP when an AI agent needs the same operations through a protocol it already understands. Both share one identity, audit, and persona model.
The MCP server works with any MCP-compatible client SDK (Anthropic, OpenAI, the open-source MCP libraries in TypeScript and Python). The REST API ships an OpenAPI specification, so generated clients work with the standard openapi-generator tooling for whichever language your service is in.
Tool calls and queries are bounded per persona, with hard limits on result size to keep responses inside agent context windows. Customer-specific quotas (concurrent agents, queries per minute, storage) are negotiated as part of the engagement. The audit log records throttling events so capacity tuning is data-driven, not guesswork.
Yes. Custom tools can be registered through the Portal or via the management API, with persona-scoped visibility. They appear in the agent's tool list like any other Plexara tool, with the same audit and authorization treatment.
Reference
Full API Reference
Browse every endpoint, request and response schema, and authentication detail in the complete reference.
