# 서식 자동작성



계약서·증명서·신고서 50종을 자유 문장 또는 정형 필드로 받아 PDF·DOCX·HWPX·RTF·HTML·MD·TXT·JSON·XLSX 로 만들어 돌려줍니다. 입력하지 않은 항목은 오류가 아니라 빈칸으로 남습니다.



인증: Authorization: Bearer $APICK_API_KEY

본문 있는 REST 요청: multipart/form-data. GET 본문 및 MCP JSON-RPC 규격은 해당 명세를 따릅니다.

인증키는 서버에 보관하세요. 모든 예제는 정적 자료입니다.



## POST /rest/form_document 응답 필드

## API 요청: POST /rest/form_document



### 입력

- `form` (string, 필수): 서식 키 (예: labor_contract_standard, biz_estimate). 전체 목록은 /rest/form_list(무료)

- `text` (string, 선택): 자유 문장. 라벨 없이도 전화·주소·금액·날짜를 형식으로 인식합니다 문자열로 보내며, 생략하면 서버 기본값이 적용되거나 해당 조건이 해제됩니다.

- `data` (object, 선택): 정형 필드. 서식별 키는 /rest/form_fields(무료)로 확인하며, 같은 키는 text 보다 우선합니다

- `format` (string, 선택): 결과 형식, 기본 pdf. 문서(pdf·docx·hwpx·rtf)는 과금, 값·미리보기 포맷은 낮은 단가 가능한 값은 9가지입니다. pdf = pdf 값을 뜻하며, 같은 응답의 다른 필드와 함께 해석하세요. docx = docx 값을 뜻하며, 같은 응답의 다른 필드와 함께 해석하세요. hwpx = hwpx 값을 뜻하며, 같은 응답의 다른 필드와 함께 해석하세요. rtf = rtf 값을 뜻하며, 같은 응답의 다른 필드와 함께 해석하세요. html = html 값을 뜻하며, 같은 응답의 다른 필드와 함께 해석하세요. md = md 값을 뜻하며, 같은 응답의 다른 필드와 함께 해석하세요. txt = txt 값을 뜻하며, 같은 응답의 다른 필드와 함께 해석하세요. json = json 값을 뜻하며, 같은 응답의 다른 필드와 함께 해석하세요. xlsx = xlsx 값을 뜻하며, 같은 응답의 다른 필드와 함께 해석하세요. 허용값: pdf, docx, hwpx, rtf, html, md, txt, json, xlsx



### 응답 명세

```json

{
  "type": "object",
  "properties": {}
}

```

### curl

```curl

curl --fail-with-body --request POST 'https://apick.app/rest/form_document' \
  --header "Authorization: Bearer $APICK_API_KEY" \
  --form-string 'form=labor_contract_standard' \
  --form-string '__apick_encoding[text]=base64-utf8' \
  --form-string 'text=7IKs7JeF7LK066qFOiAo7KO8KeyXkOydtO2UvQrqt7zroZzsnpAg7ISx66qFOiDquYDssqDsiJgK7J6E6riI7JWhOiAz67Cx66eM7JuQCuq3vOuhnOqwnOyLnOydvDogMjAyNi0xMS0wMg==' \
  --form-string 'format=docx' \
  --dump-header response.headers --output result.bin
# response.headers의 Content-Type을 확인한 뒤 파일을 사용하세요.

```

### Node.js (서버 ESM)

```javascript

const form = new FormData();
form.append("form", "labor_contract_standard");
form.append("__apick_encoding[text]", "base64-utf8");
form.append("text", "7IKs7JeF7LK066qFOiAo7KO8KeyXkOydtO2UvQrqt7zroZzsnpAg7ISx66qFOiDquYDssqDsiJgK7J6E6riI7JWhOiAz67Cx66eM7JuQCuq3vOuhnOqwnOyLnOydvDogMjAyNi0xMS0wMg==");
form.append("format", "docx");
const response = await fetch("https://apick.app/rest/form_document", {
  method: "POST",
  headers: { Authorization: "Bearer " + process.env.APICK_API_KEY },
  body: form,
  signal: AbortSignal.timeout(120_000),
});
if (!response.ok) throw new Error(`HTTP ${response.status}: ${await response.text()}`);
if ((response.headers.get("content-type") || "").includes("json")) {
  throw new Error(JSON.stringify(await response.json()));
}
const { writeFile } = await import("node:fs/promises");
await writeFile("result.bin", new Uint8Array(await response.arrayBuffer()));

```

### python

