> ## Documentation Index
> Fetch the complete documentation index at: https://sidenet.ai/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# Create skill

> Creates a skill with its first version. A skill is a named block of instructions an agent loads on demand (through its `skill` tool) instead of carrying it in every prompt: a refund policy, a reporting format, a long procedure. The `description` is what tells the agent WHEN to load it, so write it as a rule ("Load before answering any refund question"). The skill is not live until `POST /v1/skills/{id}/publish`; attach it to an agent with `skills: [{ skill_id }]` on the agent draft.



## OpenAPI

````yaml /api-reference/openapi.json post /v1/skills
openapi: 3.1.0
info:
  title: Sidenet API
  version: 1.0.0
  description: >-
    Sidenet HTTP endpoints exposed by the Sidenet Studio. All routes require an
    api key that can be generated through the studio in studio.sidenet.ai.
servers:
  - url: https://api.sidenet.ai
security:
  - bearerAuth: []
paths:
  /v1/skills:
    post:
      tags:
        - Skills
      summary: Create skill
      description: >-
        Creates a skill with its first version. A skill is a named block of
        instructions an agent loads on demand (through its `skill` tool) instead
        of carrying it in every prompt: a refund policy, a reporting format, a
        long procedure. The `description` is what tells the agent WHEN to load
        it, so write it as a rule ("Load before answering any refund question").
        The skill is not live until `POST /v1/skills/{id}/publish`; attach it to
        an agent with `skills: [{ skill_id }]` on the agent draft.
      parameters: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
                - name
                - description
                - instructions
              properties:
                name:
                  type: string
                  description: >-
                    1-64 chars: lowercase letters, digits and hyphens. Two
                    skills on one agent may not share a name.
                  example: refund-policy
                description:
                  type: string
                  maxLength: 1024
                  description: >-
                    What the skill covers and when the agent should load it.
                    Shown to the agent on every turn.
                  example: >-
                    How refunds are decided and worded. Load before answering
                    any refund or cancellation question.
                instructions:
                  type: string
                  maxLength: 60000
                  description: >-
                    Markdown the agent receives when it loads the skill.
                    Positive, imperative rules work best.
                  example: |-
                    ## Refunds

                    1. Full refund within 14 days of purchase…
      responses:
        '201':
          description: The new skill and its first version (not yet published)
          content:
            application/json:
              schema:
                type: object
                properties:
                  skill:
                    type: object
                    properties:
                      id:
                        type: string
                        format: uuid
                      name:
                        type: string
                        description: >-
                          From the latest version. Lowercase letters, digits and
                          hyphens; what the agent passes to its `skill` tool.
                      description:
                        type: string
                        nullable: true
                        description: >-
                          From the latest version. Tells the agent WHEN to load
                          the skill.
                      status:
                        type: string
                        enum:
                          - draft
                          - published
                          - archived
                        description: '`draft` until a version is activated.'
                      active_version_id:
                        type: string
                        format: uuid
                        nullable: true
                        description: >-
                          The version agents get. Null = not published; agents
                          referencing the skill skip it.
                      latest_version_id:
                        type: string
                        format: uuid
                        nullable: true
                        description: The working copy — what PATCH edits.
                      dirty:
                        type: boolean
                        description: >-
                          The latest version is not the active one: there is
                          something to publish.
                      created_at:
                        type: string
                        format: date-time
                      updated_at:
                        type: string
                        format: date-time
                  latest:
                    type: object
                    properties:
                      id:
                        type: string
                        format: uuid
                      skill_id:
                        type: string
                        format: uuid
                      version_number:
                        type: integer
                        description: >-
                          1 is the version created with the skill; every save
                          that changes the text adds one.
                      name:
                        type: string
                      description:
                        type: string
                        nullable: true
                      instructions:
                        type: string
                        nullable: true
                        description: >-
                          Markdown. What the agent receives when it loads the
                          skill.
                      change_message:
                        type: string
                        nullable: true
                      changed_fields:
                        type: array
                        items:
                          type: string
                      created_at:
                        type: string
                        format: date-time
                      active:
                        type: boolean
                        description: This is the version agents currently get.
                    nullable: true
                    description: The working copy (newest version).
                  active:
                    type: object
                    properties:
                      id:
                        type: string
                        format: uuid
                      skill_id:
                        type: string
                        format: uuid
                      version_number:
                        type: integer
                        description: >-
                          1 is the version created with the skill; every save
                          that changes the text adds one.
                      name:
                        type: string
                      description:
                        type: string
                        nullable: true
                      instructions:
                        type: string
                        nullable: true
                        description: >-
                          Markdown. What the agent receives when it loads the
                          skill.
                      change_message:
                        type: string
                        nullable: true
                      changed_fields:
                        type: array
                        items:
                          type: string
                      created_at:
                        type: string
                        format: date-time
                      active:
                        type: boolean
                        description: This is the version agents currently get.
                    nullable: true
                    description: What agents get. Null until the skill is published.
              example:
                skill:
                  id: 9a4e2c71-5b08-4f3d-a6c2-1e7d8b0f4c23
                  name: refund-policy
                  description: >-
                    How refunds are decided and worded. Load before answering
                    any refund or cancellation question.
                  status: draft
                  active_version_id: null
                  latest_version_id: 3c8f1d26-7e94-4a05-b2d7-6f0a9c5e8b41
                  dirty: true
                  created_at: '2026-10-01T09:12:44.881Z'
                  updated_at: '2026-10-14T08:30:20.517Z'
                latest:
                  id: 3c8f1d26-7e94-4a05-b2d7-6f0a9c5e8b41
                  skill_id: 9a4e2c71-5b08-4f3d-a6c2-1e7d8b0f4c23
                  version_number: 1
                  name: refund-policy
                  description: >-
                    How refunds are decided and worded. Load before answering
                    any refund or cancellation question.
                  instructions: |-
                    ## Refunds

                    1. Full refund within 14 days of purchase…
                  change_message: Initial version
                  changed_fields:
                    - instructions
                  created_at: '2026-10-14T08:30:20.517Z'
                  active: false
                active: null
        '400':
          description: Invalid body (bad name, missing field) or missing headers
        '500':
          description: Create failed
components:
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      description: >-
        Organization API key, generated in studio.sidenet.ai. Backend only —
        never in a browser.

````

This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.