Skip to main content
POST
/
api
/
v1
/
skills
/
create
Create Skill
curl --request POST \
  --url https://api.example.com/api/v1/skills/create \
  --header 'Content-Type: application/json' \
  --data '
{
  "name": "<string>",
  "slug": "<string>",
  "category": "<string>",
  "system_prompt_ext": "<string>",
  "description": "<string>",
  "tool_definitions": [
    {}
  ],
  "is_public": true
}
'
{
  "skill": {}
}
Create a new skill. Skills are private by default — use Submit Skill to publish to the marketplace.

Authentication

Requires a Bearer token. See Authentication.

Request Body

name
string
required
Human-readable skill name.
slug
string
required
Unique identifier. Must be lowercase alphanumeric with hyphens (e.g., "inventory-check").
category
string
required
Skill category. One of: productivity, domain, integration, automation, creative.
system_prompt_ext
string
required
System prompt extension injected into the LLM context when this skill is active.
description
string
Short description of what the skill does.
tool_definitions
object[]
Tool definitions the skill provides.
is_public
boolean
default:"false"
Whether the skill is publicly listed. Use Submit Skill for marketplace publishing with review.

Request Examples

curl -X POST https://hitheo.ai/api/v1/skills/create \
  -H "Authorization: Bearer $THEO_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "Inventory Check",
    "slug": "inventory-check",
    "category": "automation",
    "system_prompt_ext": "You are an inventory specialist. Use check_stock to look up levels.",
    "description": "Real-time inventory lookup and reorder alerts",
    "tool_definitions": [
      {
        "name": "check_stock",
        "description": "Look up current stock levels for a SKU",
        "inputSchema": {
          "type": "object",
          "properties": { "sku": { "type": "string" } },
          "required": ["sku"]
        }
      }
    ]
  }'

Response (HTTP 201)

skill
object
The created skill object with all fields including the generated id.

Errors

StatusCodeDescription
400validation_errorMissing required fields or invalid slug format
409conflictA skill with this slug already exists