API 소개 및 요청방법
API를 요청하는 방법과 제한 사항을 확인
옥토모 API는 옥토모의 대표전화(1666-3538)에 전송 한 문자메시지를 무료로 조회하고 다양한 어플리케이션에 활용할 수 있도록 제공하는 서비스입니다.
API를 요청하기 위해서는 먼저 API Key 발급을 받아야 합니다.
[옥토모 웹사이트 > 로그인 > 마이페이지]에서 서비스를 등록하고 발급을 받을 수 있습니다.
API 요청하기
API는 POST method로 구성되어 있고, 아래와 같은 방식으로 호출이 가능합니다.
cURL
curl -X 'POST' \
'https://api.octoverse.kr/octomo/v1/message' \
-H 'accept: application/json' \
-H 'x-octomo-token: t4NC1xDPBfRMspCnR4PtlZk0CjfhtnoQQR72JdDmzuMfyNNY...' \
-H 'content-type: application/json' \
-d '{
"payload": "eyJtb2JpbGUiOiAiMDEwMTIzNDU2NzgifQ",
"signature": "ad3f6751fcaefef6fca86ca403487a348bf4939412a2de65..."
}'
API 요청을 위한 준비
발급 받은 Secret Key와 API Key를 이용해 옥토모 API 사용이 가능합니다.
Python
import base64
import hashlib
import hmac
import json
import requests
SECRET = bytes('SecretKeySampleOctoverse', 'utf-8')
APIKEY = 't4NC1xDPBfRMspCnR4PtlZk0CjfhtnoQQR72JdDmzuMfyNNY...'
req = { 'mobile': '01012345678' }
payload = base64.b64encode(bytes(json.dumps(req), 'utf-8'))
print(payload)
print(payload.decode('utf-8'))
signature = hmac.new(SECRET, payload, hashlib.sha512).hexdigest()
print(signature)
url = 'https://api.octoverse.kr/octomo/v1/message'
res = requests.post(url, headers={'x-octomo-token': APIKEY}, json={'payload': payload.decode('utf-8'), 'signature': signature})
print(res)
Payload 생성하기
요청할 객체를 JSON 문자열로 변환 후, Base64 encode 합니다.
Python
import base64
import json
req = { 'mobile': '01012345678', 'recv': '16663538' }
payload = base64.b64encode(bytes(json.dumps(req), 'utf-8'))
print(payload)
print(payload.decode('utf-8'))
Signature 생성하기
생성한 payload와 발급 받은 Secret Key를 이용하여, SHA512 알고리즘을 통한 해시 기반 메시지 인증 코드(HMAC-SHA512)를 생성합니다.
Python
import hashlib
import hmac
SECRET = bytes('SecretKeySampleOctoverse', 'utf-8')
signature = hmac.new(SECRET, payload, hashlib.sha512).hexdigest()
print(signature)
HTTP Request
요청에 필요한 객체를 이용해 만든 payload, signature를 JSON body로 설정하고 발급 받은 API Key를 x-octomo-token에 설정합니다.
Python
import requests
APIKEY = 't4NC1xDPBfRMspCnR4PtlZk0CjfhtnoQQR72JdDmzuMfyNNY...'
url = 'https://api.octoverse.kr/octomo/v1/message'
res = requests.post(url, headers={'x-octomo-token': APIKEY}, json={'payload': payload.decode('utf-8'), 'signature': signature})
print(res)
문자메시지 조회
POST
https://api.octoverse.kr/octomo/v1/message
메시지에 서비스 명이 포함 된 최근 5분 동안 받은 메시지 리스트를 조회합니다.
예) 서비스명: octomo, 문자메시지: [octomo] 3538
Request Header
Headers | Required/Optional | Description |
---|---|---|
x-octomo-token | required | 사용자의 API Key |
Payload
Field | Type | Required/Optional | Description |
---|---|---|---|
mobile | string | required | 문자 메시지를 조회할 휴대폰 번호, 예) 01012345678 |
recv | string | optional | 문자 메시지를 수신한 대표번호, 예) 16663538 * 해당 번호는 옥토모에 등록 되어 있어야 합니다. |
Request Body
Field | Required/Optional | Description |
---|---|---|
payload | required | base64 string (JSON string (payload object)) |
signature | required | HMAC(payload, Secret Key, SHA512).hexdigest() |
API 주요 에러 코드 목록
개요
API 요청값이 유효하지 않거나 처리 중 오류가 발생한 경우, HTTP 상태 코드와 함께 다음과 같은 형태의 JSON body가 리턴됩니다.
{ "error": "<오류에 대한 설명>" }
주요 오류 코드는 다음과 같습니다.
400 Bad Request
클라이언트의 잘못된 요청으로 서버가 요청을 처리할 수 없거나 처리하지 않습니다.
에러 메시지 | 설명 |
---|---|
invalid payload | payload가 올바르지 않습니다. |
invalid signature | signature가 올바르지 않습니다. |
required parameter (?) in payload is not found. | 파싱 된 payload에 (?) 항목이 없습니다. |
401 Unauthorized
클라이언트는 요청된 응답을 얻기 위해서는 인증을 받아야 합니다.
에러 메시지 | 설명 |
---|---|
access token is required | http 헤더에 [x-octomo-token] 값이 없습니다. |
invalid token | token 값이 올바르지 않습니다. |
invalid hash | hash 값이 올바르지 않습니다. |
authentication time expired | 인증 유효기간이 끝났습니다. 재인증을 받아야 합니다. |

대표 김종민
사업자 등록번호 803-88-02517
서울 영등포구 국회대로 36길 6-1
help@octoverse.kr