OKSign 사용 가이드

계약서를 만드는 방법은 세 가지입니다. 어느 방법이든 받는 사람은 메일 링크를 열어 폰에서 1분 안에 서명합니다.

① 표준 계약 템플릿

후원·부스·출연 등 10종 양식에서 빈칸만 채웁니다. 서명 칸은 자동으로 놓입니다. 가장 빠릅니다.

② 내 PDF + 클릭

이미 있는 계약서 PDF를 올리고, 서명 칸을 문서 위에 클릭해서 놓습니다.

③ PDF에 태그

워드·한글에서 [[sign:1]] 같은 태그를 넣어 PDF로 저장하면, 올리는 순간 칸이 자동으로 잡힙니다.

① 표준 계약 템플릿

  1. 대시보드 → 템플릿에서 양식을 고릅니다.
  2. 계약서 언어: 한국어, English, 한·영 병기 중 하나.
  3. 계약 조건 (빈칸): * 표시는 필수입니다. 선택 항목을 비워 두면 그 아래 적힌 기본 문구가 들어갑니다.
  4. 서명할 사람: 역할 순서(갑 = 1, 을 = 2)대로 이름과 이메일. 1번부터 차례로 메일을 받습니다.
  5. 당사자 정보 (선택): 상호·등록번호·대표자·주소·연락처. 비워 두면 그 당사자가 서명할 때 직접 입력합니다.
  6. 입금 계좌 (선택): 넣으면 계약서 지급 조항에 그 계좌가 적히고, 서명 화면과 메일에 "다른 계좌로 입금하지 마세요" 경고가 붙습니다.
  7. PDF 미리보기로 확인한 뒤 초안 만들기(검토 후 보내기) 또는 바로 보내기.
양식쓰는 곳
후원 계약서행사·축제 후원: 후원금, 혜택, 지급 일정, 취소·환불
부스 참가 계약서전시·행사 부스 참가비, 부스 규격, 설치·철거
출연 계약서아티스트·연사 출연료, 리허설, 촬영·홍보 사용
장소 대관 계약서대관료, 사용 시간, 보증금, 원상복구
초상권·콘텐츠 이용 동의서사진·영상·이름의 이용 범위와 기간
용역 계약서업무 범위, 검수, 대금, 결과물 권리
프리랜서 계약서개인 작업자의 과업·보수·권리
물품 공급 계약서품목·수량·납품·검수·하자
상호 비밀유지계약서협의 전 서로의 정보 보호
업무협약서협력 범위와 역할 (구속력 있는 조항은 비밀유지 등으로 한정)

표준 양식은 지급 조건, 책임 한도, 해지와 시정 기간, 지식재산권, 비밀유지 기간, 준거법 같은 계약 검토 항목을 기준으로 작성했습니다. 법률 자문은 아니므로 금액이 크거나 특수한 계약은 전문가 검토를 받으세요.

계약 내용 고치기와 버전

템플릿으로 만든 초안은 계약 화면에서 바로 고칩니다.

모든 버전과 수정은 해시 체인 감사 기록에 남고, 완료 PDF의 지문(SHA-256)은 원본 확인 페이지에서 누구나 확인할 수 있습니다.

AI로 고치기

계약 화면의 AI에게 고쳐 달라고 하기에 평소 말로 적습니다. AI는 바꿀 곳만 제안하고, 무엇이 바뀌는지 비교 화면으로 먼저 보여 줍니다. 적용하고 저장을 눌러야 새 버전이 됩니다.

AI는 지시에 없는 금액·날짜·이름을 지어내지 않도록 되어 있습니다. 숫자는 지시에 직접 적어 주세요. 하루 사용 횟수: Free 20회, Pro 200회.

② 내 PDF + 클릭

  1. + 새 계약 → PDF 선택.
  2. 받는 사람을 서명 순서대로 넣습니다.
  3. 서명 칸: "누구의 칸"을 고르고, 칸 종류(서명·이니셜·날짜·텍스트·체크)를 누른 뒤 문서 위를 클릭. 끌어서 옮기고 ×로 지웁니다.
  4. 입금 계좌(선택) → 보내기.

③ PDF에 태그 넣기

문서에 아래 태그를 글자로 적어 두면 올릴 때 그 자리에 칸이 생깁니다. 숫자는 받는 사람 번호입니다. 태그 글자는 흰색으로 해 두면 인쇄물에 보이지 않습니다.

태그칸
[[sign:1]]1번 사람의 서명
[[initials:2]]2번 사람의 이니셜
[[date:1]]서명한 날짜 (자동)
[[text:2:상호]]2번 사람이 적는 텍스트, 이름표 "상호"
[[check:2]]체크 박스 (선택)

칸은 태그 자리에서 아래쪽으로 놓입니다. 서명 칸은 약 3줄 높이이므로 태그 아래에 그만큼 여백을 남겨 두세요.

