Chipa Kit

API Reference

Public REST API endpoints for searching, fetching, and resolving Chipa Kit components.

The Chipa Kit public API provides programmatic access to the component catalog. Use it to search, fetch component details, resolve shortcodes, and browse categories.


Overview#

Base URLhttps://chipakit.com/api/v1
ProtocolHTTPS only
FormatJSON
AuthenticationOptional (public endpoints work without auth)
Rate Limit60 requests/minute (unauthenticated)

Authentication#

Most public endpoints work without authentication. For higher rate limits and access to premium features, include your API key in the request header:

Authentication header
curl -H "Authorization: Bearer ck_live_your_key_here" \
  https://chipakit.com/api/v1/public/search?q=hero

Getting an API key

  1. Sign in to your Chipa Kit account.
  2. Go to Settings > API Keys.
  3. Click Generate New Key.
  4. Copy and store the key securely -- it is only shown once.

Keep your API key secret. Never commit it to version control or include it in client-side code. Use environment variables instead.


Rate Limiting#

TierRate LimitWindow
Unauthenticated60 requestsPer minute
Authenticated (free)120 requestsPer minute
Authenticated (premium)600 requestsPer minute

Rate limit headers are included in every response:

text
X-RateLimit-Limit: 60
X-RateLimit-Remaining: 58
X-RateLimit-Reset: 1709136000

When the rate limit is exceeded, the API returns a 429 Too Many Requests status with a Retry-After header indicating when you can retry.


Response Format#

All responses follow a consistent envelope format:

Success response
{
  "data": { ... },
  "meta": {
    "total": 42,
    "page": 1,
    "limit": 20
  },
  "message": "OK"
}
Error response
{
  "data": null,
  "message": "Component not found",
  "statusCode": 404
}

Always unwrap the data field. The actual payload is nested inside data. The meta field is only present for paginated list responses.


Endpoints#

GET/api/v1/public/search

Search the component catalog with optional filters.

Query Parameters

NameTypeDefaultDescription
qstring--Search keyword
categorystring--Category slug
frameworkstring--react, vue, html, svelte
stylingstring--tailwind, css, scss
sortstringrelevancerelevance, newest, downloads
pagenumber1Page number
limitnumber20Results per page (max 50)

Example

bash
curl "https://chipakit.com/api/v1/public/search?q=hero&framework=react&styling=tailwind&limit=5"
Response
{
  "data": [
    {
      "id": "clx1234...",
      "title": "Gradient Hero Section with CTA",
      "slug": "janedoe/gradient-hero-cta",
      "shortcode": "chipakit:janedoe/gradient-hero-cta",
      "description": "A responsive hero section with gradient background...",
      "framework": "react",
      "styling": "tailwind",
      "category": { "name": "Hero Sections", "slug": "hero-sections" },
      "creator": { "username": "janedoe", "displayName": "Jane Doe" },
      "downloadCount": 128,
      "tags": ["hero", "gradient", "cta", "responsive"],
      "createdAt": "2026-02-15T10:30:00.000Z"
    }
  ],
  "meta": { "total": 12, "page": 1, "limit": 5 },
  "message": "OK"
}
GET/api/v1/public/components/:slug

Get full details for a specific component including file list.

Path Parameters

NameTypeDescription
slugstringComponent slug (e.g. janedoe/gradient-hero-cta)

Example

bash
curl "https://chipakit.com/api/v1/public/components/janedoe/gradient-hero-cta"
Response
{
  "data": {
    "id": "clx1234...",
    "title": "Gradient Hero Section with CTA",
    "slug": "janedoe/gradient-hero-cta",
    "shortcode": "chipakit:janedoe/gradient-hero-cta",
    "description": "A responsive hero section...",
    "framework": "react",
    "styling": "tailwind",
    "license": "MIT",
    "dependencies": ["framer-motion"],
    "files": [
      { "name": "hero.tsx", "size": 2048, "type": "text/tsx" },
      { "name": "hero.css", "size": 512, "type": "text/css" }
    ],
    "category": { "name": "Hero Sections", "slug": "hero-sections" },
    "creator": {
      "username": "janedoe",
      "displayName": "Jane Doe",
      "avatarUrl": "https://..."
    },
    "downloadCount": 128,
    "tags": ["hero", "gradient", "cta"],
    "createdAt": "2026-02-15T10:30:00.000Z",
    "updatedAt": "2026-02-20T14:00:00.000Z"
  },
  "message": "OK"
}
GET/api/v1/public/categories

List all component categories with their component counts.

Example

bash
curl "https://chipakit.com/api/v1/public/categories"
Response
{
  "data": [
    { "name": "Hero Sections", "slug": "hero-sections", "componentCount": 24 },
    { "name": "Navigation", "slug": "navigation", "componentCount": 18 },
    { "name": "Cards", "slug": "cards", "componentCount": 31 },
    { "name": "Forms", "slug": "forms", "componentCount": 15 },
    { "name": "Pricing", "slug": "pricing", "componentCount": 9 }
  ],
  "message": "OK"
}
GET/api/v1/resolve/:shortcode

Resolve a shortcode to a full component with file contents (used by MCP).

Path Parameters

NameTypeDescription
shortcodestringComponent shortcode (e.g. janedoe/gradient-hero-cta)

Example

bash
curl "https://chipakit.com/api/v1/resolve/janedoe/gradient-hero-cta"
Response
{
  "data": {
    "shortcode": "chipakit:janedoe/gradient-hero-cta",
    "title": "Gradient Hero Section with CTA",
    "files": [
      {
        "name": "hero.tsx",
        "content": "import { motion } from 'framer-motion';\n\nexport function Hero() { ... }",
        "size": 2048
      }
    ],
    "dependencies": ["framer-motion"],
    "license": "MIT"
  },
  "message": "OK"
}

Error Handling#

The API uses standard HTTP status codes to indicate success or failure:

CodeMeaningDescription
200OKRequest succeeded
400Bad RequestInvalid query parameters or malformed request
401UnauthorizedInvalid or expired API key
404Not FoundComponent or resource does not exist
429Too Many RequestsRate limit exceeded
500Internal Server ErrorUnexpected server error

Error responses always include a message field with a human-readable explanation:

404 Error
{
  "data": null,
  "message": "Component 'unknown/nonexistent' not found",
  "statusCode": 404
}
429 Rate Limit Error
{
  "data": null,
  "message": "Rate limit exceeded. Retry after 45 seconds.",
  "statusCode": 429
}