Skip to content
AdCrunch
Esc
↑↓navigate↵open⌘Jpreview

Get a Catalog Skill

Reads one Catalog Skill with its body: the playbook that AdCrunch writes, in markdown. The list of the Skill Catalog does not give the body. An unknown slug answers 404 with error=not_in_skill_catalog.

GET/context/skill-catalog/{catalogSlug}
Authorization
AuthorizationBearer token · headerrequired

Send Authorization: Bearer <credential>.

Use an API key (acr_…), from the AdCrunch console under Settings → API keys.

The credential names the organization, and no operation takes an organization parameter.

See https://docs.adcrunch.dev/api/authentication.

Path parameters
catalogSlugstringrequired
Responses
200

The Catalog Skill, with its body and its current version.

descriptionstringrequired

What this playbook is for. An import copies it.

namestringrequired
slugstringrequired

The slug of the Catalog Skill. It never changes.

versionstringrequired

The date of the current edition, YYYY-MM-DD. A later date is a newer edition.

bodystringrequired

The playbook itself, in markdown. An import copies it into the body of a Skill.

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.

issuesobject[]required

One entry for each field that does not match.

Show properties
Array of object
instringrequired

The part of the request that holds the field.

Allowed:bodycookieheadersparamsquery
messagestringrequired

A sentence to show a person. Written to say what to do next. Reworded whenever it can be said better, so never branch on it.

pathstringrequired

A JSON Pointer into that part of the request, such as /filename. An empty string is the whole part.

errorstringrequired

A stable code for the failure. This is the field to branch on. It does not change for a given failure.

Allowed:invalid_request
messagestringrequired

A sentence to show a person. Written to say what to do next. Reworded whenever it can be said better, so never branch on it.

401

No API key, or one that does not resolve. See the security scheme. error is unauthorized.

errorstringrequired

A stable code for the failure. This is the field to branch on. It does not change for a given failure.

Allowed:unauthorized
messagestringrequired

A sentence to show a person. Written to say what to do next. Reworded whenever it can be said better, so never branch on it.

402

The organization has no active subscription. An owner subscribes at paywallUrl. error is organization_unentitled.

paywallUrlstring<uri>required

The page where an owner of the organization subscribes. Show it to the person.

errorstringrequired

A stable code for the failure. This is the field to branch on. It does not change for a given failure.

Allowed:organization_unentitled
messagestringrequired

A sentence to show a person. Written to say what to do next. Reworded whenever it can be said better, so never branch on it.

403

The caller does not hold skill:read. error is forbidden.

errorstringrequired

A stable code for the failure. This is the field to branch on. It does not change for a given failure.

Allowed:forbidden
messagestringrequired

A sentence to show a person. Written to say what to do next. Reworded whenever it can be said better, so never branch on it.

404

No Catalog Skill with that slug. error is not_in_skill_catalog.

errorstringrequired

A stable code for the failure. This is the field to branch on. It does not change for a given failure.

Allowed:not_in_skill_catalog
messagestringrequired

A sentence to show a person. Written to say what to do next. Reworded whenever it can be said better, so never branch on it.

Request
curl -X GET 'https://api.adcrunch.dev/context/skill-catalog/string' \
  -H 'Authorization: Bearer YOUR_TOKEN'
Response
{
  "description": "Use it every Monday to review the spend and the results of last week.",
  "name": "Weekly performance review",
  "slug": "weekly-performance-review",
  "body": "## When to run\n\nEvery Monday, before the week starts.\n\n## Steps\n\n1. Call `list_campaigns` for each advertiser.\n2. Call `query_insights` for the last seven days.\n3. Write down the campaigns that missed their target.",
  "version": "2026-11-02"
}