Synupv1
Crear clave
v1Recursos/Post Ideas

Post Ideas

Lea, cree y publique ideas de publicación en borrador pendientes de revisión, y públiquelas como publicaciones reales.

Devuelve ideas de publicación en uno de tres modos: indique locationId para la cuadrícula de una sola ubicación (paginada); indique clientId con scope=locations para el resumen de ideas a nivel de ubicación en todas las ubicaciones de un cliente; o indique clientId con scope=brand para las ideas a nivel de marca de ese cliente.

Listar ideas de publicación

get/api/v1/post-ideas
ideas:read
Parámetros de consulta
locationIdstringopcional
Lista las ideas de esta ubicación (modo paginado).
clientIdstringopcional
Lista las ideas de este cliente. Requiere scope.
scopestring (locations | brand)opcional
Qué conjunto de ideas a nivel de cliente devolver: locations (resumen en todas las ubicaciones del cliente) o brand (ideas a nivel de marca).
bucketstring (idea | holiday | calendar | series)opcional
Restringe los resultados a un solo bucket (solo en modo locationId).
statusstringopcional
Restringe los resultados a un estado, o "archived" para listar las ideas archivadas en su lugar (solo en modo locationId).
seriesIdstringopcional
Restringe los resultados a ideas de esta serie de contenido (solo en modo locationId).
searchstringopcional
Coincidencia sin distinción de mayúsculas con el título de la idea (solo en modo locationId).
pageintegeropcional
Número de página, empezando en 1. El valor predeterminado es 1 (solo en modo locationId).
perPageintegeropcional
Resultados por página, hasta 50. El valor predeterminado es 20 (solo en modo locationId).
includeRejectedbooleanopcional
Incluye las ideas rechazadas durante la aprobación. El valor predeterminado es false (solo en modos clientId).
Respuesta
dataobjectopcional
Errores
400A la solicitud le falta un parámetro obligatorio o es inválida de otra forma.
401La clave de API falta, es inválida, expiró o fue revocada.
403A la clave le falta el permiso requerido, o no está autorizada para este cliente/ubicación.
429Demasiadas solicitudes. Reintente tras el número de segundos indicado en el encabezado Retry-After.
get/api/v1/post-ideas
Su clave de API
locationId
clientId
scope
bucket
status
seriesId
search
page
perPage
includeRejected
{
  "data": {
    "rows": [
      {
        "id": "cm_idea_abc123",
        "agencyId": "cm_agency_1",
        "locationId": "cm_loc_1",
        "clientLocationId": "cm_loc_1",
        "clientId": null,
        "brandName": null,
        "agentMeta": null,
        "title": "Spotlight our new patient special",
        "content": "Book this month and get 20% off your first cleaning!",
        "imagePrompt": null,
        "imageUrl": null,
        "type": "announcement",
        "status": "draft",
        "bucket": "idea",
        "platforms": [
          "google",
          "facebook"
        ],
        "seriesId": null,
        "scheduledDate": null,
        "scheduledTime": null,
        "observanceName": null,
        "observanceDate": null,
        "generationBatchId": null,
        "generationJobId": null,
        "isUserGenerated": true,
        "source": "os",
        "externalId": "cm_idea_abc123",
        "reviewStatus": null,
        "archived": false,
        "archivedAt": null,
        "createdAt": "2026-01-20T09:00:00.000Z",
        "updatedAt": "2026-01-20T09:00:00.000Z"
      }
    ],
    "total": 1,
    "page": 1,
    "perPage": 20,
    "counts": [
      {
        "bucket": "idea",
        "_count": {
          "id": 4
        }
      }
    ]
  }
}
v1Recursos/Post Ideas/postCrear una idea de publicación

Crea (o, para un externalId repetido, actualiza) una idea de publicación en borrador, pendiente de revisión o lista para publicarse.

Crear una idea de publicación

