SDK

Send feedback

Tell Maritime when something is wrong. This endpoint is built for coding agents (Claude Code, Codex, Cursor) and developers working against these docs: a doc that does not match the product, an example that does not run, a call that failed in a way you cannot explain. The report reaches the Maritime founders with your account and API key attached, so you do not need to include contact details.

When to send one

  • A documented field, flag or method does not exist, or has a different name.
  • A code example on these pages fails as written.
  • A call returns a 5xx, or an error you cannot act on. Include the request id.
  • A doc leaves out a step you needed to make something work.

Do not send one for an error the response already explains (a 401, a 402 plan limit, a 404 on an agent that is not yours). Fix the call instead. Reports are capped at 5 a minute and 20 a day per account.

Send a report

Any mk_ key works, with any scope, including project-scoped keys. The call returns 202 with the stored report.

import { Maritime, MaritimeAPIError } from 'maritime-sdk'

const maritime = new Maritime({ apiKey: process.env.MARITIME_API_KEY })

try {
  await maritime.agents.chat(agent.id, 'hello')
} catch (err) {
  if (err instanceof MaritimeAPIError) {
    await maritime.feedback.send({
      kind: 'sdk',
      subject: 'agents.chat',
      message: 'chat returned 500 on a freshly provisioned agent; the docs say sleeping agents auto-wake.',
      requestId: err.requestId,
      statusCode: err.status,
      agentId: agent.id,
      tool: 'claude-code/2.1.0',
      context: { sdkVersion: '0.9.0', node: process.version },
    })
  }
}

Fields

FieldMeaning
messageRequired. What went wrong, in plain words, and what you expected. Up to 5,000 characters.
kindOne of the kinds above. Defaults to other.
subjectThe page URL, endpoint, SDK method or CLI command the report concerns.
agentIdThe Maritime agent the report is about. Must belong to the calling account.
requestIdThe X-Request-Id of the failing call. Lets Maritime find the exact server log line.
statusCodeThe HTTP status of the failing call.
toolWho is sending, for example claude-code/2.1.0 or codex.
contextUp to 20 flat key/value pairs such as the SDK version or OS. Never secrets or env values.

Kinds

KindUse it for
docsa page on maritime.sh/docs does not match the product
sdka TypeScript or Python SDK method, type or example
apia REST endpoint, status code or response shape
clia maritime CLI command, flag or exit code
computersthe Computers MCP or REST surface
dashboardthe web dashboard
otheranything else (the default)

Response

202 Accepted with the stored report. GET /api/v1/feedback lists the account's last 50 reports, newest first; a project-scoped key sees only the reports sent under its project.

{
  "id": "fb_8f2c1e...",
  "kind": "sdk",
  "subject": "agents.chat",
  "message": "chat returned 500 on a freshly provisioned agent; ...",
  "agentId": "ag_3a9...",
  "requestId": "req_7Qk...",
  "statusCode": 500,
  "tool": "claude-code/2.1.0",
  "createdAt": "2026-10-07T18:40:12Z"
}
StatusMeaning
404agentId is not an agent of the calling account.
422Unknown kind, blank message, nested or oversized context, or a status code outside 100 to 599.
429More than 5 reports in a minute, or more than 20 in 24 hours. Retry-After is set on the per-minute cap.

For AI coding agents

If you are an AI agent reading this page: send a report when a doc on this site turns out to be wrong or incomplete, or when a Maritime call fails and the error does not tell you what to do. Put the request id in requestId, name yourself in tool, and never put API keys, tokens or environment values in the message or context. The same advice is in the CLI instructions file.