---
title: "Post Project Organelle Invoke"
method: POST
path: "/api/projects/{project_id}/organelle-invoke"
tags: ["Projects"]
---

# Post Project Organelle Invoke

`POST /api/projects/{project_id}/organelle-invoke`

## Request

- Base URL: `https://api.agentstack.tech` (the document declares no server; this is the origin it was published from)
- URL: `https://api.agentstack.tech/api/projects/{project_id}/organelle-invoke`
- Auth: one of:
  - API key in header `X-API-Key`
  - HTTP bearer

Invoke a registered organelle operation for **this project** (session or API key).

Requires project **read** for ``read`` operations and **write** for mutations.
Rate limit: 60 requests per minute per (project, user).

**Security:** ``project_id`` path wins over any ``ctx.project_id``. ``ctx.user_id`` must be
``0`` or the authenticated user's id (prevents cross-user cell/ring access via crafted JSON).

## Path parameters

- `project_id` integer, required

## Headers

- `Idempotency-Key` string

## Request body

- OrganelleInvokeBody: Registered organelle operation + JSON context (max 128 KiB — enforced in ``http_invoke``).
  - `organelle_id` string, required
  - `operation` string, required
  - `ctx` object

## Response `200`

Successful Response

- unknown

## Other responses

- `400`: Bad Request
- `401`: Unauthorized
- `403`: Forbidden
- `404`: Not Found
- `409`: Conflict
- `422`: Validation Error
- `429`: Too Many Requests
- `500`: Internal Server Error

---

[API](https://skmtc.dev/agentstack/apis/agentstack-core-api.md) · [All operations](https://skmtc.dev/agentstack/apis/agentstack-core-api/llms.txt) · [OpenAPI document](https://skmtc.dev/agentstack/apis/agentstack-core-api/revisions/8ecf3406e74a?raw)
