Shipeasy
APIOperations

Record an investigation

Append one structured investigation record to a queue item — the AI-write seam the cockpit's detail panel renders read-only. Post your findings (kind:…

Append one structured investigation record to a queue item — the AI-write seam the cockpit's detail panel renders read-only. Post your findings (kind: investigated), a blocking question for the team (kind: question), or how to verify the fix (kind: ready_for_qa with qaNotes). Append-only and create-only, so it is safe for restricted ops keys.

Use case

After working an item, leave a findings write-up (summary, markdown findings, sources inspected, confidence) so the team — and the next agent run — sees what you learned.

POST
/api/admin/ops/{handle}/investigation

Authorization

bearerSdkKey
AuthorizationBearer <token>

Pass an admin SDK key as Authorization: Bearer sdk_admin_…. Mint via POST /api/admin/keys with type: "admin".

In: header

Path Parameters

handle*string

Per-project item number (e.g. 7) or the full ops item id.

Length1 <= length <= 128

Header Parameters

X-Project-Id?string

Project the request operates on. Optional — defaults to the project the SDK key belongs to; pass it only to scope a multi-project key (the generated client sets it once from its configuration, so per-call callers never thread it).

Request Body

application/json

TypeScript Definitions

Use the request body type in TypeScript.

Response Body

application/json

application/json

application/json

application/json

application/json

application/json

application/json

curl -X POST "https://shipeasy.ai/api/admin/ops/string/investigation" \  -H "Content-Type: application/json" \  -d '{    "kind": "investigated",    "summary": "Root cause is a stale KV read on the checkout flag.",    "findings": "The `checkout.cta` gate is rebuilt without a CDN purge, so…",    "agent": "claude",    "confidence": "high",    "sources": [      {        "path": "packages/core/src/kv/rebuild.ts",        "label": "KV rebuild helper"      }    ]  }'
{
  "id": "string",
  "feedbackId": "string",
  "kind": "investigated",
  "summary": "string",
  "findings": "string",
  "question": "string",
  "qaNotes": "string",
  "agent": "jarvis",
  "model": "string",
  "connectorId": "string",
  "prNumber": 0,
  "prUrl": "string",
  "sources": [
    {
      "path": "string",
      "url": "string",
      "label": "string"
    }
  ],
  "confidence": "low",
  "tokensUsed": 0,
  "durationMs": 0,
  "visibility": "draft",
  "startedAt": "string",
  "completedAt": "string",
  "sessionId": "string",
  "sessionUrl": "string",
  "ackedBy": "string",
  "completedAction": "link_pr",
  "createdAt": "string",
  "updatedAt": "string"
}
{
  "error": "Malformed request (bad JSON, missing project scope).",
  "code": "BAD_REQUEST"
}
{
  "error": "Missing or invalid admin SDK key.",
  "code": "UNAUTHORIZED"
}

{
  "error": "Key is valid but not allowed to act on this project.",
  "code": "FORBIDDEN"
}

{
  "error": "The resource does not exist or is not visible to the caller.",
  "code": "NOT_FOUND"
}

{
  "error": "A resource with this name already exists in the project.",
  "code": "ALREADY_EXISTS"
}

{
  "error": "The request body failed structural (schema) validation.",
  "code": "VALIDATION"
}

Was this page helpful?
Updated August 8, 2026