---
title: "Import a Catalog Skill"
method: POST
path: "/context/skill-catalog/{catalogSlug}/import"
tags: ["Skills"]
---

# Import a Catalog Skill

`POST /context/skill-catalog/{catalogSlug}/import`

## Request

- Base URL: `https://api.adcrunch.dev`
- URL: `https://api.adcrunch.dev/context/skill-catalog/{catalogSlug}/import`
- Auth: HTTP bearer

Imports a Catalog Skill into your organization. The import makes a Skill from the name, the description and the body of the Catalog Skill, and sets `source`. Your organization owns the Skill, and can edit it like any other Skill. Send `{}` to keep the slug of the Catalog Skill. Your organization holds at most one import of each Catalog Skill: a second import answers `409` with `error=already_imported`. If a Skill of your organization holds the slug, the answer is `409` with `error=slug_conflict`: send another `slug`.

## Path parameters

- `catalogSlug` string, required: The slug of the Catalog Skill to import.

## Request body

- object
  - `slug` string: Optional slug for the new Skill, normalized to kebab-case. It defaults to the slug of the Catalog Skill. Send one when a Skill of your organization holds that slug.

## Response `201`

The Skill as the import made it, at `revision` 1, with its `source`.

- object
  - `body` string, required: The agent instructions themselves — the `SKILL.md`-equivalent, in markdown.
  - `createdAt` number, required: Milliseconds since the Unix epoch, UTC.
  - `createdBy` string, required
  - `description` string, required
  - `id` string, required
  - `name` string, required
  - `revision` number, required: Increments on every write. Send it back as `base_revision` to edit; a stale one answers 409.
  - `slug` string, required
  - `source` object, nullable, required: The Catalog Skill and the version that this Skill was imported from. It is `null` for a Skill that your organization wrote. An edit keeps it.
    - `slug` string, required: The slug of the Catalog Skill that the Skill was imported from.
    - `version` string, required: The version of the Catalog Skill that the Skill was last imported from, `YYYY-MM-DD`.
  - `updatedAt` number, nullable, required: Milliseconds since the Unix epoch, UTC.

## Other responses

- `400`: The request does not match the schema of this operation: a field is missing or has the wrong type, or the body is not valid JSON. `error` is `invalid_request`, and `issues` names each field. Nothing was changed.
- `401`: No API key, or one that does not resolve. See the security scheme. `error` is `unauthorized`.
- `402`: The organization has no active subscription. An owner subscribes at `paywallUrl`. `error` is `organization_unentitled`.
- `403`: The caller does not hold `skill:write`. `error` is `forbidden`.
- `404`: No Catalog Skill with that slug. `error` is `not_found`.
- `409`: Two different conflicts share this status, and `error` tells them apart. `already_imported` means that your organization holds an import of this Catalog Skill: `slug` names that Skill. `slug_conflict` means that another Skill holds the slug: send another `slug`.
- `422`: The slug contains no letter or digit. `error` is `invalid_slug`.

---

[API](https://skmtc.dev/adcrunch/apis/adcrunch-api.md) · [All operations](https://skmtc.dev/adcrunch/apis/adcrunch-api/llms.txt) · [OpenAPI document](https://skmtc.dev/adcrunch/apis/adcrunch-api/revisions/a420ba80914f?raw)