```python

import os
import requests
parts = [
    ("form", (None, "labor_contract_standard")),
    ("__apick_encoding[text]", (None, "base64-utf8")),
    ("text", (None, "7IKs7JeF7LK066qFOiAo7KO8KeyXkOydtO2UvQrqt7zroZzsnpAg7ISx66qFOiDquYDssqDsiJgK7J6E6riI7JWhOiAz67Cx66eM7JuQCuq3vOuhnOqwnOyLnOydvDogMjAyNi0xMS0wMg==")),
    ("format", (None, "docx")),
]
response = requests.request("POST", "https://apick.app/rest/form_document",
    headers={"Authorization": "Bearer " + os.environ["APICK_API_KEY"]},
    files=parts,
    timeout=(10, 120), stream=True)
response.raise_for_status()
if "json" in response.headers.get("Content-Type", ""):
    raise RuntimeError(response.json())
with open("result.bin", "wb") as output:
    for chunk in response.iter_content(65536):
        output.write(chunk)

```

### php

```php

<?php
$headers = ["Authorization: Bearer " . getenv("APICK_API_KEY")];
$form = [
    'form' => 'labor_contract_standard',
    '__apick_encoding[text]' => 'base64-utf8',
    'text' => '7IKs7JeF7LK066qFOiAo7KO8KeyXkOydtO2UvQrqt7zroZzsnpAg7ISx66qFOiDquYDssqDsiJgK7J6E6riI7JWhOiAz67Cx66eM7JuQCuq3vOuhnOqwnOyLnOydvDogMjAyNi0xMS0wMg==',
    'format' => 'docx',
];
$curl = curl_init('https://apick.app/rest/form_document');
curl_setopt_array($curl, [
    CURLOPT_CUSTOMREQUEST => 'POST',
    CURLOPT_HTTPHEADER => $headers,
    CURLOPT_POSTFIELDS => $form,
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_CONNECTTIMEOUT => 10, CURLOPT_TIMEOUT => 120,
]);
$body = curl_exec($curl);
if ($body === false) { throw new RuntimeException(curl_error($curl)); }
$status = curl_getinfo($curl, CURLINFO_HTTP_CODE);
$type = curl_getinfo($curl, CURLINFO_CONTENT_TYPE) ?: "";
curl_close($curl);
if ($status >= 400) { throw new RuntimeException($body); }
if (strpos($type, "json") !== false) { throw new RuntimeException($body); }
file_put_contents('result.bin', $body);

```

## 코드·오류

## 상세 기능·요금

