---
title: "Get a skill"
method: GET
path: "/api/v1/skills/{skillId}"
tags: ["Skills"]
---

# Get a skill

`GET /api/v1/skills/{skillId}`

## Request

- Base URL: `https://omniapp.co` (the document declares no server; this is the origin it was published from)
- URL: `https://omniapp.co/api/v1/skills/{skillId}`
- Auth: HTTP bearer

**Experimental.** This resource is still gaining fields and may change without a version bump.

Returns one skill, including the body given to the agent when the skill runs.

## Path parameters

- `skillId` string, uuid, required: Skill UUID

## Query parameters

- `userId` string, uuid: Target user ID (for org-scoped API keys)

## Response `200`

The requested skill

- Skill
  - `createdAt` string, date-time, required: ISO 8601 timestamp of when the skill was created
  - `creator` SkillCreator, required: Who created the skill
    - `id` string, uuid, nullable, required: Creator user ID, and the value `?creatorId=` filters on. Null when the creator is no longer a member of, or invited to, this organization.
    - `name` string, required: Creator display name
  - `description` string, required: What the skill is for. Shown in the skills list, and given to the agent when it chooses between skills.
  - `id` string, uuid, required: Unique identifier for the skill
  - `identifier` string, required: Slash-command handle, stored without the slash. Lowercase letters, numbers and hyphens, starting with a letter or number; up to 48 characters.
  - `invocationMode` 'auto' | 'manual' | 'off': The requesting member's own invocation mode for the skill. It differs per member; set it with `PUT /api/v1/skills/{skillId}/invocation-mode`. Present only where invocation settings are enabled for the organization. `auto`: the agent may use the skill on its own, whenever a request fits. `manual`: only when the member asks for the skill by name or /identifier. `off`: the agent never runs it, and the chat menus leave it out. Turning a skill off doesn't change who can edit or delete it.
  - `name` string, required: Human-readable name for the skill
  - `updatedAt` string, date-time, required: ISO 8601 timestamp of the last edit
  - `body` string, required: The instructions injected into the agent's context when the skill runs.

## Other responses

- `400`: Malformed `skillId` (must be a UUID)
- `403`: Skills are not enabled for the caller, or the caller's role on the skill is below what the request needs: VIEWER to read, EDITOR to edit, MANAGER to delete
- `404`: No live skill with this id in the organization

## Changes

- **2026-10-12** `c39971154a1d`: 1 info
  - added the optional property `invocationMode` to the response with the `200` status
- **2026-09-11** `c24bde3d4aa3`: 1 info
  - endpoint added

[Operation history](https://skmtc.dev/omniapp/apis/omni-api/changes/api/v1/skills/:skillId/get.md)

---

[API](https://skmtc.dev/omniapp/apis/omni-api.md) - [All operations](https://skmtc.dev/omniapp/apis/omni-api/llms.txt) - [OpenAPI document](https://skmtc.dev/omniapp/apis/omni-api/revisions/76b40ebc2292?raw)
