Synupv1
Crear clave
v1Recursos/Locations

Locations

Cree, lea, actualice y gestione el ciclo de vida de archivado de las ubicaciones de sus clientes.

Devuelve una página de ubicaciones, empezando por las más recientes. Todos los filtros son opcionales y se combinan (una ubicación debe cumplir con todos ellos); para avanzar a más resultados, vuelva a enviar el nextCursor devuelto.

Listar / buscar ubicaciones

get/api/v1/locations
locations:read
Parámetros de consulta
clientIdstringopcional
Restringe los resultados a un cliente. Si su clave está limitada a clientes específicos, debe ser uno de ellos. Búsquelo con GET /api/v1/clients.
searchstringopcional
Búsqueda de texto libre sobre el nombre, la dirección postal, la ciudad o el teléfono de la ubicación (sin distinguir mayúsculas, coincidencias parciales permitidas).
statusstring (all | active | archived | archival_pending | verification_pending | unapproved | requires_action)opcional
Un único grupo de estado: all, active (no archivada), archived, archival_pending, verification_pending (aprobación de Google pendiente), unapproved o requires_action. El valor por defecto es all.
tagsarray of stringopcional
Etiquetas internas — coincide con una ubicación que tenga alguna de estas.
categoriesarray of stringopcional
Nombres visibles de categoría — coincide con una ubicación cuya categoría general o de Google sea alguna de estas.
verificationarray of string (verified | pending | unverified | unknown)opcional
Estado de verificación de Google: verified, pending, unverified o unknown.
createdAfterstringopcional
Solo ubicaciones creadas en esta fecha o después.
createdBeforestringopcional
Solo ubicaciones creadas en esta fecha o antes.
cursorstringopcional
Cursor de paginación del nextCursor de una respuesta anterior. Déjelo vacío para la primera página.
limitintegeropcional
Ubicaciones a devolver por página, 1–200. El valor por defecto es 50.
Respuesta
dataobjectopcional
locationsarray of objectopcional
Las ubicaciones que coinciden en esta página.
idstringopcional
Identificador único de la ubicación.
namestringopcional
El nombre comercial de la ubicación.
addressstringopcional
La dirección postal de la ubicación (líneas de calle combinadas), o null.
citystringopcional
Ciudad.
statestringopcional
Estado o región.
postalCodestringopcional
Código postal, o null.
countrystringopcional
País, como código ISO-3166-1 alfa-2, o null.
phonestringopcional
Número de teléfono principal, o null.
websitestringopcional
La URL del sitio web de la ubicación, o null.
storeCodestringopcional
Su código o referencia interna de tienda para esta ubicación, o null.
categorystringopcional
La categoría visible de la ubicación (la categoría principal por publisher si está establecida, si no, la categoría general), o null.
tagsarray of stringopcional
Etiquetas internas para su propia organización — no se muestran públicamente.
labelsarray of stringopcional
Rótulos internos para esta ubicación.
statusstring (active | archived | archival_pending | verification_pending | unapproved | requires_action)opcional
Estado derivado: active, archived, archival_pending, verification_pending (aprobación de Google pendiente), unapproved o requires_action.
verificationStatusstring (verified | pending | unverified | unknown)opcional
Estado de verificación de Google: verified, pending, unverified o unknown, o null.
pendingChangesnumberopcional
Número de ediciones guardadas en cola para publicarse pero aún no sincronizadas con los directorios conectados.
lastPublishedAtstringopcional
Fecha de la última sincronización correcta de los datos de esta ubicación con un publisher, como marca de tiempo ISO 8601, o null.
clientIdstringopcional
ID del cliente al que pertenece esta ubicación, o null.
clientNamestringopcional
Nombre comercial del cliente al que pertenece esta ubicación, o null.
createdAtstringopcional
Fecha de creación de la ubicación, como marca de tiempo ISO 8601.
nextCursorstringopcional
Cursor de paginación para la siguiente página, o null cuando no hay más resultados.
totalnumberopcional
Número total de ubicaciones que coinciden con los filtros, en todas las páginas.
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.
429Demasiadas solicitudes. Reintente tras el número de segundos indicado en el encabezado Retry-After.
get/api/v1/locations
Su clave de API
clientId
search
status
tags
categories
verification
createdAfter
createdBefore
cursor
limit
{
  "data": [
    {
      "id": "loc_456",
      "name": "Acme Dental — Downtown",
      "city": "Austin",
      "state": "TX",
      "clientId": "cli_123",
      "createdAt": "2026-01-15T10:05:00.000Z"
    }
  ]
}
v1Recursos/Locations/postCrear una ubicación

Crea una nueva ubicación para un cliente existente y la envía para su publicación.

Crear una ubicación

post/api/v1/locations
locations:write
Cuerpo de la solicitud
clientIdstringobligatorio
ID del cliente bajo el que se creará esta ubicación. Búsquelo con GET /api/v1/clients.
namestringobligatorio
El nombre comercial de la ubicación.
countryIsostringobligatorio
Código de país ISO, p. ej. US.
streetstringobligatorio
Dirección postal.
street1stringopcional
Dirección postal, línea 2.
citystringobligatorio
Ciudad.
stateIsostringobligatorio
Código de estado o región.
postalCodestringobligatorio
Código postal.
phonestringopcional
Número de teléfono.
additionalPhonesarray of stringopcional
Cualquier número de teléfono adicional además del principal.
websitestringopcional
URL del sitio web.
categoryIdstringopcional
Id de categoría general — búsquelo con GET /api/v1/locations/categories.
categoryNamestringopcional
Nombre visible de la categoría general.
publisherCategoriesobjectopcional
Categorías por publisher, una por publisher, cada una un { id, name } consultado mediante GET /api/v1/locations/publisher-categories.
googleobjectopcional
idstringopcional
namestringopcional
facebookobjectopcional
idstringopcional
namestringopcional
appleobjectopcional
idstringopcional
namestringopcional
bingobjectopcional
idstringopcional
namestringopcional
additionalCategoriesarray of objectopcional
Hasta 9 categorías adicionales, cada una un { id?, name }. Se acepta un name solo, y su id se resuelve a partir del catálogo de categorías cuando hay una coincidencia. Busque los ids usted mismo con GET /api/v1/locations/categories.
idstringopcional
namestringopcional
descriptionstringopcional
Una breve descripción del negocio.
tagsarray of stringopcional
Etiquetas internas para su propia organización — no se muestran públicamente.
latitudenumberopcional
Latitud, en grados decimales. Se deriva automáticamente de la dirección si se omite.
longitudenumberopcional
Longitud, en grados decimales. Se deriva automáticamente de la dirección si se omite.
customFieldsobjectopcional
Valores de campos personalizados a establecer en esta ubicación, indexados por id de campo.
Respuesta
dataobjectopcional
locationIdstringopcional
ID de la ubicación recién creada.
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.
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/locations
Su clave de API
Cuerpo de la solicitud*
{
  "data": {
    "locationId": "loc_456"
  }
}
v1Recursos/Locations/getObtener una ubicación

Devuelve el perfil de negocio completo de una ubicación: dirección, horario, categorías, atributos, servicios, medios y estado de verificación.

Obtener una ubicación

get/api/v1/locations/{id}
locations:read
Parámetros de consulta
idstringobligatorio
La ubicación a consultar.
Respuesta
dataobjectopcional
El perfil de negocio completo de una ubicación: dirección, horario, categorías, atributos, servicios, medios y estado — todo lo que update_location puede cambiar, además de lo que create devolvió.
idstringopcional
Identificador único de la ubicación.
namestringopcional
El nombre comercial de la ubicación.
descriptionstringopcional
Una descripción del negocio, o null.
taglinestringopcional
Un lema o eslogan breve del negocio, o null.
storeCodestringopcional
Su código o referencia interna de tienda para esta ubicación, o null.
logoUrlstringopcional
URL de la imagen del logo de la ubicación, o null.
streetstringopcional
Dirección postal, línea 1, o null.
street1stringopcional
Dirección postal, línea 2, o null.
citystringopcional
Ciudad.
statestringopcional
Estado o región.
postalCodestringopcional
Código postal, o null.
countrystringopcional
País, como código ISO-3166-1 alfa-2, o null.
latitudenumberopcional
Latitud, o null.
longitudenumberopcional
Longitud, o null.
phonestringopcional
Número de teléfono principal, o null.
additionalPhonesarray of stringopcional
Cualquier número de teléfono adicional además del principal.
websitestringopcional
La URL del sitio web de la ubicación, o null.
businessEmailstringopcional
Un correo electrónico de contacto público del negocio, o null.
categoryNamestringopcional
El nombre visible de la categoría general, o null.
primaryCategoryDisplaystringopcional
El nombre visible de la categoría principal efectiva — por publisher (Google) si está establecida, si no, la general — o null.
primaryCategoryGooglestringopcional
El id de la categoría principal de Google de la ubicación (gcid), o null.
additionalCategoriesarray of objectopcional
Hasta 9 categorías adicionales, cada una con un id (cuando se resuelve) y un nombre visible.
idstringopcional
namestringopcional
attributesarray of objectopcional
Atributos del perfil de Google Business, como la lista almacenada { id, value }.
idstringopcional
valueobjectopcional
El valor del atributo — un booleano para atributos de sí/no, una cadena para los de elección única, o un objeto con setValues/unsetValues para los de selección múltiple.
servicesarray of objectopcional
Los servicios o productos que ofrece esta ubicación.
namestringopcional
descriptionstringopcional
pricenumberopcional
currencystringopcional
googleServiceTypeIdstringopcional
ownerNamestringopcional
El nombre del propietario, o null.
menuUrlstringopcional
URL del menú del negocio, o null.
yearEstablishednumberopcional
El año en que se estableció el negocio, o null.
tagsarray of stringopcional
Etiquetas internas para su propia organización — no se muestran públicamente.
labelsarray of stringopcional
Rótulos internos para esta ubicación.
regularHoursarray of objectopcional
El horario semanal habitual, o null.
daystring (MONDAY | TUESDAY | WEDNESDAY | THURSDAY | FRIDAY | SATURDAY | SUNDAY)opcional
closedbooleanopcional
periodsarray of objectopcional
openstringopcional
closestringopcional
moreHoursarray of objectopcional
Tipos de horario adicionales más allá del horario habitual (entrega, para llevar, etc.), o null.
specialHoursarray of objectopcional
Anulaciones puntuales de fecha — cierres por festivo o el horario especial de un solo día — o null.
mediaByCategoryobjectopcional
Elementos multimedia agrupados por categoría (p. ej. EXTERIOR, INTERIOR, FOOD_AND_DRINK, LOGO, TEAMS). Cada elemento tiene una url y, opcionalmente, un label, un kind (PHOTO o VIDEO), una source, un indicador starred y un assetKey.
clientIdstringopcional
ID del cliente al que pertenece esta ubicación, o null.
archivedbooleanopcional
Si la ubicación está archivada.
scheduledArchiveAtstringopcional
Fecha en que se solicitó el archivado (también el token que usa cancel-archive para identificarlo), como marca de tiempo ISO 8601, o null si no hay ninguno pendiente.
verificationStatusstring (verified | pending | unverified | unknown)opcional
Estado de verificación de Google: verified, pending, unverified o unknown, o null.
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/locations/{id}
Su clave de API
id *
{
  "data": {
    "id": "loc_456",
    "name": "Acme Dental — Downtown",
    "description": null,
    "tagline": null,
    "storeCode": null,
    "logoUrl": null,
    "street": "123 Main St",
    "street1": null,
    "city": "Austin",
    "state": "TX",
    "postalCode": "78701",
    "country": "US",
    "latitude": 30.2672,
    "longitude": -97.7431,
    "phone": "+15125551234",
    "additionalPhones": [],
    "website": "https://acmedental.com",
    "businessEmail": null,
    "categoryName": "Dentist",
    "primaryCategoryDisplay": "Dentist",
    "primaryCategoryGoogle": "gcid:dentist",
    "additionalCategories": [],
    "attributes": [
      {
        "id": "attributes/wi_fi",
        "value": true
      }
    ],
    "services": [
      {
        "name": "Teeth Whitening",
        "description": null,
        "price": 150,
        "currency": "USD",
        "googleServiceTypeId": null
      }
    ],
    "ownerName": null,
    "menuUrl": null,
    "yearEstablished": null,
    "tags": [
      "vip"
    ],
    "labels": [],
    "regularHours": [
      {
        "day": "MONDAY",
        "closed": false,
        "periods": [
          {
            "openTime": "09:00",
            "closeTime": "17:00"
          }
        ]
      }
    ],
    "moreHours": [],
    "specialHours": [],
    "mediaByCategory": {
      "EXTERIOR": [
        {
          "url": "https://cdn.synup.com/media/1.jpg"
        }
      ]
    },
    "clientId": "cli_123",
    "archived": false,
    "scheduledArchiveAt": null,
    "verificationStatus": "verified"
  }
}
v1Recursos/Locations/patchActualizar una ubicación

