API para Desarrolladores

Integra PUBLIX con tu CRM, portal inmobiliario o app. Crea y gestiona propiedades, genera contenido con IA y publica a redes sociales via REST API.

Como funciona

La API publica de PUBLIX te permite automatizar todo el flujo de contenido inmobiliario: crear propiedades, generar descripciones con IA, imagenes, PDFs, videos y publicar a redes sociales. Todo con una simple API REST autenticada con API keys.

Configuracion en 3 pasos

1

Genera tu API Key

Anda a la pestana API Keys y crea una nueva key. Guardala en un lugar seguro, no se puede recuperar despues.

2

Hace tu primer request

Usa tu key en el header X-API-Key o Authorization: Bearer pk_...

curl
curl -X GET https://publix.ar/api/v1/account \
  -H "X-API-Key: pk_live_TU_API_KEY"
3

Crea tu primer listing

Envia los datos de la propiedad como JSON y PUBLIX genera todo el contenido.

curl
curl -X POST https://publix.ar/api/v1/listings \
  -H "X-API-Key: pk_live_TU_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "tipo_propiedad": "Departamento",
    "tipo_operacion": "Venta",
    "direccion": "Av. Corrientes 1234, Piso 5",
    "ciudad": "CABA",
    "provincia": "Buenos Aires",
    "precio": 150000,
    "moneda": "USD",
    "dormitorios": 2,
    "banos": 1,
    "metros_cubiertos": 75,
    "agente_nombre": "Tu Nombre",
    "agente_telefono": "+54 11 1234-5678",
    "agente_email": "tu@email.com"
  }'

Formato de respuesta

Todas las respuestas siguen el mismo formato:

json
// Exito
{ "ok": true, "data": { ... } }

// Error
{ "ok": false, "error": "Mensaje de error" }

// Lista paginada
{
  "ok": true,
  "data": [ ... ],
  "pagination": {
    "total": 42,
    "page": 1,
    "limit": 20,
    "pages": 3
  }
}

Autenticacion

