---
title: "Create a sticker from an image or animation"
method: POST
path: "/v1/assets/{id}/sticker"
tags: ["Assets"]
---

# Create a sticker from an image or animation

`POST /v1/assets/{id}/sticker`

## Request

- Base URL: `https://api.masko.ai`
- URL: `https://api.masko.ai/v1/assets/{id}/sticker`
- Auth: HTTP bearer

Image: generates transparent sticker artwork for 1 credit and returns the existing 201 image receipt. Animation: creates one sticker_animation library asset and automatically prepares Telegram, WhatsApp, WeChat and Discord files in a CPU batch using its saved video and mask, for zero generation credits. Requires a completed video/webm/hevc with a background-removal result. Reuses the same sticker and valid cached files. Omit the body or send {}. force:true regenerates completed platform exports. Returns 202 while preparing, otherwise 200. Poll GET /v1/assets/{sticker_id}/sticker. Each format includes a validated file_url and a public_url when mascot asset hosting is enabled. Platform failures are independent.

Select Masko-API-Version: 2026-09-26 (or api_version=2026-09-26) for the canonical mascot contract shown first. Existing unversioned clients keep legacy collection fields. A mascot_id query filter also selects the canonical contract. Mixing identifier names returns 400.

## Path parameters

- `id` string, uuid, required

## Query parameters

- `api_version` '2026-09-26' | 'legacy'

## Headers

- `Idempotency-Key` string
- `Masko-API-Version` '2026-09-26' | 'legacy'

## Request body

- AnimatedStickerCreateBody
  - `force` boolean

## Response `200`

Reused prepared animated sticker

- object
  - `data` AnimatedStickerReceipt, required
    - `id` string, uuid, required
    - `object` 'animated_sticker', required
    - `source_asset_id` string, uuid, required
    - `asset_ids` object, required
      - `sticker_animation` string, uuid, required
    - `status` 'processing' | 'completed' | 'partial_failure' | 'failed', required
    - `estimated_cost` 0, required
    - `asset_hosting` boolean, required
    - `preview_url` string, nullable, required
    - `preview_type` string, required
    - `poll_url` string, required
    - `formats` object[], required
      - `id` string, uuid, required
      - `source_asset_id` string, uuid, required
      - `format` string, required
      - `size` number, nullable, required
      - `job_id` string, uuid, required
      - `asset_id` string, uuid, required
      - `status` 'pending' | 'processing' | 'completed' | 'failed', required
      - `error` string, nullable, required
      - `file_url` string, nullable, required
      - `public_url` string, nullable, required
      - `metadata` unknown
      - `sticker_profile` string
      - `poster_url` string, nullable
      - `poll_url` string, required

## Other responses

- `201`: Sticker generated
- `202`: Animated sticker created; platform files preparing
- `400`: Validation error
- `401`: Unauthorized
- `403`: Forbidden
- `404`: Not found
- `409`: Conflict

---

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