에이젯싸인

연동 안내

설정 화면에서 API 키를 만들고 Authorization: Bearer 헤더에 넣어 호출합니다. 기본 주소는 https://azetsign.com/v1 입니다.

템플릿으로 서명 요청

POST /v1/contracts
{
  "template_id": "템플릿 id",
  "title": "2026 용역 계약서",
  "signers": [{ "name": "김민수", "email": "minsu@example.com" }],
  "values": { "계약 금액": "3,000,000원" }
}

values의 이름은 템플릿에서 보내는 쪽이 미리 입력하는 칸의 이름입니다. 응답의 signers[].url이 서명 링크입니다.

PDF로 서명 요청

multipart/form-data로 file과 spec(JSON 문자열)을 보냅니다. 입력란 좌표는 쪽 크기에 대한 0~1 비율이고 왼쪽 위가 기준입니다.

spec = {
  "title": "용역 계약서",
  "sequential": false,
  "expires_days": 14,
  "signers": [{ "name": "김민수", "email": "minsu@example.com", "auth": "match" }],
  "fields": [{ "ord": 0, "type": "signature", "page": 0, "x": 0.6, "y": 0.8, "w": 0.25, "h": 0.07 }]
}

auth: none, match(받은 이메일 입력), email(인증번호), code(접근 암호, code 항목 함께). type: signature, name, phone, text, date, address, checkbox.

문서 안 표식으로 자동 배치

PDF에 {{1:서명}}, {{2:이름}}, {{1:날짜}}, {{입력:계약 금액}}을 적어 올리고 편집기의 자동 배치를 누르면 칸이 놓입니다.

AI 도구 연결(MCP)

POST /v1/mcp에 API 키로 JSON-RPC를 보냅니다. 도구는 list_contracts, get_contract, send_from_template입니다.

화면 삽입

설정에 사이트 주소를 넣고 서명 링크의 /s/를 /embed/s/로 바꿔 iframe에 넣습니다. 완료되면 부모 창으로 { inju: "completed" } 메시지가 갑니다.

조회와 처리

GET /v1/contracts문서 목록 (limit, offset)
GET /v1/contracts/:id문서 상세
POST /v1/contracts/:id/cancel요청 취소
POST /v1/contracts/:id/remind다시 알림
GET /v1/contracts/:id/files/:kindsigned, certificate, proof, original
GET /v1/templates템플릿 목록

웹훅

이벤트: contract.sent, contract.signed, contract.completed, contract.declined, contract.cancelled, contract.expired. 2xx가 아니면 간격을 늘려 최대 8번 다시 보냅니다.

X-Inju-Signature는 {X-Inju-Timestamp}.{본문}을 웹훅 비밀값으로 만든 HMAC-SHA256 값입니다.