REST API 레퍼런스

MCP 도구와 동일한 기능을 코드에서 직접 호출할 수 있는 REST API입니다.

Base URL · 인증

https://moonpd.ai/api/v1

curl -H "Authorization: Bearer mpd_xxxxxxxxxxxxxxxxxxxx" https://moonpd.ai/api/v1/me
# 또는
curl -H "X-API-Key: mpd_xxxxxxxxxxxxxxxxxxxx" https://moonpd.ai/api/v1/me

응답 형식

// 성공
{ "success": true, "data": { ... }, "meta": { "page": 1, "size": 20, "total": 134 } }

// 실패
{ "success": false, "error": { "code": "INVALID_INPUT", "message": "title required", "field": "title" } }

이북 발행·관리

메서드경로설명
POST/ebooks/uploadmultipart 파일 첨부
POST/ebooks/upload-session브라우저 업로드 페이지 발급
POST/ebooks/convert-urlURL에서 변환
GET/ebooks/conversion/{jobId}변환 상태
POST/ebooks/{id}/publish게시
GET/ebooks내 이북 목록
GET/ebooks/{id}상세
PATCH/ebooks/{id}메타 수정
PUT/ebooks/{id}/visibility공개 범위
DELETE/ebooks/{id}삭제

홍보·통계·계정

메서드경로설명
GET/ebooks/{id}/share-assets공유 자산
GET/ebooks/{id}/promo-brief홍보 브리프
GET/ebooks/{id}/qrQR PNG
GET/ebooks/{id}/social-card소셜 카드 PNG
GET/ebooks/{id}/stats통계
GET/ebooks/{id}/traffic-sources유입 분석
GET/me계정·채널
GET/me/dashboard/kpi대시보드 KPI
GET/channels/{id}채널 상세
PATCH/channels/{id}채널 수정

단축 URL (mpd.zip/M{6})

긴 URL 을 mpd.zip/M{6자} 형식으로 단축합니다. 클릭 시 GA4 UTM 파라미터가 보존된 302 리다이렉트. 차단 도메인은 발급 거부.

메서드경로설명
POST/short-urls발급 (UTM 자동 부착 옵션)
GET/short-urls내 발급 목록 (페이징)
GET/short-urls/{cd}상세 + 클릭수
DELETE/short-urls/{cd}비활성화 (soft delete)

예제 — UTM 부착해 단축 URL 발급

curl -X POST https://moonpd.ai/api/v1/short-urls \
  -H "Authorization: Bearer $MPD_KEY" -H "Content-Type: application/json" \
  -d '{
    "url": "https://moonpd.ai/Home/H50000/H50400/boardView?board_key=1702&page=1",
    "tag": "spring_promo_2026",
    "utm_source": "moonpd_sms",
    "utm_medium": "sms",
    "utm_campaign": "ebook_promo_20260602",
    "utm_content": "S1_A"
  }'
# 응답: { "success": true, "data": {
#   "short_cd": "ab12CD",
#   "short_url": "https://mpd.zip/Mab12CD",
#   "long_url": "...&utm_source=moonpd_sms&...",
#   "click_count": 0, "tag": "spring_promo_2026", "source": "MCP" } }

발급 출처 prefix — 한눈에 발급 경로 구분:

scope: shorturl:write (발급·삭제), shorturl:read (조회·목록)

차단 도메인 응답: { "code": "URL_BLOCKED", "message": "...", "field": "url" } (HTTP 422)

예제 — 이북 발행 흐름

# 1) 업로드
curl -X POST https://moonpd.ai/api/v1/ebooks/upload \
  -H "Authorization: Bearer $MPD_KEY" \
  -F "file=@report.pdf" -F "title=2026Q1 환경 보고서"
# → { "success": true, "data": { "job_id": "eb_1234", "status": "processing" } }

# 2) 진행 상태
curl https://moonpd.ai/api/v1/ebooks/conversion/eb_1234 -H "Authorization: Bearer $MPD_KEY"

# 3) 게시
curl -X POST https://moonpd.ai/api/v1/ebooks/eb_1234/publish \
  -H "Authorization: Bearer $MPD_KEY" -H "Content-Type: application/json" \
  -d '{"channel_id":"ch_42","category":"REPORT","tags":["환경","보고서"]}'

Node.js

const res = await fetch('https://moonpd.ai/api/v1/me', {
    headers: { Authorization: `Bearer ${process.env.MPD_KEY}` }
});
const { data } = await res.json();
console.log(data.user.name, data.channels);

Python

import requests, os
r = requests.get('https://moonpd.ai/api/v1/me',
                 headers={'Authorization': f'Bearer {os.environ["MPD_KEY"]}'})
print(r.json()['data'])