Editar una campaña en borrador

PATCH /api/v1/campaigns/{campaignId} Edita una campaña en borrador. Una campaña se crea con una copia del HTML de su plantilla y después vive por su cuenta: este endpoint edita esa copia (el HTML que realmente se envía) sin tocar la plantilla. Una campaña que ya se ha enviado o se está enviando queda congelada y devuelve 400. Todos los campos son opcionales; solo cambian los que envías. tagId, topicId y sendingIdentityId siguen la misma regla con un null explícito: omitir el campo conserva lo que hay, enviar null lo borra. Es la única forma de separar un tema editorial de un borrador: consulta Temas. Las etiquetas de combinación de Mailchimp en el HTML se convierten como al crear una plantilla; cualquier etiqueta no compatible se devuelve en unsupportedTags.

Autorización

Rol en la organizaciónEste endpoint
OWNERPermitido
ADMINPermitido
MEMBERRechazado — 403
Una clave lleva el rol que su creador tiene en esta organización, nunca un rol en AgentsMail en sí. Consulta Claves de API.

Parámetros de ruta

ParámetroTipoDescripción
campaignIdstringIdentificador del borrador que se edita

Cuerpo de la solicitud

CampoTipoObligatorioDescripción
contentstringnoEl HTML del correo
subjectstringnoDe 1 a 200 caracteres
previewTextstring | nullnoTexto de vista previa, hasta 200 caracteres tras recortar espacios. null lo borra; omitido en PATCH lo conserva. Se renderiza en {{previewText}} o {{preheader}}
preheaderstring | nullnoAlias compatible de previewText. Si se envían ambos, deben coincidir tras recortar espacios; si no, 400
namestringnoDe 1 a 100 caracteres
listIdstringnoCambia el objetivo de la campaña; debe pertenecer a la organización
tagIdstringnoAcota el objetivo a una etiqueta, o null para borrarla
topicIdstringnoTema editorial que lleva la campaña, o null para borrarlo
templateIdstringnoVuelve a vincular la plantilla de origen; debe pertenecer a la organización
sendingIdentityIdstringnoCambia la dirección que firma, o null para volver a la predeterminada
json
{"previewText": "Timely m’a bloqué mes paiements Stripe pendant 5 jours."}
Usa un solo alias. Si ambos están presentes, deben coincidir tras recortar espacios, null incluido; valores en conflicto devuelven 400. Una cadena vacía también elimina el texto de vista previa.

Ejemplo

bash
curl -X PATCH -H "x-api-key: $AGENTMAIL_API_KEY" -H "content-type: application/json" \
  https://www.agentsmail.io/api/v1/campaigns/$CAMPAIGN_ID \
  -d '{ "previewText": "Timely m’a bloqué mes paiements Stripe pendant 5 jours.", "content": "<html><body><div data-skip-in-text=\"true\" style=\"display:none;max-height:0;overflow:hidden;mso-hide:all;\">{{previewText}}</div><p>Hi {{firstName}}</p><a href=\"{{unsubscribeUrl}}\">Unsubscribe</a></body></html>" }'

Respuesta

  • 400 Bad Request: campos no válidos, texto de vista previa de más de 200 caracteres o alias en conflicto.
  • 200 OK: la llamada tuvo éxito.
  • 401 Unauthorized: clave ausente o no válida, o su propietario dejó la organización.
  • 403 Forbidden: el propietario de la clave es member de la organización, no admin.
  • 404 Not Found: no existe ese recurso, o pertenece a otra organización. La API nunca confirma que un id existe a quien no tiene derecho sobre él.
  • 429 Too Many Requests: más de 120 solicitudes en un minuto para esta clave.

Campos de la respuesta

CampoTipoDescripción
successbooleanIndica si la operación tuvo éxito
dataobjectObjeto de campaña.
data.campaignUrlstring | nullPágina de la campaña.
data.campaignEditorUrlstring | nullEditor del contenido de un borrador editable.
data.campaignStatsUrlstring | nullEstadísticas de una campaña enviada.
data.campaignPreviewUrlstring | nullVista previa interna de una campaña enviada.
data.publicCampaignUrlstring | nullArchivo compartible de una campaña enviada con archivos públicos activados.
data.idstringIdentificador único de la campaña
data.namestringSu nombre interno
data.subjectstringEl asunto que ven los destinatarios
data.previewTextstring | nullTexto de vista previa guardado; igual a data.preheader
data.preheaderstring | nullEl texto de vista previa que se muestra tras el asunto, null si no hay
data.statusstringdraft, scheduled, paused, sending, sent, failed
data.listIdstringLa lista a la que apunta
data.tagIdstringnull
data.topicIdstringnull
data.scheduledAtstringnull
data.sentAtstringnull
data.createdAtstringFecha ISO de creación
data.updatedAtstringFecha ISO del último cambio
Los cinco enlaces son URL absolutas en el idioma de la organización (en por defecto). Los enlaces no disponibles son null; todos son null si la organización no tiene slug de URL. Los enlaces internos requieren iniciar sesión y tener acceso a la organización; solo publicCampaignUrl es público. Los agentes API y MCP muestran las URL pertinentes no nulas como enlaces Markdown, por ejemplo [Abrir campaña](campaignUrl) con la URL recibida. Crear o consultar una campaña no la publica.

Ejemplo de respuesta

json
{
  "success": true,
  "data": {
    "id": "4d19c0a2",
    "name": "Newsletter",
    "subject": "August news",
    "previewText": "Three new things this month",
    "preheader": "Three new things this month",
    "status": "draft",
    "listId": "0b7c51e8",
    "tagId": "7c2ef4b1",
    "topicId": null,
    "scheduledAt": null,
    "sentAt": null,
    "createdAt": "2026-08-23T10:22:05.000Z",
    "updatedAt": "2026-08-23T10:22:05.000Z",
    "campaignUrl": "https://www.agentsmail.io/es/team/my-team/campaigns/4d19c0a2",
    "campaignEditorUrl": "https://www.agentsmail.io/es/team/my-team/campaigns/4d19c0a2/content",
    "campaignStatsUrl": null,
    "campaignPreviewUrl": null,
    "publicCampaignUrl": null
  }
}

Notas

El HTML debe contener {{previewText}} o {{preheader}}, normalmente en un bloque oculto. AgentsMail no inserta ningún bloque. Consulta Etiquetas de combinación.

Relacionado