# SeaChat Developer Docs Use SeaChat's public gateway for model calls, threads, tools, files, Play apps, usage, and capability-aware agents. ## Quick Start ### Get an API key Create a project key from the SeaChat app, or automate it with a logged-in web session token that has API-key write scope. The API key token is returned once. ```bash export SEACHAT_SESSION_TOKEN="" curl https://seachat.ai/api/keys \ -H "Authorization: Bearer $SEACHAT_SESSION_TOKEN" \ -H "Content-Type: application/json" \ -d '{ "label": "docs quickstart", "scopes": ["model:invoke", "usage:read"], "spendLimitMicros": 5000000 }' export SEACHAT_API_KEY="sk-seaverse-..." ``` ### Call the Responses API SeaRouter exposes an OpenAI-style Responses endpoint through SeaGate. Provider credentials stay server-side; clients send only the SeaChat key. ```bash curl https://seachat.ai/api/searouter/llm/v1/responses \ -H "Authorization: Bearer $SEACHAT_API_KEY" \ -H "Content-Type: application/json" \ -d '{ "model": "gpt-5.5", "input": "Write a concise launch checklist for an agent API." }' ``` ### Discover capability metadata Agents should read the credential-aware catalog before choosing routes. It returns access, required scopes, stability, runtime safety, schemas, and examples. ```bash curl "https://seachat.ai/api/seagate/v1/capabilities?runtime=true&includeDenied=true" \ -H "Authorization: Bearer $SEACHAT_API_KEY" ``` ### Verify usage attribution After the first call, query usage with the same key. Use `x-request-id` on retries so support, billing, and logs share one correlation id. ```bash curl https://seachat.ai/api/searouter/v1/usage/summary \ -H "Authorization: Bearer $SEACHAT_API_KEY" ``` ## Agent Entrypoints - `/llms.txt` - compact page index and rules for agents. - `/llms-full.txt` - full Markdown corpus. - `/api/capabilities.json` - public route catalog with scopes, schemas, and examples. - `/api/openapi.json` - OpenAPI 3.1 public developer API surface. --- # Quick Start Create a key, make the first model call, inspect capabilities, and verify usage attribution. ## Before you start All production API traffic enters through `https://seachat.ai`. The docs host is separate so developer material does not compete with the product app shell. Use `Authorization: Bearer ` or `x-api-key: `. API keys are for integrations. Web sessions are only for user-authenticated control plane actions such as creating a key. If you are doing this manually, sign in to SeaChat, open API Keys, create a project key with `model:invoke` and `usage:read`, then store the returned token in `SEACHAT_API_KEY`. ## Automation path A logged-in user session can call `POST /api/keys` to create a scoped project key. The session must include API-key write permission, and the token is returned only once. API-key policy fields such as `spendLimitMicros` and `expiresAt` constrain key behavior, but the account quota source of truth remains the SeaChat quota account. ```bash curl https://seachat.ai/api/keys \ -H "Authorization: Bearer $SEACHAT_SESSION_TOKEN" \ -H "Content-Type: application/json" \ -d '{ "label": "agent integration", "scopes": ["model:invoke", "usage:read"], "spendLimitMicros": 5000000 }' ``` ## Agent runtime pattern Agents should first read the capability catalog, then choose routes by `id`, `group`, `requiredScopes`, `inputSchema`, and `runtimeSafe`. This avoids guessing at internal paths. Model calls should read SeaRouter help when the request shape is provider-specific. SeaRouter owns provider credentials, model aliases, managed output import, and usage attribution. For multimodal work, query `/api/searouter/v1/help/models/search` before sending provider-shaped parameters. ## Common failures `401 missing_credentials` means the request reached the public gateway but no API key, bearer session, or service token was accepted. `403 route_scope_denied` means the token is valid but does not include one of the route's required scopes. Read `/api/capabilities.json` or the live capability catalog before minting a narrower replacement key. --- # Authentication SeaGate is the public auth boundary for API keys, web sessions, and delegated runtime tokens. ## Credential types API keys are best for server-side scripts, CI jobs, and third-party integrations. Web sessions are for the browser product. Delegated runtime tokens are issued for managed runtime sessions and should not be forged by clients. Do not send provider keys to SeaRouter. Do not call internal service ports directly. Do not set `x-seaverse-*` identity headers yourself. ## Headers `Authorization: Bearer ` is the preferred header. `x-api-key: ` is accepted for API key clients. `x-request-id` is recommended for stable retry/audit correlation. ```bash curl https://seachat.ai/api/seagate/v1/capabilities?runtime=true \ -H "Authorization: Bearer $SEACHAT_API_KEY" \ -H "x-request-id: docs-quickstart-001" ``` ## Scope model Every proxied route maps to an access family such as read, write, or invoke. The capability catalog exposes accepted scopes and also accepts service-route scopes like `seagate:route:searouter` for trusted service clients. --- # API Keys Create, list, update, and revoke project API keys through SeaGate. ## Create a key The caller must be an authenticated user session with API-key write permission. The created token is returned only once; store it in your secret manager immediately. `spendLimitMicros` and `expiresAt` are key policy metadata. Runtime spend enforcement is tied to SeaChat quota accounts and model usage reservations. ```bash curl https://seachat.ai/api/keys \ -H "Authorization: Bearer $SEACHAT_SESSION_TOKEN" \ -H "Content-Type: application/json" \ -d '{ "label": "docs quickstart", "scopes": ["model:invoke", "usage:read"], "spendLimitMicros": 5000000 }' ``` ## Manage keys Use `GET /api/keys` to list visible, non-revoked keys. Use `PATCH /api/keys/{keyId}` for label, scopes, expiration, or policy metadata. Use `DELETE /api/keys/{keyId}` to revoke. --- # Models Route LLM and multimodal requests through SeaRouter with provider credentials hidden server-side. ## Responses API `POST /api/searouter/llm/v1/responses` is the OpenAI-compatible route for text and reasoning workflows. Use the standard SeaChat base URL and an API key with `model:invoke` or `searouter:invoke`. ```bash curl https://seachat.ai/api/searouter/llm/v1/responses \ -H "Authorization: Bearer $SEACHAT_API_KEY" \ -H "Content-Type: application/json" \ -d '{"model":"gpt-5.5","input":"Summarize the SeaChat API in one paragraph."}' ``` ## Multimodal invoke `POST /api/searouter/v1/invoke/{modality}/{model}/{version}` supports image, video, audio, embedding, rerank, and other modality-specific providers. Generated media is imported into managed SeaDB artifacts when the provider returns bytes or URLs. Render the returned `outputs[].url` directly and keep `artifactRefId` for later references. ```bash curl https://seachat.ai/api/searouter/v1/invoke/image/bytedance_seedream_4_0/latest \ -H "Authorization: Bearer $SEACHAT_API_KEY" \ -H "Content-Type: application/json" \ -d '{"prompt":"A clean product diagram for an agent API gateway"}' ``` ## Discovery Use `/api/searouter/v1/help`, `/api/searouter/v1/help/modalities`, and `/api/searouter/v1/help/models/search` before selecting models or provider-specific fields. --- # Threads Create product threads, send messages, and read timeline/event evidence through Seaplane. ## Thread control plane Threads are owned by Seaplane and accessed through `/api/seaplane/v1/threads`. Use thread APIs when your integration needs SeaChat conversations, runtime dispatch, or timeline evidence. ```bash curl https://seachat.ai/api/seaplane/v1/threads \ -H "Authorization: Bearer $SEACHAT_API_KEY" \ -H "Content-Type: application/json" \ -d '{"title":"API integration smoke","runtimeSource":"cloud"}' ``` ## Messages Send user messages through `/api/seaplane/v1/threads/{threadId}/messages`. Use a stable client message id when retrying from your application. ```bash curl https://seachat.ai/api/seaplane/v1/threads/$THREAD_ID/messages \ -H "Authorization: Bearer $SEACHAT_API_KEY" \ -H "Content-Type: application/json" \ -d '{"role":"user","content":"Create a release checklist","clientMessageId":"docs-smoke-001"}' ``` --- # Tools Discover and invoke Seatool plugins through the gateway. ## Catalog first Use `GET /api/seatool/v1/catalog` for available tools and `GET /api/seatool/v1/skill-catalog/catalog.json` for dynamic skill package metadata. ## Invoke a tool Tool invocation uses `POST /api/seatool/v1/invoke/{plugin}/{tool}` and requires a tool invoke scope such as `tool:invoke` or `seatool:invoke`. ```bash curl https://seachat.ai/api/seatool/v1/invoke/image.caption/caption_image \ -H "Authorization: Bearer $SEACHAT_API_KEY" \ -H "Content-Type: application/json" \ -d '{"imageUrl":"https://example.com/image.png"}' ``` --- # Files & Artifacts Use SeaDB for documents, artifacts, delegated uploads, previews, and generated media references. ## Documents SeaDB document paths are reachable through `/api/seadb/{path}`. Discovery routes include `/_ls/{namespace}` and `/_search?q={query}` through the `/api/seadb` gateway prefix. ## Delegated upload Large file bytes are uploaded through delegated URLs. First create a delegation, upload to the returned object URL, then complete the delegation. ```bash curl https://seachat.ai/api/files/delegations/upload \ -H "Authorization: Bearer $SEACHAT_API_KEY" \ -H "Content-Type: application/json" \ -d '{ "path": "integrations/demo.png", "title": "Demo image", "mimeType": "image/png", "sizeBytes": 12345 }' ``` ## Public previews Explicit public artifact previews and document share URLs are anonymous read surfaces. The gateway still routes them through SeaGate so audit and storage boundaries stay consistent. --- # Play Apps Publish static app bundles and create share or launch links for SeaChat Play. ## Create and release Play is implemented in Seaplane, not a separate service. Create an app, prepare a release delegation, upload built static bytes, then complete the release. ## Hosting model Public app hosts use `https://.play.seachat.ai/`. Caddy maps wildcard Play hosts to Seaplane through SeaGate, and Seaplane enforces app access and cache state. --- # Usage & Quotas Read model usage and understand quota enforcement boundaries. ## Usage summary SeaRouter writes usage attribution with user, org, project, token, request, runtime session, provider, modality, model, and route context. Use `GET /api/searouter/v1/usage/summary` with `usage:read`, `billing:usage:read`, `searouter:usage:read`, or an admin/service route scope. ```bash curl https://seachat.ai/api/searouter/v1/usage/summary \ -H "Authorization: Bearer $SEACHAT_API_KEY" ``` ## Quota source of truth User account quotas live in Seaplane. Model calls reserve and capture quota through the control plane; API key spend policy metadata is not the only enforcement layer. --- # Agent-Friendly Docs Machine-readable entry points for code agents, runtime agents, and API explorers. ## Read these first `/llms.txt` summarizes stable docs and reference URLs for language-model agents. `/llms-full.txt` contains the full Markdown corpus in one file. Every page is also emitted as Markdown at `/path/index.md`, and HTML responses advertise the Markdown alternate link. `/api/capabilities.json` is generated from repository-owned capability definitions and excludes internal and admin-only routes from the public developer catalog. `/api/openapi.json` exposes the same public developer catalog as OpenAPI 3.1 for API clients and code generators. `https://seachat.ai/api/seagate/v1/capabilities?runtime=true&includeDenied=true` is the live credential-aware capability catalog. ## Decision rules for agents Prefer capability ids over hard-coded paths when a route appears in the catalog. Read SeaRouter model help before sending multimodal provider parameters. Include request ids for retries. Keep credentials out of prompts and generated files. --- # API Reference Generated capability index grouped by service and API family. ## Capability index This public developer catalog excludes admin and internal routes. ### GET /api/seadb/api/v1/artifacts - id: `seadb.artifacts.list` - service: `seadb` - group: `artifacts` - access: `read` - requiredScopes: `seadb:content:read`, `seadb:content:*`, `seadb:*`, `seagate:route:seadb`, `seagate:route:*`, `seagate:admin` - runtimeSafe: `true` List content-library artifacts. ### GET /api/seadb/_ls/{namespace} - id: `seadb.docs.list` - service: `seadb` - group: `docs` - access: `read` - requiredScopes: `seadb:content:read`, `seadb:content:*`, `seadb:*`, `seagate:route:seadb`, `seagate:route:*`, `seagate:admin` - runtimeSafe: `true` List SeaDB document namespaces or namespace contents. ### GET /api/seadb/{path} - id: `seadb.docs.read` - service: `seadb` - group: `docs` - access: `read` - requiredScopes: `seadb:content:read`, `seadb:content:*`, `seadb:*`, `seagate:route:seadb`, `seagate:route:*`, `seagate:admin` - runtimeSafe: `true` Read one SeaDB document by path. ### GET /api/seadb/_search?q={query} - id: `seadb.docs.search` - service: `seadb` - group: `docs` - access: `read` - requiredScopes: `seadb:content:read`, `seadb:content:*`, `seadb:*`, `seagate:route:seadb`, `seagate:route:*`, `seagate:admin` - runtimeSafe: `true` Search SeaDB documents. ### POST /api/seadb/{path} - id: `seadb.docs.write` - service: `seadb` - group: `docs` - access: `write` - requiredScopes: `seadb:content:write`, `seadb:content:*`, `seadb:*`, `seagate:route:seadb`, `seagate:route:*`, `seagate:admin` - runtimeSafe: `true` Write one SeaDB document by path. ### POST /api/files/delegations/download - id: `files.download.delegate` - service: `seadb` - group: `files` - access: `read` - requiredScopes: `files:read`, `files:*`, `seadb:content:read`, `seadb:*`, `seagate:route:seadb`, `seagate:route:*`, `seagate:admin` - runtimeSafe: `true` Create a delegated download/read URL for an artifact. ### POST /api/files/delegations/upload/complete - id: `files.upload.complete` - service: `seadb` - group: `files` - access: `write` - requiredScopes: `files:write`, `files:*`, `seadb:content:write`, `seadb:*`, `seagate:route:seadb`, `seagate:route:*`, `seagate:admin` - runtimeSafe: `true` Complete a delegated upload after object storage write succeeds. ### POST /api/files/delegations/upload - id: `files.upload.delegate` - service: `seadb` - group: `files` - access: `write` - requiredScopes: `files:write`, `files:*`, `seadb:content:write`, `seadb:*`, `seagate:route:seadb`, `seagate:route:*`, `seagate:admin` - runtimeSafe: `true` Create a delegated upload for a content-library artifact. ### GET /api/seadb/api/v1/public/harness-packs/{pack}/{path} - id: `seadb.harness_packs.public` - service: `seadb` - group: `harness` - access: `read` - requiredScopes: `public:read`, `seagate:route:seadb`, `seagate:route:*`, `seagate:admin` - runtimeSafe: `true` Read SeaDB public harness seed packs. ### GET /api/seadb/api/v1/public/skill-catalog/catalog.json - id: `seadb.skill_catalog.public` - service: `seadb` - group: `skills` - access: `read` - requiredScopes: `public:read`, `seagate:route:seadb`, `seagate:route:*`, `seagate:admin` - runtimeSafe: `true` Legacy SeaDB public Skill Hub catalog route; canonical catalog is seaplane.skill_catalog.public. ### POST /api/keys - id: `seagate.api_keys.create` - service: `seagate` - group: `auth` - access: `write` - requiredScopes: `api-keys:write`, `seagate:api-keys:write`, `seagate:admin` - runtimeSafe: `false` Create a project-scoped API key. The raw token is returned only once. ### GET /api/keys - id: `seagate.api_keys.list` - service: `seagate` - group: `auth` - access: `read` - requiredScopes: `api-keys:read`, `api-keys:write`, `seagate:api-keys:read`, `seagate:admin` - runtimeSafe: `false` List visible, non-revoked API keys for the current user/project. ### DELETE /api/keys/{keyId} - id: `seagate.api_keys.revoke` - service: `seagate` - group: `auth` - access: `write` - requiredScopes: `api-keys:write`, `seagate:api-keys:write`, `seagate:admin` - runtimeSafe: `false` Revoke a project API key. ### PATCH /api/keys/{keyId} - id: `seagate.api_keys.update` - service: `seagate` - group: `auth` - access: `write` - requiredScopes: `api-keys:write`, `seagate:api-keys:write`, `seagate:admin` - runtimeSafe: `false` Update a key label, scopes, expiration, or spend policy metadata. ### GET /api/seagate/v1/capabilities?runtime=true - id: `seagate.capabilities.list` - service: `seagate` - group: `catalog` - access: `read` - requiredScopes: anonymous/public - runtimeSafe: `true` Discover runtime-safe SeaGate capabilities with scope and schema metadata. ### GET /api/seaplane/v1/threads/{threadId}/events - id: `events.thread` - service: `seaplane` - group: `events` - access: `read` - requiredScopes: `seaplane:read`, `seaplane:admin`, `seaplane:*`, `seagate:route:seaplane`, `seagate:route:*`, `seagate:admin` - runtimeSafe: `true` Read recent event evidence for a thread. ### POST /api/seaplane/v1/play/apps - id: `seaplane.play.apps.create` - service: `seaplane` - group: `play` - access: `write` - requiredScopes: `seaplane:write`, `seaplane:admin`, `seaplane:*`, `seagate:route:seaplane`, `seagate:route:*`, `seagate:admin` - runtimeSafe: `true` Create a private SeaChat Play app with an optional slug. ### GET /api/seaplane/v1/play/apps - id: `seaplane.play.apps.list` - service: `seaplane` - group: `play` - access: `read` - requiredScopes: `seaplane:read`, `seaplane:admin`, `seaplane:*`, `seagate:route:seaplane`, `seagate:route:*`, `seagate:admin` - runtimeSafe: `true` List SeaChat Play apps owned by the current credential. ### GET /api/seaplane/v1/play/hosts/{slug}/allow - id: `seaplane.play.host.allow` - service: `seaplane` - group: `play` - access: `read` - requiredScopes: `public:read`, `seagate:route:seaplane`, `seagate:route:*`, `seagate:admin` - runtimeSafe: `true` Check whether a Play slug is registered before browser verification. ### POST /api/seaplane/v1/play/apps/{appId}/launch-link - id: `seaplane.play.launch.create` - service: `seaplane` - group: `play` - access: `write` - requiredScopes: `seaplane:write`, `seaplane:admin`, `seaplane:*`, `seagate:route:seaplane`, `seagate:route:*`, `seagate:admin` - runtimeSafe: `true` Create a short-lived owner launch link for a private Play app. ### POST /api/seaplane/v1/play/releases/{releaseId}/complete - id: `seaplane.play.releases.complete` - service: `seaplane` - group: `play` - access: `write` - requiredScopes: `seaplane:write`, `seaplane:admin`, `seaplane:*`, `seagate:route:seaplane`, `seagate:route:*`, `seagate:admin` - runtimeSafe: `true` Complete a delegated Play bundle upload and activate the ready release. ### POST /api/seaplane/v1/play/apps/{appId}/releases - id: `seaplane.play.releases.prepare` - service: `seaplane` - group: `play` - access: `write` - requiredScopes: `seaplane:write`, `seaplane:admin`, `seaplane:*`, `seagate:route:seaplane`, `seagate:route:*`, `seagate:admin` - runtimeSafe: `true` Prepare a Play release upload delegation for built static app bytes. ### POST /api/seaplane/v1/play/apps/{appId}/share-links - id: `seaplane.play.share.create` - service: `seaplane` - group: `play` - access: `write` - requiredScopes: `seaplane:write`, `seaplane:admin`, `seaplane:*`, `seagate:route:seaplane`, `seagate:route:*`, `seagate:admin` - runtimeSafe: `true` Create a time-bound access link for a private Play app. ### GET /api/seaplane/v1/public/skill-catalog/catalog.json - id: `seaplane.skill_catalog.public` - service: `seaplane` - group: `skills` - access: `read` - requiredScopes: `public:read`, `seagate:route:seaplane`, `seagate:route:*`, `seagate:admin` - runtimeSafe: `true` Read canonical seaplane Skill Hub catalog records used by managed runtime installs. ### GET /api/seaplane/v1/public/skill-catalog/releases/{path} - id: `seaplane.skill_package.public` - service: `seaplane` - group: `skills` - access: `read` - requiredScopes: `public:read`, `seagate:route:seaplane`, `seagate:route:*`, `seagate:admin` - runtimeSafe: `true` Download immutable skill package bytes referenced by the canonical seaplane public skill catalog. ### POST /api/seaplane/v1/threads - id: `threads.create` - service: `seaplane` - group: `threads` - access: `write` - requiredScopes: `seaplane:write`, `seaplane:admin`, `seaplane:*`, `seagate:route:seaplane`, `seagate:route:*`, `seagate:admin` - runtimeSafe: `true` Create a product thread. ### POST /api/seaplane/v1/threads/{threadId}/fork - id: `threads.fork` - service: `seaplane` - group: `threads` - access: `write` - requiredScopes: `seaplane:write`, `seaplane:admin`, `seaplane:*`, `seagate:route:seaplane`, `seagate:route:*`, `seagate:admin` - runtimeSafe: `true` Fork a conversation into a new thread. ### GET /api/seaplane/v1/threads - id: `threads.list` - service: `seaplane` - group: `threads` - access: `read` - requiredScopes: `seaplane:read`, `seaplane:admin`, `seaplane:*`, `seagate:route:seaplane`, `seagate:route:*`, `seagate:admin` - runtimeSafe: `true` List product threads visible to the current credential. ### GET /api/seaplane/v1/threads/{threadId}/messages - id: `threads.messages.list` - service: `seaplane` - group: `threads` - access: `read` - requiredScopes: `seaplane:read`, `seaplane:admin`, `seaplane:*`, `seagate:route:seaplane`, `seagate:route:*`, `seagate:admin` - runtimeSafe: `true` List messages in a thread. ### POST /api/seaplane/v1/threads/{threadId}/messages - id: `threads.messages.send` - service: `seaplane` - group: `threads` - access: `write` - requiredScopes: `seaplane:write`, `seaplane:admin`, `seaplane:*`, `seagate:route:seaplane`, `seagate:route:*`, `seagate:admin` - runtimeSafe: `true` Create and dispatch a user message in a thread. ### PUT /api/seaplane/v1/threads/{threadId}/pin - id: `threads.pin` - service: `seaplane` - group: `threads` - access: `write` - requiredScopes: `seaplane:write`, `seaplane:admin`, `seaplane:*`, `seagate:route:seaplane`, `seagate:route:*`, `seagate:admin` - runtimeSafe: `true` Pin or unpin a thread. ### PATCH /api/seaplane/v1/threads/{threadId} - id: `threads.rename` - service: `seaplane` - group: `threads` - access: `write` - requiredScopes: `seaplane:write`, `seaplane:admin`, `seaplane:*`, `seagate:route:seaplane`, `seagate:route:*`, `seagate:admin` - runtimeSafe: `true` Update a thread title. ### POST /api/seaplane/v1/threads/{threadId}/share - id: `threads.share` - service: `seaplane` - group: `threads` - access: `write` - requiredScopes: `seaplane:write`, `seaplane:admin`, `seaplane:*`, `seagate:route:seaplane`, `seagate:route:*`, `seagate:admin` - runtimeSafe: `true` Share one thread's context into another thread through an artifact. ### GET /api/seaplane/v1/threads/{threadId} - id: `threads.show` - service: `seaplane` - group: `threads` - access: `read` - requiredScopes: `seaplane:read`, `seaplane:admin`, `seaplane:*`, `seagate:route:seaplane`, `seagate:route:*`, `seagate:admin` - runtimeSafe: `true` Read a product thread by id. ### GET /api/seaplane/v1/scheduler/timers - id: `timers.list` - service: `seaplane` - group: `timers` - access: `read` - requiredScopes: `seaplane:read`, `seaplane:admin`, `seaplane:*`, `seagate:route:seaplane`, `seagate:route:*`, `seagate:admin` - runtimeSafe: `true` List scheduled timers visible to the current credential. ### GET /api/searouter/v1/help - id: `searouter.help` - service: `searouter` - group: `models` - access: `invoke` - requiredScopes: `model:invoke`, `searouter:invoke`, `searouter:*`, `searouter:admin`, `platform:admin`, `seagate:route:searouter`, `seagate:route:*`, `seagate:admin` - runtimeSafe: `true` Read SeaRouter model and multimodal help. ### POST /api/searouter/v1/invoke/image/{model}/{version} - id: `searouter.image.generate` - service: `searouter` - group: `models` - access: `invoke` - requiredScopes: `model:invoke`, `searouter:invoke`, `searouter:*`, `searouter:admin`, `platform:admin`, `seagate:route:searouter`, `seagate:route:*`, `seagate:admin` - runtimeSafe: `true` Invoke a SeaRouter image generation model. ### POST /api/searouter/llm/v1/responses - id: `searouter.llm.responses` - service: `searouter` - group: `models` - access: `invoke` - requiredScopes: `model:invoke`, `searouter:invoke`, `searouter:*`, `searouter:admin`, `platform:admin`, `seagate:route:searouter`, `seagate:route:*`, `seagate:admin` - runtimeSafe: `true` Send one OpenAI-compatible Responses API request through SeaRouter. ### GET /api/searouter/v1/help/models/search?q={query} - id: `searouter.models.search` - service: `searouter` - group: `models` - access: `invoke` - requiredScopes: `model:invoke`, `searouter:invoke`, `searouter:*`, `searouter:admin`, `platform:admin`, `seagate:route:searouter`, `seagate:route:*`, `seagate:admin` - runtimeSafe: `true` Search SeaRouter model help/catalog entries. ### GET /api/searouter/v1/usage/summary - id: `searouter.usage.summary` - service: `searouter` - group: `usage` - access: `read` - requiredScopes: `usage:read`, `usage:read:org`, `usage:read:all`, `billing:read`, `billing:usage:read`, `searouter:usage:read`, `searouter:*`, `searouter:admin`, `platform:admin`, `admin`, `seagate:route:searouter`, `seagate:route:*`, `seagate:admin` - runtimeSafe: `true` Read model usage summary for the current credential scope. ### GET /api/seatool/v1/skill-catalog/catalog.json - id: `seatool.skill_catalog.public` - service: `seatool` - group: `skills` - access: `read` - requiredScopes: `public:read`, `seagate:route:seatool`, `seagate:route:*`, `seagate:admin` - runtimeSafe: `true` Read Seatool dynamic Skill Hub catalog records used by managed runtime installs. ### GET /api/seatool/v1/skill-catalog/releases/{path} - id: `seatool.skill_package.public` - service: `seatool` - group: `skills` - access: `read` - requiredScopes: `public:read`, `seagate:route:seatool`, `seagate:route:*`, `seagate:admin` - runtimeSafe: `true` Download a Seatool dynamic skill package referenced by the public skill catalog. ### GET /api/seatool/v1/catalog - id: `seatool.catalog` - service: `seatool` - group: `tools` - access: `read` - requiredScopes: `seatool:read`, `seaplane:read`, `seatool:*`, `seatool:admin`, `platform:admin`, `admin`, `seagate:route:seatool`, `seagate:route:*`, `seagate:admin` - runtimeSafe: `true` Read tool/plugin catalog metadata. ### POST /api/seatool/v1/invoke/{plugin}/{tool} - id: `seatool.invoke` - service: `seatool` - group: `tools` - access: `invoke` - requiredScopes: `tool:invoke`, `seatool:invoke`, `seatool:*`, `seatool:admin`, `platform:admin`, `seagate:route:seatool`, `seagate:route:*`, `seagate:admin` - runtimeSafe: `true` Invoke a Seatool plugin tool.