Edita los datos de negocio de una ubicación existente — dirección, categorías, atributos del perfil de Google Business, servicios y horario. Envíe solo los campos que desea cambiar; un campo que sí envíe reemplaza su valor actual por completo (una cadena vacía borra un campo de texto, una lista nueva completa reemplaza una existente). El país no puede cambiarse después de la creación. Los cambios guardados se ponen en cola automáticamente para sincronizarse con los directorios y listados conectados.

Actualizar una ubicación

patch/api/v1/locations/{id}
locations:write
Parámetros de consulta
idstringobligatorio
La ubicación a actualizar.
Cuerpo de la solicitud
namestringopcional
El nombre comercial de la ubicación.
descriptionstringopcional
Una breve descripción del negocio.
taglinestringopcional
Un lema o eslogan breve del negocio.
storeCodestringopcional
Su código o referencia interna de tienda para esta ubicación.
logoUrlstringopcional
URL de la imagen del logo de la ubicación.
languageCodestringopcional
El idioma principal del listado, como código (p. ej. "en").
streetstringopcional
Dirección postal.
street1stringopcional
Dirección postal, línea 2.
citystringopcional
Ciudad.
stateIsostringopcional
Estado o región, como código ISO (p. ej. "CA").
postalCodestringopcional
Código postal.
latitudenumberopcional
Latitud. Si cambia la dirección sin establecer también esto, se vuelve a derivar automáticamente.
longitudenumberopcional
Longitud. Si cambia la dirección sin establecer también esto, se vuelve a derivar automáticamente.
phonestringopcional
Número de teléfono.
additionalPhonesarray of stringopcional
Cualquier número de teléfono adicional además del principal.
websitestringopcional
URL del sitio web.
businessEmailstringopcional
Un correo electrónico de contacto público del negocio.
categoryIdstringopcional
Id de categoría general — búsquelo con GET /api/v1/locations/categories.
categoryNamestringopcional
Nombre visible de la categoría general.
publisherCategoriesobjectopcional
Categoría PRINCIPAL por publisher — actualmente solo se admite google aquí (se requieren tanto un id como un name; enviar solo uno de ellos borraría la categoría). Facebook/Apple/Bing solo pueden cambiarse en el editor de ubicaciones. Busque el par id/name de google con GET /api/v1/locations/publisher-categories.
googleobjectopcional
idstringopcional
namestringopcional
additionalCategoriesarray of objectopcional
Hasta 9 categorías adicionales, cada una un { id?, name }. Se acepta un name solo, y su id se resuelve a partir del catálogo de categorías cuando hay una coincidencia. Busque los ids usted mismo con GET /api/v1/locations/categories.
idstringopcional
namestringopcional
attributesobjectopcional
Atributos del perfil de Google Business, como un mapa de id de atributo a valor (p. ej. { "attributes/wi_fi": "free" }) — REEMPLAZA el conjunto completo, así que lea los actuales desde GET /api/v1/locations/{id} y vuelva a enviar todo lo que desee conservar. Un id sin una representación válida en Google para la categoría de esta ubicación se descarta y se informa en rejectedAttributes en lugar de hacer fallar toda la solicitud. No hay un endpoint que liste qué ids de atributo son válidos para una categoría — eso es la propia referencia de atributos de Business Profile de Google, no de Synup.
servicesarray of objectopcional
Los servicios o productos que ofrece esta ubicación — reemplaza la lista existente.
namestringopcional
descriptionstringopcional
pricenumberopcional
currencystringopcional
googleServiceTypeIdstringopcional
ownerNamestringopcional
El nombre del propietario.
menuUrlstringopcional
URL del menú del negocio.
yearEstablishednumberopcional
El año en que se estableció el negocio (p. ej. 2012).
tagsarray of stringopcional
Etiquetas internas para su propia organización — no se muestran públicamente. Reemplaza la lista existente.
labelsarray of stringopcional
Rótulos internos para esta ubicación. Reemplaza la lista existente.
regularHoursarray of objectopcional
El horario semanal habitual — reemplaza por completo el horario existente. Una entrada por día de la semana.
daystring (MONDAY | TUESDAY | WEDNESDAY | THURSDAY | FRIDAY | SATURDAY | SUNDAY)opcional
closedbooleanopcional
periodsarray of objectopcional
openstringopcional
closestringopcional
moreHoursarray of objectopcional
Tipos de horario adicionales más allá del horario habitual (entrega, para llevar, happy hour, etc.), reemplaza la lista existente.
specialHoursarray of objectopcional
Anulaciones puntuales de fecha — cierres por festivo o el horario especial de un solo día — reemplaza la lista existente. Funciona con cualquier fecha del calendario, no solo festivos con nombre.
applyToPublishersarray of string (google | facebook | apple | bing)opcional
Cambia estos valores solo para publishers específicos en lugar del valor predeterminado compartido que hereda cada publisher.
Respuesta
dataobjectopcional
locationobjectopcional
El perfil de negocio completo de una ubicación: dirección, horario, categorías, atributos, servicios, medios y estado — todo lo que update_location puede cambiar, además de lo que create devolvió.
idstringopcional
Identificador único de la ubicación.
namestringopcional
El nombre comercial de la ubicación.
descriptionstringopcional
Una descripción del negocio, o null.
taglinestringopcional
Un lema o eslogan breve del negocio, o null.
storeCodestringopcional
Su código o referencia interna de tienda para esta ubicación, o null.
logoUrlstringopcional
URL de la imagen del logo de la ubicación, o null.
streetstringopcional
Dirección postal, línea 1, o null.
street1stringopcional
Dirección postal, línea 2, o null.
citystringopcional
Ciudad.
statestringopcional
Estado o región.
postalCodestringopcional
Código postal, o null.
countrystringopcional
País, como código ISO-3166-1 alfa-2, o null.
latitudenumberopcional
Latitud, o null.
longitudenumberopcional
Longitud, o null.
phonestringopcional
Número de teléfono principal, o null.
additionalPhonesarray of stringopcional
Cualquier número de teléfono adicional además del principal.
websitestringopcional
La URL del sitio web de la ubicación, o null.
businessEmailstringopcional
Un correo electrónico de contacto público del negocio, o null.
categoryNamestringopcional
El nombre visible de la categoría general, o null.
primaryCategoryDisplaystringopcional
El nombre visible de la categoría principal efectiva — por publisher (Google) si está establecida, si no, la general — o null.
primaryCategoryGooglestringopcional
El id de la categoría principal de Google de la ubicación (gcid), o null.
additionalCategoriesarray of objectopcional
Hasta 9 categorías adicionales, cada una con un id (cuando se resuelve) y un nombre visible.
idstringopcional
namestringopcional
attributesarray of objectopcional
Atributos del perfil de Google Business, como la lista almacenada { id, value }.
idstringopcional
valueobjectopcional
El valor del atributo — un booleano para atributos de sí/no, una cadena para los de elección única, o un objeto con setValues/unsetValues para los de selección múltiple.
servicesarray of objectopcional
Los servicios o productos que ofrece esta ubicación.
namestringopcional
descriptionstringopcional
pricenumberopcional
currencystringopcional
googleServiceTypeIdstringopcional
ownerNamestringopcional
El nombre del propietario, o null.
menuUrlstringopcional
URL del menú del negocio, o null.
yearEstablishednumberopcional
El año en que se estableció el negocio, o null.
tagsarray of stringopcional
Etiquetas internas para su propia organización — no se muestran públicamente.
labelsarray of stringopcional
Rótulos internos para esta ubicación.
regularHoursarray of objectopcional
El horario semanal habitual, o null.
daystring (MONDAY | TUESDAY | WEDNESDAY | THURSDAY | FRIDAY | SATURDAY | SUNDAY)opcional
closedbooleanopcional
periodsarray of objectopcional
moreHoursarray of objectopcional
Tipos de horario adicionales más allá del horario habitual (entrega, para llevar, etc.), o null.
specialHoursarray of objectopcional
Anulaciones puntuales de fecha — cierres por festivo o el horario especial de un solo día — o null.
mediaByCategoryobjectopcional
Elementos multimedia agrupados por categoría (p. ej. EXTERIOR, INTERIOR, FOOD_AND_DRINK, LOGO, TEAMS). Cada elemento tiene una url y, opcionalmente, un label, un kind (PHOTO o VIDEO), una source, un indicador starred y un assetKey.
clientIdstringopcional
ID del cliente al que pertenece esta ubicación, o null.
archivedbooleanopcional
Si la ubicación está archivada.
scheduledArchiveAtstringopcional
Fecha en que se solicitó el archivado (también el token que usa cancel-archive para identificarlo), como marca de tiempo ISO 8601, o null si no hay ninguno pendiente.
verificationStatusstring (verified | pending | unverified | unknown)opcional
Estado de verificación de Google: verified, pending, unverified o unknown, o null.
rejectedAttributesarray of stringopcional
Ids de atributos de la solicitud que NO se escribieron — o bien tienen su propio campo dedicado, o su valor no tenía una representación válida en Google. Presente solo cuando se rechazó al menos uno.
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.
patch/api/v1/locations/{id}
Su clave de API
id *
Cuerpo de la solicitud
{
  "data": {
    "location": {
      "id": "loc_456",
      "name": "Acme Dental — Downtown",
      "tagline": "Gentle care, on time",
      "city": "Austin",
      "state": "TX",
      "clientId": "cli_123"
    },
    "rejectedAttributes": []
  }
}
v1Recursos/Locations/getListar los servicios de una ubicación

