# Automatiza el recorte de imágenes con Zapier
> Monta un Zap que reciba una imagen y genere todas sus medidas con SocialCutter: URL pública en el cuerpo JSON, cabeceras, salidas y errores.
- URL: https://socialcutter.theboomer.dev/guias/zapier/
- Idioma: es
- Familia: ia
- Actualizado: 2026-09-24
- Palabras clave: Zapier, no-code, automatización, Webhooks by Zapier, SocialCutter, API key, redes sociales
## Por qué automatizar el recorte en Zapier

Una imagen maestra tiene que servir para Instagram, LinkedIn, X y la portada del blog, y cada hueco pide una proporción distinta. Hacerlo a mano, formato a formato, no escala cuando publicas a diario o cuando el catálogo tiene cientos de fichas.

Zapier encaja porque ya vigila dónde aparecen imágenes nuevas (un formulario, Google Drive, Dropbox, un correo) y porque cualquier plan permite una llamada HTTP a una API REST. SocialCutter recorta la imagen de forma **centrada** a las medidas exactas de cada destino y devuelve una URL por salida; Zapier mueve esa URL al sitio que toca. El encuadre es predecible: no analiza el contenido ni decide qué parte recortar.

## Cómo funciona la API

La API REST vive en `https://api.socialcutter.theboomer.dev` y la autenticación va en la cabecera `X-API-Key` (también vale `Authorization: Bearer sc_tu_clave`).

- `POST /api/v1/images/process` — recibe una imagen y devuelve una salida por destino.
- `POST /api/v1/images/upload` — acepta la imagen como cadena base64 en el cuerpo JSON.
- `POST /api/v1/images/process/upload` — multipart con el fichero en `file` y `destinations` como campo de formulario.
- `POST /api/v1/images/batch` — varias imágenes en una sola llamada.
- `GET /api/v1/history`, `GET /api/v1/wallet`, `GET /api/v1/platforms` — historial, cuota y catálogo real de destinos.

La referencia completa está en https://docs.socialcutter.theboomer.dev.

## Zapier y el binario: por qué se evita el multipart

El paso HTTP de Zapier maneja bien el JSON, pero el `multipart/form-data` que lleva un fichero binario es frágil: según la versión y el disparador, el adjunto llega corrupto, con la longitud mal calculada o sin la parte `Content-Type` correcta, y la API responde `422` o devuelve una imagen rota. Por eso esta guía no envía el binario:

1. **Vía recomendada: la URL pública del fichero** en el campo `source` del cuerpo JSON. Funciona siempre que el origen sea accesible desde fuera.
2. **Alternativa: base64** con `POST /api/v1/images/upload`, cuando el origen no expone una URL (un Drive privado, un adjunto de formulario).

No montes el multipart a mano con campos de formulario en Zapier: es donde aparecen los fallos.

## Crear la API key

Entra en https://dash.socialcutter.theboomer.dev, abre **Perfil → API keys**, crea una clave con un nombre reconocible (por ejemplo `zapier-produccion`) y cópiala: empieza por `sc_` y solo se muestra una vez. Guárdala como valor de conexión o variable de entorno, no pegada en el texto de la acción.

## El paso HTTP: cabeceras y cuerpo

| Cabecera | Valor |
|---|---|
| `X-API-Key` | `sc_tu_clave` |
| `Content-Type` | `application/json` |
| `Idempotency-Key` | Opcional: id estable del fichero, para que un reintento no duplique trabajo |

Añade un paso **Webhooks by Zapier → POST** y pega este cuerpo en crudo, sustituyendo el valor de `value` por el campo del disparador (por ejemplo `{{image_url}}`):

```json
{
  "source": { "type": "url", "value": "https://example.com/foto.jpg" },
  "destinations": [
    { "platform": "instagram", "format": "post" },
    { "platform": "linkedin", "format": "post" },
    { "platform": "twitter", "format": "post" }
  ],
  "options": { "fit_mode": "cover" }
}
```

`source` acepta `url` o base64; `destinations` es la lista de plataforma y formato. `fit_mode: cover` escala y recorta el exceso de forma centrada (el valor por defecto); para encajar la imagen completa, usa `contain` con `background_color`.

