La API Graph de Instagram se puede utilizar para crear y administrar etiquetas de productos de compras en Instagram en el contenido multimedia de Instagram de una cuenta de Instagram para empresas.
Nota: A partir del 10 de agosto de 2023, las empresas cuyas tiendas no tengan activada la finalización de compra no podrán etiquetar los productos con la API de publicación de contenido. Este cambio afectará tanto a la API como a las interfaces nativas y las etiquetas de los productos se eliminarán de las publicaciones anteriores. Los clientes podrán seguir etiquetando los productos de las tiendas que tengan activada la finalización de compra en Facebook e Instagram. Puedes seguir consultando el campo shopping_product_tag_eligibility
para comprobar si una cuenta de Instagram cumple los requisitos para etiquetar los productos con la API de publicación de contenido.
El proceso general de etiquetado de productos es el siguiente:
instagram_shopping_tag_products
y catalog_management
(que son necesarios para varios extremos de etiquetado de productos), la aplicación debe estar asociada a una empresa verificada.GET /{ig-user-id}
: comprueba la idoneidad del etiquetado de un usuario de la aplicación.GET /{ig-user-id}/available_catalogs
: obtén una lista de los catálogos de productos de un usuario de la aplicación.GET /{ig-user-id}/catalog_product_search
: obtén una lista de los productos que cumplen los requisitos de las etiquetas del catálogo de un usuario de la aplicación.POST /{ig-user-id}/media
: crea un contenedor de archivos multimedia etiquetados (paso 1 del proceso de publicación).POST /{ig-user-id}/media_publish
: publica un contenedor de archivos multimedia etiquetados (paso 2 del proceso de publicación).GET /{ig-media-id}/product_tags
: obtén las etiquetas del contenido multimedia de Instagram publicado.DELETE /{ig-media-id}/product_tags
: elimina las etiquetas del contenido multimedia de Instagram publicado.POST /{ig-media-id}/product_tags
: crea o actualiza las etiquetas del contenido multimedia de Instagram publicado.GET /{ig-user-id}/product_appeal
: obtén la información de apelación de un producto.POST /{ig-user-id}/product_appeal
: apela el rechazo de un producto.GET /{ig-media-id}/children
: obtén una lista de los objetos multimedia dependientes de Instagram de un contenido multimedia de Instagram por secuencia.Solicita el campo shopping_product_tag_eligibility
en el extremo de usuario de Instagram para determinar si la cuenta de Instagram de la empresa ha configurado una Tienda de Instagram. Las cuentas que no hayan configurado una Tienda de Instagram no cumplen los requisitos del etiquetado de productos.
GET /{ig-user-id}?fields=shopping_product_tag_eligibility
Devuelve true
si la cuenta de Instagram de la empresa se ha asociado a una tienda de Instagram aprobada de Business Manager; en caso contrario, devuelve false
.
curl -i -X GET \
"https://graph.facebook.com/v19.0
/90010177253934?fields=shopping_product_tag_eligibility&access_token=EAAOc..."
{ "shopping_product_tag_eligibility": true, "id": "90010177253934" }
Usa el extremo de los catálogos disponibles del usuario de Instagram para obtener el catálogo de productos de la cuenta de Instagram de la empresa.
GET /{ig-user-id}/available_catalogs
Devuelve una matriz de catálogos y los metadatos correspondientes. En las respuestas, se pueden incluir los siguientes campos de catálogo:
catalog_id
: identificador del catálogo.catalog_name
: nombre del catálogo.shop_name
: nombre de la tienda.product_count
: número total de productos del catálogo.No se admiten los catálogos colaborativos, como los catálogos de socios de compras o los catálogos de creadores afiliados.
curl -i -X GET \
"https://graph.facebook.com/v19.0
/90010177253934?fields=available_catalogs&access_token=EAAOc..."
{ "available_catalogs": { "data": [ { "catalog_id": "960179311066902", "catalog_name": "Jay's Favorite Snacks", "shop_name": "Jay's Bespoke", "product_count": 11 } ] }, "id": "90010177253934" }
Utiliza el extremo de búsqueda de productos en el catálogo de un usuario de Instagram para obtener una colección de productos del catálogo que se pueden usar para etiquetar contenido multimedia. Se admiten las variantes de productos.
Aunque la API no devolverá ningún error al realizar una publicación etiquetada con un producto no aprobado, la etiqueta no aparecerá en la publicación hasta que el producto se haya aprobado. Por lo tanto, te recomendamos que solo permitas a los usuarios de la aplicación realizar publicaciones con etiquetas cuyos productos tengan el valor approved
en la propiedad review_status
. Este campo se devuelve para cada producto de forma predeterminada al obtener los productos de un usuario de la aplicación que cumplen los requisitos.
GET /{ig-user-id}/catalog_product_search
catalog_id
: (obligatorio) identificador del catálogo.q
: cadena que se va a buscar en el nombre de cada producto o número de SKU de un producto (la columna Identificador de contenido de la interfaz de administración de catálogos). Si no se especifica ninguna cadena, se devolverán todos los productos que cumplan los requisitos de las etiquetas. Devuelve un objeto que contiene una matriz de productos que cumplen los requisitos de las etiquetas y los metadatos correspondientes. Admite la paginación basada en cursores. En las respuestas, se pueden incluir los siguientes campos de producto:
image_url
: URL de la imagen del producto.is_checkout_flow
: si el valor es true
, el producto se puede comprar directamente en la aplicación de Instagram. Si el valor es false
, el producto se debe comprar en la aplicación o el sitio web del usuario de la aplicación.merchant_id
: identificador del comerciante.product_id
: identificador del producto.product_name
: nombre del producto.retailer_id
: identificador del minorista.review_status
: estado de la revisión. Los valores pueden ser approved
, outdated
, pending
y rejected
. Un producto aprobado puede aparecer en la Tienda de Instagram de un usuario de la aplicación, pero un estado aprobado no indica su disponibilidad (es decir, el producto podría estar agotado). En las publicaciones, solo pueden aparecer etiquetas asociadas a productos que tengan el valor approved
en la propiedad review_status
.product_variants
: identificadores de productos (product_id
) y nombres (variant_name
) de variantes de productos.
curl -i -X GET \
"https://graph.facebook.com/v19.0
/90010177253934/catalog_product_search?catalog_id=960179311066902&q=gummy&access_token=EAAOc..."
{ "data": [ { "product_id": 3231775643511089, "merchant_id": 90010177253934, "product_name": "Gummy Wombats", "image_url": "https://scont...", "retailer_id": "oh59p9vzei", "review_status": "approved", "is_checkout_flow": true, "product_variants": [ { "product_id": 5209223099160494 }, { "product_id": 7478222675582505, "variant_name": "Green Gummy Wombats" } ] } ] }
Utiliza el extremo de contenido multimedia de usuario de Instagram a fin de crear un contenedor de archivos multimedia para una imagen o un vídeo. Como alternativa, puedes consultar Crear un contenedor de archivos multimedia etiquetados para Reels o Secuencias.
POST /{ig-user-id}/media
image_url
: (obligatorio solo para imágenes) ruta de la imagen. La imagen debe estar en un servidor público.user_tags
: (solo imágenes) matriz de nombres de usuario públicos y coordenadas x/y para cualquier usuario de Instagram público que quieras etiquetar en la imagen. La matriz debe estar en formato JSON e incluir las propiedades username
, x
e y
. Por ejemplo, [{username:'natgeo',x:0.5,y:1.0}]
. Los valores de x
e y
deben ser flotantes y originarse en la esquina superior izquierda de la imagen, con un intervalo entre 0.0
y 1.0
. Los usuarios etiquetados recibirán una notificación cuando se publique el contenido multimedia.video_url
: (obligatorio solo para vídeos) ruta del vídeo. El vídeo debe estar en un servidor público.thumb_offset
: (solo vídeos) ubicación, en milisegundos, del fotograma para la imagen en miniatura de la portada del vídeo. El valor predeterminado es 0
, que es el primer fotograma del vídeo.product_tags
: (obligatorio) matriz de objetos que especifican las etiquetas de producto que se van a añadir a la imagen o el vídeo. Puedes especificar hasta 20 etiquetas para publicaciones con foto o vídeo en el feed y hasta 20 etiquetas en total por cada publicación de secuencia (hasta cinco por diapositiva).
product_id
: (obligatorio) identificador del producto.x
: (solo imágenes) valor flotante que indica la distancia en porcentaje desde el borde izquierdo de la imagen del contenido multimedia publicado. El valor debe estar comprendido en el intervalo entre 0.0
y 1.0
.y
: (solo imágenes) valor flotante que indica la distancia en porcentaje desde el borde superior de la imagen del contenido multimedia publicado. El valor debe estar comprendido en el intervalo entre 0.0
y 1.0
.Si la operación se realiza correctamente, la API devuelve un identificador de contenedor que se puede usar para publicar el contenedor.
curl -i -X POST \
"https://graph.facebook.com/v19.0
/90010177253934/media?image_url=https%3A%2F%2Fupl...&location_id=7640348500&product_tags=%5B%0A%20%20%7B%0A%20%20%20%20product_id%3A'3231775643511089'%2C%0A%20%20%20%20x%3A%200.5%2C%0A%20%20%20%20y%3A%200.8%0A%20%20%7D%0A%5D&access_token=EAAOc..."
A modo de referencia, a continuación se incluye la cadena de la carga útil de la solicitud POST en código HTML descodificado:
https://graph.facebook.com/v12.0/90010177253934/media?image_url=https://upl...&location_id=7640348500 &product_tags=[ { product_id:'3231775643511089', x: 0.5, y: 0.8 } ]&access_token=EAAOc...
{ "id": "17969578066508312" }
Utiliza el extremo de contenido multimedia de usuario de Instagram a fin de crear un contenedor de archivos multimedia para Reels. Como alternativa, puedes consultar Crear un contenedor de archivos multimedia etiquetados o Secuencias.
POST /{ig-user-id}/media
media_type
: debes especificar el tipo de contenido multimedia REELS
.video_url
: ruta del vídeo para el reel. El vídeo debe estar en un servidor público. El vídeo debe cumplir las especificaciones de los reels.thumb_offset
: ubicación, en milisegundos, del fotograma para la imagen en miniatura de la portada del vídeo. El valor predeterminado es 0
, que es el primer fotograma del vídeo.caption
: texto para el reel.product_tags
: (obligatorio) matriz de objetos que especifican las etiquetas de producto que se van a añadir al reel. Puedes especificar hasta 30 etiquetas; las etiquetas y los identificadores de producto deben ser únicos. Se admiten las etiquetas para productos agotados. Cada objeto debe tener la información siguiente:product_id
: (obligatorio) identificador del producto.location_id
: identificador de una página asociado a una ubicación con la que quieres etiquetar el vídeo. Para obtener información detallada, consulta Parámetros de la cadena de consulta de contenido multimedia de usuario de Instagram.share_to_feed
: se establece en true
para solicitar que el vídeo aparezca en las pestañas “Sección de noticias” y “Reels”, y en false
para solicitar que aparezca solo en la pestaña “Reels”.access_token
: tu identificador de acceso de usuario.Si la operación se realiza correctamente, la API devuelve un identificador de contenedor que se puede usar para publicar el contenedor.
curl -i -X POST \
"https://graph.facebook.com/v19.0
/90010177253934/media?media_type=REELS&video_url=https://upl...&product_tags=%5B%0A%20%20%7B%0A%20%20%20%20product_id%3A'3231775643511089'%0A%20%20%7D%0A%5D&access_token=EAAOc..."
A modo de referencia, a continuación se incluye la cadena de la carga útil de la solicitud POST en código HTML descodificado:
https://graph.facebook.com/v12.0/90010177253934/media?media_type=REELS&video_url=https://upl... &product_tags=[ { product_id:'3231775643511089' } ]&access_token=EAAOc...
{ "id": "17969578066508312" }
Utiliza el extremo de publicación de contenido multimedia de usuario de Instagram para publicar el contenedor de archivos multimedia etiquetados. Puedes publicar un máximo de 25 contenedores de archivos multimedia etiquetados en nombre de un usuario de la aplicación por cada periodo dinámico de 24 horas. Si vas a publicar una secuencia, consulta Secuencias. En las publicaciones, solo aparecerán productos que tengan el valor approved
en la propiedad review_status
. Si alguno de estos productos está agotado, sus etiquetas seguirán apareciendo en la publicación.
POST /{ig-user-id}/media_publish
creation_id
: (obligatorio) identificador del contenedor de la secuencia.Si la operación se realiza correctamente, la API devolverá un identificador de contenido multimedia de Instagram.
curl -i -X POST \
"https://graph.facebook.com/v19.0
/90010177253934/media_publish?creation_id=17969578066508312&access_token=EAAOc"
{ "id": "90010778325754" }
Utiliza el extremo de etiquetas de productos de contenido multimedia de Instagram para obtener las etiquetas de un contenido multimedia publicado.
GET /{ig-media-id}/product_tags
Devuelve una matriz de etiquetas de productos y los metadatos correspondientes de un contenido multimedia de Instagram. En las respuestas, se pueden incluir los siguientes campos de etiquetas de productos:
product_id
: identificador del producto.merchant_id
: identificador del comerciante.name
: nombre del producto.price_string
: precio del producto.image_url
: URL de la imagen del producto.review_status
: indica el estado de idoneidad de la etiqueta de producto. Los valores pueden ser los siguientes:approved
: el producto se ha aprobado.rejected
: el producto se ha rechazado.pending
: todavía se está revisando.outdated
: el producto se ha aprobado, pero se ha editado y es necesario volver a aprobarlo.""
: sin estado de revisión.no_review
: sin estado de revisión.is_checkout
: si el valor es true
, el producto se puede comprar directamente a través de la aplicación Instagram. Si el valor es false
, el producto solo se puede comprar en el sitio web del comerciante.stripped_price_string
: cadena corta del precio del producto (precio mostrado en espacios limitados, como $100
en lugar de 100 USD
).string_sale_price_string
: precio de oferta del producto.x
: valor flotante que indica la distancia en porcentaje desde el borde izquierdo de la imagen del contenido multimedia. Valor comprendido en el intervalo entre 0.0
y 1.0
.y
: valor flotante que indica la distancia en porcentaje desde el borde superior de la imagen del contenido multimedia. Valor comprendido en el intervalo entre 0.0
y 1.0
.
curl -i -X GET \
"https://graph.facebook.com/v19.0
/90010778325754/product_tags?access_token=EAAOc..."
{ "data": [ { "product_id": 3231775643511089, "merchant_id": 90010177253934, "name": "Gummy Wombats", "price_string": "$3.50", "image_url": "https://scont...", "review_status": "approved", "is_checkout": true, "stripped_price_string": "$3.50", "x": 0.5, "y": 0.80000001192093 } ] }
Utiliza el extremo de etiquetas de productos de contenido multimedia de Instagram para crear o actualizar las etiquetas del contenido multimedia de Instagram existente.
POST /{ig-media-id}/product_tags
updated_tags
: (obligatorio) matriz de objetos que especifica las etiquetas de productos con las que etiquetar la imagen o el vídeo (máximo cinco; las etiquetas y los identificadores de productos deben ser únicos). Cada objeto debe tener la información siguiente:product_id
: (obligatorio) identificador del producto. Si el contenido multimedia de Instagram no se ha etiquetado con este identificador, la etiqueta se añadirá al contenido multimedia de Instagram. Si el contenido multimedia ya se ha etiquetado con este identificador, se actualizarán las coordenadas de visualización de la etiqueta.x
: (solo imágenes, obligatorio) valor flotante que indica la distancia en porcentaje desde el borde izquierdo de la imagen del contenido multimedia publicado. El valor debe estar comprendido en el intervalo entre 0.0
y 1.0
.y
: (solo imágenes, obligatorio) valor flotante que indica la distancia en porcentaje desde el borde superior de la imagen del contenido multimedia publicado. El valor debe estar comprendido en el intervalo entre 0.0
y 1.0
.El etiquetado de contenido multimedia se suma hasta alcanzar el límite de cinco etiquetas. Si el contenido multimedia de destino ya se ha etiquetado mediante un producto de la solicitud, los valores antiguos de x
e y
de la etiqueta se actualizarán con los nuevos valores (no se añadirá una nueva etiqueta).
Devuelve true
si el producto se puede actualizar; de lo contrario, devuelve false
.
curl -i -X POST \
"https://graph.facebook.com/v19.0
/90010778325754/product_tags?updated_tags=%5B%0A%20%20%7B%0A%20%20%20%20product_id%3A'3859448974125379'%2C%0A%20%20%20%20x%3A%200.5%2C%0A%20%20%20%20y%3A%200.8%0A%20%20%7D%0A%5D&access_token=EAAOc..."
A modo de referencia, a continuación se incluye la cadena de la carga útil de la solicitud POST en código HTML descodificado:
https://graph.facebook.com/v12.0/90010778325754/product_tags?updated_tags=[ { product_id:'3859448974125379', x: 0.5, y: 0.8 } ]&access_token=EAAOc...
{ "success": true }
Utiliza el extremo de etiquetas de productos de contenido multimedia de Instagram para eliminar las etiquetas de un contenido multimedia de Instagram publicado (reels incluidos).
DELETE /{ig-media-id}/product_tags
deleted_tags
: (obligatorio) matriz que contiene la siguiente información para cada etiqueta de producto que se va a eliminar:merchant_id
: (obligatorio) identificador del comerciante.product_id
: (obligatorio) identificador del producto.Devuelve true
si la etiqueta se elimina correctamente; de lo contrario, devuelve false
.
curl -i -X DELETE \
"https://graph.facebook.com/v19.0
/90010778325754/product_tags?deleted_tags=%5B%0A%20%20%7B%0A%20%20%20%20product_id%3A'3859448974125379'%2C%0A%20%20%20%20merchant_id%3A'90010177253934'%0A%20%20%7D%0A%5D&access_token=EAAOc..."
A modo de referencia, a continuación se incluye la cadena de la carga útil de la solicitud POST en código HTML descodificado:
https://graph.facebook.com/v12.0/90010778325754/product_tags?deleted_tags=[ { product_id:'3859448974125379', merchant_id:'90010177253934' } ]&access_token=EAAOc...
{ "success": true }
Utiliza el extremo de apelación de un producto de usuario de Instagram si quieres proporcionar una forma para que los usuarios de la aplicación apelen los rechazos de productos (las etiquetas de los productos rechazados no aparecerán en las publicaciones). Aunque no es obligatorio, te sugerimos que proporciones una forma para que los usuarios de la aplicación apelen los rechazos o que les recomiendes apelar los rechazos mediante Business Manager.
POST /{ig-user-id}/product_appeal
appeal_reason
: (obligatorio) explicación de por qué se debería aprobar el producto.product_id
: (obligatorio) identificador del producto.Devuelve true
si pudimos recibir tu solicitud; de lo contrario, devuelve false
. El resultado de la apelación no se indica en la respuesta.
curl -i -X POST \
"https://graph.facebook.com/v19.0
/90010177253934/product_appeal?appeal_reason=product%20is%20a%20toy%20and%20not%20a%20real%20weapon&product_id=4382881195057752&access_token=EAAOc..."
{ "success": true }
Utiliza el extremo de apelación de productos de un usuario de Instagram para obtener el estado de la apelación de un producto rechazado determinado:
GET /{ig-user-id}/product_appeal
product_id
: (obligatorio) identificador del producto.Devuelve los metadatos del estado de una apelación. En las respuestas, se pueden incluir los siguientes campos de apelación:
eligible_for_appeal
: indica si la decisión se puede apelar (si el valor es true
, se puede apelar, pero si el valor es false
, no).product_id
: identificador del producto.review_status
: estado de la revisión. El valor puede ser uno de los siguientes:approved
: el producto se ha aprobado.rejected
: el producto se ha rechazado.pending
: todavía se está revisando.outdated
: el producto se ha aprobado, pero se ha editado y es necesario volver a aprobarlo.""
: sin estado de revisión.no_review
: sin estado de revisión.
curl -i -X GET \
"https://graph.facebook.com/v19.0
/90010177253934/product_appeal?product_id=4029274203846188&access_token=EAAOc..."
{ "data": [ { "product_id": 4029274203846188, "review_status": "approved", "eligible_for_appeal": false } ] }
Puedes publicar secuencias (álbumes) que incluyan un máximo de diez archivos multimedia etiquetados (imágenes, vídeos o una combinación de ambos). Para ello, en el paso 1 de 3 del proceso de publicación de una secuencia, crea contenedores de contenido multimedia etiquetado para cada imagen o vídeo etiquetado que quieras que aparezca en la secuencia del álbum y sigue con el proceso de publicación de la secuencia como lo harías normalmente.
Para obtener los identificadores del contenido multimedia de Instagram de una secuencia de álbum, utiliza el extremo de objetos multimedia dependientes de Instagram.