Picsart api
Shared skills, prompts, and tooling for Picsart's gen-ai CLI and generative-AI workflows
npx -y skills add PicsArt/gen-ai-skills --skill picsart-apiAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
One thing to look at
- 4 stars4 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.
What its author says it does
Copied from the file, not written here
Generate and edit media via Picsart MCP API tools.
The file declares its own license as MIT. That is the author’s claim about this one file, and it is not the same thing as the license GitHub reports for the repository, which is listed with the other numbers below.
SKILL.md
11.6 KB, as published. Nobody here has run it
Picsart API (MCP)
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).
When to Use
Use this skill whenever the user asks to:
- Generate net-new content from a prompt — image, video, sticker, logo, speech, sound, music, SFX, or text completion.
- Edit, enhance, resize, reformat, recolor, or transform an existing image or video.
- Remove backgrounds or objects; inpaint, outpaint, or extend canvas.
- Apply effects, masks, styles, adjustments, blur, color/style transfer.
- Extract, transcribe, or manipulate audio tracks in video.
- Upscale, FPS-upscale, super-resolve, or enhance faces.
- Watermark, crop, trim, concat, or fit media.
- Render bulk personalised creative assets via a Replay.
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.
Prerequisites
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 namedpicsartpointing athttps://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_KEYin the environment before starting the agent. Never hardcode it — the config interpolates${PICSART_API_KEY}at runtime.
How to Run
- Identify the user's intent and read only the matching
references/doc (see Quick Reference). Do not read docs for surfaces the task won't touch. - Look up the exact tool name (= OpenAPI
operationId) in that doc's tool index. - Call the tool verbatim via the
picsartMCP server. For async tools, chain through the paired poller until the job is terminal (see Procedure). - Return the final result URL(s) to the user.
Quick Reference
Four API surfaces, four reference docs in this skill's references/ folder:
- Image (
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. - Video (
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. - GenAI (
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. - Variable Data (
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-getresult- Other video operations that return a job id →
video-getresult(orvideo-getaudioresultfor audio outputs). vd-export-replay→vd-export-replay-getresultvd-export-variable-data-content→vd-export-variable-data-content-getresult
Procedure
Core principles
- Tool name = operationId. Look up the exact name in the doc's tool index, then call it verbatim via the MCP server. Dashes stay dashes.
- Async jobs must be polled. Many tools return a job id and complete later. Never tell the user "done" on the submit call alone — always chain through the paired poller until the job's status is
FINISHED/succeeded. - Inputs: file OR url. Most endpoints accept either an uploaded file or an
*_urlstring (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*-uploadtool first or pass the file field. - Credits before expensive calls. Each API exposes a balance tool (
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. - Enum values are exact. Effect names, aspect ratios, styles, voices, and output formats are closed enums in the docs. Copy values verbatim — do not paraphrase. Invalid enums fail the call and waste a round trip.
- Prefer specialised tools over generic ones. For a 4× or larger upscale use
image-ultra-upscaleoverimage-upscale; for face shots useimage-face-enhance; for video cuts usevideo-trimovervideo-edit.
Async polling pattern
- Call the submit tool, capture the returned id (field names vary:
id,inference_id,transaction_id). - Call the paired poller with that id. If status is pending (
IN_PROGRESS,PENDING, etc.), wait briefly and call again. - Stop when status is terminal (
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)
- Generate image from prompt —
genai-text2image→genai-text2image-getresult→ return image URL. - Generate short video from prompt —
genai-text2video→genai-text2video-getresult→ return mp4 URL. - Animate an existing image —
genai-image2video→genai-text2video-getresult→ return mp4 URL. - Text-to-speech (voice-over) —
genai-text2speech→genai-text2audio-getresult→ return audio URL. - Text-to-sound / SFX / music —
genai-text2sound→genai-text2audio-getresult→ return audio URL. - Remove background from a photo —
image-remove-background(sync) → return result URL. - Upscale an image — small factor or quick job →
image-upscale(sync); 4× / 8× or heavy →image-ultra-upscale→image-ultra-upscale-getresult. - Edit photo with a natural-language instruction —
genai-image-edit→genai-image-inpainting-getresult→ return image URL. - Fill in a region of a photo —
genai-image-inpainting→genai-image-inpainting-getresult. - Extend a photo beyond its edges —
genai-image-outpaintingorgenai-expand-image→genai-image-inpainting-getresult. - Remove an object from a photo —
genai-remove-object→genai-image-inpainting-getresult. - Transcribe a video's audio —
video-transcribe-audio→video-transcribe-audio-getresult→ return transcript. - Trim / crop / concat a video —
video-trim/video-crop/video-concat→ poll withvideo-getresultif it returns a job id. - Bulk personalised renders from a Replay —
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.
Pitfalls
- Don't declare success on a submit-only response. Async jobs return a job id; wait for the paired poller to report a terminal status before telling the user the task is done.
- Disambiguate similar intents:
- "Enhance this photo" with no prompt → Image API (
image-upscale,image-ultra-enhance,image-face-enhance). - "Edit this photo to …" with a natural-language instruction → GenAI (
genai-image-edit). - "Remove background" from a still → Image API (
image-remove-background); from a video → Video API (video-remove-background). - "Extend / widen / fill beyond edges" → GenAI (
genai-image-outpainting,genai-expand-image,genai-generate-image-bleed).
- "Enhance this photo" with no prompt → Image API (
- Enum drift fails calls. Paraphrasing an effect name, style, voice, or aspect ratio wastes a round trip — copy enum values verbatim from the docs.
- Watch limits and content policy. Respect the Picsart Developer Guidelines — no disallowed content. Image upload size / format limits: see
references/image-api.md. Video duration, resolution, and codec limits: seereferences/video-api.md. GenAI prompt-length caps, seed / count limits, and safety filters: seereferences/genai-api.md. Variable Data batch size and Replay compatibility notes: seereferences/variable-data-api.md.
Verification
- Return the final result URL(s) in the response.
- For async jobs, wait for completion before declaring success. A submit-only response is not a finished task.
- Preserve URLs exactly as returned — they're signed / time-bound.
- If the user hasn't specified an output format, use the endpoint default (noted in each doc).
References
Official portal: https://docs.picsart.io/
Spec sources used to produce the docs in this skill: