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.

POST/api/tokensrequired

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"
}
GET/api/tokensrequired

List your API tokens (prefix and metadata only, not the full token)

DELETE/api/tokens/:idrequired

Revoke a token

Create a Skill

POST/api/skillsoptional

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

FieldRequiredDescription
contentyesMarkdown content (max 500 KB)
titlenoDisplay title (max 255 chars)
slugnoURL slug — requires auth
skill_namenoInstall directory name (alphanumeric, hyphens, underscores)
visibilitynopublic, 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/api/skills/:nanoid

Get a skill by its short ID

Returns full skill metadata and content as JSON.

GET/api/skills/:nanoid/raw

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/api/skills/u/:username/:slug

Get a skill by username and slug

Returns the latest version. Response includes user info and version number.

GET/api/skills/u/:username/:slug/raw

Get raw markdown by username and slug

GET/api/skills/u/:username/:slug/v/:version

Get a specific version of a skill

GET/api/skills/u/:username/:slug/v/:version/raw

Get raw markdown for a specific version

GET/api/skills/u/:username/:slug/versions

List all versions of a skill

Update & Delete

PATCH/api/skills/u/:username/:slugrequired

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/api/skills/u/:username/:slugrequired

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/api/users/:username

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

GET/upload

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.

GET/install/:nanoid

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.

StatusMeaning
400Invalid request body or parameters
401Missing or invalid authentication
403Not authorized to modify this resource
404Resource not found (or private and not authorized)
413Content 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.