Members Only API 문서
RESTful JSON API로 결제, 멤버, 구독을 제어합니다. 모든 요청은 TLS로 암호화되며 표준 HTTP 상태 코드와 구조화된 에러를 반환합니다.
Base URL:
https://api.membersonly.fun/v1
모든 예제는 테스트 키를 사용합니다. 운영 환경에서는 서버 환경 변수로 비밀키를 안전하게 로드하세요.
RESTful JSON API로 결제, 멤버, 구독을 제어합니다. 모든 요청은 TLS로 암호화되며 표준 HTTP 상태 코드와 구조화된 에러를 반환합니다.
https://api.membersonly.fun/v1
가장 빠른 시작: 멤버 생성 후 결제를 생성합니다.
npm install @monly/sdk
pnpm add @monly/sdk
yarn add @monly/sdk
curl -X POST \
https://api.membersonly.fun/v1/members \
-H "Authorization: Bearer $MONLY_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"email": "user@example.com",
"tier": "basic"
}'
import membersOnly from '@monly/sdk';
const member = await membersOnly.members.create({
email: 'user@example.com',
tier: 'basic',
});
curl -X POST \
https://api.membersonly.fun/v1/payments \
-H "Authorization: Bearer $MONLY_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"type": "sponsorship",
"amount": 50000,
"currency": "KRW",
"memberId": "mem_123"
}'
import membersOnly from '@monly/sdk';
const payment = await membersOnly.payments.create({
type: 'sponsorship',
amount: 50000,
currency: 'KRW',
memberId: 'mem_123',
});
모든 API 요청은 Bearer 토큰을 사용해 인증합니다. 대시보드에서 발급한 비밀 키를 헤더에 추가하세요.
Authorization: Bearer sk_test_123...
멤버 생성, 조회, 업데이트, 삭제.
# Create
curl -X POST https://api.membersonly.fun/v1/members \
-H "Authorization: Bearer $MONLY_API_KEY" \
-H "Content-Type: application/json" \
-d '{"email":"user@example.com"}'
# Retrieve
curl https://api.membersonly.fun/v1/members/mem_123 \
-H "Authorization: Bearer $MONLY_API_KEY"
const member = await membersOnly.members.retrieve('mem_123');
await membersOnly.members.update('mem_123', { tier: 'premium' });
일회성 결제 생성 및 상태 조회.
curl https://api.membersonly.fun/v1/payments/pay_123 \
-H "Authorization: Bearer $MONLY_API_KEY"
const payment = await membersOnly.payments.retrieve('pay_123');
구독 생성, 갱신, 취소 및 청구 주기 관리.
curl -X POST https://api.membersonly.fun/v1/subscriptions \
-H "Authorization: Bearer $MONLY_API_KEY" \
-H "Content-Type: application/json" \
-d '{"memberId":"mem_123","plan":"pro_monthly"}'
await membersOnly.subscriptions.create({
memberId: 'mem_123',
plan: 'pro_monthly',
});
결제 완료, 환불, 구독 이벤트 등 상태 변경을 실시간으로 수신합니다.
{
"id": "evt_123",
"type": "payment.succeeded",
"created": 1710000000,
"data": {
"object": {
"id": "pay_123",
"amount": 50000,
"currency": "KRW",
"status": "succeeded"
}
}
}
import crypto from 'node:crypto';
function verifySignature(payload, signature, secret) {
const hmac = crypto.createHmac('sha256', secret).update(payload, 'utf8').digest('hex');
return crypto.timingSafeEqual(Buffer.from(hmac), Buffer.from(signature));
}
가장 인기 있는 런타임과 프레임워크를 지원합니다.
에러 응답은 다음 형식을 따릅니다.
{
"error": {
"type": "invalid_request",
"code": "missing_parameter",
"message": "Required parameter 'amount' is missing"
}
}
에러 응답은 다음 형식을 따릅니다.
{
"error": {
"type": "invalid_request",
"code": "missing_parameter",
"message": "Required parameter 'amount' is missing"
}
}
주요 에러 유형 예시:
code
로 세부 사유 제공기본 한도는 초당 10 요청입니다. 초과 시 429를 반환하며, 지수 백오프로 재시도하세요.
테스트와 운영 환경을 분리하여 안전하게 개발하세요.
모든 목록 API는 커서 기반 페이지네이션을 사용하며, 표준 필터 파라미터를 지원합니다.
curl "https://api.membersonly.fun/v1/members?limit=50&cursor=abc123&status=active" \
-H "Authorization: Bearer $MONLY_API_KEY"
const list = await membersOnly.members.list({
limit: 50,
cursor: 'abc123',
status: 'active',
expand: ['latestPayment']
});
추가 파라미터: createdFrom
, createdTo
, email
, tier
. 연관 리소스는 expand
로 인라인 확장할 수 있습니다.
결제·멤버 생성 등 변경 연산은 멱등 키를 사용하여 안전한 재시도를 보장합니다.
curl -X POST https://api.membersonly.fun/v1/payments \
-H "Authorization: Bearer $MONLY_API_KEY" \
-H "Idempotency-Key: 9f4e2a9a-56b7-4f5e-8b0a-..." \
-H "Content-Type: application/json" \
-d '{"type":"sponsorship","amount":50000,"currency":"KRW","memberId":"mem_123"}'
await membersOnly.payments.create(
{ type: 'sponsorship', amount: 50000, currency: 'KRW', memberId: 'mem_123' },
{ idempotencyKey: crypto.randomUUID() }
);
하위 호환성을 유지하면서 새로운 기능을 지속적으로 추가합니다.
/v1
/v2
)가장 흔한 사용 시나리오 예제입니다.
const member = await membersOnly.members.create({ email: 'user@example.com', tier: 'basic' });
const payment = await membersOnly.payments.create({ type: 'sponsorship', amount: 10000, currency: 'KRW', memberId: member.id });
curl -X POST https://api.membersonly.fun/v1/members \
-H "Authorization: Bearer $MONLY_API_KEY" -H "Content-Type: application/json" \
-d '{"email":"user@example.com","tier":"basic"}'
curl -X POST https://api.membersonly.fun/v1/payments \
-H "Authorization: Bearer $MONLY_API_KEY" -H "Content-Type: application/json" \
-d '{"type":"sponsorship","amount":10000,"currency":"KRW","memberId":"mem_xxx"}'
const sub = await membersOnly.subscriptions.create({ memberId: 'mem_123', plan: 'pro_monthly' });
await membersOnly.subscriptions.pause(sub.id);
await membersOnly.subscriptions.resume(sub.id);
v0.1.0 — 초기 공개 베타 문서.