Skip to main content
ARQERA
FeaturesOreOjuIntegrationsDocs
Request Early Access
Enterprise-grade

Authentication & Security

Enterprise-grade identity, access control, and audit infrastructure. Every request authenticated, every action governed, every decision recorded.

Request Early AccessAPI Reference

Authentication Methods

Choose the authentication strategy that fits your integration pattern.

API Keys

Server-to-server authentication with scoped permissions and automatic rotation. Ideal for backend integrations and CI/CD pipelines.

OAuth 2.0

User-context operations via authorization code flow with PKCE support. Standards-compliant implementation for web and mobile apps.

SSO / SAML

Enterprise single sign-on via SAML 2.0 and OpenID Connect. Managed through WorkOS. Available on Business and Enterprise plans.

JWT Tokens

RS256-signed session tokens for authenticated user sessions. Auto-refresh, revocation, and configurable expiry.

API Key Authentication

Server-to-server authentication with scoped permissions

Creating API Keys

Navigate to Settings → API Keys → Create in the ARQERA app. Each key is shown exactly once at creation. Store it securely — you will not be able to view the full key again.

Production

ak_live_...

Live environment. Real data and billing.

Sandbox

ak_test_...

Isolated sandbox. No billing, safe for testing.

Permission Scopes

ScopeDescription
diagnostic:readRead system diagnostics and health data
diagnostic:writeRun diagnostic checks and update configuration
governance:readRead governance evaluations and approval history
governance:writeCreate evaluations and manage approval workflows
evidence:readRead evidence artifacts and audit trail
evidence:writeEmit evidence artifacts and create audit entries
ara:executeExecute Ara AI actions and protocol runs
adminFull administrative access (tenant-scoped)

Authenticating Requests

Include your API key in the request header using either format:

Option 1 — X-API-Key header

X-API-Key: ak_live_abc123...

Option 2 — Authorization header

Authorization: Bearer ak_live_abc123...

Code Examples

cURL

curl -X GET https://api.arqera.io/api/diagnostic/health \
  -H "X-API-Key: ak_live_your_key_here"

Python

import os
from arqera import ArqeraClient

client = ArqeraClient(
    api_key=os.environ["ARQERA_API_KEY"],
    base_url="https://api.arqera.io",
)

health = client.diagnostic.health()
print(health)

TypeScript

import { ArqeraClient } from '@arqera/sdk';

const client = new ArqeraClient({
  apiKey: process.env.ARQERA_API_KEY!,
  baseUrl: 'https://api.arqera.io',
});

const health = await client.diagnostic.health();
console.log(health);

Key Rotation

API keys expire automatically after 90 days. A notification is sent 24 hours before deactivation. Follow this zero-downtime rotation process:

  1. 1Create a new API key with the same scopes in Settings → API Keys.
  2. 2Deploy the new key to your services. Both old and new keys work simultaneously.
  3. 3Verify all services are using the new key by checking “Last Used” timestamps.
  4. 4Revoke the old key. Revocation is immediate and irreversible.

OAuth 2.0

User-context authentication for web, mobile, and SPA applications

Endpoints

Authorizationhttps://app.arqera.io/oauth/authorize
Tokenhttps://app.arqera.io/oauth/token
User Infohttps://app.arqera.io/oauth/userinfo

Supported Grant Types

authorization_code

Standard OAuth flow for server-side web apps. Includes PKCE support for public clients.

client_credentials

Machine-to-machine authentication. No user context. Ideal for backend services.

refresh_token

Exchange a refresh token for a new access token without re-authentication.

OAuth Scopes

ScopeDescription
openidRequired. Returns a sub claim in the ID token.
profileUser profile information (name, avatar).
emailUser email address.
offline_accessEnables refresh token issuance.
diagnostic:readRead system diagnostics.
governance:readRead governance data.
evidence:readRead evidence artifacts.
ara:executeExecute Ara AI actions.

PKCE (Proof Key for Code Exchange)

Required for public clients (SPAs, mobile apps, CLI tools). PKCE prevents authorization code interception attacks without requiring a client secret.

// 1. Generate code verifier and challenge
const verifier = generateRandomString(64);
const challenge = base64url(sha256(verifier));