post/api/v1/post-ideas
ideas:write
Cuerpo de la solicitud
locationIdstringopcional
La ubicación para la que es esta idea, u omítalo para una idea a nivel de marca.
clientIdstringopcional
El cliente para el que es esta idea (ideas a nivel de marca).
titlestringobligatorio
El título de la idea. Obligatorio al crear.
contentstringopcional
El texto/contenido de la idea.
externalIdstringobligatorio
Un ID estable que usted controla — reintentar una creación con el mismo externalId actualiza la idea existente en lugar de duplicarla. Obligatorio al crear.
originstring (channel | routine | os_button)obligatorio
De dónde proviene esta idea: channel, routine u os_button. Obligatorio al crear.
typestring (announcement | offer | tip | showcase | story | event)opcional
Tipo de idea.
bucketstring (idea | holiday | calendar | series)opcional
En qué bucket de la cuadrícula se ubica la idea.
platformsarray of stringopcional
Plataformas para las que está pensada esta idea.
imageUrlstringopcional
URL de una imagen para adjuntar a la idea.
imagePromptstringopcional
El prompt usado para generar la imagen de la idea.
seriesIdstringopcional
ID de la serie de contenido a la que adjuntar esta idea.
scheduledDatestringopcional
Fecha de publicación planificada (YYYY-MM-DD).
scheduledTimestringopcional
Hora de publicación planificada.
generationJobIdstringopcional
ID del trabajo de generación de IA que produjo esta idea, si lo hay.
Respuesta
dataobjectopcional
idstringopcional
Identificador único de la idea de publicación.
createdbooleanopcional
Si esta llamada creó una idea nueva (false si ya existía una idea con este externalId y se actualizó en su lugar).
reviewStatusstringopcional
Puerta de aprobación: null (sin puerta), pending, approved o rejected.
statusstringopcional
Estado de la idea: draft, published o archived.
Errores
400A la solicitud le falta un parámetro obligatorio o es inválida de otra forma.
401La clave de API falta, es inválida, expiró o fue revocada.
403A la clave le falta el permiso requerido, o no está autorizada para este cliente/ubicación.
422A la solicitud le falta un parámetro obligatorio o es inválida de otra forma.
429Demasiadas solicitudes. Reintente tras el número de segundos indicado en el encabezado Retry-After.
post/api/v1/post-ideas
Su clave de API
Cuerpo de la solicitud*
{
  "data": {
    "id": "cm_idea_abc123",
    "created": true,
    "reviewStatus": null,
    "status": "draft"
  }
}
v1Recursos/Post Ideas/getObtener una idea de publicación

Devuelve una sola idea de publicación. id acepta tanto su propio id como el externalId con el que se creó.

Obtener una idea de publicación

