Sageox API Keys API
The API Keys API from Sageox — 2 operation(s) for api keys.
The API Keys API from Sageox — 2 operation(s) for api keys.
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/sageox-api-keys-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: SageOx API Keys API
version: 1.0.0
description: '# API Reference
## Overview
SageOx is a platform that captures team knowledge from discussions, decisions, and work context into a Ledger (per-repo historical record) and Team Context (team-wide shared knowledge).'
contact:
name: SageOx Team
license:
name: MIT
servers:
- url: http://localhost:3000
description: Devcontainer
- url: https://test.sageox.ai
description: Test
- url: https://sageox.ai
description: Production
security:
- bearerAuth: []
tags:
- name: API Keys
paths:
/api/v1/api-keys:
post:
operationId: createAPIKey
summary: Create API key
description: 'Creates a new API key for the authenticated user. The full key is returned
only once and must be stored securely. The key can be used for API
authentication via Bearer token. Optionally specify an expiration period.'
tags:
- API Keys
security:
- BearerAuth: []
requestBody:
required: true
content:
application/json:
schema:
type: object
required:
- name
properties:
name:
type: string
description: Human-readable name for the API key (1-255 characters)
example: Production API Key
expires_in_days:
type: integer
nullable: true
description: Optional expiration period in days from now
minimum: 1
example: 365
examples:
with_expiration:
summary: Create key with 365-day expiration
value:
name: Production API Key
expires_in_days: 365
no_expiration:
summary: Create key with no expiration
value:
name: Permanent API Key
responses:
'201':
description: API key created successfully
content:
application/json:
schema:
type: object
required:
- id
- name
- key_prefix
- created_at
- key
properties:
id:
type: string
format: uuid
description: Unique API key identifier
example: 550e8400-e29b-41d4-a716-446655440000
name:
type: string
description: Key name
example: Production API Key
key_prefix:
type: string
description: First 8 characters of the key (safe to log)
example: mk_aB1cD2e
key:
type: string
description: Full API key (only returned on creation)
example: mk_aB1cD2eF3gH4iJ5kL6mN7oP8qR9sTu
created_at:
type: string
format: date-time
description: Key creation timestamp
example: '2025-01-20T15:30:00Z'
expires_at:
type: string
format: date-time
nullable: true
description: Key expiration timestamp (null if no expiration)
example: '2026-01-20T15:30:00Z'
last_used_at:
type: string
format: date-time
nullable: true
description: Last usage timestamp (null if never used)
example: null
'400':
description: Invalid request parameters
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
examples:
missing_name:
value:
success: false
error: name is required
invalid_expiration:
value:
success: false
error: expires_in_days must be positive
'401':
description: Unauthorized - missing or invalid authentication
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'500':
description: Internal server error
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
get:
operationId: listAPIKeys
summary: List API keys
description: 'Returns all active (non-revoked) API keys for the authenticated user.
Full key values are never returned - only the prefix (first 8 chars) for
identification, creation date, and usage information.'
tags:
- API Keys
security:
- BearerAuth: []
responses:
'200':
description: API keys retrieved successfully
content:
application/json:
schema:
type: object
required:
- keys
properties:
keys:
type: array
items:
type: object
required:
- id
- name
- key_prefix
- created_at
properties:
id:
type: string
format: uuid
description: Unique API key identifier
example: 550e8400-e29b-41d4-a716-446655440000
name:
type: string
description: Key name
example: Production API Key
key_prefix:
type: string
description: First 8 characters of the key
example: mk_aB1cD2e
created_at:
type: string
format: date-time
description: Key creation timestamp
example: '2025-01-20T15:30:00Z'
expires_at:
type: string
format: date-time
nullable: true
description: Key expiration timestamp (null if no expiration)
example: '2026-01-20T15:30:00Z'
last_used_at:
type: string
format: date-time
nullable: true
description: Last usage timestamp
example: '2025-01-20T16:45:00Z'
'401':
description: Unauthorized - missing or invalid authentication
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'500':
description: Internal server error
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
/api/v1/api-keys/{id}:
delete:
operationId: revokeAPIKey
summary: Revoke API key
description: 'Revokes (soft-deletes) an API key. The key cannot be used for authentication
after revocation. Revocation is permanent and cannot be undone.'
tags:
- API Keys
security:
- BearerAuth: []
parameters:
- name: id
in: path
required: true
description: API key UUID to revoke
schema:
type: string
format: uuid
example: 550e8400-e29b-41d4-a716-446655440000
responses:
'204':
description: API key revoked successfully
'400':
description: Invalid key ID format
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
examples:
invalid_id:
value:
success: false
error: invalid key id format
'401':
description: Unauthorized - missing or invalid authentication
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'403':
description: Forbidden - not the owner of this key
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
examples:
not_owner:
value:
success: false
error: not the owner of this key
'404':
description: API key not found
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'500':
description: Internal server error
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
components:
schemas:
ErrorResponse:
type: object
description: Standard error response returned by all endpoints on failure.
required:
- success
- error
properties:
success:
type: boolean
description: Always `false` for error responses.
enum:
- false
error:
type: string
description: Human-readable error message describing what went wrong. Do not parse this programmatically — use HTTP status codes for control flow.
example: Invalid request parameters
securitySchemes:
bearerAuth:
type: http
scheme: bearer
bearerFormat: JWT
description: 'JWT token obtained from the auth service (/api/auth/token).
Token is validated using JWKS from the auth service.
Required claims: sub (user_id), email, name, tier.
'