Los servicios del Perfil de Negocio de Google que ofrece esta ubicación.

Listar los servicios de una ubicación

get/api/v1/locations/{id}/services
locations:read
Parámetros de consulta
idstringobligatorio
Respuesta
dataobjectopcional
servicesarray of objectopcional
namestringobligatorio
Nombre del servicio.
descriptionstringopcional
Descripción del servicio.
pricenumberopcional
Precio del servicio.
currencystringopcional
Código de moneda del precio.
googleServiceTypeIdstringopcional
ID de tipo de servicio estructurado de Google, si coincide con uno.
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/locations/{id}/services
Su clave de API
id *
{
  "data": {
    "services": [
      {
        "name": "Teeth Whitening",
        "description": null,
        "price": 150,
        "currency": "USD",
        "googleServiceTypeId": null
      }
    ]
  }
}
v1Recursos/Locations/postAgregar un servicio

Agrega un servicio a la lista de la ubicación y vuelve a publicar la lista completa en Google (Google no tiene una adición atómica — cada guardado reemplaza todo el arreglo).

Agregar un servicio

post/api/v1/locations/{id}/services
locations:write
Parámetros de consulta
idstringobligatorio
Cuerpo de la solicitud
namestringobligatorio
Nombre del servicio.
descriptionstringopcional
Descripción del servicio.
pricenumberopcional
Precio del servicio.
currencystringopcional
Código de moneda del precio.
googleServiceTypeIdstringopcional
ID de tipo de servicio estructurado de Google, si coincide con uno.
Respuesta
dataobjectopcional
servicesarray of objectopcional
namestringobligatorio
Nombre del servicio.
descriptionstringopcional
Descripción del servicio.
pricenumberopcional
Precio del servicio.
currencystringopcional
Código de moneda del precio.
googleServiceTypeIdstringopcional
ID de tipo de servicio estructurado de Google, si coincide con uno.
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.
post/api/v1/locations/{id}/services
Su clave de API
id *
Cuerpo de la solicitud*
{
  "data": {
    "services": [
      {
        "name": "Teeth Whitening",
        "description": null,
        "price": 150,
        "currency": "USD",
        "googleServiceTypeId": null
      }
    ]
  }
}
v1Recursos/Locations/deleteEliminar un servicio

