Skip to main content
POST
/
public-api
/
skills
Create a skill
curl --request POST \
  --url https://api.neoagent.io/public-api/skills \
  --header 'Authorization: Bearer <token>' \
  --header 'Content-Type: application/json' \
  --data @- <<EOF
{
  "description": "Monthly license true-ups. Use when reconciling agreements vs device counts.",
  "files": [
    {
      "content": "## When to use\nReconcile licenses monthly.\n\n## Steps\nRun scripts/reconcile.py.",
      "path": "SKILL.md"
    },
    {
      "content": "print('reconcile')\n",
      "path": "scripts/reconcile.py"
    }
  ],
  "name": "License true-up",
  "slug": "license-true-up",
  "source_run_id": "24183-0512"
}
EOF
{
  "data": {
    "description": "<string>",
    "files": [
      {
        "content": "<string>",
        "id": "<string>",
        "path": "<string>",
        "version": 123
      }
    ],
    "id": "<string>",
    "name": "<string>",
    "slug": "<string>",
    "source_run_id": "<string>",
    "updated_at": "<string>"
  },
  "meta": {
    "request_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
    "timings_ms": {},
    "pagination": {
      "has_more": true,
      "next_cursor": "<string>"
    },
    "warnings": [
      "<string>"
    ]
  }
}

Authorizations

Authorization
string
header
required

Authorization: Bearer <token> where <token> is either a neo_sk_<env>_<secret> API key (service account) or a Microsoft Entra ID access token (dashboard user).

Body

application/json
files
SkillFileInput · object[]
required
name
string
required
slug
string
required
description
string | null
source_run_id
string | null

Response

Success.

data
PublicSkill · object
required

A tenant skill read whole — the row plus the latest version of each file.

meta
object
required