API 지금 바로 체험해보기 🚀

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_codestringY고정값: "1001Q"
body.memb_emailstringYeSignon 계정 이메일
body.memb_pwdstringYeSignon 계정 비밀번호

요청 예시

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_namestringY문서명 (최대 128자)
template_idintegerY2단계에서 확인한 서식 ID
recipient_listarrayY서명자 목록 (아래 상세 참고)
languagestringN알림 메시지 언어: ko / en / jp (기본값: ko)
commentstringN서명자에게 전달할 메시지 (최대 250자)
expiry_datestringN문서 만료일 (YYYY-MM-DD HH:MM:SS)

recipient_list 상세

파라미터타입필수설명
orderintegerY서명 단계 (1부터 시작, 숫자가 작을수록 먼저 서명)
namestringY서명자 이름
emailstringY서명자 이메일 또는 휴대폰 번호
passwordstringN비밀번호 인증 설정 시 사용 (4~15자, 한글 불가)
mobilestringN휴대폰 본인 인증 사용 시 휴대폰 번호

field_list 상세 (선택)

서식에 미리 만들어둔 필드에 값을 채워서 문서를 시작할 수 있습니다.
모든 필드를 채울 필요는 없고, 필요한 항목만 골라서 넣으면 나머지는 서명자가 직접 입력하게 됩니다.

파라미터타입필수설명
namestringY서식에서 지정한 필드(박스) 이름
valuestringY해당 필드에 미리 입력할 값
📘

필드 이름은 어디서 확인하나요?

이싸인온 서비스에서 서식을 만들 때 각 텍스트박스, 체크박스 등에 지정한 박스 이름이 곧 field_listname 값이입니다. 입력 가능한 필드 타입: 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=..."
}
💡

my_turn: "Y" 인 서명자가 현재 서명 차례인 사람입니다.


운영 환경으로 전환하기

테스트가 완료됐다면 아래 값만 실제 정보로 바꾸면 바로 운영 환경에 적용할 수 있습니다.

항목TESTAPI실제 운영
companyIdtestapi2실제 회사 ID (eSignon 로그인 → 설정 → 회사정보에서 확인)
이메일테스트 계정 이메일실제 회사 계정 이메일
비밀번호테스트 계정 비밀번호실제 회사 계정 비밀번호
template_idtestapi2 서식 ID실제 계정 서식 ID
💡

testapi2에서 만든 서식, 실제 운영계정에서 그대로 쓸 수 있습니다.

testapi2에서 테스트용으로 만들어둔 서식을 실제 계정으로 이관해드립니다. 서식을 처음부터 다시 만들 필요 없이 바로 운영에 활용할 수 있습니다. 이관 요청이싸인온팀에 문의하기


다음 단계

이싸인온의 기본 연동 흐름을 완성하셨습니다.
아래 기능들을 추가로 연동하여 더 완성도 높은 서비스를 구현해보세요!