Elimina un servicio por nombre y vuelve a publicar la lista restante en Google.

Eliminar un servicio

delete/api/v1/locations/{id}/services
locations:write
Parámetros de consulta
idstringobligatorio
namestringobligatorio
Nombre exacto del servicio a eliminar.
Respuesta
dataobjectopcional
servicesarray of objectopcional
namestringobligatorio
Nombre del servicio.
descriptionstringopcional
Descripción del servicio.
pricenumberopcional
Precio del servicio.
currencystringopcional
Código de moneda del precio.
googleServiceTypeIdstringopcional
ID de tipo de servicio estructurado de Google, si coincide con uno.
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.
delete/api/v1/locations/{id}/services
Su clave de API
id *
name *
{
  "data": {
    "services": []
  }
}
v1Recursos/Locations/postProgramar el archivado de una ubicación

PROGRAMA el archivado de una ubicación al final del periodo de facturación actual. La ubicación permanece totalmente activa, facturable, y sigue contando contra el límite de ubicaciones del plan hasta entonces — no se elimina nada, y programarla no libera espacio para añadir otra ubicación hasta que realmente se archive. Llame a cancel-archive para cancelarlo antes de que se produzca, o a reactivate después para recuperar la ubicación.

Programar el archivado de una ubicación

post/api/v1/locations/{id}/archive
locations:write
Parámetros de consulta
idstringobligatorio
La ubicación a programar para el archivado.
Respuesta
dataobjectopcional
scheduledbooleanopcional
Siempre true en caso de éxito.
scheduledArchiveAtstringopcional
Fecha en que se solicitó el archivado (también el token que usa cancel-archive para identificarlo), como marca de tiempo ISO 8601, o null si no hay ninguno pendiente.
archiveAtstringopcional
Cuándo se producirá realmente el archivado programado — el límite de facturación de la agencia. Null si la agencia no tiene ninguno.
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.
409La solicitud entra en conflicto con el estado actual del recurso — por ejemplo, cambiar el correo electrónico o el teléfono de un destinatario al que ya se le ha enviado un mensaje, o una invitación de equipo que ya fue aceptada (o que aún no ha sido aceptada).
429Demasiadas solicitudes. Reintente tras el número de segundos indicado en el encabezado Retry-After.
post/api/v1/locations/{id}/archive
Su clave de API
id *
{
  "data": {
    "scheduled": true,
    "scheduledArchiveAt": "2026-02-01T00:00:00.000Z",
    "archiveAt": "2026-03-01T00:00:00.000Z"
  }
}
v1Recursos/Locations/postCancelar un archivado programado

