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

Re-import a Skill

Re-imports a Skill that your organization imported from the Skill Catalog. The re-import replaces the name, the description and the body with the current version of the Catalog Skill, and sets source.version. The Skill keeps its slug. Edits that your organization made to the Skill are lost. Send the baseRevision you read. The answer is 409 when the re-import is not possible, and error tells why: not_imported for a Skill that your organization wrote, not_in_skill_catalog when the Catalog Skill left the Skill Catalog, no_later_version when the Skill Catalog has no later version, and revision_mismatch when the Skill changed after you read it.

POST/context/skills/{slug}/re-import
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
slugstringrequired
Request body
requiredapplication/json
baseRevisionintegerrequired

The revision last read via GET. A re-import replaces the content of the Skill, so it guards the content that you read.

min -9007199254740991 · max 9007199254740991
Responses
200

The Skill with the content of the later version, at the next revision. This shape was not observed against a deployed service, because no stage held a later version of a Catalog Skill: it is written from the Context Layer’s view type.

bodystringrequired

The agent instructions themselves — the SKILL.md-equivalent, in markdown.

createdAtnumberrequired

Milliseconds since the Unix epoch, UTC.

createdBystringrequired
descriptionstringrequired
idstringrequired
namestringrequired
revisionnumberrequired

Increments on every write. Send it back as base_revision to edit; a stale one answers 409.

slugstringrequired
sourceobject | nullrequired

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.

Show properties
slugstringrequired

The slug of the Catalog Skill that the Skill was imported from.

versionstringrequired

The version of the Catalog Skill that the Skill was last imported from, YYYY-MM-DD.

updatedAtnumber | nullrequired

Milliseconds since the Unix epoch, UTC.

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.

403

The caller does not hold skill:write. 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 Skill with that slug. error is not_found.

errorstringrequired

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

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.

409

The re-import is not possible, and error tells why. not_imported: your organization wrote the Skill, so it has no source. not_in_skill_catalog: the Catalog Skill left the Skill Catalog; the Skill keeps its source. no_later_version: the version of the Catalog Skill is not later than source.version. revision_mismatch: somebody else wrote first; read the Skill again, and send the currentRevision back.

Any of:
object
errorstringrequired

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

Allowed:not_imported
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.

object
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.

object
errorstringrequired

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

Allowed:no_later_version
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.

object
currentRevisionnumberrequired

The revision the row holds now. Re-read, re-apply your edit on top, and send this back as base_revision.

errorstringrequired

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

Allowed:revision_mismatch
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 POST 'https://api.pr-901.adcrunch.dev/context/skills/string/re-import' \
  -H 'Authorization: Bearer YOUR_TOKEN' \
  -H 'Content-Type: application/json' \
  -d '{
  "baseRevision": 2
}'
Response
{
  "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.",
  "createdAt": 1790000000000,
  "createdBy": "usr_4d8b12",
  "description": "Use it every Monday to review the spend and the results of last week.",
  "id": "skl_7c1f90",
  "name": "Weekly performance review",
  "revision": 3,
  "slug": "weekly-performance-review",
  "source": {
    "slug": "weekly-performance-review",
    "version": "2026-11-02"
  },
  "updatedAt": 1791000000000
}