빠른 시작
AsleepTrack API
AsleepTrack API는 스마트폰으로 수집한 사운드 데이터를 실시간으로 분석하여 수면 상태를 추적하는 수면 분석 AI API입니다. 클라이언트 앱에서 손쉽게 수면 측정 기능을 도입할 수 있도록 오디오 프로세스를 자동으로 관리하고 데이터를 업로드하는 AsleepTrack SDK를 제공합니다. 이 SDK를 활용해 수면 측정 및 기본적인 수면 리포트 기능을 구현한 샘플 앱을 직접 빌드하여 AsleepTrack API를 가장 빠르게 경험해보세요.
샘플 앱을 통해 시작하기
API Key 발급하기
샘플 앱을 빌드하기 위해서는 API Key를 환경변수에 추가해야합니다. AsleepTrack 대시보드 에 로그인하여 API Key를 발급하세요. 프로필의 설정 탭에서 API Key를 발급할 수 있습니다.
iOS 샘플 앱 빌드
- GitHub 레포에서 iOS 샘플 앱 프로젝트를 다운받아 시작합니다.
# iOS sample app
git clone https://github.com/asleep-ai/asleep-sdk-ios-sampleapp-public.git
- Xcode의 Clone Git Repository를 사용하실 경우
https://github.com/asleep-ai/asleep-sdk-ios-sampleapp-public.git
- Debug.xcconfig, Release.xcconfig의 'YOUR_API_KEY'에 발급받은 API Key를 입력합니다.
API_KEY=YOUR_API_KEY
- 수면 데이터를 웹훅으로 받고 싶은 경우 MainView.swift에서 callbackUrl 정보를 입력합니다.
struct MainView: View {
...
@AppStorage("sampleapp+apikey") private var apiKey = Bundle.main.object(forInfoDictionaryKey: "API_KEY") as? String ?? ""
@AppStorage("sampleapp+userid") private var userId = ""
@AppStorage("sampleapp+baseurl") private var baseUrl = "yourProxyUrl"
@AppStorage("sampleapp+callbackurl") private var callbackUrl = "yourCallbackUrl"
- iPhone에 샘플 앱을 빌드하여 설치합니다.
- 'Signing' 에러가 발생할 경우, Bundle Identifier를 변경해주세요.
Android 샘플 앱 빌드
- GitHub 레포에서 Android 샘플 앱 프로젝트를 다운받아 시작합니다.
# Android sample app
git clone https://github.com/asleep-ai/asleep-sdk-android-sampleapp-public.git
- Android Studio의 Project from Version Control을 사용할 경우
https://github.com/asleep-ai/asleep-sdk-android-sampleapp-public.git
- local.properties에서 API Key를 입력합니다.
asleep_api_key="ApiKey"
- 수면 데이터를 웹훅으로 받고 싶은 경우 Constants.kt에서 callbackUrl 정보를 입력합니다.
object Constants {
val BASE_URL: String? = null
val CALLBACK_URL: String? = null
const val ASLEEP_API_KEY = BuildConfig.ASLEEP_API_KEY
const val SERVICE_NAME = "AsleepSampleApp"
const val MIN_TRACKING_MINUTES = 5
// intent extra names
const val EXTRA_ASLEEP_USER_ID = "ASLEEP_USER_ID"
const val EXTRA_SESSION_ID = "SESSION_ID"
const val EXTRA_FROM_STATE = "FROM_STATE"
enum class StateName {
INIT, TRACKING
}
}
- 샘플 앱을 빌드 후 Android 스마트폰에 설치합니다.
수면 측정 및 수면 리포트 확인
최소 5분 이상 측정해야 수면 분석 결과를 받아볼 수 있습니다.

수면 데이터 조회하기
API / SDK를 이용하여 수면 데이터 조회하기
SDK를 통해 측정한 수면 데이터는 SDK의 Reports 또는 Data API를 호출하여 조회할 수 있습니다. 업로드된 사운드 데이터는 AI 서버에서 비동기적으로 처리되므로, SDK Reports나 Data API를 통해 실시간으로 수면 데이터를 확인하려면 폴링(polling) 방식으로 데이터를 조회해야 합니다.
iOS SDK
var config: Asleep.Config?
var reports: Asleep.Reports?
if let config {
reports = Asleep.createReports(config: config)
}
Android SDK
val reports = Asleep.createReports(asleepConfig)
reports?.getReport(sessionId, object : Reports.ReportListener {
override fun onSuccess(report: Report?) {
}
override fun onFail(errorCode: Int, detail: String) {
}
})
Data API
curl "https://api.asleep.ai/data/v3/sessions/{session_id}" -XGET \
-H "x-api-key: <YOUR_API_KEY>" \
-H "x-user-id: <USER_ID>"
Webhook을 통해 실시간 수면 데이터 받아보기
Callback URL을 등록하여 AI 서버에서 분석이 완료되었을 때 webhook을 받을 수 있으며, 이를 위해 SDK 초기화 단계에서 callback URL을 등록해야 합니다. Webhook을 통해 전송되는 데이터의 예시는 아래와 같습니다.
실시간 수면 데이터
{
"event": "INFERENCE_COMPLETE",
"version": "V3",
"data": {
"user_id": "G-20250115025029-vLErWBfQNtnfvgDccFOQ",
"session_id": "20250115025029_fvivn",
"seq_num": 39,
"inference_seq_num": 3,
"sleep_stages": [0], // omitted
"breath_stages": null,
"snoring_stages": [0] // omitted
}
}
세션 종료시 전체 수면 데이터
{
"event": "SESSION_COMPLETE",
"version": "V3",
"data": {
"timezone": "UTC",
"peculiarities": ["NO_BREATHING_STABILITY"],
"missing_data_ratio": 0.0,
"user_id": "G-20250115025029-vLErWBfQNtnfvgDccFOQ",
"session": {
"id": "20250115025029_fvivn",
"state": "COMPLETE",
"start_time": "2025-01-15T02:50:29+00:00",
"end_time": "2025-01-15T03:50:29+00:00",
"unexpected_end_time": null,
"created_timezone": "UTC",
"sleep_stages": [0], // omitted
"breath_stages": null,
"snoring_stages": [0] // omitted
},
"stat": {
"sleep_time": "2025-01-15T03:05:29+00:00",
"wake_time": "2025-01-15T03:26:29+00:00",
"sleep_index": 50,
"sleep_latency": 900,
"wakeup_latency": 1440,
"light_latency": 0,
"deep_latency": null,
"rem_latency": null,
"time_in_bed": 3600,
"time_in_sleep_period": 1260,
"time_in_sleep": 1080,
"time_in_wake": 180,
"time_in_light": 1080,
"time_in_deep": 0,
"time_in_rem": 0,
"time_in_stable_breath": null,
"time_in_unstable_breath": null,
"time_in_snoring": 0,
"time_in_no_snoring": 1260,
"sleep_efficiency": 0.3,
"sleep_ratio": 0.86,
"wake_ratio": 0.14,
"light_ratio": 0.86,
"deep_ratio": 0.0,
"rem_ratio": 0.0,
"stable_breath_ratio": null,
"unstable_breath_ratio": null,
"snoring_ratio": 0.0,
"no_snoring_ratio": 1.0,
"breathing_index": null,
"breathing_pattern": null,
"waso_count": 1,
"longest_waso": 180,
"sleep_cycle_count": 0,
"sleep_cycle": null,
"sleep_cycle_time": [],
"unstable_breath_count": null,
"snoring_count": 0
}
}
}
대시보드에서 수면 데이터 조회하기
대시보드에서는 로그인한 계정의 API Key를 이용해 측정한 수면 데이터를 시각적으로 확인할 수 있습니다. 클라이언트 앱에 리포트 UI를 작성하기 전에, 테스트 환경에서 진행한 수면 측정이 정상적으로 이루어졌는지 대시보드를 통해 쉽게 확인할 수 있습니다.

Updated 11 days ago