OKSign guide

There are three ways to make a contract. Whichever you use, signers open the emailed link and finish on a phone in a minute.

① Standard templates

Ten common contracts (sponsorship, booth, performer…). Fill the blanks; signature fields are placed for you.

② Your PDF + click

Upload the PDF you already have and click where each field goes.

③ Tags in the PDF

Type tags like [[sign:1]] in Word or Google Docs; fields appear where the tags are when you upload.

① Standard templates

  1. Dashboard → Templates, pick one.
  2. Contract language: Korean, English, or both.
  3. Terms (blanks): * is required. An empty optional blank uses the default wording shown under it.
  4. Who signs: name and email in role order (Party A = 1, Party B = 2). Person 1 is emailed first.
  5. Party details (optional): name, registration no., representative, address, contact. Leave them empty and that party fills them when signing.
  6. Payee account (optional): printed in the payment clause, with a fraud warning on the signing page and in every email.
  7. Preview PDF, then Create draft or Send now.

Templates: Sponsorship · Exhibitor Booth · Performer Appearance · Venue Rental · Image and Content Release · Service · Freelance · Supply · Mutual NDA · MOU.

The standard forms are drafted against the usual contract-review points (payment terms, liability cap, termination and cure, IP, confidentiality term, governing law). They are not legal advice; have high-value or unusual contracts reviewed.

Editing and versions

Edit with AI

Write what you want in plain words. The AI proposes only the changes and shows a comparison first; nothing is saved until you press Apply and save. It is told not to invent amounts, dates or names — write the numbers in your instruction. Daily limit: Free 20, Pro 200.

② Your PDF + click · ③ Tags

New contract → choose PDF → add people in signing order → pick a field type and click on the page. Or put tags in the document: [[sign:1]] [[initials:2]] [[date:1]] [[text:2:Company]] [[check:2]] (the number is the person). Fields start at the tag and extend down; leave about three lines of space below a signature tag.

API

대시보드 → 설정 → API 키를 만든 뒤, 같은 일을 API로 합니다. 전체 명세: /api/openapi.json

Create a key in Dashboard → Settings → API keys. Everything above works over the API. Full spec: /api/openapi.json

Templates and their blanks

curl https://oksign.app/api/v1/templates -H "authorization: Bearer $OKSIGN_API_KEY"

Contract from a template, sent in one call

curl https://oksign.app/api/v1/envelopes/from-template \
  -H "authorization: Bearer $OKSIGN_API_KEY" -H "content-type: application/json" \
  -H "idempotency-key: deal-1042" \
  -d '{
    "template_id": "sponsorship",
    "mode": "ko+en",
    "variables": {
      "event_name": "2027 Music Festival", "event_dates": "2027-02-26 ~ 28", "venue": "Convention Center Hall A",
      "benefits": "Logo on main stage, one 3x3 m booth", "fee": "KRW 5,000,000",
      "payment_schedule": "100% within 7 days of signing", "a_name": "Festival Organizing Committee"
    },
    "recipients": [
      { "name": "Organizer", "email": "organizer@example.com" },
      { "name": "Sponsor", "email": "sponsor@example.com" }
    ],
    "payee": { "bank": "KB Kookmin Bank", "number": "123-456-789", "holder": "Festival Organizing Committee" },
    "send": true
  }'

빠진 필수 빈칸은 missing_variables 오류에 이름이 나옵니다. "send": false(기본값)면 초안만 만듭니다.

Missing required blanks are named in a missing_variables error. Without "send": true you get a draft.

Edit a draft: blanks or text → new version

curl -X PUT https://oksign.app/api/v1/envelopes/$ID/content \
  -H "authorization: Bearer $OKSIGN_API_KEY" -H "content-type: application/json" \
  -d '{ "values": { "fee": "KRW 7,000,000" }, "note": "fee raised" }'

values는 빈칸 전체를 바꿉니다. 먼저 GET /api/v1/envelopes/$ID의 content.values를 받아 고친 뒤 보내세요.

values replaces all blanks: read content.values from GET /api/v1/envelopes/$ID, change it, send it back.

AI proposal (nothing saved)

curl https://oksign.app/api/v1/envelopes/$ID/content/ai \
  -H "authorization: Bearer $OKSIGN_API_KEY" -H "content-type: application/json" \
  -d '{ "instruction": "Pay 50% within 7 days of signing, the rest within 14 days after the event" }'
# → { "summary": "...", "ops": [...], "content": { ... } }  then PUT …/content with that content to save it

Versions, restore, revise

GET  /api/v1/envelopes/$ID/versions
GET  /api/v1/envelopes/$ID/versions/2/document
POST /api/v1/envelopes/$ID/versions/1/restore
POST /api/v1/envelopes/$ID/revise          # after sending: next revision as a draft