ariana-dot-dev/kimi-box-plugin/box-api
Claude Code and agent skill by ariana-dot-dev/kimi-box-plugin
- community
Checking that the SKILL.md file is still in the repository.
Box HTTP API v1 reference — base URL, bearer auth, response envelope, error codes, box lifecycle states, prompt providers/models, and every endpoint. Use when calling the Box API directly with curl/fetch/httpx instead of the CLI or SDKs.
Install
npx vskill@latest install ariana-dot-dev/kimi-box-plugin/box-apiSKILL.md
Box HTTP API v1
Base URL: https://ascii.dev/api/box/v1 — auth is Authorization: Bearer $BOX_API_KEY on every request (create keys in the Box dashboard, API Keys tab). For typed clients prefer the SDKs (box-sdk-typescript / box-sdk-python skills); for shell integration the CLI (box-cli skill).
Response envelope & errors
Every v1 JSON body has ok (boolean) and type (stable discriminator, e.g. box.list, prompt.queued). Errors keep HTTP status authoritative and add a structured envelope:
| Status | Codes | Action | |
|---|---|---|---|
| 400 | invalid_json, prompt_required, provider_required, invalid_name, no_changes, machine_not_running, desktop_not_ready, invalid_ssh_key, stop_failed | Fix request / wait for runnable state | |
| 401 | unauthorized | Valid bearer token | |
| 402 | billing_required, box_access_inactive | Send user to returned billing URL | |
| 404 | not_found | Refresh local state | |
| 409 | account_not_ready, provider_not_configured, box_not_promptable, resume_failed, fork_failed, box_restoring (retryable), box_securing (retryable) | Resolve prerequisite / retry | |
| 429 | rate_limited, daily_limit_reached, limit_reached | Back off, show limit | |
| 5xx | invalid_json_response, stream_failed, http_500 | Retry idempotent calls with jitter; log requestId |
Lifecycle states
provisioning/provisioned/cloning → poll GET /boxes/{id}; ready/idle → accepts prompts and access; running → agent work in progress; archiving → poll to archived; archived → resume or fork; error → show error, allow stop/delete/resume/fork.
idle/running only track work queued via POST /prompt — your own SSH/command-endpoint processes do not change state. Wait for ready or idle before sending commands (earlier commands run before per-box env is applied).
Prompt providers
codex (models gpt-5.5, gpt-5.4 default, gpt-5.4-mini, gpt-5.3-codex; efforts none–xhigh) and claude-code (models claude-fable-5, opus, sonnet default, haiku; efforts low–max except haiku). claude is accepted as an alias; store claude-code. Omit model to use the account's saved default. Missing provider credentials → provider_not_configured with a setup URL.
Core loop (curl)
Create options: ttlSeconds (null = no auto-stop, max 2592000), env (per-box vars), noEnv: true (withhold all account secrets — required for boxes given to your users). Run any in-box tool (including host and lux) through POST /boxes/{boxId}/commands: {"command":"host 3000 --private","cwd":"my-repo","timeoutSeconds":60}.
Endpoints
| Endpoint | Purpose | |
|---|---|---|
GET /me | Current account user | |
GET /limits | Quota, billing, canStart | |
GET /repos, POST /repos | List / select GitHub repos cloned into new boxes | |
GET /api-keys | API key metadata (never raw secrets) | |
GET /secrets, POST /secrets | Read / fully replace account env vars + secret files | |
GET /boxes, POST /boxes | List / create | |
GET /boxes/{boxId}, PATCH /boxes/{boxId}, DELETE /boxes/{boxId} | Get / rename+TTL+subdomain / delete | |
POST /boxes/{boxId}/stop /resume /fork | Lifecycle actions (fork accepts env, noEnv; resume accepts noEnv) | |
POST /boxes/{boxId}/prompt | Queue agent work | |
GET /boxes/{boxId}/prompts/{promptId} | Prompt run status (sending/queued/running/finished/failed) | |
GET /boxes/{boxId}/events | Typed event history (prompt, response, git_checkpoint, usage_limit, ...; cursor pagination, type= filter) | |
GET /boxes/{boxId}/files, PUT /boxes/{boxId}/files | Read / write a file in the work dir (path, content, encoding utf8/base64) | |
POST /boxes/{boxId}/commands | Bounded command in work dir (command, cwd, timeoutSeconds) | |
GET /boxes/{boxId}/artifacts?path= | Download a file artifact | |
POST /boxes/{boxId}/interrupt | Interrupt running agent work | |
POST /boxes/{boxId}/desktop | Desktop stream URL (?vnc=1, ?theme=light; body {"publicAccess":true} for ungated VNC). Treat URLs as secrets | |
POST /boxes/{boxId}/sshkey | Authorize a public SSH key | |
GET /snapshots, GET /boxes/{boxId}/snapshots, GET /boxes/{boxId}/snapshots/latest | Snapshot listing | |
GET /snapshots/{snapshotId}/tree /files?path= /download | Inspect/download snapshot content; works while the box is stopped |
Treat API keys, desktopUrl, and any _token URL as secrets — never log them unredacted.
Full per-endpoint reference: https://docs.ascii.dev/box/api/v1 (OpenAPI: https://docs.ascii.dev/openapi/box-v1.yaml)
Security
- Security scanPassed, 90 of 100Pattern checks on the skill's files.
- Model reviewPassed
Quality evaluation
- Task evaluationNot runNo evaluation yet. Run one in Skill Studio.
Source
- SKILL.md in the repositoryCheckingskills/box-api/SKILL.md
Popularity
- 7-day trend score
- 0
Not refreshed yet.
Works with
Any agent vskill installs to: 56 targets in all. These 39 have a page on this site.
- Claude Code
- Cursor
- GitHub Copilot
- Windsurf
- Codex
- Gemini CLI
- Cline
- Amp
- Roo Code
- Goose
- Continue
- Kilo Code
- Junie
- Trae
- OpenHands
- Qwen Code
- AI Agent
- Tabnine Chat
- Sourcegraph Cody
- Amazon Q
- Firebase Genkit
- Sweep
- Devin
- Phind
- Mentat
- Claude Desktop
- Aider
- GPT Pilot
- Plandex
- bolt.new
- v0
- Replit Agent
- Anse
- TypingMind
- BetterChatGPT
- LibreChat
- Warp AI
- Pieces
- Fig AI
Embed badge
[](https://verified-skill.com/skills/ariana-dot-dev/kimi-box-plugin/box-api)