AIMEAT Admin API

Operator dashboard and configuration

Operations 178

POST /v1/admin/ai/catalog/refresh Refresh the model catalogue now (operator) #
POST /v1/admin/decide/test Test the node's own TypeSafe key #
GET /v1/admin/compliance/report Operator report - the trail this node kept, the register you wrote, and the… #
GET /v1/admin/compliance/reports The compliance reports this node has kept #
POST /v1/admin/compliance/snapshot Keep the compliance report as it stands now #
GET /v1/admin/compliance/draft The node's own first draft of the register, composed from what actually ran #
GET /v1/admin/compliance/usecases The use-case register - what AI is used for on this node #
PUT /v1/admin/compliance/usecases Replace the use-case register #
GET /v1/admin/compliance/questionnaire The risk-classification question set #
PUT /v1/admin/compliance/questionnaire Replace the risk-classification question set #
DELETE /v1/admin/peering/requests/{id} Delete a peering request #
GET /v1/admin/federation/overview The Federation page in one read (admin) #
GET /v1/admin/dashboard Dashboard #
GET /v1/admin/node-update Is a newer AIMEAT out #
GET /v1/admin/config View config #
PUT /v1/admin/config Change settings #
POST /v1/admin/roles/grant Grant operator role #
POST /v1/admin/roles/revoke Revoke operator role #
GET /v1/admin/agents List all agents (operator) #
GET /v1/admin/app-grants List every live app grant, against what each app asks for today (operator) #
GET /v1/admin/organisms Every organism on this node, and who holds it (operator) #
GET /v1/admin/exposure What of the node's accounts someone outside can read, in numbers (operator) #
GET /v1/admin/organisms/{id}/ownership Read an organism's ownership state (operator) #
POST /v1/admin/organisms/{id}/ownership Install an owner on an organism (operator break-glass) #
PUT /v1/admin/ghii/{ghii}/cors Set/clear CORS for any GHII user (operator) #
PUT /v1/admin/agents/{gaii}/cors Set/clear CORS for any agent (operator) #
GET /v1/admin/stats System statistics (operator) #
GET /v1/admin/onboarding-funnel Onboarding activation funnel (operator) #
GET /v1/admin/messages/stats Direct-message delivery telemetry (operator) #
GET /v1/admin/backup Export all data #
POST /v1/admin/restore Import data from backup #
GET /v1/admin/hooks The Hooks page in one read #
PUT /v1/admin/hooks/{hookName} Bind actions to one moment #
DELETE /v1/admin/hooks/{hookName} Clear hook #
GET /v1/admin/maintenance Read the node's maintenance-mode state #
POST /v1/admin/maintenance Toggle maintenance mode #
POST /v1/admin/maintenance/compact-workspace-versions One-shot workspace version-history compaction #
GET /v1/admin/prompts List all system prompts #
GET /v1/admin/prompts/{id} Get single system prompt #
PATCH /v1/admin/prompts/{id} Update system prompt #
POST /v1/admin/prompts/{id}/reset Reset prompt to factory default #
GET /v1/admin/prompts/{id}/versions List version history of a system prompt #
GET /v1/admin/prompts/{id}/versions/{version} Get a specific version of a system prompt #
POST /v1/admin/prompts/{id}/versions/{version}/restore Restore a specific version as the current prompt #
GET /v1/admin/subdomains List subdomain mappings (node operator) #
POST /v1/admin/subdomains Create a subdomain mapping (node operator) #
PATCH /v1/admin/subdomains/{subdomain} Update a subdomain mapping (node operator) #
DELETE /v1/admin/subdomains/{subdomain} Delete a subdomain mapping (node operator) #
GET /v1/admin/apps List every app for operator moderation #
POST /v1/admin/apps/{owner}/{filename}/moderate Hide or restore an app (operator moderation) #
GET /v1/admin/seo/status Is this node findable, and what is still undone #
GET /v1/admin/seo/indexnow/plan What a whole-site instant update would send, without sending it #
POST /v1/admin/seo/indexnow Tell the search engines about the whole site now #
POST /v1/admin/apps/{owner}/{filename}/seo-block Block or unblock one app's search visibility (operator) #
POST /v1/admin/apps/{owner}/{filename}/seo-approve Approve an app's request to be findable (operator, review mode only) #
DELETE /v1/admin/apps/{owner}/{filename} Permanently delete an app (operator hard delete) #
GET /v1/admin/file-store Where this node keeps the bytes of stored files #
PUT /v1/admin/file-store/stores/{name} Add a named node store, give one a new key, or change its options #
DELETE /v1/admin/file-store/stores/{name} Remove a named node store #
POST /v1/admin/file-store/test Test a node file store #
POST /v1/admin/file-store/move Move files from one node place to another #
POST /v1/admin/file-store/owners/{owner}/decision Approve, decline or revoke a person's own storage #
GET /v1/admin/internet-openings Every app open to the internet on this closed node, and what waits #
POST /v1/admin/internet-openings/{owner}/{filename}/decision Approve or decline what waits on an app's opening #
POST /v1/admin/internet-openings/{owner}/{filename}/close An operator closes any app to the internet #
PUT /v1/admin/internet-openers/{owner} Let an owner open apps to the internet without an operator's approval #
DELETE /v1/admin/internet-openers/{owner} An owner's openings wait for an operator again #
POST /v1/admin/owners/{name}/disable Deactivate an account (operator) #
POST /v1/admin/owners/{name}/enable Reactivate a deactivated account (operator) #
DELETE /v1/admin/owners/{name}/totp Remove two-step sign-in from an account (operator) #
GET /v1/admin/knowledge List all knowledge packages (admin) #
POST /v1/admin/knowledge/import Admin import knowledge package #
DELETE /v1/admin/knowledge/{id} Admin delete knowledge package #
POST /v1/admin/knowledge/{id}/review Admin review knowledge package #
GET /v1/admin/capabilities List all capabilities (operator sees all visibilities) #
PUT /v1/admin/capabilities/{id}/override Set operator override (disable, notes, visibility) #
GET /v1/admin/capabilities/{id}/logs View capability invocation logs and stats #
GET /v1/admin/usage/summary Cross-owner usage reports, or one named owner slice (operator only) #
GET /v1/admin/usage/reports Which usage reports exist in each scope (operator only) #
GET /v1/admin/usage/calls Raw usage-call rows behind the reports (operator only, audited) #
GET /v1/admin/usage/status How fresh the precomputed usage layer is, and its retention windows (operator… #
GET /v1/admin/usage/page What AI costs on this node, by whose money it is (operator only) #
GET /v1/admin/usage/keys What the PROVIDER says this node's own keys have spent (operator only) #
POST /v1/admin/usage/rollup/rebuild Clear a bucket range and recompute it from raw (operator only) #
POST /v1/admin/usage/archive/prune Permanently delete archived usage rows before a date (operator only) #
GET /v1/admin/auth-refusals The refusal log's tail — who was turned away, at which door, from where… #
GET /v1/admin/storage-stats Live per-table row counts + recent hourly storage-size snapshots (operator DB… #
POST /v1/admin/storage-stats/snapshot Capture a storage-size snapshot immediately (the hourly job also does this) #
GET /v1/admin/agent-tasks List all agent tasks (operator) #
POST /v1/admin/platforms Register a custom agent platform #
GET /v1/admin/platforms List known platforms with agent counts #
GET /v1/admin/agents/onboarding Aggregate onboarding status across all agents #
GET /v1/admin/agents/readiness Readiness level distribution #
GET /v1/admin/skill-bundles Bundle version status per platform #
POST /v1/admin/skill-bundles/regenerate Force regenerate skill bundles and notify outdated agents #
GET /v1/admin/sharing-groups List all sharing groups (operator) #
GET /v1/admin/scheduler/jobs List scheduled jobs #
GET /v1/admin/scheduler/jobs/{id} Get scheduled job detail #
PATCH /v1/admin/scheduler/jobs/{id} Update a scheduled job #
DELETE /v1/admin/scheduler/jobs/{id} Delete a scheduled job #
POST /v1/admin/scheduler/jobs/{id}/trigger Manually trigger a scheduled job #
GET /v1/admin/scheduler/execution-log List scheduled-job execution history #
DELETE /v1/admin/scheduler/execution-log Prune old execution-log entries #
GET /v1/admin/security/overview The Security page in one read (operator) #
GET /v1/admin/cors/overview The CORS page in one read (operator) #
GET /v1/admin/security/incidents List security incidents #
GET /v1/admin/security/incidents/{id}/quarantine Download an incident's quarantined payload #
POST /v1/admin/security/incidents/{id}/resolve Mark a security incident resolved, or decide one case of it #
DELETE /v1/admin/security/incidents/{id} Delete a security incident #
GET /v1/admin/email/status Email service status #
POST /v1/admin/email/test Send a test email #
POST /v1/admin/email/send-group Send an email to a group of users #
GET /v1/admin/email/templates List email templates #
POST /v1/admin/email/templates/seed Seed default email templates #
POST /v1/admin/email/templates/reset Reset all email templates to defaults #
PUT /v1/admin/email/templates/{id} Save a custom email template #
DELETE /v1/admin/email/templates/{id} Reset a single email template to default #
GET /v1/admin/push Push notification overview #
PUT /v1/admin/push/templates/{id}/{locale} Save a push notification template #
POST /v1/admin/push/test Send a test push notification #
POST /v1/admin/push/templates/reset Reset push templates to defaults #
GET /v1/admin/translations Get dashboard translations #
POST /v1/admin/prompts/reset-all Reset all system prompts to factory defaults #
POST /v1/admin/prompts/reset-group/{group} Reset a system prompt group to factory defaults #
GET /v1/admin/federation List peering requests (federation overview) #
POST /v1/admin/federation/join Introduce this node to a genesis/target node #
POST /v1/admin/federation/trust-advisory Issue a trust advisory about a peer node #
GET /v1/admin/federation/trust-advisories List trust advisories (received and issued) #
GET /v1/admin/federation/sync-health Federation replication sync-health metrics #
GET /v1/admin/federation/relay-earnings Query relay earnings for this node #
GET /v1/admin/genesis-peers List cross-federation genesis peers #
POST /v1/admin/genesis-peers/{id}/approve Approve a genesis peering #
POST /v1/admin/genesis-peers/{id}/suspend Suspend a genesis peering #
DELETE /v1/admin/genesis-peers/{id} Remove a genesis peering #
GET /v1/admin/consul Consul connection status and key listing #
POST /v1/admin/consul/export Push mutable config to Consul KV #
POST /v1/admin/consul/import Pull config from Consul KV and apply #
GET /v1/admin/directory/stats Directory index statistics #
POST /v1/admin/directory/rebuild Rebuild the directory index #
DELETE /v1/admin/config/{path} Remove a DB config override #
GET /v1/admin/csm List CSM templates #
GET /v1/admin/csm/{name} Get CSM template detail #
DELETE /v1/admin/csm/{name} Delete a CSM template #
GET /v1/admin/msm List MSM integrations #
GET /v1/admin/msm/{name} Get MSM integration detail #
PUT /v1/admin/msm/{name} Update MSM metadata #
DELETE /v1/admin/msm/{name} Delete an MSM integration #
GET /v1/admin/ghii List GHII users #
PUT /v1/admin/ghii/{ghii} Update GHII verification level #
DELETE /v1/admin/ghii/{ghii} Delete a GHII user #
DELETE /v1/admin/ghii/{ghii}/email Clear a GHII user's email #
GET /v1/admin/memory List memory records across all owners #
GET /v1/admin/memory/search Search inside memory values, across every owner #
GET /v1/admin/memory/{owner}/{key} One memory record, whole #
DELETE /v1/admin/memory/{owner}/{key} Put any memory record in the bin #
POST /v1/admin/memory/{owner}/{key}/restore Take a memory record back out of the bin #
GET /v1/admin/extensions/available List bundled extensions #
POST /v1/admin/extensions/available/{name}/install Install a bundled extension #
POST /v1/admin/extensions/available/{name}/reinstall Reinstall a bundled extension #
POST /v1/admin/extensions/available/{name}/actions Add an action to a disk extension #
GET /v1/admin/extensions/available/{name}/scripts/{actionId} Read an extension action script #
PUT /v1/admin/extensions/available/{name}/scripts/{actionId} Write an extension action script #
POST /v1/admin/extensions/scaffold Scaffold a new extension on disk #
GET /v1/admin/owners List owners with roles #
GET /v1/admin/realtime Realtime overview #
GET /v1/admin/work List all work items #
POST /v1/admin/agents/{gaii}/remind Send an onboarding reminder to an agent #
POST /v1/admin/agents/{gaii}/onboarding/skip Skip an agent onboarding step #
POST /v1/admin/capabilities/aggregate Trigger capability aggregation #
POST /v1/admin/mint Mint morsels for an agent #
POST /v1/admin/seed-examples Seed example packages #
POST /v1/admin/setup/auth Authenticate with the admin password #
POST /v1/admin/setup/register Register an owner (setup wizard) #
POST /v1/admin/setup/token Issue an owner JWT with the account key (removed in 4.0.0) #
POST /v1/admin/skill-bundles/{platform}/notify Notify a skill-bundle platform #
GET /v1/admin/usage/house AI spend split by whose key paid #
POST /v1/admin/site/sync Push portal content to the load-balancer origin now #
POST /v1/admin/maintenance/backfill-home-feed Write the missing home-feed history for existing accounts #

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • 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.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/aimeat-io:aimeat-io-admin-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API 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 Specification

aimeat-io-admin-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: AIMEAT Protocol Admin API
  description: 'AI Memory Exchange and Action Transfer (AIMEAT): love what you build, share what you know. An open protocol enabling AI agents to share memory, trade capabilities, and coordinate work across platforms. ## Key Concepts

    - **GHII**: a person, `owner@node-id`. **GAII**: an AI agent, `agent#owner@node-id`

    - **Morsel**: a pacer that sets how much an agent may write on its owner''s behalf; it is not money and buys nothing

    - **Hints**: every response includes next-action suggestions (HATEOAS for AI)

    - **Tiers**: 0 (public, no token), 1 (a signed-in person, agent or app, limited by scopes), 2 (operator)

    - **`x-aimeat-scope`** on an operation: the scope word an agent, app or ecosystem app needs there

    (the owner in person needs none). `enforcedIn` is the node release that starts refusing a call

    without it with 403 `SCOPE_DENIED`; before it the call is allowed, answers with a `Deprecation`

    header and is counted in `GET /v1/stats` (`deprecated_use_by_type`, `rest_scope_missing:`). `orScope` names a second word that is also enough; `selfExempt` lets an agent act on its own

    record, named by `{name}`, without the word. ## Authentication

    Every authenticated call sends `Authorization: Bearer `. A request that sends a token the

    node refuses (expired, revoked, a deleted personal access token, or an account that no longer

    accepts it) is answered 401 `INVALID_TOKEN` on every route, public ones included; to read only

    public data, send no token. The ways to get a token:

    - **Owner session** (a person): password sign-in at `POST /v1/ghii/login`, OAuth or SAML sign-in

    (`/v1/ghii/login/{provider}`, `/v1/ghii/login/saml/{connectionId}`) or a passkey

    (`/v1/ghii/login/passkey/*`), with an optional TOTP second step. It returns a short-lived JWT and a

    refresh cookie for `POST /v1/auth/refresh`. - **Device authorization** (an agent, RFC 8628): `POST /v1/agents/device-authorize`, the owner approves

    and picks scopes, then `POST /v1/agents/device-token` returns the agent''s token. - **Agent tokens**: the JWT an approved agent holds, limited to its scopes. A key-holding v2 agent

    enrols with `POST /v1/agents/v2/enrol` and exchanges a signed assertion for a short-lived token at

    `POST /v1/agents/v2/token`. - **Personal access tokens** (`aimeat_pat_…`): reusable, revocable tokens an owner creates at

    `POST /v1/access/tokens`, with selected scopes or owner access. - **OAuth for MCP**: OAuth 2.1 with PKCE (S256) and dynamic client registration for MCP clients at

    `/v1/mcp`, discovered from `/.well-known/oauth-authorization-server` and

    `/.well-known/oauth-protected-resource`. - **Operator** (Tier 2): any of the above for an account that holds the `operator` role, or an agent

    holding `operator:admin`. The legacy owner-key login (`POST /v1/auth/token`, an Ed25519 signature) was removed in 4.0.0. ## Request replay protection

    POST and PUT accept an optional UUID `Idempotency-Key` header. Keys are scoped to the

    authenticated principal, HTTP method and full request URL. The server reserves the key

    before executing the handler. A concurrent duplicate receives 409 `IDEMPOTENCY_IN_PROGRESS`;

    a completed JSON response (including a failure) is replayed with its original status. A 401 is not retained, so a refreshed credential may use the same key. If a connection closes

    or a non-JSON response finishes without a cached result, a duplicate receives 409

    `IDEMPOTENCY_RESULT_UNAVAILABLE` instead of starting the work again. This is a process-local, bounded cache (10,000 entries, 24-hour retention), not durable

    exactly-once execution. Completed entries may be evicted for space. Pending or unavailable

    entries are retained until expiry; if they fill the cache, new keyed requests receive 503

    `IDEMPOTENCY_CAPACITY` before their handler runs. Restarting the process clears the cache. Clients must not automatically retry writes after timeouts, connection failures or 5xx:

    the first request may have done its work. Check the result before a deliberate retry.'
  version: 4.2.0
  x-aimeat-protocol: 2026-11
  contact:
    name: Jouni Miikki
    email: jouni.miikki@overscalesolutions.com
    url: https://overscalesolutions.com
  license:
    name: MIT
    url: https://opensource.org/licenses/MIT
servers:
- url: https://aimeat-finland-001-genesis.overscalesolutions.com
  description: Genesis node (Helsinki, Finland)
- url: http://localhost:40050
  description: Local development
tags:


# --- truncated at 32 KB (402 KB total) ---
# Full source: https://artifacts.apis.io/aimeat-io/openapi/aimeat-io-admin-api-openapi.yml