Skip to main content
This endpoint uses multipart/form-data with a file upload. Use the cURL or Python example below. Names must be unique on your account — calling this with an existing name returns Ability with same name already exists. Delete the existing Ability first to replace it.

Endpoint

POST https://app.openhome.com/api/capabilities/add-capability/
Send the request as multipart/form-data.

Headers

X-API-KEY
string
required
Your OpenHome API key.

Form fields

name
string
required
Ability name. Must be unique on your account.
category
string
required
One of skill, brain_skill, background_daemon, or local.
description
string
required
One-line description.
trigger_words
string
required
Comma-separated trigger phrases. Example: hey skill, activate skill.
zip_file
file
required
Zipped Ability package. Accepted content types: application/zip, application/x-zip, application/x-zip-compressed, application/octet-stream.
image_file
file
Optional icon.

Example request

cURL
curl -X POST https://app.openhome.com/api/capabilities/add-capability/ \
  -H "X-API-KEY: YOUR_KEY" \
  -F "name=My Skill" \
  -F "category=skill" \
  -F "description=Greets the user" \
  -F "trigger_words=hey skill, activate skill" \
  -F "zip_file=@./my-skill.zip"
Python
import requests

with open("my-skill.zip", "rb") as f:
    requests.post(
        "https://app.openhome.com/api/capabilities/add-capability/",
        headers={"X-API-KEY": "YOUR_KEY"},
        data={
            "name": "My Skill",
            "category": "skill",
            "description": "Greets the user",
            "trigger_words": "hey skill, activate skill",
        },
        files={"zip_file": f},
    )