Skip to content
Para desarrolladores · Modpacks en el launcher

API de ganancias de socio

Clave privada de solo lectura mek_live_: saldo, disponible para retirar, ganancias de un periodo en todos los servicios de Millida y suscriptores de tus modpacks. La clave funciona solo desde la IP de tu servidor.

Actualizado 28 de septiembre de 2026

Si quieres ver tus ganancias en tu propio sitio web o en un panel, conecta la API de ganancias. Devuelve las mismas cifras que tu cartera en Millida: saldo, importe disponible para retirar y ganancias del periodo seleccionado desglosadas por servicio: suscripciones a modpacks, hosting, donaciones, mercado y otros.

La API es de solo lectura. No puedes retirar dinero, cambiar los datos de pago ni pagar nada a través de ella. La clave solo ve tu cartera; con ella no puedes acceder a los datos de otras personas.

Clave

La clave se emite en el panel de socio: Perfil → sección con el nombre de tu estudio → API de ganancias. Al emitirla, indica la dirección IP del servidor desde el que se enviarán las solicitudes. La clave no funciona desde ninguna otra dirección, aunque te la roben.

  • Puedes indicar hasta diez direcciones o subredes. La subred no debe ser más amplia que /24 para IPv4 y /48 para IPv6.
  • Las direcciones locales y domésticas (127.0.0.1, 10.x, 192.168.x) no se aceptan: necesitas la dirección pública del servidor.
  • La clave se muestra una sola vez. Guárdala en el servidor, en variables de entorno o en un gestor de secretos, y nunca la expongas al navegador.
  • Puedes tener hasta cinco claves activas. Si pierdes una clave o cambias de servidor, revoca la clave antigua y emite una nueva. Una clave revocada deja de funcionar de inmediato.

Todos los endpoints son relativos a https://api.millida.net/v2. La clave se pasa en la cabecera:

Authorization: Bearer mek_live_…

Resumen

GET /earnings-api/v1/summary?from=2026-09-01T00:00:00.000Z&to=2026-09-30T23:59:59.999Z

from y to son los límites del periodo en formato ISO 8601. Ambos parámetros son opcionales: sin ellos, el periodo abarca todo el tiempo.

{
  "currency": "RUB",
  "balance": {
    "balanceKopecks": 1254000,
    "availableKopecks": 1204000,
    "withdrawableKopecks": 980000,
    "heldKopecks": 50000,
    "pendingPayoutKopecks": 0,
    "tradeHoldKopecks": 0,
    "tradeHoldReadyAt": null,
    "marketHoldKopecks": 0,
    "marketWithdrawalReadyAt": null
  },
  "period": {
    "from": "2026-09-01T00:00:00.000Z",
    "to": "2026-09-30T23:59:59.999Z",
    "earnedKopecks": 3108000,
    "heldKopecks": 0,
    "spentKopecks": 0,
    "toppedUpKopecks": 0,
    "paidOutKopecks": 2000000,
    "refundKopecks": 0,
    "netKopecks": 1108000,
    "operations": 142,
    "earnedBySource": [
      { "source": "catalog", "amountKopecks": 2950000, "operations": 131 },
      { "source": "hosting", "amountKopecks": 158000, "operations": 11 }
    ],
    "truncated": false
  },
  "subscriptions": {
    "subscribers": 14,
    "bundleSubscribers": 2,
    "packSubscribers": 12
  }
}

Todos los importes están en kopecks: 1254000 significa 12 540 ₽.

CampoSignificado
balance.balanceKopeckstodo lo que hay en la cartera, incluidos los fondos congelados
balance.availableKopecksse puede gastar dentro de Millida
balance.withdrawableKopecksse puede retirar ahora mismo — el mismo importe que en el botón «Retirar»
balance.heldKopeckscongelado hasta que termine el periodo de retención
period.earnedKopecksganado durante el periodo en todos los servicios
period.earnedBySourceganancias durante el periodo por servicio, de mayor a menor
period.paidOutKopecksretirado durante el periodo
period.truncatedtrue — hay demasiadas transacciones en el periodo y los importes están incompletos: reduce el periodo
subscriptionssuscriptores de tus modpacks ahora mismo, de forma resumida; los detalles están en la sección «Suscriptores»

Los valores de source:

sourceServicio
catalogcatálogo de modpacks: suscripciones y compras
hostinghosting
tradedonaciones de Trade
marketmercado
skinsMillida Skins
ratingrating
adminacumulaciones de Millida

Con el tiempo pueden añadirse nuevos valores. Si no reconoces un valor, muéstralo tal cual y no lo trates como un error.

Suscriptores

GET /earnings-api/v1/subscriptions?from=2026-09-01T00:00:00.000Z&to=2026-09-30T23:59:59.999Z

