GET /admin/login admin panel (SkyVoice)
POST /api/login cookie-session login for browser testing
POST /api/logout logout current browser session
Admin transcription UI is managed from /admin/transcribe.
POST /v1/auth/login JSON: {"username":"<USERNAME>","password":"<PASSWORD>"}
POST /v1/billing/activate JSON: {"platform":"android|ios","productId":"skyvoice_monthly_300","purchaseToken":"..."}
GET /v1/subscription/status header: Authorization: Bearer <token>
POST /v1/transcribe multipart: file, optional temporary=true|false
GET /v1/history, DELETE /v1/history/{id}, DELETE /v1/history
# 1) login and get token
curl -X POST https://skyvoice.info/v1/auth/login \
-H "Content-Type: application/json" \
-d '{"username":"<USERNAME>","password":"<PASSWORD>"}'
# 2) transcribe with bearer token
curl -X POST https://skyvoice.info/v1/transcribe \
-H "Authorization: Bearer <TOKEN>" \
-F "file=@sample.wav" \
-F "temporary=false"
Plans come from Store purchases (Google Play / App Store), not from admin panel.
Expected product id patterns: skyvoice_monthly_300, skyvoice_onetime_20.
Each successful transcription consumes 1 unit from subscription quota.
Use /v1/billing/activate after successful in-app purchase to grant quota.