AIMEAT Organisms API

Phase 2.2 — Group entities (clubs, teams, communities)

Operations 103

POST /v1/organisms Create an organism #
GET /v1/organisms List organisms #
GET /v1/organisms/{id} Get organism detail #
PUT /v1/organisms/{id} Update organism #
DELETE /v1/organisms/{id} Delete organism #
POST /v1/organisms/{id}/join Join an organism #
POST /v1/organisms/{id}/leave Leave an organism #
GET /v1/organisms/{id}/members List organism members #
POST /v1/organisms/{id}/members Directly add a member to an organism #
GET /v1/organisms/{id}/workspace Read an organism's manifest-driven workspace #
DELETE /v1/organisms/{id}/workspace Delete an organism's workspace (manifest + all data + schemas) #
PUT /v1/organisms/{id}/workspace Update a workspace's definition in place (name/readme/structure/schemas/apps) #
POST /v1/organisms/{id}/workspace/spaces Add spaces to a workspace as a member, under the workspace's rule #
POST /v1/organisms/{id}/workspace/spaces/{space}/extensions Name an installed extension of your own account on one space of a workspace #
PUT /v1/organisms/{id}/workspace/sections/{space} Set a document space's section index as a member, under the workspace's rule #
GET /v1/organisms/{id}/workspace/suggestions The member suggestions a caller may see #
POST /v1/organisms/{id}/workspace/suggestions/{sid} Approve or decline a member's suggestion #
GET /v1/organisms/{id}/instruction-block Paste-into-your-AI instruction block for one organism (3 formats) #
GET /v1/organisms/{id}/overview OKF-style structure overview of a whole organism (Markdown) #
GET /v1/organisms/{id}/workspace/index A workspace's index (titles, no bodies), or the full values of named records #
POST /v1/organisms/{id}/workspace/drafts Write one draft, or a batch of drafts, into a workspace #
GET /v1/organisms/{id}/workspace/overview OKF-style structure overview of ONE workspace (Markdown) #
GET /v1/organisms/{id}/graph Structured graph of an organism (for the interactive mindmap) #
GET /v1/organisms/{id}/workspace/graph Structured graph of ONE workspace (for the interactive mindmap) #
GET /v1/organisms/{id}/workspace/dangling-refs Referential-integrity scan (dangling reference detection) #
GET /v1/organisms/{id}/structure/history Organism structure timeline (how its shape grew over time) #
GET /v1/organisms/{id}/workspaces Discover every workspace in an organism (membership-gated) #
GET /v1/organisms/{id}/workspace-access List access requests for a workspace you created (or all your workspaces) #
POST /v1/organisms/{id}/workspace-access Request access to a workspace #
POST /v1/organisms/{id}/workspace-access/decision Approve or deny a workspace access request #
POST /v1/organisms/{id}/workspace-access/grant Directly grant an existing member a workspace role (no prior request) #
POST /v1/organisms/{id}/workspace-access/revoke Remove a member's workspace role #
GET /v1/organisms/{id}/workspace/engagements List a workspace's contract engagements (active + retired) #
POST /v1/organisms/{id}/workspace/engagements Adopt (activate) a contract engagement for one of your agents #
POST /v1/organisms/{id}/workspace/engagements/retire Retire a contract engagement (real off-switch) #
GET /v1/organisms/{id}/workspace/export Download a full-fidelity ZIP backup of a workspace #
POST /v1/organisms/{id}/workspace/records/publish Publish many workspace record drafts in one request #
POST /v1/organisms/{id}/workspace/records/delete Delete many workspace records in one request #
POST /v1/organisms/{id}/workspace/import Import a workspace ZIP as a new workspace #
GET /v1/organisms/{id}/workspace/share Read a workspace's document-space public-sharing state #
PUT /v1/organisms/{id}/workspace/share Set a workspace's document-space public-sharing state #
POST /v1/organisms/{id}/workspace/share/unlock Exchange a share password for a share token (NO AUTH) #
GET /v1/organisms/{id}/workspace/public/documents Read a workspace's public document-space pages (NO AUTH) #
GET /v1/organisms/{id}/workspace/public/document Read a single public document-space page (NO AUTH) #
GET /v1/organisms/{id}/workspace/public/records Read a workspace's public records-space entries (NO AUTH) #
GET /v1/organisms/{id}/workspace/records Read a workspace's published records as an authorized member #
POST /v1/organisms/{id}/workspace/rows/{space} Append rows to a workspace row space #
GET /v1/organisms/{id}/workspace/rows/{space} Read one page of a workspace row space #
DELETE /v1/organisms/{id}/workspace/rows/{space} Retention delete by age #
GET /v1/organisms/{id}/workspace/rows/{space}/stats What a row space holds, without reading a row #
GET /v1/organisms/{id}/workspace/rows/{space}/{rowId} Read one row by the id it was named with #
DELETE /v1/organisms/{id}/workspace/rows/{space}/{rowId} Remove one row #
GET /v1/organisms/{id}/workspace/rows/{space}/{rowId}/revisions A row's kept earlier contents #
POST /v1/organisms/{id}/workspace/rows/{space}/{rowId}/revisions/{revisionId}/restore Put a kept revision back as a row's content #
POST /v1/organisms/{id}/workspace/documents/{space}/{docId}/append Add markdown to a workspace document without resending it #
POST /v1/organisms/{id}/workspace/documents/{space}/{docId}/frame The frame address of an HTML page, for a member #
POST /v1/organisms/{id}/workspace/documents/{space}/{docId}/opened Record that a member opened a page today #
POST /v1/organisms/{id}/workspace/documents/{space}/{docId}/section Replace one section of a workspace document #
GET /v1/organisms/{id}/export Download a ZIP backup of a whole organism #
POST /v1/organisms/import Import an organism bundle ZIP as a new organism #
POST /v1/organisms/{id}/publish Publish a draft into a new version + latest #
POST /v1/organisms/{id}/archive Archive organism content (read-only, hidden from AI materials) #
POST /v1/organisms/{id}/unarchive Unarchive organism content (smart restore) #
POST /v1/organisms/{id}/revert Reopen a published record for editing #
POST /v1/organisms/{id}/approvals Request approval for an action (gate or auto-run) #
GET /v1/organisms/{id}/approvals Approval inbox — pending approvals for an organism #
POST /v1/organisms/{id}/approvals/{aid} Resolve a pending approval (approve | reject | edit) #
GET /v1/organisms/{id}/join-requests List join requests (admin only) #
POST /v1/organisms/{id}/join-requests/{requestId}/review Review a join request #
POST /v1/organisms/{id}/admins Add organism admin #
DELETE /v1/organisms/{id}/admins/{ghii} Remove organism admin #
DELETE /v1/organisms/{id}/members/{ghii} Remove (revoke) an organism member #
POST /v1/organisms/{id}/members/{ghii}/unban Lift a member block #
POST /v1/organisms/{id}/owners Add an owner #
DELETE /v1/organisms/{id}/owners/{ghii} Remove an owner #
POST /v1/organisms/{id}/transfer Transfer organism ownership #
POST /v1/organisms/{id}/invitations Invite an owner to an organism #
GET /v1/organisms/{id}/invitations List outstanding invitations #
PATCH /v1/organisms/{id}/invitations/{ghii} Edit a pending name invitation #
DELETE /v1/organisms/{id}/invitations/{ghii} Withdraw a pending name invitation #
GET /v1/organisms/invitations/mine List the caller's pending invitations #
POST /v1/organisms/{id}/invitations/accept Accept an organism invitation #
POST /v1/organisms/{id}/invitations/decline Decline an organism invitation #
POST /v1/organisms/{id}/invitations/email Invite a person (not yet on the node) to an organism by email #
GET /v1/organisms/{id}/invitations/email List pending email invitations #
PATCH /v1/organisms/{id}/invitations/email/{invId} Edit a pending email invitation #
POST /v1/organisms/{id}/invitations/email/{invId}/cancel Cancel a pending email invitation #
POST /v1/organisms/{id}/invitations/code Mint a provisioned-code invitation ("key") to an organism #
GET /v1/organisms/{id}/invitations/code List the caller's minted access keys #
POST /v1/organisms/{id}/invitations/code/{invId}/cancel Cancel an un-activated access key (frees a quota slot) #
GET /v1/invitations/{token} Get email invitation details (public) #
POST /v1/invitations/{token}/accept Accept an email invitation (public) #
POST /v1/organisms/{id}/agents Attach an agent to an organism #
DELETE /v1/organisms/{id}/agents/{gaii} Detach an agent from an organism #
GET /v1/organisms/{id}/search Search organism / workspace content #
POST /v1/organisms/{id}/comments Comment on a workspace object #
GET /v1/organisms/{id}/comments List a workspace object's comment thread #
POST /v1/organisms/{id}/comments/batch Comment threads for many workspace objects in one request #
GET /v1/organisms/shapes The starting shapes a new organism can take #
GET /v1/organisms/waiting Everything across your member organisms that needs your decision #
GET /v1/organisms/{id}/agents/activity Agent activity aggregated across all readable workspaces #
DELETE /v1/organisms/{id}/comments/{commentId} Delete a workspace comment #
GET /v1/organisms/tab The Organisms tab in one read #

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-organisms-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-organisms-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: AIMEAT Protocol Organisms 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 (273 KB total) ---
# Full source: https://artifacts.apis.io/aimeat-io/openapi/aimeat-io-organisms-api-openapi.yml