KakaMeme Submission Guide
How static stickers, dynamic GIFs, submission assets, and downloads work.
Flow
- Upload a photo or write a sticker set idea.
- Generate a static 3x4 sticker sheet.
- The system removes the background and crops 12 240x240 PNG stickers.
- Continue from the result page to generate dynamic GIFs or WeChat submission assets.
- Download individual assets, the manifest, or a ZIP package.
Credits
- Static sticker set (12 stickers): 20 credits.
- Adding dynamic GIFs to a finished set: 24 credits.
- Dynamic GIFs ordered together with the static set (bundle): 20 credits.
- WeChat submission package: 10 credits, or 8 credits when bundled with a static order.
- Signing up grants 30 credits, and each daily login grants 5 more.
- Jobs are rejected before creation when the balance is insufficient.
- Provider or worker failures release the reserved credits — no charge.
Dynamic GIFs
Dynamic GIFs use Grok video generation and an external worker:
- Model:
grok-imagine-video-1-5-preview - Parameters:
duration=3,aspect_ratio=3:4,resolution=720p - Outputs: 12 sticker GIFs, sheet GIF, preview MP4, and manifest
The browser API only creates and queries jobs. Vercel route handlers do not run ffmpeg.
Submission Assets
Submission assets belong to the same sticker set project:
- Title and description.
- Copyright copy.
- Banner, cover, icon.
- Reward guide and reward thanks images.
The commercial app now has the job, status, asset, download manifest, and ZIP export structure. Live mode uses sharp to compose WeChat-sized PNG assets from the static stickers; KIE-generated submission art can be added later for stronger visual polish.
Public Gallery
Sticker sets are private by default. When a user marks a set as public, it enters the Gallery review queue. Admins approve, reject, archive, feature, and sort submissions through /api/admin/kakameme/gallery. The public Gallery only shows approved public sets and does not expose unauthorized source images.
API Access
Users can create API keys from /settings/apikeys. The same static generation endpoints used by the app accept either a signed-in session or an API key in Authorization: Bearer <key> or x-api-key.
Create a static sticker job:
curl -X POST "$NEXT_PUBLIC_BASE_URL/api/generation-jobs" \
-H "Authorization: Bearer $KAKAMEME_API_KEY" \
-H "Content-Type: application/json" \
-d '{"userIdea":"a cheerful corgi developer","visibility":"private"}'You can also generate from a photo (sourceImageUrl must be a publicly
reachable image URL), and request animated GIFs plus submission assets in the
same job via requestedOutputs (queued automatically after the static set
completes, billed at bundle pricing):
curl -X POST "$NEXT_PUBLIC_BASE_URL/api/generation-jobs" \
-H "Authorization: Bearer $KAKAMEME_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"sourceImageUrl": "https://example.com/photo.jpeg",
"userIdea": "adorably clumsy theme",
"visibility": "private",
"requestedOutputs": ["static", "dynamic", "submission"]
}'Query job status and generated assets:
curl "$NEXT_PUBLIC_BASE_URL/api/generation-jobs/job_123" \
-H "Authorization: Bearer $KAKAMEME_API_KEY"Notes:
- Each API key is rate limited to 6 requests per minute by default. Requests over the limit return 429; retry after the window resets.
- Animated GIFs can only be requested at job creation via
requestedOutputs. Generating or regenerating GIFs for an existing project is currently web-only, from the result page.
Signed-in users can also query a project asset list through
GET /api/sticker-sets/[id]/assets.
Character And Protection
From the result workspace, users can save the current character into saved_characters for later reuse. They can also enable copy protection for a sticker set. Copy protection does not make a legal guarantee; it marks the project as protected and keeps public Gallery pages from exposing source images or full prompts.
Issue Reports
The result workspace includes a report-problem action. Reports are stored in issue_reports with category, status, message, sticker set id, optional job id, and lightweight context metadata. Content dissatisfaction is routed to review through this table instead of automatic refunds.
FAQ
Why did my job fail?
The result page shows the failure summary. The backend records failed step, provider, model, provider task id, and error details.
Are credits charged when a job fails?
No. Successful jobs confirm the deduction; failed jobs automatically release the reserved credits.
Which download formats are available?
The default download API returns stable filenames and URLs. The result page ZIP action calls /api/sticker-sets/[id]/download?format=zip and packages current static, dynamic, and submission assets.