Cancela un archivado de ubicación pendiente, de modo que una ubicación programada para archivarse al final del periodo de facturación continúe con normalidad. Solo funciona mientras el archivado esté aún pendiente — una ubicación que ya se archivó debe reactivarse en su lugar.

Cancelar un archivado programado

post/api/v1/locations/{id}/cancel-archive
locations:write
Parámetros de consulta
idstringobligatorio
La ubicación cuyo archivado pendiente debe cancelarse.
Respuesta
dataobjectopcional
cancelledbooleanopcional
Siempre true en caso de éxito.
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.
409La solicitud entra en conflicto con el estado actual del recurso — por ejemplo, cambiar el correo electrónico o el teléfono de un destinatario al que ya se le ha enviado un mensaje, o una invitación de equipo que ya fue aceptada (o que aún no ha sido aceptada).
429Demasiadas solicitudes. Reintente tras el número de segundos indicado en el encabezado Retry-After.
post/api/v1/locations/{id}/cancel-archive
Su clave de API
id *
{
  "data": {
    "cancelled": true
  }
}
v1Recursos/Locations/postReactivar una ubicación archivada

Restaura una ubicación ya archivada — y todos los listados que dependen de ella — y elimina cualquier programación de archivado pendiente. Una ubicación que no está archivada actualmente es un éxito sin efecto, no un error.

Reactivar una ubicación archivada

post/api/v1/locations/{id}/reactivate
locations:write
Parámetros de consulta
idstringobligatorio
La ubicación a reactivar.
Respuesta
dataobjectopcional
archivedbooleanopcional
Si la ubicación está archivada.
cancelledScheduledPostsnumberopcional
Número de publicaciones programadas canceladas como parte de la reactivación desde un estado archivado, si las hay.
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.
post/api/v1/locations/{id}/reactivate
Su clave de API
id *
{
  "data": {
    "archived": false,
    "cancelledScheduledPosts": 0
  }
}
v1Recursos/Locations/getObtener resumen de ubicaciones

Devuelve el número agregado de ubicaciones de toda tu agencia (o de un cliente), desglosado por estado, nivel de paquete y estado de verificación.

Obtener resumen de ubicaciones

get/api/v1/locations/summary
locations:read
Parámetros de consulta
clientIdstringopcional
Limita a las ubicaciones de un cliente. Si se omite, se resumen todas las ubicaciones que tu clave puede ver. Búsquelo con GET /api/v1/clients.
tagsstringopcional
Limita a ubicaciones con alguna de estas etiquetas internas separadas por comas.
Respuesta
dataobjectopcional
totalnumberopcional
Número total de ubicaciones coincidentes.
byStatusobjectopcional
Número de ubicaciones agrupado por estado.
byVerificationobjectopcional
Número de ubicaciones agrupado por estado de verificación.
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.
429Demasiadas solicitudes. Reintente tras el número de segundos indicado en el encabezado Retry-After.
get/api/v1/locations/summary
Su clave de API
clientId
tags
{
  "data": {
    "total": 12,
    "byStatus": {
      "approved": 10,
      "pending_verification": 1,
      "archival_pending": 1
    },
    "byVerification": {
      "verified": 9,
      "pending": 1,
      "unknown": 2
    }
  }
}
v1Recursos/Locations/postCrear una etiqueta

Crea una nueva etiqueta interna, asociada a un cliente.

Crear una etiqueta

post/api/v1/locations/tags
locations:write
Cuerpo de la solicitud
clientIdstringobligatorio
El cliente al que pertenece esta etiqueta. Búsquelo con GET /api/v1/clients.
namestringobligatorio
El nombre de la etiqueta.
Respuesta
dataobjectopcional
idstringopcional
Identificador único de la etiqueta recién creada.
namestringopcional
El nombre de la etiqueta.
clientIdstringopcional
El cliente al que pertenece esta etiqueta. Búsquelo con GET /api/v1/clients.
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.
post/api/v1/locations/tags
Su clave de API
Cuerpo de la solicitud*
{
  "data": {
    "id": "tag_789",
    "name": "VIP",
    "clientId": "cli_123"
  }
}
v1Recursos/Locations/deleteEliminar una etiqueta

Elimina una etiqueta interna. Esto no elimina las ubicaciones a las que se había aplicado. locationsUnassigned en la respuesta indica cuántas ubicaciones perdieron esta etiqueta.

Eliminar una etiqueta

delete/api/v1/locations/tags/{id}
locations:write
Parámetros de consulta
idstringobligatorio
ID de la etiqueta a eliminar.
Respuesta
dataobjectopcional
locationsUnassignednumberopcional
Número de ubicaciones que tenían esta etiqueta — todas perdieron la asignación cuando se eliminó la etiqueta.
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/locations/tags/{id}
Su clave de API
id *
{
  "data": {
    "locationsUnassigned": 3
  }
}
v1Recursos/Locations/postAñadir ubicaciones a una etiqueta

Aplica una etiqueta existente a una o varias ubicaciones.

Añadir ubicaciones a una etiqueta

post/api/v1/locations/tags/{id}/locations
locations:write
Parámetros de consulta
idstringobligatorio
ID de la etiqueta.
Cuerpo de la solicitud
locationIdsarray of stringobligatorio
IDs de las ubicaciones a etiquetar.
Respuesta
dataobjectopcional
addedarray of stringopcional
IDs de las ubicaciones a las que se añadió realmente la etiqueta.
skippedarray of stringopcional
IDs de las ubicaciones omitidas porque ya tenían esta etiqueta.
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.
post/api/v1/locations/tags/{id}/locations
Su clave de API
id *
Cuerpo de la solicitud*
{
  "data": {
    "added": [
      "loc_456"
    ],
    "skipped": []
  }
}
v1Recursos/Locations/deleteQuitar una ubicación de una etiqueta

