resourcepack.ai
DOCS

Packs

Move or copy assets to another pack

The pack grid's Move to pack and Copy to pack: up to 60 assets, named by the kind and name the asset listing reports, into another pack this key can edit (to) or into a new pack made for them (newPackName, which counts against the pack limit like creating one). A model takes its textures with it; a custom item, its model.

Only the owner of this pack, or an admin of its team, may: taking assets out of a pack is a change to the pack. Each asset reports its own outcome, so one that cannot go (the target already reskins that vanilla block, say) does not stop the rest. replace lets a vanilla reskin overwrite the target's. Free.

POST/packs/{pack}/transfer

Path parameters

packstringrequired

The pack's slug, as returned by the packs endpoints.

Body

assetsarray of objectrequiredmax 60 entries

The assets, as {kind, name} from the listing.

kindstringrequired

Its kind.

namestringrequired

Its name.

tostring

The slug of the pack they go to. Send this or newPackName.

newPackNamestringmax 100 characters

Make a new pack of this name for them instead.

modestringdefault "move"

move takes them out of this pack; copy leaves them in it too.

Options: move, copy

replacebooleandefault false

Let a vanilla reskin replace the target pack's own reskin of the same thing.

Response · 200

Each asset's outcome.

packstringrequired

The pack they came from.

toobjectrequired

The pack they went to, as {slug, name}.

resultsarray of objectrequired

One outcome per asset.

typestringrequired

What the asset is.

idstringrequired

Its id in the pack it came from.

statusstringrequired

transferred when it went, skipped when it could not (see reason), failed when something went wrong.

Options: transferred, skipped, failed

newIdstringrequired

What it is called where it landed: usually its own id, the next free one when that was taken. Null unless transferred.

reasonstringrequired

Why it didn't go, completing "Couldn't move it: ...". Null when it did.

Error codes

Branch on error.code, never on the message.

invalid_json400

The request body wasn't a JSON object.

invalid_request400

Something in the body or query is wrong. message says what.

invalid_api_key401

The key isn't one of ours, or it has been revoked.

missing_api_key401

No Authorization: Bearer header was sent.

wrong_key_kind401

An MCP key sent to the REST API, or an API key sent to the MCP server. Each only opens its own.

account_suspended403

The account is suspended, so its keys open nothing. message says until when, if the suspension has an end date.

asset_limit_reached403

The pack is at its asset limit.

forbidden403

Valid key, but not permitted to do this in this pack.

pack_limit_reached403

The account is at its plan's pack limit.

plan_required403

The key is valid, but its account's plan does not include the API.

not_found404

No such pack, asset or job.