// 2. Authorization request (browser redirect)
const authUrl = new URL('https://app.arqera.io/oauth/authorize');
authUrl.searchParams.set('client_id', CLIENT_ID);
authUrl.searchParams.set('response_type', 'code');
authUrl.searchParams.set('redirect_uri', REDIRECT_URI);
authUrl.searchParams.set('scope', 'openid profile email');
authUrl.searchParams.set('code_challenge', challenge);
authUrl.searchParams.set('code_challenge_method', 'S256');
authUrl.searchParams.set('state', generateRandomString(32));

// 3. Exchange code for tokens
const tokenResponse = await fetch(
  'https://app.arqera.io/oauth/token',
  {
    method: 'POST',
    headers: { 'Content-Type': 'application/x-www-form-urlencoded' },
    body: new URLSearchParams({
      grant_type: 'authorization_code',
      code: authorizationCode,
      redirect_uri: REDIRECT_URI,
      client_id: CLIENT_ID,
      code_verifier: verifier,
    }),
  }
);

const { access_token, refresh_token, id_token } = await tokenResponse.json();

Single Sign-On (SSO)

Enterprise SSO via SAML 2.0 or OpenID Connect, managed through WorkOS

Supported Identity Providers

Okta

SAML 2.0

Full support

Microsoft Entra ID

SAML 2.0 / OIDC

Full support

Google Workspace

OIDC

Full support

Custom SAML IdP

SAML 2.0

Full support

SAML 2.0 Configuration

Provide these Service Provider (SP) details to your identity provider:

Entity IDhttps://api.arqera.io/auth/sso/saml/metadata/<your-tenant>
ACS URLhttps://api.arqera.io/auth/sso/callback
SLO URLhttps://api.arqera.io/auth/sso/logout
NameID Formaturn:oasis:names:tc:SAML:1.1:nameid-format:emailAddress

OpenID Connect Configuration

For OIDC-based SSO, configure the following in your identity provider:

Redirect URIhttps://app.arqera.io/auth/sso/callback
Scopesopenid email profile
Response Typecode

Just-in-Time Provisioning

When a user authenticates via SSO for the first time, ARQERA automatically creates their account and assigns them the Member role within your tenant. No manual user creation required. Name and email are synced from the identity provider on each login.

SSO is available on the Business and Enterprise plans. Configure connections from System → SSO & Provisioning.

SCIM Provisioning

Automate user lifecycle management with your identity provider

SpecSCIM 2.0 (RFC 7643 / 7644)
Supported resourcesUsers, Groups
OperationsCreate, Read, Update, Delete, Patch, Filter
Bulk operationsNot currently supported
Auth methodBearer token (API key with admin scope)
Max filter results200
Change passwordSupported
ETagSupported

SCIM Endpoint

https://app.arqera.io/api/scim/v2

Configure this URL in your identity provider. Generate a SCIM token from System → SSO & Provisioning in the ARQERA app. The token requires the admin scope.

Configuration Guides

Okta

Applications → Add App → SCIM provisioning

Microsoft Entra ID

Enterprise Apps → Provisioning → SCIM

OneLogin

Applications → Parameters → SCIM config

JumpCloud

SSO Applications → Identity Management → SCIM

JWT Tokens

RS256-signed session tokens for authenticated user sessions

Token Details

AlgorithmRS256 (RSA with SHA-256)
Access token lifetime15 minutes
Refresh token lifetime7 days (configurable)
Token formatJWT (RFC 7519)
Key verificationJWKS endpoint for public key discovery
Claimssub, email, tenant_id, roles, iat, exp, iss, aud

Token Usage

// Login and receive tokens
const response = await fetch('https://api.arqera.io/auth/login', {
  method: 'POST',
  headers: { 'Content-Type': 'application/json' },
  body: JSON.stringify({
    email: '[email protected]',
    password: 'your-password',
  }),
});

const { access_token, refresh_token } = await response.json();

// Use access token for authenticated requests
const data = await fetch('https://api.arqera.io/api/governance/evaluations', {
  headers: { Authorization: `Bearer ${access_token}` },
});

// Refresh when access token expires
const refreshResponse = await fetch('https://api.arqera.io/auth/refresh', {
  method: 'POST',
  headers: { 'Content-Type': 'application/json' },
  body: JSON.stringify({ refresh_token }),
});

