API
Create, read, and manage skills programmatically. Back to home
Base URL
https://skillb.in
All endpoints below are relative to this base. Responses are JSON unless noted otherwise.
Authentication
Most read endpoints work without authentication. Creating skills linked to your account, managing tokens, and accessing private skills require a Bearer token.
Authorization: Bearer <your-token>
You can create persistent API tokens from your account. Tokens are shown once at creation — store them securely. You can also use the session token shown on the homepage when signed in.
Create a new API token
Request body (JSON):
{
"name": "my-ci-token",
"expires_in_days": 90 // optional, null = never expires
}Response:
{
"token": "a1b2c3d4...", // full token — only shown once
"id": "uuid",
"name": "my-ci-token",
"prefix": "a1b2c3d4",
"expires_at": "2026-08-10T00:00:00.000Z",
"created_at": "2026-05-12T00:00:00.000Z"
}List your API tokens (prefix and metadata only, not the full token)
Revoke a token
Create a Skill
Upload a new skill. Accepts JSON or raw markdown.
Option 1: JSON body
curl -X POST https://skillb.in/api/skills \
-H "Content-Type: application/json" \
-H "Authorization: Bearer <token>" \
-d '{
"content": "# My Skill\n\nDoes things.",
"title": "My Skill",
"slug": "my-skill",
"skill_name": "my-skill",
"visibility": "public"
}'Option 2: Raw markdown
curl -X POST https://skillb.in/api/skills \ -H "Content-Type: text/markdown" \ -H "X-Skill-Name: my-skill" \ -H "Authorization: Bearer <token>" \ --data-binary @SKILL.md
JSON fields
| Field | Required | Description |
|---|---|---|
| content | yes | Markdown content (max 500 KB) |
| title | no | Display title (max 255 chars) |
| slug | no | URL slug — requires auth |
| skill_name | no | Install directory name (alphanumeric, hyphens, underscores) |
| visibility | no | public, unlisted, or private — requires auth for non-public |
Response (201)
{
"id": 42,
"nanoid": "abc123xyz",
"url": "https://skillb.in/u/alice/my-skill",
"install": "curl -fsSL https://skillb.in/install/abc123xyz | sh",
"title": "My Skill",
"slug": "my-skill",
"skill_name": "my-skill",
"visibility": "public",
"static_safety": "safe",
"version": 1,
"latest_version": 1,
"created_at": "2026-05-12T00:00:00.000Z"
}Read Skills
Get a skill by its short ID
Returns full skill metadata and content as JSON.
Get raw markdown content
Returns plain text/markdown. Useful for piping to a file or other tools.
curl -s https://skillb.in/api/skills/abc123xyz/raw > SKILL.md
Get a skill by username and slug
Returns the latest version. Response includes user info and version number.
Get raw markdown by username and slug
Get a specific version of a skill
Get raw markdown for a specific version
List all versions of a skill
Update & Delete
Update a skill's content, title, or visibility
If content changes, a new version is created automatically. Metadata-only changes (title, visibility) do not create a new version.
curl -X PATCH https://skillb.in/api/skills/u/alice/my-skill \
-H "Content-Type: application/json" \
-H "Authorization: Bearer <token>" \
-d '{ "content": "# Updated\n\nNew content.", "title": "Updated Skill" }'Delete a skill and all its versions
Returns 204 No Content on success.
curl -X DELETE https://skillb.in/api/skills/u/alice/my-skill \ -H "Authorization: Bearer <token>"
User Profile
Get a user's profile and list of skills
Returns public skills for anyone, plus unlisted and private skills if you are the owner.
CLI Helpers
Returns a shell script to upload skills from your local Claude Code skill directories
curl -fsSL https://skillb.in/upload | sh
Query params: skills=name1,name2 (preselect skills), token=<token> (authenticate). Scans both ~/.claude/skills/ and .claude/skills/ for directories containing a SKILL.md.
Returns a shell script to install a skill locally
curl -fsSL https://skillb.in/install/abc123xyz | sh
Query params: scope=global|project (skip prompt), token=<token> (for private skills).
Errors
Error responses return JSON with an error field.
| Status | Meaning |
|---|---|
| 400 | Invalid request body or parameters |
| 401 | Missing or invalid authentication |
| 403 | Not authorized to modify this resource |
| 404 | Resource not found (or private and not authorized) |
| 413 | Content exceeds 500 KB size limit |
Rate Limits
There are currently no strict rate limits. Please be respectful — if you need to make bulk requests, add a short delay between calls. Abusive usage may result in temporary blocks.