Publicá y mantené tu catálogo al día por API: creá una clave desde tu perfil y empezá a publicar en minutos.
La API no viene prendida: la habilitás vos, una vez. Recién ahí te aparece la sección "Desarrolladores" en tu perfil y podés crear claves.
Cargando...
La API pública de Altatienda te deja hacer, desde tu propio sistema, lo mismo que hacés a mano en la web: publicar productos, mantenerlos actualizados (precio, stock, fotos) y consultar el estado de tu catálogo. Está pensada para conectar un sistema de gestión, un e-commerce propio o un script de sincronización periódica.
Todo pasa por HTTPS y se autentica con una clave de API que generás vos desde tu perfil.
La API no viene prendida: primero habilitala en tu cuenta. Después, desde /profile/developers, creá una clave con los scopes que necesites. El valor de la clave se muestra una sola vez: guardala en un lugar seguro.
Con GET /v1/me confirmás que la clave funciona y qué scopes tiene:
curl https://api.altatienda.com.ar/v1/me \ -H "Authorization: Bearer at_live_…"
Primero subís la foto por URL con POST /v1/media/images/from-url (necesita el scope media:write):
curl -X POST https://api.altatienda.com.ar/v1/media/images/from-url \
-H "Authorization: Bearer at_live_…" \
-H "Content-Type: application/json" \
-d '{"url": "https://tu-catalogo.com/fotos/zapatilla.jpg"}'Y con el id que te devuelve, creás la publicación con POST /v1/items (scope items:write). El external_reference es tu SKU: lo vas a usar después para sincronizar sin duplicar publicaciones.
curl -X POST https://api.altatienda.com.ar/v1/items \
-H "Authorization: Bearer at_live_…" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: $(uuidgen)" \
-d '{
"title": "Zapatillas urbanas talle 42",
"description": "",
"unit_price": 45000,
"condition_code": "NEW",
"media": ["<id devuelto por /v1/media/images/from-url>"],
"external_reference": "SKU-12345"
}'Para no llevar un mapeo de ids propio, usá PUT /v1/items/by-external-reference/{ref}: si no existe una publicación con ese external_reference la crea, y si existe le aplica los cambios (equivalente a un PATCH). Es la base recomendada para sincronizar un catálogo entero de forma idempotente.
curl -X PUT https://api.altatienda.com.ar/v1/items/by-external-reference/SKU-12345 \
-H "Authorization: Bearer at_live_…" \
-H "Content-Type: application/json" \
-d '{
"title": "Zapatillas urbanas talle 42",
"unit_price": 42900
}'Cuando un producto se queda sin stock, pausalo en vez de borrarlo con POST /v1/items/{id}/pause; podés reactivarlo después con /activate cuando vuelva a haber stock.
curl -X POST https://api.altatienda.com.ar/v1/items/ITEM_ID/pause \ -H "Authorization: Bearer at_live_…"
Si cargás miles de productos, mandá "listing_priority": "low" en cada publicación: esas publicaciones aparecen siempre debajo de las de prioridad normal en la búsqueda, las categorías, "Cerca tuyo" y las filas de la home, para no tapar a las personas que venden de a una. Si alguien ordena explícitamente (por precio o por más nuevas), ese orden se respeta igual. El valor por defecto es normal y la prioridad solo sirve para bajar lo tuyo: no hay forma de subir por encima del resto. Los únicos valores válidos son normal y low; cualquier otro devuelve 400 validation_error.
curl -X PUT https://api.altatienda.com.ar/v1/items/by-external-reference/SKU-12345 \
-H "Authorization: Bearer at_live_…" \
-H "Content-Type: application/json" \
-d '{
"title": "Zapatillas urbanas talle 42",
"unit_price": 42900,
"listing_priority": "low"
}'Para actualizar precios todos los días, el mismo upsert por external_reference alcanza: mandá solo unit_price (y lo que haya cambiado) en cada corrida; los campos que no mandás quedan como estaban.
Mandá la clave en el header Authorization: Bearer at_live_…. Nunca la mandes por query string. Cada clave tiene uno o más scopes, y un pedido que necesita un scope que la clave no tiene devuelve 403 insufficient_scope.
profile:read — leer tu perfil público.
items:read — leer tus publicaciones.
items:write — crear y editar tus publicaciones.
media:write — subir fotos.
Cada clave tiene un límite de 300 pedidos por minuto (30 por minuto para subir fotos). Todas las respuestas incluyen X-RateLimit-Limit, X-RateLimit-Remaining y X-RateLimit-Reset; si te pasás, la respuesta es 429 con el header Retry-After.
Para no duplicar publicaciones si reintentás un pedido, mandá un header Idempotency-Key (un UUID por intento lógico) en POST /v1/items: si repetís la misma key dentro de las 24 horas, te devuelve el mismo resultado en vez de crear otra publicación.
Los errores siempre tienen esta forma, con un código estable para que puedas manejarlos por código y no por el texto del mensaje:
{
"error": {
"code": "insufficient_scope",
"message": "La clave no tiene el scope items:write",
"details": null
}
}Códigos más comunes: invalid_api_key (clave inválida o revocada), insufficient_scope (falta un scope), rate_limited (superaste el límite), validation_error (el cuerpo del pedido no es válido), not_found (el recurso no existe o no es tuyo) y seller_not_verified (para activar una publicación necesitás la identidad verificada, igual que en la web).
Todos los endpoints, con sus parámetros y ejemplos, generados a partir del openapi.json de la API.
Cargando la referencia interactiva...
Son cortos a propósito. Al habilitar la API en tu cuenta aceptás esto:
Uso permitido. La API es para administrar tus propias publicaciones y tu propio catálogo: crearlas, editarlas, pausarlas y consultarlas.
Límites. Respetá el rate limit publicado (300 pedidos por minuto, 30 para subir fotos). No lo esquives con varias claves ni con varias cuentas.
Nada de scrapear datos de terceros. No uses la API para juntar, copiar o revender publicaciones, precios o datos de otros vendedores o de sus compradores.
Tus claves son personales e intransferibles. Lo que pasa con una clave tuya es responsabilidad tuya: no la compartas ni la publiques, y si se te filtró, revocala.
Podemos revocar ante abuso. Si una clave rompe estas reglas, afecta el servicio o se usa para algo ilegal, la revocamos sin aviso previo.
Sin garantía de disponibilidad. La API se ofrece tal cual está: puede cambiar, tener cortes o interrupciones. Avisamos los cambios que rompen compatibilidad cuando podemos, pero no garantizamos un nivel de servicio.