const { access_token: newAccessToken } = await refreshResponse.json();

Security Model

A 5-layer immune system protecting every request, every action, every decision

1

Input Validation

All incoming data is validated at system boundaries. Request schemas are enforced, payloads are sanitized, and malformed input is rejected before it reaches business logic.

2

Authentication

Identity verification via API keys, OAuth tokens, SSO assertions, or JWT sessions. Every request must present valid credentials before processing.

3

Authorization

Permission enforcement via role-based access control (RBAC). Actions are checked against the user's role, custom permissions, and tenant-scoped boundaries.

4

Governance

AI-powered intent classification evaluates risk and applies approval workflows. High-risk actions require explicit human approval before execution.

5

Audit

Every action emits an immutable evidence artifact with a SHA-256 hash. The full audit trail is queryable, exportable, and tamper-evident.

Multi-Factor Authentication

  • TOTP (Google Authenticator, Authy, 1Password)
  • WebAuthn / FIDO2 hardware keys
  • Passkey support (biometric)
  • Tenant-wide MFA enforcement

Session Management

  • Configurable session lifetime
  • Concurrent session limits
  • Remote session revocation
  • Idle timeout enforcement

IP Allowlisting

Restrict access to specific IP addresses or CIDR ranges. Available on the Enterprise plan. Configure from Settings → Security → IP Allowlist.

Anomaly Detection

Powered by WorkOS Radar. Detects suspicious login patterns, impossible travel, credential stuffing, and brute-force attempts. Automatic blocking and alert escalation.

Rate Limits

Fair usage enforcement with transparent headers

PlanRequests / MinuteBurstDaily Limit
Free60 req/min105,000/day
Team300 req/min5050,000/day
Business1,000 req/min200500,000/day
EnterpriseCustomCustomUnlimited

Rate Limit Headers

Every API response includes rate limit headers so you can track your usage:

HeaderDescription
X-RateLimit-LimitMaximum requests allowed in the current window
X-RateLimit-RemainingRequests remaining in the current window
X-RateLimit-ResetUnix timestamp when the window resets
X-RateLimit-CategoryRate limit category applied (e.g. auth, ai, global)
Retry-AfterSeconds to wait before retrying (only on 429 responses)

Handling 429 Responses

When rate limited, you receive a 429 Too Many Requests response. Implement exponential backoff with jitter:

async function fetchWithRetry(url: string, options: RequestInit, maxRetries = 3) {
  for (let attempt = 0; attempt <= maxRetries; attempt++) {
    const response = await fetch(url, options);

    if (response.status !== 429) return response;

    if (attempt === maxRetries) {
      throw new Error('Rate limit exceeded after max retries');
    }

    const retryAfter = parseInt(response.headers.get('Retry-After') || '1');
    const jitter = Math.random() * 1000;
    const delay = retryAfter * 1000 * Math.pow(2, attempt) + jitter;

    await new Promise(resolve => setTimeout(resolve, delay));
  }
}

Security Best Practices

Follow these guidelines to keep your integration secure

Never expose keys in client-side code

API keys must only be used server-side. Use OAuth 2.0 with PKCE for browser and mobile applications.

Use environment variables

Store credentials in environment variables or a secrets manager. Never commit keys to source control.

Rotate keys regularly

Keys expire automatically after 90 days. Create a new key, migrate services, then revoke the old key. Zero-downtime rotation.

Apply least-privilege scopes

Create separate keys per service with only the scopes needed. A reporting service should not have ara:execute permissions.

Enable MFA for all team members

Require TOTP-based multi-factor authentication for every user account. Enforce via team security settings.

Monitor audit logs

Review the evidence trail regularly. Set up webhook alerts for suspicious patterns like failed auth attempts or privilege escalation.

Integration Security Checklist

Secure your AI operations today

Start with a free account. Enterprise SSO, SCIM, and IP allowlisting available on Business and Enterprise plans.

Request Early AccessBack to Docs

Product

  • Ore
  • Oju
  • Integrations

Solutions

  • For Developers
  • For Operations
  • For Startups
  • Compliance

Resources

  • Documentation
  • FAQ
  • Open Source

Company

  • About
  • Security
  • Privacy
  • Terms
  • Cookies
  • Legal
© 2026 ARQERA. All rights reserved.