### Destinos que acepta la API

| Plataforma | Formato | Medidas | Relación |
|---|---|---|---|
| instagram | post | 1080x1080 | 1:1 |
| instagram | story | 1080x1920 | 9:16 |
| instagram | landscape | 1080x566 | 1.91:1 |
| facebook | post | 1200x630 | 1.91:1 |
| facebook | story | 1080x1920 | 9:16 |
| facebook | cover | 820x312 | 2.63:1 |
| twitter | post | 1200x675 | 16:9 |
| twitter | header | 1500x500 | 3:1 |
| linkedin | post | 1200x627 | 1.91:1 |
| linkedin | cover | 1128x191 | 5.9:1 |
| youtube | thumbnail | 1280x720 | 16:9 |
| youtube | banner | 2560x1440 | 16:9 |
| tiktok | cover | 1080x1920 | 9:16 |

Estos datos salen de `GET /api/v1/platforms`, que es público. El catálogo no incluye un formato 4:5.

## Guardar el resultado (URLs de salida)

La respuesta trae `image_id` y un array `outputs`, una entrada por destino, con la URL del resultado, la plataforma, el formato y las medidas. En Zapier, añade un paso **Formatter → Utilities → Line item to text** (o **Looping by Zapier**) sobre `outputs` para recorrer las salidas, guarda cada `url` en una columna de Sheets o una nota, y conserva también `platform` y `format` para que un router sepa qué URL va a cada sitio.

Comprueba la respuesta en crudo antes de encadenar nada:

```bash
curl -s -X POST "https://api.socialcutter.theboomer.dev/api/v1/images/process" \
  -H "X-API-Key: sc_tu_clave" \
  -H "Content-Type: application/json" \
  -d '{"source":{"type":"url","value":"https://example.com/foto.jpg"},"destinations":[{"platform":"instagram","format":"post"}]}' \
  | jq '.image_id, (.outputs[] | {url, platform, format, width, height})'
```

## Encadenar a un CMS o a un almacenamiento

- **WordPress**: sube la salida a la biblioteca de medios (`POST /wp-json/wp/v2/media`) y asigna el id del adjunto a `featured_media` del post.
- **Shopify**: usa el campo `image` del producto con la URL de la salida.
- **Almacenamiento**: el módulo de subida necesita el binario, no la URL. Descarga primero la salida con un paso `GET` y súbela después; si no acepta el binario, pasa la URL al CMS y deja que él la descargue.

## Límites del plan

- Máximo **5 MB** por imagen; por encima la API responde `413`.
- **1 uso por destino** (plataforma y formato) por petición. Los destinos repetidos no se cobran dos veces y los procesamientos fallidos se devuelven.
- Cuota diaria por plan: Free (0 €) 3 usos/día, Basic (3 €) 10/día, Pro (9 €) 30/día, Agency (29 €) 100/día. Todos incluyen API y MCP.
- En Zapier, cada paso consume una tarea de tu plan; no añadas pasos de más solo para dar formato.

## Errores típicos

| Código | Significado |
|---|---|
| 401 | Falta la cabecera `X-API-Key` o la clave es incorrecta |
| 429 | Cuota agotada: superaste los usos diarios de tu plan |
| 413 | La imagen supera 5 MB |
| 422 | Error de validación: `source` o `destinations` mal formados |
| 400 | Payload inválido: plataforma o formato desconocido |

## Coste por ejecución

1 uso por destino. Un Zap que pida Instagram post, LinkedIn post y X post consume 3 usos por imagen. Si el disparador recibe ráfagas, agrupa antes de llamar o usa `POST /api/v1/images/batch`. Consulta `GET /api/v1/wallet` para ver la cuota diaria y lo que queda.

## Siguientes pasos

- Guía de n8n: [Automatiza el recorte con n8n](/guias/n8n/)
- Guía de la API con curl: [Procesa imágenes desde la terminal](/guias/curl/)
- Guía de WordPress: [Integra SocialCutter con WordPress y WooCommerce](/guias/wordpress/)
- Documentación de la API: https://docs.socialcutter.theboomer.dev