API Documentation

Everything you need to integrate with the Clawy API. Submit prompts, manage your content, and automate your workflow.

CLI

The Clawy CLI lets you manage instances, submit prompts, and check status from your terminal.

Install
curl -fsSL https://clawy.io/install.sh | bash
Teach Your Clawy

Copy this into your Clawy's instructions so it knows how to use the CLI on your behalf.

The Clawy CLI is already installed. Whenever I ask you to submit feedback, create a prompt, or manage my instances, use the `clawy` command.

Full CLI documentation: https://clawy.io/api-docs

Examples:
- clawy prompts create --title "..." --content "..." --category developer
- clawy feedback submit --title "..." --body "..."
- clawy instance list

Authentication

After installing, authenticate with your API key:

clawy login

Create an API key at Settings → API Keys.

Quick Reference
clawy instance list List your instances
clawy instance show <name> Show instance details
clawy status Check system status
clawy prompts list List your prompt templates
clawy prompts show <id> Show prompt details
clawy prompts create --title "..." --content "..." Create a prompt template
clawy prompts delete <id> Delete a prompt template
clawy feedback submit --title "..." --body "..." Submit feedback
clawy feedback list List your feedback
clawy update Update CLI to latest version
clawy help-json Machine-readable command reference
clawy --help See all commands

Authentication

All API requests require a valid API key passed in the Authorization header.

Getting an API Key

  1. Log in to your Clawy account
  2. Go to Settings → API Keys (or click here)
  3. Click Create Key, give it a name
  4. Copy your API key (you can reveal it later if needed)
Authorization Header
Authorization: Bearer clw_your_api_key_here

Rate Limits

API requests are rate-limited to ensure fair usage.

60

requests per minute (authenticated)

20

requests per minute (unauthenticated)

Rate Limit Headers

All API responses include these headers:

X-RateLimit-Limit Maximum requests allowed per window
X-RateLimit-Remaining Requests remaining in current window
X-RateLimit-Reset Unix timestamp when the window resets

Error Codes

The API returns standard HTTP status codes with JSON error details.

Code Meaning
200 Success
201 Created successfully
401 Unauthorized - Invalid or missing API key
403 Forbidden - Insufficient permissions
404 Not found - Resource doesn't exist
422 Validation failed - Check the details field
429 Rate limit exceeded - Wait and retry
Error Response Format
{
  "error": "Validation failed",
  "details": ["Title can't be blank", "Content is too short"]
}

Prompt Templates

Create and manage prompt templates via the API. Prompts created via API default to private visibility.

GET /api/v1/prompt_templates

List your prompt templates. Supports filtering and pagination.

Query Parameters

page Page number (default: 1)
per_page Items per page (default: 25, max: 100)
visibility Filter: private, shared, public, purchasable
category Filter: productivity, business, developer, creative, communication, starter-kit
created_via Filter: web, api

Example

curl -X GET "https://clawy.io/api/v1/prompt_templates?visibility=private" \
  -H "Authorization: Bearer clw_your_api_key"

CLI Equivalent

clawy prompts list -o json
clawy prompts list --visibility private
POST /api/v1/prompt_templates

Create a new prompt template. Prompts created via API default to private visibility.

Request Body

title * string (max 100 chars)
description * string (max 500 chars)
content * string - The actual prompt text (max 10,000 chars). Use {{VARIABLE_NAME}} for fillable template variables (e.g., {{APP_NAME}}). Variables are auto-detected and returned in template_variables.
category * productivity | business | developer | creative | communication | starter-kit
difficulty easy | medium | hard (default: easy)
visibility private | public (default: private for API)
tags array of strings
estimated_build_time integer (minutes, default: 2)
screenshots array of base64 data URLs (max 5, each max 5MB, PNG/JPEG/WebP)

* Required field

Example

curl -X POST "https://clawy.io/api/v1/prompt_templates" \
  -H "Authorization: Bearer clw_your_api_key" \
  -H "Content-Type: application/json" \
  -d '{
    "title": "App Builder",
    "description": "Builds a customizable app with your chosen name and theme",
    "content": "Build an app called {{APP_NAME}} using a {{COLOR_THEME}} color theme. Add {{NUM_PAGES}} pages.",
    "category": "developer",
    "difficulty": "medium",
    "tags": ["app", "builder", "customizable"]
  }'

The {{APP_NAME}}, {{COLOR_THEME}}, and {{NUM_PAGES}} variables will be auto-detected. Users deploying this prompt will be asked to fill them in first.

CLI Equivalent

clawy prompts create --title "App Builder" --content "Build an app called ..." --category developer
clawy prompts create --title "App Builder" --file prompt.txt --tags app,builder
GET /api/v1/prompt_templates/:id

Get details of a specific prompt template you own.

curl -X GET "https://clawy.io/api/v1/prompt_templates/abc123" \
  -H "Authorization: Bearer clw_your_api_key"

CLI Equivalent

clawy prompts show abc123
PUT /api/v1/prompt_templates/:id

Update an existing prompt template. Only include fields you want to change.

curl -X PUT "https://clawy.io/api/v1/prompt_templates/abc123" \
  -H "Authorization: Bearer clw_your_api_key" \
  -H "Content-Type: application/json" \
  -d '{
    "title": "Updated Title",
    "visibility": "public"
  }'

CLI Equivalent

clawy prompts update abc123 --title "Updated Title" --visibility public
clawy prompts update abc123 --content-file new-prompt.txt
DELETE /api/v1/prompt_templates/:id

Delete a prompt template you own.

curl -X DELETE "https://clawy.io/api/v1/prompt_templates/abc123" \
  -H "Authorization: Bearer clw_your_api_key"

CLI Equivalent

clawy prompts delete abc123

Feedback / Ideas

Submit and retrieve feedback programmatically. Any API key (including read-only) can submit feedback.

GET /api/v1/ideas

List your submitted feedback. Supports filtering by status, feedback_type, and priority.

curl -X GET "https://clawy.io/api/v1/ideas?feedback_type=bug_report" \
  -H "Authorization: Bearer clw_your_api_key"

CLI Equivalent

clawy feedback list -o json
clawy feedback list
POST /api/v1/ideas

Submit feedback. Works with any API key permission level (read, manage, or admin).

Request Body

title * string — Short summary
body * string — Detailed description
feedback_type feature_request (default) | bug_report
priority low | medium (default) | high

* Required field

curl -X POST "https://clawy.io/api/v1/ideas" \
  -H "Authorization: Bearer clw_your_api_key" \
  -H "Content-Type: application/json" \
  -d '{
    "title": "Add dark mode toggle",
    "body": "It would be great to have a dark mode toggle in the dashboard",
    "feedback_type": "feature_request",
    "priority": "medium"
  }'

CLI Equivalent

clawy feedback submit --title "Add dark mode toggle" --body "It would be great to have a dark mode toggle in the dashboard"
GET /api/v1/ideas/:id

Get details of a specific feedback item you submitted.

API Keys

Manage API keys programmatically (requires admin permission).

Most users should manage API keys through the web interface at Settings → API Keys.

GET /api/v1/api_keys

List all your API keys. Requires admin permission.

Referrals

Generate invite codes and track signups from your referrals. Requires manage permission + referrals scope + advisor (or higher) role.

GET /api/v1/referrals

List your referral invitations with stats. Filter by status with ?status=pending|accepted|expired.

Response includes stats (total, accepted, pending, expired) and paginated referrals array.

POST /api/v1/referrals

Generate anonymous invite codes. Codes expire in 7 days.

{ "count": 5 }

Advisors: max 5 per request. Marketers/Super Admins: max 50. Response includes invite URLs.

CLI

clawy referrals list [--status pending]
clawy referrals create [--count 5]

Response Schema

All prompt template responses follow this structure.

Prompt Template Object
{
  "id": "550e8400-e29b-41d4-a716-446655440000",
  "title": "Email Draft Assistant",
  "description": "Helps draft professional emails quickly",
  "content": "Build an app called {{APP_NAME}} with {{COLOR_THEME}} theme...",
  "template_variables": ["APP_NAME", "COLOR_THEME"],
  "has_variables": true,
  "category": "productivity",
  "difficulty": "easy",
  "visibility": "private",
  "created_via": "api",
  "tags": ["email", "writing"],
  "estimated_build_time": 2,
  "times_built": 0,
  "avg_rating": null,
  "featured": false,
  "icon": null,
  "price_cents": null,
  "screenshot_count": 0,
  "screenshots": [],
  "created_at": "2026-02-23T12:00:00Z",
  "updated_at": "2026-02-23T12:00:00Z"
}

Template Variables

When content contains {{VARIABLE_NAME}} patterns (uppercase letters, digits, underscores — must start with a letter), they are auto-detected and returned in template_variables (detailed view) and has_variables (list view). No explicit variable definition is needed — just use {{...}} in your prompt text.

Need Help?

Having trouble with the API? We're here to help.

Contact Support