get/api/v1/post-ideas/{id}
ideas:read
Parámetros de consulta
idstringobligatorio
La idea de publicación a consultar — su id o externalId.
Respuesta
dataobjectopcional
idstringopcional
Identificador único de la idea de publicación.
locationIdstringopcional
ID de la ubicación a la que pertenece esta idea, o null para una idea a nivel de marca.
clientLocationIdstringopcional
ID del registro de ubicación resuelto, o null.
clientIdstringopcional
ID del cliente al que pertenece esta idea (ideas a nivel de marca), o null.
brandNamestringopcional
Nombre visible del perfil de marca, para ideas a nivel de marca, o null.
titlestringopcional
El título de la idea.
contentstringopcional
El texto/contenido de la idea.
imageUrlstringopcional
URL de la imagen de la idea, o null.
imagePromptstringopcional
El prompt usado para generar la imagen de la idea, o null.
typestring (announcement | offer | tip | showcase | story | event)opcional
Tipo de idea: announcement, offer, tip, showcase, story o event.
statusstring (draft | published | archived)opcional
Estado de la idea: draft, published o archived.
bucketstring (idea | holiday | calendar | series)opcional
En qué bucket de la cuadrícula se ubica la idea: idea, holiday, calendar o series.
platformsarray of stringopcional
Plataformas para las que está pensada esta idea.
seriesIdstringopcional
ID de la serie de contenido a la que pertenece esta idea, o null.
scheduledDatestringopcional
Fecha de publicación planificada (YYYY-MM-DD), o null.
scheduledTimestringopcional
Hora de publicación planificada, o null.
externalIdstringopcional
ID estable con el que se creó esta idea, si provino de una fuente externa.
sourcestring (os | agent)opcional
De dónde vino la idea: os (creada en Synup) o agent (enviada por un agente de IA).
reviewStatusstring (pending | approved | rejected)opcional
Puerta de aprobación: null (sin puerta), pending, approved o rejected.
generationJobIdstringopcional
ID del trabajo de generación de IA que produjo esta idea, si lo hay, o null.
isUserGeneratedbooleanopcional
Si una persona (en lugar de un agente) creó esta idea.
archivedbooleanopcional
Si esta idea ha sido archivada.
archivedAtstringopcional
Cuándo se archivó esta idea, como marca de tiempo ISO 8601, o null.
createdAtstringopcional
Cuándo se creó esta idea, como marca de tiempo ISO 8601.
updatedAtstringopcional
Cuándo se actualizó por última vez esta idea, como marca de tiempo ISO 8601.
locationNamestringopcional
Nombre visible de la ubicación de la idea. Solo presente al listar las ideas a nivel de ubicación de un cliente.
Errores
401La clave de API falta, es inválida, expiró o fue revocada.
403A la clave le falta el permiso requerido, o no está autorizada para este cliente/ubicación.
404El recurso no se encontró, o no pertenece a su agencia.
429Demasiadas solicitudes. Reintente tras el número de segundos indicado en el encabezado Retry-After.
get/api/v1/post-ideas/{id}
Su clave de API
id *
{
  "data": {
    "id": "cm_idea_abc123",
    "agencyId": "cm_agency_1",
    "locationId": "cm_loc_1",
    "clientLocationId": "cm_loc_1",
    "clientId": null,
    "brandName": null,
    "agentMeta": null,
    "title": "Spotlight our new patient special",
    "content": "Book this month and get 20% off your first cleaning!",
    "imagePrompt": null,
    "imageUrl": null,
    "type": "announcement",
    "status": "draft",
    "bucket": "idea",
    "platforms": [
      "google",
      "facebook"
    ],
    "seriesId": null,
    "scheduledDate": null,
    "scheduledTime": null,
    "observanceName": null,
    "observanceDate": null,
    "generationBatchId": null,
    "generationJobId": null,
    "isUserGenerated": true,
    "source": "os",
    "externalId": "cm_idea_abc123",
    "reviewStatus": null,
    "archived": false,
    "archivedAt": null,
    "createdAt": "2026-01-20T09:00:00.000Z",
    "updatedAt": "2026-01-20T09:00:00.000Z"
  }
}
v1Recursos/Post Ideas/patchActualizar una idea de publicación

Actualiza los campos editables de una idea de publicación. id acepta tanto su propio id como el externalId con el que se creó.

Actualizar una idea de publicación

patch/api/v1/post-ideas/{id}
ideas:write
Parámetros de consulta
idstringobligatorio
La idea de publicación a actualizar — su id o externalId.
Cuerpo de la solicitud
titlestringopcional
El título de la idea. Obligatorio al crear.
contentstringopcional
El texto/contenido de la idea.
imageUrlstringopcional
URL de una imagen para adjuntar a la idea.
imagePromptstringopcional
El prompt usado para generar la imagen de la idea.
typestring (announcement | offer | tip | showcase | story | event)opcional
Tipo de idea.
statusstring (draft | published | archived)opcional
Estado de la idea.
platformsarray of stringopcional
Plataformas para las que está pensada esta idea.
scheduledDatestringopcional
Fecha de publicación planificada (YYYY-MM-DD).
scheduledTimestringopcional
Hora de publicación planificada.
Respuesta
dataobjectopcional
idstringopcional
Identificador único de la idea de publicación.
locationIdstringopcional
ID de la ubicación a la que pertenece esta idea, o null para una idea a nivel de marca.
clientLocationIdstringopcional
ID del registro de ubicación resuelto, o null.
clientIdstringopcional
ID del cliente al que pertenece esta idea (ideas a nivel de marca), o null.
brandNamestringopcional
Nombre visible del perfil de marca, para ideas a nivel de marca, o null.
titlestringopcional
El título de la idea.
contentstringopcional
El texto/contenido de la idea.
imageUrlstringopcional
URL de la imagen de la idea, o null.
imagePromptstringopcional
El prompt usado para generar la imagen de la idea, o null.
typestring (announcement | offer | tip | showcase | story | event)opcional
Tipo de idea: announcement, offer, tip, showcase, story o event.
statusstring (draft | published | archived)opcional
Estado de la idea: draft, published o archived.
bucketstring (idea | holiday | calendar | series)opcional
En qué bucket de la cuadrícula se ubica la idea: idea, holiday, calendar o series.
platformsarray of stringopcional
Plataformas para las que está pensada esta idea.
seriesIdstringopcional
ID de la serie de contenido a la que pertenece esta idea, o null.
scheduledDatestringopcional
Fecha de publicación planificada (YYYY-MM-DD), o null.
scheduledTimestringopcional
Hora de publicación planificada, o null.
externalIdstringopcional
ID estable con el que se creó esta idea, si provino de una fuente externa.
sourcestring (os | agent)opcional
De dónde vino la idea: os (creada en Synup) o agent (enviada por un agente de IA).
reviewStatusstring (pending | approved | rejected)opcional
Puerta de aprobación: null (sin puerta), pending, approved o rejected.
generationJobIdstringopcional
ID del trabajo de generación de IA que produjo esta idea, si lo hay, o null.
isUserGeneratedbooleanopcional
Si una persona (en lugar de un agente) creó esta idea.
archivedbooleanopcional
Si esta idea ha sido archivada.
archivedAtstringopcional
Cuándo se archivó esta idea, como marca de tiempo ISO 8601, o null.
createdAtstringopcional
Cuándo se creó esta idea, como marca de tiempo ISO 8601.
updatedAtstringopcional
Cuándo se actualizó por última vez esta idea, como marca de tiempo ISO 8601.
locationNamestringopcional
Nombre visible de la ubicación de la idea. Solo presente al listar las ideas a nivel de ubicación de un cliente.
Errores
400A la solicitud le falta un parámetro obligatorio o es inválida de otra forma.
401La clave de API falta, es inválida, expiró o fue revocada.
403A la clave le falta el permiso requerido, o no está autorizada para este cliente/ubicación.
404El recurso no se encontró, o no pertenece a su agencia.
429Demasiadas solicitudes. Reintente tras el número de segundos indicado en el encabezado Retry-After.
patch/api/v1/post-ideas/{id}
Su clave de API
id *
Cuerpo de la solicitud
{
  "data": {
    "id": "cm_idea_abc123",
    "agencyId": "cm_agency_1",
    "locationId": "cm_loc_1",
    "clientLocationId": "cm_loc_1",
    "clientId": null,
    "brandName": null,
    "agentMeta": null,
    "title": "Spotlight our new patient special (updated)",
    "content": "Book this month and get 25% off your first cleaning!",
    "imagePrompt": null,
    "imageUrl": null,
    "type": "announcement",
    "status": "draft",
    "bucket": "idea",
    "platforms": [
      "google",
      "facebook"
    ],
    "seriesId": null,
    "scheduledDate": null,
    "scheduledTime": null,
    "observanceName": null,
    "observanceDate": null,
    "generationBatchId": null,
    "generationJobId": null,
    "isUserGenerated": true,
    "source": "os",
    "externalId": "cm_idea_abc123",
    "reviewStatus": null,
    "archived": false,
    "archivedAt": null,
    "createdAt": "2026-01-20T09:00:00.000Z",
    "updatedAt": "2026-01-20T09:05:00.000Z"
  }
}
v1Recursos/Post Ideas/deleteArchivar una idea de publicación

