Getting Started
Quickstart
Start creating stunning visuals with Efecto in seconds.
Use with Claude Code
Install once, then just ask Claude to create posters for you.
npx @efectoapp/mcp-server installRestart Claude Code, then try:
- "Create a cyberpunk poster with ASCII art"
- "Make a retro dithered image with the gameboy palette"
- "Design a halftone print-style graphic"
See the MCP documentation for more details.
Use the API
For programmatic access, use the Efecto API directly. No API key required.
Create Your First Poster
Choose your aspect ratio
Start by defining the aspect ratio of your poster. Available options:
- 16:9 - Widescreen (YouTube, presentations)
- 9:16 - Vertical (Stories, Reels, TikTok)
- 1:1 - Square (Instagram posts)
- 4:3 - Classic (photos, presentations)
- full - Full viewport
{
"canvas": {
"aspectRatio": "16:9",
"backgroundColor": "#1a1a1a"
}
}Add layers
Layers are the building blocks of your poster. You can add text, images, videos, 3D models, shapes, and backgrounds. Each layer requires these base fields:
id- Unique identifiername- Display nametype- Layer type (text, image, video, 3d, background, etc.)visible/locked- Boolean flagstransform- Position, size, rotation, opacity
{
"id": "title",
"name": "Title",
"type": "text",
"visible": true,
"locked": false,
"transform": {
"x": 0,
"y": 0,
"width": 1,
"height": 1,
"rotation": 0,
"opacity": 1
},
"content": "Hello Efecto!",
"fontFamily": "DM Sans",
"fontSize": 64,
"fontWeight": "bold",
"color": "#ffffff",
"textAlign": "center",
"letterSpacing": 0,
"lineHeight": 1.2
}(Optional) Apply an effect
Add a visual effect to transform your poster. Effects are specified with an effectId like ascii-standard, dither-floyd-steinberg, or halftone-mono. See the Effects documentation for all options.
{
"effect": {
"effectId": "ascii-standard",
"enabled": true,
"ascii": {
"cellSize": 8,
"color": true,
"invert": false,
"charRotation": false
}
}
}Generate a shareable URL
Send your state to the encode endpoint to get a shareable URL. Note that the state must be wrapped in a "state" field.
curl https://efecto.app/api/v1/state/encode \
-H "Content-Type: application/json" \
-d '{
"state": {
"canvas": {
"aspectRatio": "16:9",
"backgroundColor": "#1a1a1a"
},
"layers": [
{
"id": "bg",
"name": "Background",
"type": "background",
"visible": true,
"locked": false,
"transform": { "x": 0, "y": 0, "width": 1, "height": 1, "rotation": 0, "opacity": 1 },
"contentType": "solid",
"solidColor": "#1a1a1a"
},
{
"id": "title",
"name": "Title",
"type": "text",
"visible": true,
"locked": false,
"transform": { "x": 0, "y": 0, "width": 1, "height": 1, "rotation": 0, "opacity": 1 },
"content": "Hello Efecto!",
"fontFamily": "DM Sans",
"fontSize": 64,
"fontWeight": "bold",
"color": "#ffffff",
"textAlign": "center",
"letterSpacing": 0,
"lineHeight": 1.2
}
]
}
}'(Optional) Render as image
To get a static image file (PNG, JPEG, or WebP), use the render endpoint. Specify width and height in pixels for the output dimensions.
curl https://efecto.app/api/v1/render \
-H "Content-Type: application/json" \
-d '{
"state": {
"canvas": { "aspectRatio": "16:9", "backgroundColor": "#1a1a1a" },
"layers": [ ... ]
},
"format": "png",
"width": 1200,
"height": 630
}' \
--output poster.pngNext Steps
- Explore all visual effects
- Learn about layer types
- Read the full API reference