OpenAI Skills API

The Skills API from OpenAI — 6 operation(s) for skills.

Documentation

📖
Documentation
https://platform.openai.com/docs/assistants/overview
📖
Documentation
https://platform.openai.com/docs/api-reference/assistants
📖
Documentation
https://platform.openai.com/docs/guides/text-to-speech
📖
Documentation
https://platform.openai.com/docs/api-reference/audio
📖
Documentation
https://platform.openai.com/docs/guides/speech-to-text
📖
Documentation
https://developers.openai.com/api/docs/guides/audio/
📖
Documentation
https://developers.openai.com/api/docs/guides/voice-agents/
📖
Documentation
https://platform.openai.com/docs/api-reference/chat
📖
Documentation
https://platform.openai.com/docs/guides/embeddings
📖
Documentation
https://platform.openai.com/docs/api-reference/embeddings
📖
Documentation
https://platform.openai.com/docs/api-reference/files
📖
Documentation
https://platform.openai.com/docs/guides/fine-tuning
📖
Documentation
https://platform.openai.com/docs/api-reference/fine-tuning
📖
Documentation
https://platform.openai.com/docs/guides/images
📖
Documentation
https://platform.openai.com/docs/api-reference/images
📖
Documentation
https://platform.openai.com/docs/guides/image-generation
📖
Documentation
https://platform.openai.com/docs/guides/images-vision
📖
Documentation
https://platform.openai.com/docs/models
📖
Documentation
https://platform.openai.com/docs/api-reference/models
📖
Documentation
https://platform.openai.com/docs/assistants/how-it-works/managing-threads-and-messages
📖
Documentation
https://platform.openai.com/docs/api-reference/threads
📖
Documentation
https://platform.openai.com/docs/api-reference/completions

Specifications

Schemas & Data

Other Resources

OpenAPI Specification

openai-skills-api-openapi.yml Raw ↑
openapi: 3.0.0
info:
  title: OpenAI Assistants Skills API
  description: The Assistants API allows you to build AI assistants within your own applications. An Assistant has instructions and can leverage models, tools, and knowledge to respond to user queries. The Assistants API currently supports three types of tools - Code Interpreter, Retrieval, and Function calling. In the future, we plan to release more OpenAI-built tools, and allow you to provide your own tools on our platform.
  version: 2.0.0
  termsOfService: https://openai.com/policies/terms-of-use
  contact:
    name: OpenAI Support
    url: https://help.openai.com/
  license:
    name: MIT
    url: https://github.com/openai/openai-openapi/blob/master/LICENSE