Elimina de forma reversible (archiva) una idea de publicación. id acepta tanto su propio id como el externalId con el que se creó.

Archivar una idea de publicación

delete/api/v1/post-ideas/{id}
ideas:write
Parámetros de consulta
idstringobligatorio
La idea de publicación a archivar — su id o externalId.
Respuesta
dataobjectopcional
idstringopcional
Identificador único de la idea de publicación.
archivedbooleanopcional
Si esta idea ha sido archivada.
Errores
401La clave de API falta, es inválida, expiró o fue revocada.
403A la clave le falta el permiso requerido, o no está autorizada para este cliente/ubicación.
404El recurso no se encontró, o no pertenece a su agencia.
429Demasiadas solicitudes. Reintente tras el número de segundos indicado en el encabezado Retry-After.
delete/api/v1/post-ideas/{id}
Su clave de API
id *
{
  "data": {
    "id": "cm_idea_abc123",
    "archived": true
  }
}
v1Recursos/Post Ideas/postPublicar una idea de publicación

Publica una idea de publicación como una publicación real, enviándola a sus plataformas de destino. Salvo que se indique scheduledFor o draft, esto envía contenido real de inmediato. id acepta tanto el propio id de la idea como el externalId con el que se creó.

Publicar una idea de publicación

post/api/v1/post-ideas/{id}/publish
posts:write
Parámetros de consulta
idstringobligatorio
La idea de publicación a publicar — su id o externalId.
Cuerpo de la solicitud
scheduledForstringopcional
Publicar en esta marca de tiempo ISO 8601 futura en lugar de inmediatamente.
draftbooleanopcional
Guardar como publicación en borrador en lugar de publicar de inmediato.
Respuesta
dataobjectopcional
Una plataforma solicitada sin conexión activa, o un campo que la idea necesita antes de poder publicarse, nunca hace fallar esta llamada — la idea se guarda como publicación en borrador en su lugar. Volver a llamar a esto para una idea que ya tiene una publicación devuelve alreadyPublished: true en lugar de crear una segunda.
postIdstringopcional
ID de la publicación en la que se publicó esta idea, o null si la publicación no se completó.
statusstringopcional
Estado de la idea: draft, published o archived.
ideaIdstringopcional
ID de la idea de publicación que se publicó.
alreadyPublishedbooleanopcional
Si esta idea ya tenía una publicación de una llamada anterior — cuando es true, no se publicó nada nuevo.
missingFieldsarray of stringopcional
Campos aún necesarios antes de que la publicación resultante pueda activarse, si los hay.
missingPlatformsarray of stringopcional
Plataformas solicitadas sin conexión activa, si las hay.
scopestring (location | client)opcional
Si la brecha de conexión/campo aplica a nivel de ubicación o de cliente.
Errores
400A la solicitud le falta un parámetro obligatorio o es inválida de otra forma.
401La clave de API falta, es inválida, expiró o fue revocada.
403A la clave le falta el permiso requerido, o no está autorizada para este cliente/ubicación.
404El recurso no se encontró, o no pertenece a su agencia.
422A la solicitud le falta un parámetro obligatorio o es inválida de otra forma.
429Demasiadas solicitudes. Reintente tras el número de segundos indicado en el encabezado Retry-After.
post/api/v1/post-ideas/{id}/publish
Su clave de API
id *
Cuerpo de la solicitud
{
  "data": {
    "postId": "cm_post_xyz789",
    "status": "scheduled",
    "ideaId": "cm_idea_abc123"
  }
}