eSignon API를 처음 연동하는 분들을 위한 가이드입니다.
이 가이드는 무료로 제공되는 API 테스트 환경을 기준으로 작성되어 있습니다.
TESTAPI란?eSignon에서 제공하는 무료 API 테스트 환경입니다.
기간 제한 없이 API 연동을 충분히 테스트해 볼 수 있습니다.
개발이 완료된 후에는 실제 계정 정보로 바꾸기만 하면 바로 운영 환경에 적용할 수 있습니다.
시작 전 준비사항
TESTAPI 계정이 있어야 이 가이드를 따라할 수 있습니다.
아직 계정이 없다면 아래 순서로 먼저 가입해 주세요.
TESTAPI 계정 가입 방법1. 고객센터를 통해 TESTAPI 가입 링크를 받습니다.
2. 회사명과 이메일을 입력하고 "초대링크 전송" 버튼을 클릭합니다.
3. 이메일로 받은 초대 메일에서 "지금 시작하기" 버튼을 클릭합니다.
4. 회사명(
testapi2), 이메일, 사용자명, 비밀번호를 입력하고 가입을 완료합니다.가입이 완료되면 아래 정보로 이 가이드를 따라할 수 있습니다.
항목 값 회사 ID (companyId) testapi2이메일 가입 시 등록한 이메일 비밀번호 가입 시 설정한 비밀번호
이런 순서로 진행됩니다.
각 단계를 순서대로 따라서 진행해 보세요. 앞 단계에서 얻은 값이 다음 단계에 사용됩니다.
1. 토큰 발급받기
모든 API 요청에는 인증 토큰이 필요합니다.
이메일과 비밀번호로 로그인하면 access_token을 받을 수 있습니다.
이 토큰을 이후 모든 요청의 Header에 담아 보내면 됩니다.
POST /api/testapi2/login
요청 파라미터
| 파라미터 | 타입 | 필수 | 설명 |
|---|---|---|---|
header.request_code | string | Y | 고정값: "1001Q" |
body.memb_email | string | Y | eSignon 계정 이메일 |
body.memb_pwd | string | Y | eSignon 계정 비밀번호 |
요청 예시
curl -X POST "https://docs.esignon.net/api/testapi2/login" \
-H "Content-Type: application/json" \
-d '{
"header": { "request_code": "1001Q" },
"body": {
"memb_email": "[email protected]",
"memb_pwd": "yourPassword"
}
}'const response = await fetch("https://docs.esignon.net/api/testapi2/login", {
method: "POST",
headers: { "Content-Type": "application/json" },
body: JSON.stringify({
header: { request_code: "1001Q" },
body: {
memb_email: "[email protected]",
memb_pwd: "yourPassword"
}
})
});
const data = await response.json();
const accessToken = data.body.access_token;import requests
response = requests.post(
"https://docs.esignon.net/api/testapi2/login",
json={
"header": { "request_code": "1001Q" },
"body": {
"memb_email": "[email protected]",
"memb_pwd": "yourPassword"
}
}
)
access_token = response.json()["body"]["access_token"]응답 예시
{
"header": {
"response_code": "1001A",
"result_code": "00",
"result_msg": "성공적으로 로그인되었습니다.",
"session_id": ""
},
"body": {
"access_token": "LD8H550BIno...",
"comp_id": "testapi2",
"device_id": "*22B6B4E913DA...",
"expire_date": "2026-06-06 15:35:12",
"ip": "000.000.000.00",
"login_type": "company",
"memb_email": "[email protected]"
}
}발급받은
access_token은 이후 모든 요청의 Header에 아래와 같이 담아주세요.
⚠️esignon과 토큰 값 사이에 반드시 띄어쓰기가 있어야 합니다.Authorization: esignon {access_token}
expire_date는 해당 토큰이 만료되는 시각입니다.
만료 후에는 이 단계를 다시 진행해서 새 토큰을 발급받아야 합니다.
2. 서식 확인하기
문서를 시작하려면 서식의 template_id와 필드 이름이 필요합니다.
2-1에서 사용할 서식의 ID를 확인하고, 필드에 값을 미리 채우고 싶다면 2-2에서 필드 이름도 확인해 보세요.
서식이 없다면?두 가지 방법을 선택할 수 있습니다.
- 샘플 서식 사용 — 이싸인온에서 기본 제공하는 샘플 서식이 목록에 있습니다. 처음 연동을 테스트할 때 바로 사용해보세요.
- 직접 사용할 서식 만들기 — 이싸인온 웹 서비스의 [서식] 탭에서 문서를 업로드하고 서명란을 설정하여 생성할 수 있습니다. API로는 조회만 가능하며, 서식 생성은 이싸인온 서비스 내에서만 할 수 있습니다.
2-1. 서식 목록 조회
서식 목록을 불러와서 사용할 서식의 template_id를 확인합니다.
GET /api/v3/template
요청 예시
curl -X GET "https://docs.esignon.net/api/v3/template" \
-H "Authorization: esignon {access_token}"const response = await fetch("https://docs.esignon.net/api/v3/template", {
headers: { "Authorization": "esignon {access_token}" }
});
const data = await response.json();
const templateId = data.template_list[0].template_id;import requests
response = requests.get(
"https://docs.esignon.net/api/v3/template",
headers={ "Authorization": "esignon {access_token}" }
)
template_id = response.json()["template_list"][0]["template_id"]응답 예시
{
"template_list": [
{
"template_id": 753,
"template_name": "[샘플서식] 개인정보 수집 및 이용동의서",
"template_type": "WEBTYPE",
"creator_email": "[email protected]",
"created_date": "2026-05-08 10:27:13 UTC(+09:00)",
"last_modifier_email": "[email protected]",
"last_modified_date": "2026-05-08 10:33:48 UTC(+09:00)",
"total_order_count": 1,
"template_workflow_count": 0,
"important": false,
"folder_id": "shared",
"folder_path": "/공유 서식/"
}
]
}template_id 값을 기억해 두세요. 다음 단계에서 사용합니다.
testapi2에는 샘플 서식이 미리 준비되어 있습니다.
[샘플서식] 개인정보 수집 및 이용동의서(template_id: 753) 를 바로 사용해서 테스트해볼 수 있습니다. 직접 서식을 만들고 싶다면 이싸인온 서비스 내 [서식] 탭에서 생성한 후 목록을 다시 조회해 주세요.
2-2. (선택사항) 서식 상세 조회
문서를 보내기 전 미리 필드에 값을 미리 채우고 싶다면, 서식 상세 조회로 필드 이름을 먼저 확인해야 합니다.
GET /api/v3/template/{templateId}
요청 예시
curl -X GET "https://docs.esignon.net/api/v3/template/753" \
-H "Authorization: esignon {access_token}"const templateId = 752;
const response = await fetch(`https://docs.esignon.net/api/v3/template/${templateId}`, {
headers: { "Authorization": "esignon {access_token}" }
});
const data = await response.json();
// data.field_list 에서 필드 이름 확인import requests
template_id = 752
response = requests.get(
f"https://docs.esignon.net/api/v3/template/{template_id}",
headers={ "Authorization": "esignon {access_token}" }
)
field_list = response.json()["field_list"]응답 예시 (field_list 발췌)
{
"template_id": 753,
"template_name": "[샘플서식] 개인정보 수집 및 이용동의서",
"field_list": [
{
"order": 1,
"field_owner": "1번째 수신인",
"field_name": "이름",
"field_type": "JDTextBox"
}
],
"preview_url": "https://docs.esignon.net/api/v3/template/preview?token=..."
}
field_name이 곧 3단계(문서 시작하기) field_list의 name 값입니다.응답의
field_name값을 그대로 복사해서 3단계(문서 시작하기) 요청의field_list[].name에 넣으면 됩니다. 오타나 공백 차이가 있으면 필드에 값이 채워지지 않으니 정확하게 입력해 주세요.
3. 문서 시작하기
서식 ID와 서명자 정보를 담아 문서를 시작해 보세요.
요청이 성공하면 workflow_id를 받게 되고, 서명자에게 이메일 또는 카카오 알림이 자동으로 발송됩니다.
POST /api/v3/workflows/start
요청 파라미터
| 파라미터 | 타입 | 필수 | 설명 |
|---|---|---|---|
workflow_name | string | Y | 문서명 (최대 128자) |
template_id | integer | Y | 2단계에서 확인한 서식 ID |
recipient_list | array | Y | 서명자 목록 (아래 상세 참고) |
language | string | N | 알림 메시지 언어: ko / en / jp (기본값: ko) |
comment | string | N | 서명자에게 전달할 메시지 (최대 250자) |
expiry_date | string | N | 문서 만료일 (YYYY-MM-DD HH:MM:SS) |
recipient_list 상세
| 파라미터 | 타입 | 필수 | 설명 |
|---|---|---|---|
order | integer | Y | 서명 단계 (1부터 시작, 숫자가 작을수록 먼저 서명) |
name | string | Y | 서명자 이름 |
email | string | Y | 서명자 이메일 또는 휴대폰 번호 |
password | string | N | 비밀번호 인증 설정 시 사용 (4~15자, 한글 불가) |
mobile | string | N | 휴대폰 본인 인증 사용 시 휴대폰 번호 |
field_list 상세 (선택)
서식에 미리 만들어둔 필드에 값을 채워서 문서를 시작할 수 있습니다.
모든 필드를 채울 필요는 없고, 필요한 항목만 골라서 넣으면 나머지는 서명자가 직접 입력하게 됩니다.
| 파라미터 | 타입 | 필수 | 설명 |
|---|---|---|---|
name | string | Y | 서식에서 지정한 필드(박스) 이름 |
value | string | Y | 해당 필드에 미리 입력할 값 |
필드 이름은 어디서 확인하나요?이싸인온 서비스에서 서식을 만들 때 각 텍스트박스, 체크박스 등에 지정한 박스 이름이 곧
field_list의name값이입니다. 입력 가능한 필드 타입:TextBox,CheckBox,RadioBox,LabelBox,PictureBox,DatePickerBox
요청 예시
curl -X POST "https://docs.esignon.net/api/v3/workflows/start" \
-H "Authorization: esignon {access_token}" \
-H "Content-Type: application/json" \
-d '{
"workflow_name": "2026_개인정보동의서_홍길동",
"template_id": 753,
"recipient_list": [
{
"order": 1,
"name": "홍길동",
"email": "010-1234-5678"
}
],
"field_list": [
{ "name": "이름", "value": "홍길동" }
]
}'const response = await fetch("https://docs.esignon.net/api/v3/workflows/start", {
method: "POST",
headers: {
"Authorization": "esignon {access_token}",
"Content-Type": "application/json"
},
body: JSON.stringify({
workflow_name: "2026_개인정보동의서_홍길동",
template_id: 753,
recipient_list: [
{
order: 1,
name: "홍길동",
email: "010-1234-5678"
}
],
// field_list는 선택사항이에요
field_list: [
{ name: "이름", value: "홍길동" }
]
})
});
const data = await response.json();
const workflowId = data.workflow_id;import requests
response = requests.post(
"https://docs.esignon.net/api/v3/workflows/start",
headers={
"Authorization": "esignon {access_token}",
"Content-Type": "application/json"
},
json={
"workflow_name": "2026_개인정보동의서_홍길동",
"template_id": 753,
"recipient_list": [
{
"order": 1,
"name": "홍길동",
"email": "010-1234-5678"
}
],
# field_list는 선택사항이에요
"field_list": [
{ "name": "이름", "value": "홍길동" }
]
}
)
workflow_id = response.json()["workflow_id"]응답 예시
{
"workflow_id": 98765,
"workflow_name": "2026_개인정보동의서_홍길동",
"language": "ko-KR",
"token": "KX2MwsnkVKRj..."
}| 응답 필드 | 설명 |
|---|---|
workflow_id | 생성된 문서 ID — 4단계 상태 확인에 사용해요 |
workflow_name | 문서명 |
language | 알림 메시지 언어 |
token | 진행 중인 문서에 접근할 때 사용하는 토큰 |
workflow_id 값을 기억해 두세요. 다음 단계에서 사용합니다.
4. 상태 확인하기
방금 시작한 문서의 진행상태를 실시간으로 확인할 수 있습니다.
workflow_id로 문서의 진행 상태와 서명자 현황을 조회할 수 있습니다.
GET /api/v3/workflows/{workflowId}
요청 예시
curl -X GET "https://docs.esignon.net/api/v3/workflows/{workflow_id}" \
-H "Authorization: esignon {access_token}"const workflowId = 98765; // 3단계 응답에서 받은 workflow_id
const response = await fetch(`https://docs.esignon.net/api/v3/workflows/${workflowId}`, {
headers: { "Authorization": "esignon {access_token}" }
});
const data = await response.json();
console.log(data.status); // "Playing", "complete" 등import requests
workflow_id = 98765 # 3단계 응답에서 받은 workflow_id
response = requests.get(
f"https://docs.esignon.net/api/v3/workflows/{workflow_id}",
headers={ "Authorization": "esignon {access_token}" }
)
status = response.json()["status"]
print(status) # "Playing", "complete" 등문서 상태 (status) 값
| status | 설명 |
|---|---|
playing | 서명 진행 중 — 아직 서명을 완료하지 않은 서명자가 있는 상태 |
complete | 서명 완료 — 모든 서명자가 서명을 완료한 상태 |
canceled | 문서 취소 — 요청자가 문서를 취소한 상태 |
truncate | 완전 삭제 — 문서가 완전히 삭제된 상태 |
Disposal | 폐기 — 문서가 폐기된 상태 |
Registed | 아카이버로 이관 — 설치형 자료보관소 옵션 고객에게만 해당 |
Moved/Deleted | 이관 후 삭제 — 이싸인온에서 삭제된 상태 (설치형 자료보관소 옵션 고객에게만 해당) |
응답 예시
{
"workflow_id": 98765,
"workflow_name": "2026_개인정보동의서_홍길동",
"status": "Playing",
"order": 1,
"total_order_count": 1,
"starter_name": "이싸인온",
"starter_email": "[email protected]",
"expiry_date": "2026-06-01 00:00:00 UTC(+09:00)",
"created_date": "2026-05-08 10:44:25 UTC(+09:00)",
"recipient_list": [
{
"order": 1,
"name": "홍길동",
"email": "010-1234-5678",
"my_turn": "Y",
"enable_cert_password": "N",
"enable_cert_mobile": "N"
}
],
"field_list": [
{
"name": "이름",
"value": "홍길동",
"email": "010-1234-5678",
"order": 1
}
],
"history_list": [
{
"name": "이싸인온",
"comment": "서명 부탁드립니다.",
"created_date": "2026-05-08 10:44:26 UTC(+09:00)",
"email": "[email protected]",
"order": 1,
"status": "WORKFLOW_START"
},
{
"name": "홍길동",
"comment": "",
"created_date": "2026-05-08 10:44:26 UTC(+09:00)",
"email": "010-1234-5678",
"order": 1,
"status": "SIGN_REQ"
}
],
"playing_url": "https://docs.esignon.net/mail/sign?token=...",
"preview_url": "https://docs.esignon.net/api/preview?token=..."
}운영 환경으로 전환하기
테스트가 완료됐다면 아래 값만 실제 정보로 바꾸면 바로 운영 환경에 적용할 수 있습니다.
| 항목 | TESTAPI | 실제 운영 |
|---|---|---|
| companyId | testapi2 | 실제 회사 ID (eSignon 로그인 → 설정 → 회사정보에서 확인) |
| 이메일 | 테스트 계정 이메일 | 실제 회사 계정 이메일 |
| 비밀번호 | 테스트 계정 비밀번호 | 실제 회사 계정 비밀번호 |
| template_id | testapi2 서식 ID | 실제 계정 서식 ID |
testapi2에서 만든 서식, 실제 운영계정에서 그대로 쓸 수 있습니다.testapi2에서 테스트용으로 만들어둔 서식을 실제 계정으로 이관해드립니다. 서식을 처음부터 다시 만들 필요 없이 바로 운영에 활용할 수 있습니다. 이관 요청 → 이싸인온팀에 문의하기
다음 단계
이싸인온의 기본 연동 흐름을 완성하셨습니다.
아래 기능들을 추가로 연동하여 더 완성도 높은 서비스를 구현해보세요!
