---
title: "List skills"
method: GET
path: "/skills"
tags: ["Skills"]
---

# List skills

`GET /skills`

## Request

- Base URL: `https://app.gc.ai/api/external/v1`
- URL: `https://app.gc.ai/api/external/v1/skills`
- Auth: API key in header `Authorization`
- TypeScript: <https://skmtc.dev/gc-ai/apis/gc-ai-external-api/docs/skills/get.ts> (a function with typed inputs; its response is checked against the schema)

List skills accessible to the caller.

Returns id, name, description, visibility, files, and timestamps. Instruction bodies are omitted; fetch a skill by id to load `content`.

With a user-scoped key that has Skills access, returns skills the user created, org-visible skills, skills explicitly shared with the user, and official skills. With an org-scoped key, returns org-visible skills and official skills.

## Query parameters

- `limit` integer: Max items to return (default 100, max 500)
- `offset` integer, nullable: Number of items to skip (default 0)
- `q` string: Optional case-insensitive search over skill name and description

## Response `200`

List of skills

- SkillListResponse
  - `skills` SkillSummary[], required
    - `id` string, uuid, required: Unique skill identifier
    - `name` string, required: Skill name
    - `description` string, nullable, required: Short description of what the skill does, or null if unset
    - `visibility` 'private' | 'organization', required: `private` (only the creator and users it has been explicitly shared with) or `organization` (visible to everyone in the org). Official skills report `organization`.
    - `is_official` boolean, required: Whether this is an official GC AI skill. Official skills are read-only and cannot be edited or deleted via the API.
    - `files` SkillFile[], required: Files attached to the skill as reference context
      - `id` string, uuid, required: Attached file identifier
      - `name` string, required: Attached file name
    - `legal_category` 'commercial_contracts' | 'privacy_compliance' | 'employment' | 'procurement' | 'governance' | 'product_and_ip_counsel' | 'legal_operations' | 'real_estate_and_insurance' | 'litigation_and_disputes' | 'regulatory_and_compliance' | 'other' | 'null', nullable, required: The area of law the skill is grouped under, or null when it is uncategorized
    - `created_at` string, nullable, required: ISO 8601 creation timestamp
    - `updated_at` string, nullable, required: ISO 8601 last-updated timestamp
  - `pagination` Pagination, required
    - `limit` number, required: Page size
    - `offset` number, required: Current offset
    - `has_more` boolean, required: Whether more results exist

## Other responses

- `400`: Invalid query parameters
- `401`: Missing or malformed API key
- `403`: Invalid API key
- `429`: Rate limit exceeded. See [Rate Limits](https://docs.gc.ai/api-reference/concepts/rate-limits) for the tiers, limits, and how to back off.
- `500`: Internal server error
- `503`: Service temporarily unavailable

---

[API](https://skmtc.dev/gc-ai/apis/gc-ai-external-api.md) - [All operations](https://skmtc.dev/gc-ai/apis/gc-ai-external-api/llms.txt) - [OpenAPI document](https://skmtc.dev/gc-ai/apis/gc-ai-external-api/revisions/2bbdfddf7107?raw)