Cuántas personas están jugando ahora mismo a tus modpacks con una suscripción de Millida y qué ha pasado con las suscripciones durante el periodo. Los suscriptores se cuentan por acceso activo, no por pagos: una persona cuenta mientras pueda iniciar el modpack, incluidos los tres días posteriores a la fecha de pago dados para el reintento del cobro. El acceso mediante claves de tu sitio web, el acceso de equipo y las compras puntuales no cuentan como suscripciones.

La API solo devuelve números. A través de ella no puedes saber quién está suscrito exactamente.

from y to definen el periodo igual que en el resumen. Solo afectan al bloque period; los bloques total, active, renewal y packs siempre muestran el estado en el momento de la solicitud.

{
  "from": "2026-09-01T00:00:00.000Z",
  "to": "2026-09-30T23:59:59.999Z",
  "generatedAt": "2026-09-28T16:30:00.000Z",
  "total": {
    "subscribers": 14,
    "bundleSubscribers": 2,
    "packSubscribers": 12
  },
  "partners": [
    {
      "partner": { "slug": "arcania-labs", "name": "Arcania Labs" },
      "active": {
        "subscribers": 14,
        "bundleSubscribers": 2,
        "packSubscribers": 12,
        "packSubscriptions": 12
      },
      "renewal": {
        "autoRenewing": { "bundle": 2, "packs": 12 },
        "canceledStillActive": { "bundle": 0, "packs": 0 }
      },
      "packs": [
        { "slug": "arcania", "title": "Arcania 1.4.3", "published": true, "activeSubscribers": 14, "viaPack": 12, "viaBundle": 2 },
        { "slug": "dread", "title": "DREAD - A Horror Survival Pack", "published": true, "activeSubscribers": 2, "viaPack": 0, "viaBundle": 2 }
      ],
      "period": {
        "newSubscriptions": { "bundle": 2, "packs": 12 },
        "canceled": { "bundle": 0, "packs": 0 },
        "expired": { "bundle": 0, "packs": 0 },
        "refunded": { "bundle": 0, "packs": 0 }
      },
      "truncated": false
    }
  ]
}

packs enumera todos tus modpacks, incluidos los que no tienen suscriptores.

CampoSignificado
total.subscriberscuántas personas distintas están suscritas ahora mismo a al menos uno de tus modpacks
total.bundleSubscribersde esas, con una suscripción «Todos los modpacks»
total.packSubscribersde esas, con una suscripción a un modpack individual
partners[]una fila por cada estudio que tengas; si no eres socio, la lista está vacía
active.packSubscriptionstotal de suscripciones a modpacks individuales: una persona puede tener varias
renewal.autoRenewingsuscripciones que se renovarán automáticamente: el pago automático está activado
renewal.canceledStillActiveel pago automático está desactivado, pero el plazo pagado sigue activo; el acceso terminará después
packs[].activeSubscriberscuántas personas pueden jugar a este modpack por suscripción
packs[].viaPack / packs[].viaBundlede esas, por suscripción a este modpack y por la suscripción «Todos los modpacks»
period.newSubscriptionssuscripciones cuyo primer cobro se produjo durante el periodo
period.canceledsuscripciones para las que se desactivó el pago automático durante el periodo
period.expiredel acceso terminó durante el periodo y no se renovó
period.refundedel acceso se cerró durante el periodo por un reembolso
truncatedtrue — hay demasiados datos y las cifras están incompletas: reduce el periodo

bundle cuenta personas, mientras que packs cuenta suscripciones a modpacks individuales. Si se cancela una suscripción, aparece en canceled el día de la cancelación, y en expired cuando termina el plazo pagado.

Errores

CódigocodeQué hacer
401INVALID_KEYfalta la clave, tiene una errata o es una clave de otro tipo
401REVOKEDla clave se ha revocado — emite una nueva
401OWNER_UNAVAILABLEla cuenta del propietario de la clave está bloqueada o eliminada
403IP_NOT_ALLOWEDla solicitud no llegó desde una dirección incluida en la clave; el texto del error muestra la dirección que vimos
429—se ha superado el límite de solicitudes, vuelve a intentarlo en un minuto

Límites

Una sola clave puede enviar hasta 30 solicitudes por minuto. Las cifras cambian junto con los pagos, así que no tiene sentido consultar la API más de una vez por minuto. Es mejor cachear la respuesta en tu servidor.

Ejemplo

curl -s https://api.millida.net/v2/earnings-api/v1/summary \
  -H "Authorization: Bearer $MILLIDA_EARNINGS_KEY"

curl -s https://api.millida.net/v2/earnings-api/v1/subscriptions \
  -H "Authorization: Bearer $MILLIDA_EARNINGS_KEY"