servers:
- url: https://api.openai.com/v1
security:
- ApiKeyAuth: []
tags:
- name: Skills
paths:
  /skills:
    post:
      tags:
      - Skills
      summary: Create a new skill.
      operationId: CreateSkill
      parameters: []
      requestBody:
        content:
          multipart/form-data:
            schema:
              $ref: '#/components/schemas/CreateSkillBody'
          application/json:
            schema:
              $ref: '#/components/schemas/CreateSkillBody'
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SkillResource'
      x-oaiMeta:
        examples:
          response: ''
          request:
            node.js: "import OpenAI from 'openai';\n\nconst client = new OpenAI({\n  apiKey: process.env['OPENAI_API_KEY'], // This is the default and can be omitted\n});\n\nconst skill = await client.skills.create();\n\nconsole.log(skill.id);"
            python: "import os\nfrom openai import OpenAI\n\nclient = OpenAI(\n    api_key=os.environ.get(\"OPENAI_API_KEY\"),  # This is the default and can be omitted\n)\nskill = client.skills.create()\nprint(skill.id)"
            go: "package main\n\nimport (\n\t\"context\"\n\t\"fmt\"\n\n\t\"github.com/openai/openai-go\"\n\t\"github.com/openai/openai-go/option\"\n)\n\nfunc main() {\n\tclient := openai.NewClient(\n\t\toption.WithAPIKey(\"My API Key\"),\n\t)\n\tskill, err := client.Skills.New(context.TODO(), openai.SkillNewParams{})\n\tif err != nil {\n\t\tpanic(err.Error())\n\t}\n\tfmt.Printf(\"%+v\\n\", skill.ID)\n}\n"
            java: "package com.openai.example;\n\nimport com.openai.client.OpenAIClient;\nimport com.openai.client.okhttp.OpenAIOkHttpClient;\nimport com.openai.models.skills.Skill;\nimport com.openai.models.skills.SkillCreateParams;\n\npublic final class Main {\n    private Main() {}\n\n    public static void main(String[] args) {\n        OpenAIClient client = OpenAIOkHttpClient.fromEnv();\n\n        Skill skill = client.skills().create();\n    }\n}"
            ruby: 'require "openai"


              openai = OpenAI::Client.new(api_key: "My API Key")


              skill = openai.skills.create


              puts(skill)'
    get:
      tags:
      - Skills
      summary: List all skills for the current project.
      operationId: ListSkills
      parameters:
      - name: limit
        in: query
        description: Number of items to retrieve
        required: false
        schema:
          type: integer
          minimum: 0
          maximum: 100
      - name: order
        in: query
        description: Sort order of results by timestamp. Use `asc` for ascending order or `desc` for descending order.
        required: false
        schema:
          $ref: '#/components/schemas/OrderEnum'
      - name: after
        in: query
        description: Identifier for the last item from the previous pagination request
        required: false
        schema:
          description: Identifier for the last item from the previous pagination request
          type: string
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SkillListResource'
      x-oaiMeta:
        examples:
          response: ''
          request:
            node.js: "import OpenAI from 'openai';\n\nconst client = new OpenAI({\n  apiKey: process.env['OPENAI_API_KEY'], // This is the default and can be omitted\n});\n\n// Automatically fetches more pages as needed.\nfor await (const skill of client.skills.list()) {\n  console.log(skill.id);\n}"
            python: "import os\nfrom openai import OpenAI\n\nclient = OpenAI(\n    api_key=os.environ.get(\"OPENAI_API_KEY\"),  # This is the default and can be omitted\n)\npage = client.skills.list()\npage = page.data[0]\nprint(page.id)"
            go: "package main\n\nimport (\n\t\"context\"\n\t\"fmt\"\n\n\t\"github.com/openai/openai-go\"\n\t\"github.com/openai/openai-go/option\"\n)\n\nfunc main() {\n\tclient := openai.NewClient(\n\t\toption.WithAPIKey(\"My API Key\"),\n\t)\n\tpage, err := client.Skills.List(context.TODO(), openai.SkillListParams{})\n\tif err != nil {\n\t\tpanic(err.Error())\n\t}\n\tfmt.Printf(\"%+v\\n\", page)\n}\n"
            java: "package com.openai.example;\n\nimport com.openai.client.OpenAIClient;\nimport com.openai.client.okhttp.OpenAIOkHttpClient;\nimport com.openai.models.skills.SkillListPage;\nimport com.openai.models.skills.SkillListParams;\n\npublic final class Main {\n    private Main() {}\n\n    public static void main(String[] args) {\n        OpenAIClient client = OpenAIOkHttpClient.fromEnv();\n\n        SkillListPage page = client.skills().list();\n    }\n}"
            ruby: 'require "openai"


              openai = OpenAI::Client.new(api_key: "My API Key")


              page = openai.skills.list


              puts(page)'
  /skills/{skill_id}:
    delete:
      tags:
      - Skills
      summary: Delete a skill by its ID.
      operationId: DeleteSkill
      parameters:
      - name: skill_id
        in: path
        description: The identifier of the skill to delete.
        required: true
        schema:
          example: skill_123
          type: string
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DeletedSkillResource'
      x-oaiMeta:
        examples:
          response: ''
          request:
            node.js: "import OpenAI from 'openai';\n\nconst client = new OpenAI({\n  apiKey: process.env['OPENAI_API_KEY'], // This is the default and can be omitted\n});\n\nconst deletedSkill = await client.skills.delete('skill_123');\n\nconsole.log(deletedSkill.id);"
            python: "import os\nfrom openai import OpenAI\n\nclient = OpenAI(\n    api_key=os.environ.get(\"OPENAI_API_KEY\"),  # This is the default and can be omitted\n)\ndeleted_skill = client.skills.delete(\n    \"skill_123\",\n)\nprint(deleted_skill.id)"
            go: "package main\n\nimport (\n\t\"context\"\n\t\"fmt\"\n\n\t\"github.com/openai/openai-go\"\n\t\"github.com/openai/openai-go/option\"\n)\n\nfunc main() {\n\tclient := openai.NewClient(\n\t\toption.WithAPIKey(\"My API Key\"),\n\t)\n\tdeletedSkill, err := client.Skills.Delete(context.TODO(), \"skill_123\")\n\tif err != nil {\n\t\tpanic(err.Error())\n\t}\n\tfmt.Printf(\"%+v\\n\", deletedSkill.ID)\n}\n"
            java: "package com.openai.example;\n\nimport com.openai.client.OpenAIClient;\nimport com.openai.client.okhttp.OpenAIOkHttpClient;\nimport com.openai.models.skills.DeletedSkill;\nimport com.openai.models.skills.SkillDeleteParams;\n\npublic final class Main {\n    private Main() {}\n\n    public static void main(String[] args) {\n        OpenAIClient client = OpenAIOkHttpClient.fromEnv();\n\n        DeletedSkill deletedSkill = client.skills().delete(\"skill_123\");\n    }\n}"
            ruby: 'require "openai"


              openai = OpenAI::Client.new(api_key: "My API Key")


              deleted_skill = openai.skills.delete("skill_123")


              puts(deleted_skill)'
    get:
      tags:
      - Skills
      summary: Get a skill by its ID.
      operationId: GetSkill
      parameters:
      - name: skill_id
        in: path
        description: The identifier of the skill to retrieve.
        required: true
        schema:
          example: skill_123
          type: string
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SkillResource'
      x-oaiMeta:
        examples:
          response: ''
          request:
            node.js: "import OpenAI from 'openai';\n\nconst client = new OpenAI({\n  apiKey: process.env['OPENAI_API_KEY'], // This is the default and can be omitted\n});\n\nconst skill = await client.skills.retrieve('skill_123');\n\nconsole.log(skill.id);"
            python: "import os\nfrom openai import OpenAI\n\nclient = OpenAI(\n    api_key=os.environ.get(\"OPENAI_API_KEY\"),  # This is the default and can be omitted\n)\nskill = client.skills.retrieve(\n    \"skill_123\",\n)\nprint(skill.id)"
            go: "package main\n\nimport (\n\t\"context\"\n\t\"fmt\"\n\n\t\"github.com/openai/openai-go\"\n\t\"github.com/openai/openai-go/option\"\n)\n\nfunc main() {\n\tclient := openai.NewClient(\n\t\toption.WithAPIKey(\"My API Key\"),\n\t)\n\tskill, err := client.Skills.Get(context.TODO(), \"skill_123\")\n\tif err != nil {\n\t\tpanic(err.Error())\n\t}\n\tfmt.Printf(\"%+v\\n\", skill.ID)\n}\n"
            java: "package com.openai.example;\n\nimport com.openai.client.OpenAIClient;\nimport com.openai.client.okhttp.OpenAIOkHttpClient;\nimport com.openai.models.skills.Skill;\nimport com.openai.models.skills.SkillRetrieveParams;\n\npublic final class Main {\n    private Main() {}\n\n    public static void main(String[] args) {\n        OpenAIClient client = OpenAIOkHttpClient.fromEnv();\n\n        Skill skill = client.skills().retrieve(\"skill_123\");\n    }\n}"
            ruby: 'require "openai"


              openai = OpenAI::Client.new(api_key: "My API Key")


              skill = openai.skills.retrieve("skill_123")


              puts(skill)'
    post:
      tags:
      - Skills
      summary: Update the default version pointer for a skill.
      operationId: UpdateSkillDefaultVersion
      parameters:
      - name: skill_id
        in: path
        description: The identifier of the skill.
        required: true
        schema:
          example: skill_123
          type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/SetDefaultSkillVersionBody'
          application/x-www-form-urlencoded:
            schema:
              $ref: '#/components/schemas/SetDefaultSkillVersionBody'
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SkillResource'
      x-oaiMeta:
        examples:
          response: ''
          request:
            node.js: "import OpenAI from 'openai';\n\nconst client = new OpenAI({\n  apiKey: process.env['OPENAI_API_KEY'], // This is the default and can be omitted\n});\n\nconst skill = await client.skills.update('skill_123', { default_version: 'default_version' });\n\nconsole.log(skill.id);"
            python: "import os\nfrom openai import OpenAI\n\nclient = OpenAI(\n    api_key=os.environ.get(\"OPENAI_API_KEY\"),  # This is the default and can be omitted\n)\nskill = client.skills.update(\n    skill_id=\"skill_123\",\n    default_version=\"default_version\",\n)\nprint(skill.id)"
            go: "package main\n\nimport (\n\t\"context\"\n\t\"fmt\"\n\n\t\"github.com/openai/openai-go\"\n\t\"github.com/openai/openai-go/option\"\n)\n\nfunc main() {\n\tclient := openai.NewClient(\n\t\toption.WithAPIKey(\"My API Key\"),\n\t)\n\tskill, err := client.Skills.Update(\n\t\tcontext.TODO(),\n\t\t\"skill_123\",\n\t\topenai.SkillUpdateParams{\n\t\t\tDefaultVersion: \"default_version\",\n\t\t},\n\t)\n\tif err != nil {\n\t\tpanic(err.Error())\n\t}\n\tfmt.Printf(\"%+v\\n\", skill.ID)\n}\n"
            java: "package com.openai.example;\n\nimport com.openai.client.OpenAIClient;\nimport com.openai.client.okhttp.OpenAIOkHttpClient;\nimport com.openai.models.skills.Skill;\nimport com.openai.models.skills.SkillUpdateParams;\n\npublic final class Main {\n    private Main() {}\n\n    public static void main(String[] args) {\n        OpenAIClient client = OpenAIOkHttpClient.fromEnv();\n\n        SkillUpdateParams params = SkillUpdateParams.builder()\n            .skillId(\"skill_123\")\n            .defaultVersion(\"default_version\")\n            .build();\n        Skill skill = client.skills().update(params);\n    }\n}"
            ruby: 'require "openai"


              openai = OpenAI::Client.new(api_key: "My API Key")


              skill = openai.skills.update("skill_123", default_version: "default_version")


              puts(skill)'
  /skills/{skill_id}/content:
    get:
      tags:
      - Skills
      summary: Download a skill zip bundle by its ID.
      operationId: GetSkillContent
      parameters:
      - name: skill_id
        in: path
        description: The identifier of the skill to download.
        required: true
        schema:
          example: skill_123
          type: string
      responses:
        '200':
          description: The skill zip bundle.
          content:
            application/zip:
              schema:
                type: string
                format: binary
            application/json:
              schema:
                type: string
      x-oaiMeta:
        examples:
          response: ''
          request:
            node.js: "import OpenAI from 'openai';\n\nconst client = new OpenAI({\n  apiKey: process.env['OPENAI_API_KEY'], // This is the default and can be omitted\n});\n\nconst content = await client.skills.content.retrieve('skill_123');\n\nconsole.log(content);\n\nconst data = await content.blob();\nconsole.log(data);"
            python: "import os\nfrom openai import OpenAI\n\nclient = OpenAI(\n    api_key=os.environ.get(\"OPENAI_API_KEY\"),  # This is the default and can be omitted\n)\ncontent = client.skills.content.retrieve(\n    \"skill_123\",\n)\nprint(content)\ndata = content.read()\nprint(data)"
            go: "package main\n\nimport (\n\t\"context\"\n\t\"fmt\"\n\n\t\"github.com/openai/openai-go\"\n\t\"github.com/openai/openai-go/option\"\n)\n\nfunc main() {\n\tclient := openai.NewClient(\n\t\toption.WithAPIKey(\"My API Key\"),\n\t)\n\tcontent, err := client.Skills.Content.Get(context.TODO(), \"skill_123\")\n\tif err != nil {\n\t\tpanic(err.Error())\n\t}\n\tfmt.Printf(\"%+v\\n\", content)\n}\n"
            java: "package com.openai.example;\n\nimport com.openai.client.OpenAIClient;\nimport com.openai.client.okhttp.OpenAIOkHttpClient;\nimport com.openai.core.http.HttpResponse;\nimport com.openai.models.skills.content.ContentRetrieveParams;\n\npublic final class Main {\n    private Main() {}\n\n    public static void main(String[] args) {\n        OpenAIClient client = OpenAIOkHttpClient.fromEnv();\n\n        HttpResponse content = client.skills().content().retrieve(\"skill_123\");\n    }\n}"
            ruby: 'require "openai"


              openai = OpenAI::Client.new(api_key: "My API Key")


              content = openai.skills.content.retrieve("skill_123")


              puts(content)'
  /skills/{skill_id}/versions:
    post:
      tags:
      - Skills
      summary: Create a new immutable skill version.
      operationId: CreateSkillVersion
      parameters:
      - name: skill_id
        in: path
        description: The identifier of the skill to version.
        required: true
        schema:
          example: skill_123
          type: string
      requestBody:
        content:
          multipart/form-data:
            schema:
              $ref: '#/components/schemas/CreateSkillVersionBody'
          application/json:
            schema:
              $ref: '#/components/schemas/CreateSkillVersionBody'
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SkillVersionResource'
      x-oaiMeta:
        examples:
          response: ''
          request:
            node.js: "import OpenAI from 'openai';\n\nconst client = new OpenAI({\n  apiKey: process.env['OPENAI_API_KEY'], // This is the default and can be omitted\n});\n\nconst skillVersion = await client.skills.versions.create('skill_123');\n\nconsole.log(skillVersion.id);"
            python: "import os\nfrom openai import OpenAI\n\nclient = OpenAI(\n    api_key=os.environ.get(\"OPENAI_API_KEY\"),  # This is the default and can be omitted\n)\nskill_version = client.skills.versions.create(\n    skill_id=\"skill_123\",\n)\nprint(skill_version.id)"
            go: "package main\n\nimport (\n\t\"context\"\n\t\"fmt\"\n\n\t\"github.com/openai/openai-go\"\n\t\"github.com/openai/openai-go/option\"\n)\n\nfunc main() {\n\tclient := openai.NewClient(\n\t\toption.WithAPIKey(\"My API Key\"),\n\t)\n\tskillVersion, err := client.Skills.Versions.New(\n\t\tcontext.TODO(),\n\t\t\"skill_123\",\n\t\topenai.SkillVersionNewParams{},\n\t)\n\tif err != nil {\n\t\tpanic(err.Error())\n\t}\n\tfmt.Printf(\"%+v\\n\", skillVersion.ID)\n}\n"
            java: "package com.openai.example;\n\nimport com.openai.client.OpenAIClient;\nimport com.openai.client.okhttp.OpenAIOkHttpClient;\nimport com.openai.models.skills.versions.SkillVersion;\nimport com.openai.models.skills.versions.VersionCreateParams;\n\npublic final class Main {\n    private Main() {}\n\n    public static void main(String[] args) {\n        OpenAIClient client = OpenAIOkHttpClient.fromEnv();\n\n        SkillVersion skillVersion = client.skills().versions().create(\"skill_123\");\n    }\n}"
            ruby: 'require "openai"


              openai = OpenAI::Client.new(api_key: "My API Key")


              skill_version = openai.skills.versions.create("skill_123")


              puts(skill_version)'
    get:
      tags:
      - Skills
      summary: List skill versions for a skill.
      operationId: ListSkillVersions
      parameters:
      - name: skill_id
        in: path
        description: The identifier of the skill.
        required: true
        schema:
          example: skill_123
          type: string
      - name: limit
        in: query
        description: Number of versions to retrieve.
        required: false
        schema:
          type: integer
          minimum: 0
          maximum: 100
      - name: order
        in: query
        description: Sort order of results by version number.
        required: false
        schema:
          $ref: '#/components/schemas/OrderEnum'
      - name: after
        in: query
        description: The skill version ID to start after.
        required: false
        schema:
          example: skillver_123
          type: string
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SkillVersionListResource'
      x-oaiMeta:
        examples:
          response: ''
          request:
            node.js: "import OpenAI from 'openai';\n\nconst client = new OpenAI({\n  apiKey: process.env['OPENAI_API_KEY'], // This is the default and can be omitted\n});\n\n// Automatically fetches more pages as needed.\nfor await (const skillVersion of client.skills.versions.list('skill_123')) {\n  console.log(skillVersion.id);\n}"
            python: "import os\nfrom openai import OpenAI\n\nclient = OpenAI(\n    api_key=os.environ.get(\"OPENAI_API_KEY\"),  # This is the default and can be omitted\n)\npage = client.skills.versions.list(\n    skill_id=\"skill_123\",\n)\npage = page.data[0]\nprint(page.id)"
            go: "package main\n\nimport (\n\t\"context\"\n\t\"fmt\"\n\n\t\"github.com/openai/openai-go\"\n\t\"github.com/openai/openai-go/option\"\n)\n\nfunc main() {\n\tclient := openai.NewClient(\n\t\toption.WithAPIKey(\"My API Key\"),\n\t)\n\tpage, err := client.Skills.Versions.List(\n\t\tcontext.TODO(),\n\t\t\"skill_123\",\n\t\topenai.SkillVersionListParams{},\n\t)\n\tif err != nil {\n\t\tpanic(err.Error())\n\t}\n\tfmt.Printf(\"%+v\\n\", page)\n}\n"
            java: "package com.openai.example;\n\nimport com.openai.client.OpenAIClient;\nimport com.openai.client.okhttp.OpenAIOkHttpClient;\nimport com.openai.models.skills.versions.VersionListPage;\nimport com.openai.models.skills.versions.VersionListParams;\n\npublic final class Main {\n    private Main() {}\n\n    public static void main(String[] args) {\n        OpenAIClient client = OpenAIOkHttpClient.fromEnv();\n\n        VersionListPage page = client.skills().versions().list(\"skill_123\");\n    }\n}"
            ruby: 'require "openai"


              openai = OpenAI::Client.new(api_key: "My API Key")


              page = openai.skills.versions.list("skill_123")


              puts(page)'
  /skills/{skill_id}/versions/{version}:
    get:
      tags:
      - Skills
      summary: Get a specific skill version.
      operationId: GetSkillVersion
      parameters:
      - name: skill_id
        in: path
        description: The identifier of the skill.
        required: true
        schema:
          example: skill_123
          type: string
      - name: version
        in: path
        description: The version number to retrieve.
        required: true
        schema:
          description: The version number to retrieve.
          type: string
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SkillVersionResource'
      x-oaiMeta:
        examples:
          response: ''
          request:
            node.js: "import OpenAI from 'openai';\n\nconst client = new OpenAI({\n  apiKey: process.env['OPENAI_API_KEY'], // This is the default and can be omitted\n});\n\nconst skillVersion = await client.skills.versions.retrieve('version', { skill_id: 'skill_123' });\n\nconsole.log(skillVersion.id);"
            python: "import os\nfrom openai import OpenAI\n\nclient = OpenAI(\n    api_key=os.environ.get(\"OPENAI_API_KEY\"),  # This is the default and can be omitted\n)\nskill_version = client.skills.versions.retrieve(\n    version=\"version\",\n    skill_id=\"skill_123\",\n)\nprint(skill_version.id)"
            go: "package main\n\nimport (\n\t\"context\"\n\t\"fmt\"\n\n\t\"github.com/openai/openai-go\"\n\t\"github.com/openai/openai-go/option\"\n)\n\nfunc main() {\n\tclient := openai.NewClient(\n\t\toption.WithAPIKey(\"My API Key\"),\n\t)\n\tskillVersion, err := client.Skills.Versions.Get(\n\t\tcontext.TODO(),\n\t\t\"skill_123\",\n\t\t\"version\",\n\t)\n\tif err != nil {\n\t\tpanic(err.Error())\n\t}\n\tfmt.Printf(\"%+v\\n\", skillVersion.ID)\n}\n"
            java: "package com.openai.example;\n\nimport com.openai.client.OpenAIClient;\nimport com.openai.client.okhttp.OpenAIOkHttpClient;\nimport com.openai.models.skills.versions.SkillVersion;\nimport com.openai.models.skills.versions.VersionRetrieveParams;\n\npublic final class Main {\n    private Main() {}\n\n    public static void main(String[] args) {\n        OpenAIClient client = OpenAIOkHttpClient.fromEnv();\n\n        VersionRetrieveParams params = VersionRetrieveParams.builder()\n            .skillId(\"skill_123\")\n            .version(\"version\")\n            .build();\n        SkillVersion skillVersion = client.skills().versions().retrieve(params);\n    }\n}"
            ruby: 'require "openai"


              openai = OpenAI::Client.new(api_key: "My API Key")


              skill_version = openai.skills.versions.retrieve("version", skill_id: "skill_123")


              puts(skill_version)'
    delete:
      tags:
      - Skills
      summary: Delete a skill version.
      operationId: DeleteSkillVersion
      parameters:
      - name: skill_id
        in: path
        description: The identifier of the skill.
        required: true
        schema:
          example: skill_123
          type: string
      - name: version
        in: path
        description: The skill version number.
        required: true
        schema:
          description: The skill version number.
          type: string
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DeletedSkillVersionResource'
      x-oaiMeta:
        examples:
          response: ''
          request:
            node.js: "import OpenAI from 'openai';\n\nconst client = new OpenAI({\n  apiKey: process.env['OPENAI_API_KEY'], // This is the default and can be omitted\n});\n\nconst deletedSkillVersion = await client.skills.versions.delete('version', {\n  skill_id: 'skill_123',\n});\n\nconsole.log(deletedSkillVersion.id);"
            python: "import os\nfrom openai import OpenAI\n\nclient = OpenAI(\n    api_key=os.environ.get(\"OPENAI_API_KEY\"),  # This is the default and can be omitted\n)\ndeleted_skill_version = client.skills.versions.delete(\n    version=\"version\",\n    skill_id=\"skill_123\",\n)\nprint(deleted_skill_version.id)"
            go: "package main\n\nimport (\n\t\"context\"\n\t\"fmt\"\n\n\t\"github.com/openai/openai-go\"\n\t\"github.com/openai/openai-go/option\"\n)\n\nfunc main() {\n\tclient := openai.NewClient(\n\t\toption.WithAPIKey(\"My API Key\"),\n\t)\n\tdeletedSkillVersion, err := client.Skills.Versions.Delete(\n\t\tcontext.TODO(),\n\t\t\"skill_123\",\n\t\t\"version\",\n\t)\n\tif err != nil {\n\t\tpanic(err.Error())\n\t}\n\tfmt.Printf(\"%+v\\n\", deletedSkillVersion.ID)\n}\n"
            java: "package com.openai.example;\n\nimport com.openai.client.OpenAIClient;\nimport com.openai.client.okhttp.OpenAIOkHttpClient;\nimport com.openai.models.skills.versions.DeletedSkillVersion;\nimport com.openai.models.skills.versions.VersionDeleteParams;\n\npublic final class Main {\n    private Main() {}\n\n    public static void main(String[] args) {\n        OpenAIClient client = OpenAIOkHttpClient.fromEnv();\n\n        VersionDeleteParams params = VersionDeleteParams.builder()\n            .skillId(\"skill_123\")\n            .version(\"version\")\n            .build();\n        DeletedSkillVersion deletedSkillVersion = client.skills().versions().delete(params);\n    }\n}"
            ruby: 'require "openai"


              openai = OpenAI::Client.new(api_key: "My API Key")


              deleted_skill_version = openai.skills.versions.delete("version", skill_id: "skill_123")


              puts(deleted_skill_version)'
  /skills/{skill_id}/versions/{version}/content:
    get:
      tags:
      - Skills
      summary: Download a skill version zip bundle.
      operationId: GetSkillVersionContent
      parameters:
      - name: skill_id
        in: path
        description: The identifier of the skill.
        required: true
        schema:
          example: skill_123
          type: string
      - name: version
        in: path
        description: The skill version number.
        required: true
        schema:
          description: The skill version number.
          type: string
      responses:
        '200':
          description: The skill zip bundle.
          content:
            application/zip:
              schema:
                type: string
                format: binary
            application/json:
              schema:
                type: string
      x-oaiMeta:
        examples:
          response: ''
          request:
            node.js: "import OpenAI from 'openai';\n\nconst client = new OpenAI({\n  apiKey: process.env['OPENAI_API_KEY'], // This is the default and can be omitted\n});\n\nconst content = await client.skills.versions.content.retrieve('version', { skill_id: 'skill_123' });\n\nconsole.log(content);\n\nconst data = await content.blob();\nconsole.log(data);"
            python: "import os\nfrom openai import OpenAI\n\nclient = OpenAI(\n    api_key=os.environ.get(\"OPENAI_API_KEY\"),  # This is the default and can be omitted\n)\ncontent = client.skills.versions.content.retrieve(\n    version=\"version\",\n    skill_id=\"skill_123\",\n)\nprint(content)\ndata = content.read()\nprint(data)"
            go: "package main\n\nimport (\n\t\"context\"\n\t\"fmt\"\n\n\t\"github.com/openai/openai-go\"\n\t\"github.com/openai/openai-go/option\"\n)\n\nfunc main() {\n\tclient := openai.NewClient(\n\t\toption.WithAPIKey(\"My API Key\"),\n\t)\n\tcontent, err := client.Skills.Versions.Content.Get(\n\t\tcontext.TODO(),\n\t\t\"skill_123\",\n\t\t\"version\",\n\t)\n\tif err != nil {\n\t\tpanic(err.Error())\n\t}\n\tfmt.Printf(\"%+v\\n\", content)\n}\n"
            java: "package com.openai.example;\n\nimport com.openai.client.OpenAIClient;\nimport com.openai.client.okhttp.OpenAIOkHttpClient;\nimport com.openai.core.http.HttpResponse;\nimport com.openai.models.skills.versions.content.ContentRetrieveParams;\n\npublic final class Main {\n    private Main() {}\n\n    public static void main(String[] args) {\n        OpenAIClient client = OpenAIOkHttpClient.fromEnv();\n\n        ContentRetrieveParams params = ContentRetrieveParams.builder()\n            .skillId(\"skill_123\")\n            .version(\"version\")\n            .build();\n        HttpResponse content = client.skills().versions().content().retrieve(params);\n    }\n}"
            ruby: 'require "openai"


              openai = OpenAI::Client.new(api_key: "My API Key")


              content = openai.skills.versions.content.retrieve("version", skill_id: "skill_123")


              puts(content)'
components:
  schemas:
    SkillVersionResource:
      properties:
        object:
          type: string
          enum:
          - skill.version
          description: The object type, which is `skill.version`.
          default: skill.version
          x-stainless-const: true
        id:
          type: string
          description: Unique identifier for the skill version.
        skill_id:
          type: string
          description: Identifier of the skill for this version.
        version:
          type: string
          description: Version number for this skill.
        created_at:
          type: integer
          format: unixtime
          description: Unix timestamp (seconds) for when the version was created.
        name:
          type: string
          description: Name of the skill version.
        description:
          type: string
          description: Description of the skill version.
      type: object
      required:
      - object
      - id
      - skill_id
      - version
      - created_at
      - name
      - description
    CreateSkillBody:
      properties:
        files:
          oneOf:
          - items:
              type: string
              format: binary
            type: array
            maxItems: 500
            description: Skill files to upload (directory upload) or a single zip file.
          - type: string
            format: binary
            description: Skill zip file to upload.
      type: object
      required:
      - files
      title: Create skill request
      description: Uploads a skill either as a directory (multipart `files[]`) or as a single zip file.
    CreateSkillVersionBody:
      properties:
        files:
          oneOf:
          - items:
              type: string
              format: binary
            type: array
            maxItems: 500
            description: Skill files to upload (directory upload) or a single zip file.
          - type: string
            format: binary
            description: Skill zip file to upload.
        default:
          type: boolean
          description: Whether to set this version as the default.
      type: object
      required:
      - files
      title: Create skill version request
      description: Uploads a new immutable version of a skill.
    DeletedSkillResource:
      properties:
        object:
          type: string
          enum:
          - skill.deleted
          default: skill.deleted
          x-stainless-const: true
        deleted:
          type: boolean
        id:
          type: string
      type: object
      required:
      - object
      - deleted
      - id
    OrderEnum:
      type: string
      enum:
      - asc
      - desc
    SkillResource:
      properties:
        id:
          type: string
          description: Unique identifier for the skill.
        object:
          type: string
          enum:
          - skill
          description: The object type, which is `skil

# --- truncated at 32 KB (43 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/openai/refs/heads/main/openapi/openai-skills-api-openapi.yml