이럴 때 씁니다 상황보내는 값 상담 내용을 근로계약서로 정리상담 메모 문장 그대로 고객이 입력한 값으로 견적서 발급이름·금액·항목을 필드로 사내 시스템에서 재직증명서 자동 발급인사 데이터 필드 임대차 조건을 문장으로 받아 계약서 생성문장 + 보증금·기간 필드 지원 포맷 format결과쓰는 곳 pdfapplication/pdf인쇄·제출용 docxapplication/vnd.openxmlformats-officedocument.wordprocessingml.documentWord·한글에서 편집 hwpxapplication/hwp+zip한글 2014 이상에서 편집 rtfapplication/rtf한글·Word 호환 htmltext/html; charset=utf-8웹 미리보기 mdtext/markdown; charset=utf-8문서화 txttext/plain; charset=utf-8평문 jsonapplication/json; charset=utf-8값 추출·연동 xlsxapplication/vnd.openxmlformats-officedocument.spreadsheetml.sheet값 검수 시트 지원 서식 50종 서식form분류항목 표준근로계약서labor_contract_standard노무22개(필수 4) 기간제 근로계약서labor_contract_fixed_term노무18개(필수 5) 단시간 근로계약서labor_contract_part_time노무17개(필수 4) 연봉계약서labor_contract_annual_salary노무14개(필수 4) 재직증명서hr_employment_certificate노무15개(필수 5) 경력증명서hr_career_certificate노무12개(필수 5) 사직서hr_resignation노무10개(필수 4) 휴직원hr_leave_request노무10개(필수 5) 연차휴가 신청서hr_annual_leave노무12개(필수 6) 비밀유지계약서(NDA)biz_nda노무12개(필수 3) 주택임대차 표준계약서re_lease_housing부동산19개(필수 7) 상가건물 임대차계약서re_lease_commercial부동산18개(필수 7) 부동산 매매계약서re_sale_contract부동산19개(필수 6) 계약금 영수증re_deposit_receipt부동산10개(필수 5) 임대차 해지 합의서re_lease_termination부동산12개(필수 5) 관리비 부과 명세서re_maintenance_statement부동산18개(필수 6) 시설 수리 요청서re_repair_request부동산10개(필수 4) 주택임대차 신고서re_lease_report부동산15개(필수 7) 사업자등록 신청서biz_registration_application사업15개(필수 8) 폐업신고서biz_closure_report사업10개(필수 5) 사업자등록 정정신고서biz_correction_report사업9개(필수 5) 간이과세자 부가가치세 신고서tax_vat_simple_return세무10개(필수 6) 견적서biz_estimate사업18개(필수 6) 거래명세서biz_transaction_statement사업14개(필수 7) 세금계산서 발행 요청서biz_tax_invoice_request세무13개(필수 8) 용역계약서(프리랜서)biz_service_contract사업17개(필수 8) 물품구매계약서biz_purchase_contract사업17개(필수 7) 영수증biz_receipt세무10개(필수 5) 차용증loan_promissory_note금융16개(필수 6) 금전소비대차계약서loan_contract금융14개(필수 6) 임금명세서hr_pay_statement노무19개(필수 5) 수행확인서ops_completion_cert사업10개(필수 6) 검수확인서ops_inspection_cert사업11개(필수 6) 회의록ops_meeting_minutes운영12개(필수 6) 업무보고서ops_work_report운영10개(필수 6) 사업 제안서ops_proposal운영13개(필수 6) 사업계획서ops_business_plan운영14개(필수 5) 납품확인서ops_delivery_note사업12개(필수 6) 개인정보 이용 동의서ops_privacy_consent민원11개(필수 6) 내용증명civil_content_certification민원11개(필수 7) 위임장civil_power_of_attorney민원12개(필수 5) 사실확인서civil_fact_confirmation민원9개(필수 4) 합의서civil_settlement민원12개(필수 5) 각서civil_memo민원9개(필수 5) 진정서civil_petition민원11개(필수 7) 정보공개 청구서civil_info_disclosure민원11개(필수 7) 이력서hr_resume채용12개(필수 3) 자기소개서hr_cover_letter채용10개(필수 6) 입사지원서hr_job_application채용15개(필수 5) 추천서hr_recommendation채용10개(필수 6) 서식별 입력 항목과 예시는 /rest/form_fields 로 확인합니다. 예를 들어 {"form":"labor_contract_standard"} 를 보내면 필드 키·라벨·타입·필수 여부·예시가 돌아옵니다. 무료 API 경로하는 일과금 /rest/form_list50종 목록·분류·필드 수. category·keyword 로 거릅니다.무료 /rest/form_fields서식 1종의 필드 정의(키·라벨·타입·필수·예시·선택지)무료 /rest/form_preview자유 텍스트에서 무엇이 인식됐고 무엇이 비었는지 미리 확인무료 처음 연동할 때는 form_preview 로 인식 결과를 확인한 뒤 form_document 로 문서를 만드는 순서를 권합니다. 주의 결과물은 작성 보조 초안입니다. 법률·세무 자문이 아니며 서명·날인 전에는 효력이 없습니다. 주민등록번호 같은 민감정보는 문서 생성에만 쓰고 저장하지 않지만, 고객사 로그에 남기지 않도록 직접 관리해 주세요. 서식 문구는 법령 개정에 따라 달라질 수 있으므로 제출 전 최신 양식을 확인하세요.

## 상세 요청

MethodURL POST https://apick.app/rest/form_document 응답은 파일 자체입니다. Content-Disposition 에 한글 파일명이, X-Form-Filled·X-Form-Total·X-Form-Missing 에 채움 정도와 빈 필수 항목이 실립니다. 문서(PDF·DOCX·HWPX·RTF)는 100P, 값·미리보기 포맷(HTML·MD·TXT·JSON·XLSX)은 30P입니다. form-data 전체 예제 보기 // 정형 필드만 보내는 경우. 없는 항목은 빈칸으로 출력됩니다. { "form": "biz_estimate", "data": { "supplier_name": "(주)에이픽", "client_name": "(주)고객사", "estimate_date": "2026-11-02", "supply_amount": "12000000", "total_amount": "13200000" }, "format": "pdf" } 입력이 어떻게 채워지나 보낸 표기문서에 들어가는 값 01012345678010-1234-5678 9001011234567900101-1234567 1234567890123-45-67890 2026.1.12026-01-01 3백만원·1억 5천만원3,000,000 원·150,000,000 원 (한글 금액 병기) 형식이 맞지 않는 값은 문서를 막지 않고 그 항목만 빈칸으로 두며, 응답의 X-Form-Missing 또는 JSON 포맷의 invalid 에 사유가 표시됩니다.

## 상세 예제

결과물 예시 같은 서식을 값으로 채워 만든 실제 파일입니다. 예시 값은 모두 가상입니다. 서식포맷내려받기 표준근로계약서PDF보기 표준근로계약서DOCX내려받기 표준근로계약서HWPX내려받기 주택임대차 표준계약서PDF보기 주택임대차 표준계약서HWPX내려받기 견적서PDF보기 견적서DOCX내려받기
