계정 API
API 키 소유 계정의 정보와 사용량(쿼터)을 조회하는 API입니다. 연동을 시작할 때 키가 올바른지 확인하거나, 발송·검수 전에 잔여 한도와 포인트 잔액을 확인하는 용도로 사용합니다.
meta.quota 에 항상 포함되므로,
매 호출 전에 쿼터 전체 조회를
따로 호출할 필요는 없습니다. 자세한 규칙은
공통 규약의 응답 래퍼와 meta.quota를 참고하세요.
계정 정보 조회
/me
요청에 사용한 API 키의 소유 계정 정보를 조회합니다. 키가 유효한지, 어떤 스코프가 허용되어 있는지 확인할 때 사용합니다. 요청 파라미터는 없습니다.
X-Site-Id 헤더를 생략할 수 있는 엔드포인트입니다.
연동 초기, 사이트 ID를 아직 모르는 상태에서 키 검증 용도로 호출하세요.
Response
콘솔에서 키를 발급할 때 지정한 키 이름입니다.
요청에 사용한 API 키에 허용된 스코프 목록입니다.
예: template:read, template:write
계정 역할/플랜 값입니다. 현재 Open API 분당 요청 한도는 플랜과 무관하게 API 키당 120회입니다.
API 키의 만료 시각입니다. ISO-8601, KST 오프셋 포함.
만료된 키의 요청은 4002 에러로 거절됩니다.
계정에 연결된 사이트 수입니다. 사이트 목록은 사이트 목록 조회로 확인합니다.
curl "https://docs.almani-center.com/open/v1/me" \
-H "Authorization: Bearer ak_live_xxxx"
// Java 17 + Spring Framework 6 RestClient
RestClient restClient = RestClient.builder()
.baseUrl("https://docs.almani-center.com/open/v1")
.defaultHeader(HttpHeaders.AUTHORIZATION, "Bearer ak_live_xxxx")
.build();
String response = restClient.get()
.uri("/me")
.retrieve()
.body(String.class);
HTTP/1.1 200 OK
{
"code": "0000",
"message": "OK",
"data": {
"keyName": "MCP 연동용",
"scopes": ["template:read", "template:write", "profile:read", "quota:read"],
"plan": "ENTERPRISE",
"expiresAt": "2027-01-25T00:00:00+09:00",
"siteCount": 2
},
"meta": {
"requestId": "req_9f83ab21",
"quota": {
"rateLimit": {
"limit": 120,
"remaining": 119,
"resetAt": "2026-07-25T14:31:00+09:00"
}
}
}
}
HTTP/1.1 401 Unauthorized
{
"code": "4001",
"message": "유효하지 않은 API 키입니다. 키를 확인해 주세요.",
"data": null,
"meta": {
"requestId": "req_9f83ab21",
"quota": {
"rateLimit": {
"limit": 120,
"remaining": 119,
"resetAt": "2026-07-25T14:31:00+09:00"
}
}
}
}
쿼터 전체 조회
/quota
필요 스코프: quota:read
X-Site-Id 헤더로 지정한 사이트 기준의 전체 쿼터를 한 번에 조회합니다.
API 키 단위 분당 요청 한도, 사이트 단위 일일 템플릿 검수 한도,
발송 한도, 포인트 잔액, 키 사용 현황이 함께 반환됩니다. 요청 파라미터는 없습니다.
Response
계정 역할/플랜 값입니다. 현재 분당 요청 한도와 일일 템플릿 검수 한도는 각각 API 키당 120회, 사이트당 30회로 고정됩니다.
API 키 단위 분당 요청 한도입니다. 허용량은 120회이며,
동일 정보가 모든 응답의 meta.quota.rateLimit 과
RateLimit-* 헤더로도 제공됩니다.
분당 허용 요청 수입니다. 현재 120회로 고정됩니다.
현재 집계 구간에서 남은 요청 수입니다.
한도가 초기화되는 시각입니다. ISO-8601, KST 오프셋 포함.
사이트 단위 일일 템플릿 검수 한도입니다(일자 집계).
한도를 초과하면 심사 요청이
4291 에러로 거절됩니다.
하루에 허용되는 템플릿 검수 요청 수입니다.
오늘 사용한 검수 요청 수입니다.
오늘 남은 검수 요청 수입니다.
일일 검수 한도가 초기화되는 시각입니다(다음 날 자정). ISO-8601, KST 오프셋 포함.
발송 요청 한도입니다.
발송 요청 1건에 담을 수 있는 최대 건수입니다.
포인트 잔액 정보입니다. 발송·과금 관련 API 응답에도 포함됩니다.
현재 포인트 잔액입니다.
알림톡 1건 발송 시 예상 차감 포인트입니다.
계정의 API 키 사용 현황입니다.
현재 활성 상태인 API 키 수입니다.
계정에서 발급할 수 있는 최대 API 키 수입니다.
meta.quota 에 포함되므로,
이 API를 짧은 주기로 반복 호출하지 마세요. 반복 호출도
분당 요청 한도(rateLimit)를 소모합니다.
curl "https://docs.almani-center.com/open/v1/quota" \
-H "Authorization: Bearer ak_live_xxxx" \
-H "X-Site-Id: 1024"
// Java 17 + Spring Framework 6 RestClient
RestClient restClient = RestClient.builder()
.baseUrl("https://docs.almani-center.com/open/v1")
.defaultHeader(HttpHeaders.AUTHORIZATION, "Bearer ak_live_xxxx")
.defaultHeader("X-Site-Id", "1024")
.build();
String response = restClient.get()
.uri("/quota")
.retrieve()
.body(String.class);
HTTP/1.1 200 OK
{
"code": "0000",
"message": "OK",
"data": {
"plan": "ENTERPRISE",
"rateLimit": {
"limit": 120,
"remaining": 118,
"resetAt": "2026-07-25T14:31:00+09:00"
},
"templateReview": {
"dailyLimit": 30,
"usedToday": 5,
"remaining": 25,
"resetAt": "2026-07-26T00:00:00+09:00"
},
"send": {
"maxPerRequest": 5000
},
"points": {
"balance": 1523000,
"estimatedAlPrice": 7.5
},
"keys": {
"active": 2,
"maxAllowed": 5
}
},
"meta": {
"requestId": "req_9f83ab21",
"quota": {
"rateLimit": {
"limit": 120,
"remaining": 118,
"resetAt": "2026-07-25T14:31:00+09:00"
},
"templateReview": {
"dailyLimit": 30,
"usedToday": 5,
"remaining": 25,
"resetAt": "2026-07-26T00:00:00+09:00"
},
"points": { "balance": 1523000 }
}
}
}
HTTP/1.1 400 Bad Request
{
"code": "4003",
"message": "X-Site-Id 헤더가 누락되었습니다. GET /sites로 접근 가능한 사이트를 확인해 주세요.",
"data": null,
"meta": {
"requestId": "req_9f83ab21",
"quota": {
"rateLimit": {
"limit": 120,
"remaining": 118,
"resetAt": "2026-07-25T14:31:00+09:00"
}
}
}
}