Desasocia una única ubicación, por su id, de una etiqueta.

Quitar una ubicación de una etiqueta

delete/api/v1/locations/tags/{id}/locations
locations:write
Parámetros de consulta
idstringobligatorio
ID de la etiqueta.
locationIdstringobligatorio
ID de la ubicación a desetiquetar.
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.
delete/api/v1/locations/tags/{id}/locations
Su clave de API
id *
locationId *
{}
v1Recursos/Locations/getBuscar en la taxonomía general de categorías

Busca en la taxonomía general de categorías de negocio (refleja la de Google, miles de entradas) — datos de referencia globales, no limitados a su agencia. El id devuelto es un id de Category para establecer como categoryId de una ubicación al crear o actualizar. Para el catálogo propio de un publisher específico, use en su lugar GET /api/v1/locations/publisher-categories. Omita search por completo para listar toda la taxonomía, sin límite.

Buscar en la taxonomía general de categorías

get/api/v1/locations/categories
locations:read
Parámetros de consulta
searchstringopcional
Subcadena del nombre de categoría a buscar. Omita para listar toda la taxonomía, sin límite (limit se ignora en ese caso).
limitintegeropcional
Filas a devolver, 1–100. El valor por defecto es 25.
Respuesta
dataobjectopcional
categoriesarray of objectopcional
Las categorías generales que coinciden.
idstringopcional
El Category id — envíelo como categoryId al crear o actualizar.
namestringopcional
El nombre visible de la categoría.
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.
429Demasiadas solicitudes. Reintente tras el número de segundos indicado en el encabezado Retry-After.
get/api/v1/locations/categories
Su clave de API
search
limit
{
  "data": {
    "categories": [
      {
        "id": "cat_dentist",
        "name": "Dentist"
      },
      {
        "id": "cat_orthodontist",
        "name": "Orthodontist"
      }
    ]
  }
}
v1Recursos/Locations/getBuscar en el catálogo de categorías propio de un publisher

Busca en el catálogo propio (GABF) de un publisher — datos de referencia globales, no limitados a su agencia. Use el id devuelto para publisherCategories de una ubicación al crear o actualizar. Omita query por completo para listar todo el catálogo del publisher, sin límite.

Buscar en el catálogo de categorías propio de un publisher

get/api/v1/locations/publisher-categories
locations:read
Parámetros de consulta
publisherstring (google | facebook | apple | bing)obligatorio
En qué catálogo de publisher buscar: google, apple, bing o facebook.
querystringopcional
Subcadena del nombre de categoría a buscar. Omita para listar todo el catálogo del publisher, sin límite.
countrystringopcional
País en código ISO-3166-1 alfa-2 — recomendado para apple, cuyas categorías son específicas de cada país.
Respuesta
dataobjectopcional
categoriesarray of objectopcional
Las categorías que coinciden en el catálogo propio del publisher solicitado.
idstringopcional
El id de categoría propio del publisher — envíelo en publisherCategories al crear o actualizar. Es posible null en una entrada del catálogo sin id.
displayNamestringopcional
El nombre visible de la categoría en el catálogo de ese publisher.
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/locations/publisher-categories
Su clave de API
publisher *
query
country
{
  "data": {
    "categories": [
      {
        "id": "gcid:dentist",
        "displayName": "Dentist"
      }
    ]
  }
}
v1Recursos/Locations/getListar ubicaciones con sus medios

Lista ubicaciones junto con sus fotos, empezando por las más recientes — mismos filtros que GET /api/v1/locations. Úselo para preguntas como "¿qué ubicaciones no tienen fotos?", en lugar de GET /api/v1/media, que devuelve los medios de una sola ubicación a la vez.

Listar ubicaciones con sus medios

get/api/v1/locations/media
media:read
Parámetros de consulta
clientIdstringopcional
Limita a las ubicaciones de un cliente. Obligatorio cuando su clave está limitada a clientes específicos — aquí no hay un campo de cliente por fila con el que comprobar un resultado combinado y sin límite, así que un clientId omitido se rechaza en lugar de suponerse. Búsquelo con GET /api/v1/clients.
searchstringopcional
Búsqueda de texto libre sobre el nombre, la dirección postal, la ciudad o el teléfono de la ubicación (sin distinguir mayúsculas, coincidencias parciales permitidas).
statusstring (all | active | archived | archival_pending | verification_pending | unapproved | requires_action)opcional
Un único grupo de estado: all, active (no archivada), archived, archival_pending, verification_pending (aprobación de Google pendiente), unapproved o requires_action. El valor por defecto es all.
tagsarray of stringopcional
Etiquetas internas — coincide con una ubicación que tenga alguna de estas.
categoriesarray of stringopcional
Nombres visibles de categoría — coincide con una ubicación cuya categoría general o de Google sea alguna de estas.
verificationarray of string (verified | pending | unverified | unknown)opcional
Estado de verificación de Google: verified, pending, unverified o unknown.
createdAfterstringopcional
Solo ubicaciones creadas en esta fecha o después.
createdBeforestringopcional
Solo ubicaciones creadas en esta fecha o antes.
cursorstringopcional
Cursor de paginación del nextCursor de una respuesta anterior. Déjelo vacío para la primera página.
limitintegeropcional
Ubicaciones a devolver por página, 1–100. El valor por defecto es 100.
Respuesta
dataobjectopcional
locationsarray of objectopcional
Las ubicaciones que coinciden en esta página.
idstringopcional
Identificador único de la ubicación.
namestringopcional
El nombre comercial de la ubicación.
logoUrlstringopcional
URL del logo de la ubicación, o null.
mediaByCategoryobjectopcional
Elementos multimedia agrupados por categoría (p. ej. EXTERIOR, INTERIOR, FOOD_AND_DRINK, LOGO, TEAMS). Cada elemento tiene una url y, opcionalmente, un label, un kind (PHOTO o VIDEO), una source, un indicador starred y un assetKey.
totalnumberopcional
Número total de fotos en todas las categorías de esta ubicación.
nextCursorstringopcional
Cursor de paginación para la siguiente página, o null cuando no hay más resultados.
totalnumberopcional
Número total de ubicaciones que coinciden con los filtros, en todas las páginas.
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/locations/media
Su clave de API
clientId
search
status
tags
categories
verification
createdAfter
createdBefore
cursor
limit
{
  "data": {
    "locations": [
      {
        "id": "loc_456",
        "name": "Acme Dental — Downtown",
        "logoUrl": null,
        "mediaByCategory": {
          "EXTERIOR": [
            {
              "url": "https://cdn.synup.com/media/1.jpg"
            }
          ]
        },
        "total": 1
      }
    ],
    "nextCursor": null,
    "total": 1
  }
}
v1Recursos/Locations/postSubir fotos a una ubicación

