파트너 수익 API
읽기 전용 비공개 mek_live_ 키를 알아보세요: 잔액, 인출 가능 금액, 모든 Millida 서비스의 기간별 수익, 모드팩 구독자. 이 키는 서버 IP에서만 작동해요.
업데이트 2026년 9월 28일
자체 웹사이트나 패널에서 수익을 확인하고 싶다면 수익 API를 연결하세요. Millida 지갑과 동일한 수치를 반환합니다. 잔액, 출금 가능 금액, 선택한 기간의 서비스별 수익 내역(모드팩 구독, 호스팅, 후원, 마켓 등)입니다.
API는 읽기 전용입니다. 이를 통해 돈을 출금하거나 지급 정보를 변경하거나 무언가를 결제할 수 없습니다. 키는 본인의 지갑만 볼 수 있으며, 다른 사람의 데이터에는 접근할 수 없습니다.
키
키는 파트너 대시보드에서 발급합니다: 프로필 → 스튜디오 이름이 붙은 섹션 → 수익 API. 발급할 때 요청을 보낼 서버의 IP 주소를 지정하세요. 키는 다른 주소에서는 작동하지 않으며, 도난당한 경우에도 마찬가지입니다.
- 최대 열 개의 주소 또는 서브넷을 지정할 수 있습니다. 서브넷은 IPv4의 경우
/24, IPv6의 경우/48보다 넓을 수 없습니다. - 홈 및 로컬 주소(
127.0.0.1,10.x,192.168.x)는 허용되지 않습니다: 서버의 공인 주소가 필요합니다. - 키는 한 번만 표시됩니다. 서버, 환경 변수 또는 시크릿 저장소에 보관하고 브라우저에 절대 노출하지 마세요.
- 활성 키는 최대 다섯 개까지 가질 수 있습니다. 키를 분실하거나 서버를 변경했다면 이전 키를 폐기하고 새 키를 발급하세요. 폐기된 키는 즉시 작동을 멈춥니다.
모든 엔드포인트는 https://api.millida.net/v2를 기준으로 합니다. 키는 헤더로 전달합니다:
Authorization: Bearer mek_live_…
요약
GET /earnings-api/v1/summary?from=2026-09-01T00:00:00.000Z&to=2026-09-30T23:59:59.999Z
from과 to는 ISO 8601 형식의 기간 경계입니다. 두 매개변수 모두 선택 사항입니다: 지정하지 않으면 기간은 전체 기간을 포함합니다.
{
"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
}
}
모든 금액은 코펙 단위입니다: 1254000은 12 540 ₽를 의미합니다.
| 필드 | 의미 |
|---|---|
balance.balanceKopecks | 동결된 자금을 포함한 지갑의 모든 금액 |
balance.availableKopecks | Millida 내에서 사용할 수 있는 금액 |
balance.withdrawableKopecks | 지금 바로 출금할 수 있는 금액 — “출금” 버튼에 표시되는 것과 동일한 금액 |
balance.heldKopecks | 보류 기간이 끝날 때까지 동결된 금액 |
period.earnedKopecks | 해당 기간 동안 모든 서비스에서 얻은 수익 |
period.earnedBySource | 해당 기간 동안 서비스별 수익, 큰 순서에서 작은 순서로 |
period.paidOutKopecks | 해당 기간 동안 출금한 금액 |
period.truncated | true — 해당 기간에 트랜잭션이 너무 많아 금액이 불완전합니다: 기간을 좁히세요 |
subscriptions | 현재 본인의 모드팩을 구독 중인 구독자 수, 간략히; 자세한 내용은 “구독자” 섹션에 있습니다 |
source 값:
source | 서비스 |
|---|---|
catalog | 모드팩 카탈로그: 구독 및 구매 |
hosting | 호스팅 |
trade | Trade 후원 |
market | 마켓 |
skins | Millida Skins |
rating | 평점 |
admin | Millida 적립금 |
시간이 지나면서 새로운 값이 추가될 수 있습니다. 인식하지 못하는 값이 있다면 그대로 표시하고 오류로 처리하지 마세요.
구독자
GET /earnings-api/v1/subscriptions?from=2026-09-01T00:00:00.000Z&to=2026-09-30T23:59:59.999Z
현재 Millida 구독으로 본인의 모드팩을 플레이하는 사람이 몇 명인지, 그리고 해당 기간 동안 구독에 어떤 일이 있었는지입니다. 구독자는 결제가 아니라 활성 접근 권한으로 집계됩니다: 재시도 청구를 위해 결제일 이후 3일을 포함하여 모드팩을 실행할 수 있는 동안은 구독자로 집계됩니다. 본인 웹사이트의 키를 통한 접근, 팀 접근, 일회성 구매는 구독으로 집계되지 않습니다.
API는 숫자만 반환합니다. 이를 통해 누가 정확히 구독 중인지는 알 수 없습니다.
from과 to는 요약에서와 같은 방식으로 기간을 정의합니다. 이들은 period 블록에만 영향을 미칩니다; total, active, renewal, packs 블록은 항상 요청 시점의 상태를 보여줍니다.
{
"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는 구독자가 없는 모드팩을 포함하여 모든 모드팩을 나열합니다.
| 필드 | 의미 |
|---|---|
total.subscribers | 현재 본인의 모드팩 중 최소 하나를 구독 중인 서로 다른 사람의 수 |
total.bundleSubscribers | 그중 “모든 모드팩” 구독을 가진 사람 |
total.packSubscribers | 그중 개별 모드팩 구독을 가진 사람 |
partners[] | 보유한 스튜디오당 한 행; 파트너가 아니면 목록은 비어 있습니다 |
active.packSubscriptions | 개별 모드팩 구독의 총합: 한 사람이 여러 개를 가질 수 있습니다 |
renewal.autoRenewing | 자동 갱신될 구독: 자동 결제가 활성화됨 |
renewal.canceledStillActive | 자동 결제가 비활성화되었지만 유료 기간이 아직 활성 상태입니다; 기간이 끝나면 접근이 종료됩니다 |
packs[].activeSubscribers | 이 모드팩을 구독으로 플레이할 수 있는 사람의 수 |
packs[].viaPack / packs[].viaBundle | 그중 이 모드팩 구독을 통한 사람과 “모든 모드팩” 구독을 통한 사람 |
period.newSubscriptions | 첫 청구가 해당 기간에 발생한 구독 |
period.canceled | 해당 기간에 자동 결제가 비활성화된 구독 |
period.expired | 해당 기간에 접근이 종료되고 갱신되지 않은 구독 |
period.refunded | 해당 기간에 환불로 인해 접근이 종료된 구독 |
truncated | true — 데이터가 너무 많아 수치가 불완전합니다: 기간을 좁히세요 |
bundle은 사람을 집계하고, packs는 개별 모드팩 구독을 집계합니다.
구독이 취소되면 취소한 날에 canceled에 나타나고, 유료 기간이 끝나면
expired에 나타납니다.
오류
| 코드 | code | 해야 할 일 |
|---|---|---|
| 401 | INVALID_KEY | 키가 없거나, 오타가 있거나, 다른 유형의 키입니다 |
| 401 | REVOKED | 키가 폐기되었습니다 — 새 키를 발급하세요 |
| 401 | OWNER_UNAVAILABLE | 키 소유자의 계정이 차단되었거나 삭제되었습니다 |
| 403 | IP_NOT_ALLOWED | 요청이 키에 등록된 주소에서 오지 않았습니다; 오류 텍스트에 저희가 확인한 주소가 표시됩니다 |
| 429 | — | 요청 속도 제한을 초과했습니다, 1분 후에 요청을 다시 시도하세요 |
제한
단일 키는 분당 최대 30건의 요청을 보낼 수 있습니다. 수치는 결제와 함께 변경되므로 API를 분당 한 번 이상 폴링하는 것은 의미가 없습니다. 서버에서 응답을 캐시하는 것이 더 좋습니다.
예시
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"