Todas las requests a /api/v1/* requieren una API key. Dos formas de enviarla:

headers
# Opcion 1: Header dedicado
X-API-Key: pk_live_abc123...

# Opcion 2: Bearer token
Authorization: Bearer pk_live_abc123...

Las keys empiezan con pk_live_ (produccion) o pk_test_ (desarrollo). Cada usuario puede tener hasta 5 keys activas.

Crear nueva API Key

Dale un nombre descriptivo para identificarla (ej: "CRM Produccion", "Portal Web").

Guarda esta key ahora. No se puede recuperar despues.

Mis API Keys

Cargando...

Base URL: https://publix.ar/api/v1

Todos los endpoints requieren autenticacion via API key.

Cuenta

GET /account Info de cuenta, plan, uso del mes y rate limits
GET /account/usage?days=7 Historial de requests a la API (ultimos N dias)

API Keys (requieren JWT, no API key)

POST /keys Crear nueva API key
GET /keys Listar mis API keys
DELETE /keys/{key_id} Revocar una API key

Listings

POST /listings Crear listing con datos JSON
GET /listings Listar mis listings (paginado, filtros)
GET /listings/{id} Detalle de un listing + contenido generado
PUT /listings/{id} Actualizar campos de un listing
DELETE /listings/{id} Eliminar listing (soft delete)
POST /listings/{id}/photos Subir fotos a un listing

Generar contenido

POST /listings/{id}/generate/text Descripcion profesional + copy Instagram con IA
POST /listings/{id}/generate/image Imagen 1080x1080 para redes
POST /listings/{id}/generate/pdf PDF profesional de la propiedad
POST /listings/{id}/generate/video Video reel (async, 30-120s)
POST /listings/{id}/generate/all Texto + PDF + imagen (NO video)

Publicar

POST /listings/{id}/publish/{platform} Publicar a Instagram, TikTok, Facebook, YouTube, Twitter, LinkedIn
GET /listings/{id}/publish/status Estado de publicacion en cada plataforma

Descargar archivos

GET /listings/{id}/download/{type} Descargar PDF, imagen, video o audio generado

Schema de un listing (campos del POST)

json
{
  "tipo_propiedad": "Departamento",    // Casa, Departamento, PH, Local, Oficina, Terreno, Cochera, Galpon
  "tipo_operacion": "Venta",            // Venta, Alquiler, Alquiler temporal
  "direccion": "Av. Corrientes 1234",    // requerido
  "ciudad": "CABA",                      // requerido
  "provincia": "Buenos Aires",            // requerido, ver lista completa abajo
  "barrio": "Palermo",                   // opcional
  "precio": 150000,                       // requerido, > 0
  "moneda": "USD",                        // USD o ARS
  "expensas": 45000,                      // opcional, en ARS
  "ambientes": 3,                          // opcional
  "dormitorios": 2,                        // opcional
  "banos": 1,                               // opcional
  "toilettes": 0,                           // opcional
  "metros_cubiertos": 75,                   // opcional
  "metros_semicubiertos": null,             // opcional
  "metros_terreno": null,                   // opcional
  "cocheras": 1,                            // opcional
  "antiguedad": "10 anos",                 // opcional, texto libre
  "disposicion": "Frente",                 // opcional
  "orientacion": "Norte",                  // opcional
  "estado": "Excelente",                   // opcional
  "amenidades": ["Pileta", "Gimnasio"], // opcional, ver lista completa
  "descripcion_agente": "Luminoso...",     // opcional, notas para la IA
  "agente_nombre": "Juan Perez",           // requerido
  "agente_telefono": "+54 11 1234-5678",   // requerido
  "agente_email": "juan@imb.com",          // requerido, email valido
  "agente_inmobiliaria": "Mi Inmob.",      // opcional
  "agente_matricula": "CUCICBA 1234"       // opcional
}

Amenidades validas: Pileta, Gimnasio, Seguridad 24h, Laundry, SUM, Parrilla, Solarium, Balcon, Terraza, Jardin, Quincho, Cochera cubierta, Baulera, Ascensor, Aire acondicionado, Calefaccion, Agua corriente, Gas natural, Cloacas, Mascotas permitidas

Provincias: Buenos Aires, CABA, Catamarca, Chaco, Chubut, Cordoba, Corrientes, Entre Rios, Formosa, Jujuy, La Pampa, La Rioja, Mendoza, Misiones, Neuquen, Rio Negro, Salta, San Juan, San Luis, Santa Cruz, Santa Fe, Santiago del Estero, Tierra del Fuego, Tucuman

Python

python
import requests

API_KEY = "pk_live_TU_API_KEY"
BASE = "https://publix.ar/api/v1"
headers = {"X-API-Key": API_KEY}

# 1. Crear listing
listing = requests.post(f"{BASE}/listings", json={
    "tipo_propiedad": "Departamento",
    "tipo_operacion": "Venta",
    "direccion": "Av. Corrientes 1234",
    "ciudad": "CABA",
    "provincia": "Buenos Aires",
    "precio": 150000,
    "moneda": "USD",
    "dormitorios": 2,
    "banos": 1,
    "metros_cubiertos": 75,
    "agente_nombre": "Tu Nombre",
    "agente_telefono": "+54 11 1234-5678",
    "agente_email": "tu@email.com",
}, headers=headers)

listing_id = listing.json()["data"]["id"]
print(f"Listing creado: {listing_id}")

# 2. Generar todo el contenido (texto + PDF + imagen)
result = requests.post(
    f"{BASE}/listings/{listing_id}/generate/all",
    headers=headers
)
print(result.json()["data"]["descripcion_profesional"])

# 3. Publicar en Instagram
pub = requests.post(
    f"{BASE}/listings/{listing_id}/publish/instagram",
    headers=headers
)
print(pub.json())

JavaScript / Node.js

javascript
const API_KEY = "pk_live_TU_API_KEY";
const BASE = "https://publix.ar/api/v1";

const headers = {
  "X-API-Key": API_KEY,
  "Content-Type": "application/json",
};

// 1. Crear listing
const res = await fetch(`${BASE}/listings`, {
  method: "POST",
  headers,
  body: JSON.stringify({
    tipo_propiedad: "Departamento",
    tipo_operacion: "Venta",
    direccion: "Av. Corrientes 1234",
    ciudad: "CABA",
    provincia: "Buenos Aires",
    precio: 150000,
    moneda: "USD",
    dormitorios: 2,
    banos: 1,
    metros_cubiertos: 75,
    agente_nombre: "Tu Nombre",
    agente_telefono: "+54 11 1234-5678",
    agente_email: "tu@email.com",
  }),
});

const { data } = await res.json();
console.log("Listing creado:", data.id);

// 2. Generar contenido
const gen = await fetch(
  `${BASE}/listings/${data.id}/generate/all`,
  { method: "POST", headers }
);
const content = await gen.json();
console.log(content.data.descripcion_profesional);

PHP

php
$apiKey = "pk_live_TU_API_KEY";
$base = "https://publix.ar/api/v1";

// Crear listing
$ch = curl_init("$base/listings");
curl_setopt_array($ch, [
    CURLOPT_POST => true,
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_HTTPHEADER => [
        "X-API-Key: $apiKey",
        "Content-Type: application/json",
    ],
    CURLOPT_POSTFIELDS => json_encode([
        "tipo_propiedad" => "Departamento",
        "tipo_operacion" => "Venta",
        "direccion" => "Av. Corrientes 1234",
        "ciudad" => "CABA",
        "provincia" => "Buenos Aires",
        "precio" => 150000,
        "moneda" => "USD",
        "agente_nombre" => "Tu Nombre",
        "agente_telefono" => "+54 11 1234-5678",
        "agente_email" => "tu@email.com",
    ]),
]);

$response = json_decode(curl_exec($ch), true);
echo "Listing: " . $response["data"]["id"];

Flujo completo recomendado

flujo
## Flujo tipico de integracion

1. POST /listings          → Crear propiedad con datos JSON
2. POST /listings/{id}/photos → Subir fotos (multipart/form-data)
3. POST /listings/{id}/generate/all
                              → Genera texto IA + PDF + imagen
4. POST /listings/{id}/generate/video
                              → (Opcional) Genera video reel
5. POST /listings/{id}/publish/instagram
                              → Publica a Instagram
6. GET  /listings/{id}/download/pdf
                              → Descarga el PDF para tu portal
Cargando datos de uso...