Añade una o más fotos a una ubicación, en una categoría dada. Proporcione cada imagen como una URL https pública (que se obtiene y se vuelve a alojar) o como bytes en base64. Solo se admiten imágenes (jpeg, png, gif, webp), de hasta 5 MB cada una. La categoría LOGO contiene un único logo — subir una a LOGO reemplaza la actual. Cualquier otra categoría añade a la lista existente. Las fotos guardadas se ponen en cola automáticamente para publicarse en Google.

Subir fotos a una ubicación

post/api/v1/locations/{id}/media
locations:write
Parámetros de consulta
idstringobligatorio
La ubicación a la que añadir fotos.
Cuerpo de la solicitud
categorystring (COVER | PROFILE | LOGO | EXTERIOR | INTERIOR | PRODUCT | FOOD_AND_DRINK | MENU | AT_WORK | TEAMS | ROOMS | COMMON_AREA | ADDITIONAL)obligatorio
La categoría de foto a la que añadir. LOGO reemplaza el logo actual; cualquier otra categoría añade a la lista.
imagesarray of objectobligatorio
Una o más imágenes a añadir. Cada una necesita una url o base64.
urlstringopcional
Una URL https pública de la imagen — se obtiene y se vuelve a alojar.
base64stringopcional
Los bytes de la imagen en base64 (se acepta un prefijo de URL data:). Úselo en lugar de url cuando disponga de los bytes.
labelstringopcional
Leyenda o etiqueta opcional para la foto.
Respuesta
dataobjectopcional
mediaByCategoryobjectopcional
Elementos multimedia agrupados por categoría (p. ej. EXTERIOR, INTERIOR, FOOD_AND_DRINK, LOGO, TEAMS). Cada elemento tiene una url y, opcionalmente, un label, un kind (PHOTO o VIDEO), una source, un indicador starred y un assetKey.
addedarray of objectopcional
Las fotos que se añadieron realmente, cada una con la categoría en la que quedó y su URL alojada.
categorystringopcional
urlstringopcional
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/locations/{id}/media
Su clave de API
id *
Cuerpo de la solicitud*
{
  "data": {
    "mediaByCategory": {
      "EXTERIOR": [
        {
          "url": "https://cdn.synup.com/media/1.jpg",
          "source": "agent_upload"
        }
      ]
    },
    "added": [
      {
        "category": "EXTERIOR",
        "url": "https://cdn.synup.com/media/1.jpg"
      }
    ]
  }
}
v1Recursos/Locations/deleteEliminar las fotos de una ubicación

Elimina fotos de una ubicación. Envíe urls para eliminar fotos específicas, o category para vaciar toda una categoría. El logo nunca puede eliminarse mediante este endpoint — ni por url ni por category — suba en su lugar una nueva imagen LOGO para reemplazarlo. Esto elimina las fotos en la aplicación; no las elimina de Google.

Eliminar las fotos de una ubicación

delete/api/v1/locations/{id}/media
locations:write
Parámetros de consulta
idstringobligatorio
La ubicación de la que eliminar fotos.
Cuerpo de la solicitud
urlsarray of stringopcional
URLs de fotos específicas a eliminar (del mediaByCategory de una ubicación).
categorystring (COVER | PROFILE | EXTERIOR | INTERIOR | PRODUCT | FOOD_AND_DRINK | MENU | AT_WORK | TEAMS | ROOMS | COMMON_AREA | ADDITIONAL)opcional
Vacía todas las fotos de esta categoría. LOGO no es un valor permitido — el logo no puede eliminarse.
Respuesta
dataobjectopcional
mediaByCategoryobjectopcional
Elementos multimedia agrupados por categoría (p. ej. EXTERIOR, INTERIOR, FOOD_AND_DRINK, LOGO, TEAMS). Cada elemento tiene una url y, opcionalmente, un label, un kind (PHOTO o VIDEO), una source, un indicador starred y un assetKey.
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.
delete/api/v1/locations/{id}/media
Su clave de API
id *
Cuerpo de la solicitud
{
  "data": {
    "mediaByCategory": {
      "EXTERIOR": []
    },
    "removed": [
      "https://cdn.synup.com/media/1.jpg"
    ]
  }
}