Pico y Placa API

Planes

Catalogo de planes y estado de suscripcion.

GET /billing/plans

Publico, sin autenticacion — usalo para renderizar tu propia pagina de precios.

curl https://api.placia.net/v1/billing/plans
{
  "success": true,
  "data": [
    { "code": "free", "name": "Free", "price_monthly_usd": "0.00", "requests_month_quota": 500, "burst_per_minute": 10 },
    { "code": "pro", "name": "Pro", "price_monthly_usd": "19.00", "requests_month_quota": 50000, "burst_per_minute": 60 },
    { "code": "business", "name": "Business", "price_monthly_usd": "99.00", "requests_month_quota": -1, "burst_per_minute": 300 }
  ]
}

requests_month_quota: -1 significa ilimitado.

GET /billing/me

Requiere JWT de sesion. Devuelve el plan y estado de suscripcion del usuario autenticado.

curl https://api.placia.net/v1/billing/me \
  -H "Authorization: Bearer <jwt_de_sesion>"
{
  "success": true,
  "data": {
    "subscription_plan": "pro",
    "subscription_status": "active",
    "subscription_ends_at": "2026-08-24 22:54:06",
    "billing_cycle": "monthly"
  }
}

POST /billing/checkout/init

Requiere JWT de sesion. Resuelve el gateway recurrente para el pais del usuario (dLocal Go, Mercado Pago o Wompi segun payment_provider_configs) y devuelve lo que el frontend necesita para montar el widget de tarjeta embebido de ese gateway — nunca se redirige a una pagina del proveedor.

curl -X POST https://api.placia.net/v1/billing/checkout/init \
  -H "Authorization: Bearer <jwt_de_sesion>" \
  -H "Content-Type: application/json" \
  -d '{"plan_code": "pro", "billing_cycle": "monthly"}'

POST /billing/checkout/confirm

Requiere JWT de sesion. Cobra el primer cargo tras la tokenizacion en el frontend, guarda el token reutilizable y activa el plan.

Gateways de pago

Cobertura white-label con 4 gateways LatAm: dLocal Go (fallback regional amplio), Mercado Pago (AR/BR/CL/CO/MX/PE/UY), Wompi (Colombia) y Bold.co (Colombia, solo pago puntual — no soporta renovacion automatica). El patron es "tokenize + recharge": la tarjeta se tokeniza en nuestra propia pagina y el cobro recurrente lo orquesta nuestro cron (bin/cron-billing-renew.php) contra el token guardado, nunca contra una pagina alojada por el proveedor.

On this page