This connects Claude to Picsart's full REST API suite through MCP, exposing image, video, GenAI, and variable data endpoints as individual tools. You call operations by their exact OpenAPI IDs (genai-text2image, image-remove-background, video-trim) and chain through async pollers until jobs finish. The skill ships four reference docs that map user intent to the right API surface, so you know whether to reach for GenAI for prompt-based generation or the Image API for direct transforms. Useful when you need production-grade media processing without building your own pipeline, though you'll burn through API credits fast on video generation and bulk exports. The async polling pattern adds latency but handles long-running jobs correctly.
npx -y skills add PicsArt/gen-ai-skills --skill picsart-api --agent claude-codeInstalls into .claude/skills of the current project.
The picsart MCP server at https://mcp.picsart.io/v1 exposes four Picsart REST APIs as MCP tools. Each tool name equals the OpenAPI operationId verbatim — dashes preserved (e.g. genai-text2image, image-remove-background, video-trim, vd-export-replay).
Use this skill whenever the user asks to:
If the request touches any of the above, read the relevant doc in references/ BEFORE calling any picsart-*, image-*, video-*, genai-*, or vd-* MCP tool.
The picsart MCP server must be connected and a Picsart API key available:
MCP server. This repo ships the server config at the repo-root .mcp.json. Claude Code auto-loads it when the repo (or the installed skill) is in scope. For other hosts (Cursor, Codex) or a manual setup, register an HTTP MCP server named picsart pointing at https://mcp.picsart.io/v1:
{
"mcpServers": {
"picsart": {
"type": "http",
"url": "https://mcp.picsart.io/v1",
"headers": {
"X-Picsart-API-Key": "${PICSART_API_KEY}",
"Accept": "application/json"
}
}
}
}
API key. Export PICSART_API_KEY in the environment before starting the agent. Never hardcode it — the config interpolates ${PICSART_API_KEY} at runtime.
references/ doc (see Quick Reference). Do not read docs for surfaces the task won't touch.operationId) in that doc's tool index.picsart MCP server. For async tools, chain through the paired poller until the job is terminal (see Procedure).Four API surfaces, four reference docs in this skill's references/ folder:
references/image-api.md) — background removal, upscale, effects, masks, adjust, watermark, crop, blend, segmentation, tagging, vectorize, design-import. Base: https://api.picsart.io/tools/1.0.references/video-api.md) — edit, trim, crop, concat, fit, effects, FPS upscale, thumbnails, metadata, audio adjust / extract / transcribe, CTV encoding, watermark. Base: https://video-api.picsart.io/v1.references/genai-api.md) — text→image, text→sticker, logo gen, image edit / inpaint / outpaint, object removal, smart-background, expand / bleed, text→video, image→video, text→speech, text→sound, text→text completions. Base: https://genai-api.picsart.io/v1.references/variable-data-api.md) — bulk personalised rendering from Picsart Replay templates. Base: https://vd-api.picsart.io/v1.Load the doc(s) that match the user's intent:
| Task intent | Doc to read |
|---|---|
| Generate image from prompt, sticker, logo, text completion | references/genai-api.md |
| Generate video from text or from an image | references/genai-api.md |
| Generate speech or sound / SFX / music from text | references/genai-api.md |
| Edit an image with a prompt; inpaint, outpaint, remove-object, smart-background, expand, bleed | references/genai-api.md |
| Transform an existing image without a prompt — bg removal, upscale, effects, masks, adjust, watermark, crop, blend, vectorize | references/image-api.md |
| Describe, tag, segment, classify, or extract colors from an image | references/image-api.md |
| Edit / trim / crop / concat / fit a video; apply video effects; FPS upscale; thumbnails; watermark; CTV encode | references/video-api.md |
| Adjust / extract / transcribe audio of a video | references/video-api.md |
| Bulk personalised rendering from a Replay template | references/variable-data-api.md |
Known submit → poller pairs (read the per-API doc for the authoritative list):
genai-text2image → genai-text2image-getresultgenai-text2sticker, genai-text2sticker-laser-engraving → genai-text2sticker-getresultgenai-generate-logo → genai-generate-logo-getresultgenai-image-edit, genai-image-inpainting, genai-image-outpainting, genai-remove-object, genai-smart-background, genai-expand-image, genai-generate-image-bleed → genai-image-inpainting-getresultgenai-text2video, genai-image2video → genai-text2video-getresultgenai-text2speech, genai-text2sound → genai-text2audio-getresultimage-ultra-upscale → image-ultra-upscale-getresultimage-design-import → image-design-import-getresultvideo-upscale-fps → video-upscale-fps-getresultvideo-transcribe-audio → video-transcribe-audio-getresultvideo-set-thumbnail → video-set-thumbnail-getresultvideo-getresult (or video-getaudioresult for audio outputs).vd-export-replay → vd-export-replay-getresultvd-export-variable-data-content → vd-export-variable-data-content-getresultCore principles
FINISHED / succeeded.*_url string (e.g. image_url, video_url). Prefer URLs when the asset is already hosted publicly — avoids upload overhead. For user-local files, use the relevant *-upload tool first or pass the file field.image-credits-balance, video-credits-balance, genai-credits-balance, vd-credits-balance). For a first call in a session that may be heavy (video generation, bulk exports, long upscales), call the matching balance tool so the user isn't surprised by a 402.image-ultra-upscale over image-upscale; for face shots use image-face-enhance; for video cuts use video-trim over video-edit.Async polling pattern
id, inference_id, transaction_id).IN_PROGRESS, PENDING, etc.), wait briefly and call again.FINISHED / succeeded / FAILED). Surface the result URL(s) to the user, or the error on failure.Keep polling quiet — a single "still rendering…" update is enough; do not narrate each poll.
Common workflows (each step is one MCP tool call; consult the per-API doc for exact parameter names)
genai-text2image → genai-text2image-getresult → return image URL.genai-text2video → genai-text2video-getresult → return mp4 URL.genai-image2video → genai-text2video-getresult → return mp4 URL.genai-text2speech → genai-text2audio-getresult → return audio URL.genai-text2sound → genai-text2audio-getresult → return audio URL.image-remove-background (sync) → return result URL.image-upscale (sync); 4× / 8× or heavy → image-ultra-upscale → image-ultra-upscale-getresult.genai-image-edit → genai-image-inpainting-getresult → return image URL.genai-image-inpainting → genai-image-inpainting-getresult.genai-image-outpainting or genai-expand-image → genai-image-inpainting-getresult.genai-remove-object → genai-image-inpainting-getresult.video-transcribe-audio → video-transcribe-audio-getresult → return transcript.video-trim / video-crop / video-concat → poll with video-getresult if it returns a job id.vd-export-replay → vd-export-replay-getresult. For variable-data-driven batches: vd-describe-variable-data-content → vd-export-variable-data-content → vd-export-variable-data-content-getresult.image-upscale, image-ultra-enhance, image-face-enhance).genai-image-edit).image-remove-background); from a video → Video API (video-remove-background).genai-image-outpainting, genai-expand-image, genai-generate-image-bleed).references/image-api.md. Video duration, resolution, and codec limits: see references/video-api.md. GenAI prompt-length caps, seed / count limits, and safety filters: see references/genai-api.md. Variable Data batch size and Replay compatibility notes: see references/variable-data-api.md.Official portal: https://docs.picsart.io/
Spec sources used to produce the docs in this skill:
prisma/skills
firebase/agent-skills
Dexploarer/hyper-forge
itsmostafa/aws-agent-skills