apick-api 4.8.1 → 4.11.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -96,6 +96,8 @@ Leave the allowed-IP list blank for unrestricted access. To restrict access, reg
96
96
  | `linkedinProfile(url)` | 링크드인 프로필 / LinkedIn profile | JSON |
97
97
  | `linkedinCompany(url)` | 링크드인 회사 정보 / LinkedIn company | JSON |
98
98
  | `linkedinJob(url)` | 링크드인 채용공고 / LinkedIn job posting | JSON |
99
+ | `courtAuction(caseNo, court)` | 법원 경매사건 조회 / Court auction case | JSON |
100
+ | `registryDocVerify(issueNo, options)` | 등기·증명서 발급확인 / Registry certificate verification | JSON |
99
101
  | `createTtsJob(text, options)` | 한국어 내레이션 작업 접수 / Create TTS job | JSON |
100
102
  | `getTtsJob(jobId)` | TTS 작업 상태 / TTS job status | JSON |
101
103
  | `cancelTtsJob(jobId)` | 대기·생성 중 TTS 작업 취소 / Cancel waiting or processing TTS job | JSON |
@@ -124,6 +126,19 @@ Leave the allowed-IP list blank for unrestricted access. To restrict access, reg
124
126
  | `requestHealthCheckup(input)` / `getHealthCheckup(transactionId)` | 국가 건강검진 결과 조회 / National health checkup results | JSON |
125
127
  | `requestCashReceiptDeduction(input)` / `getCashReceiptDeduction(transactionId)` | 현금영수증 소득공제 내역 / Cash receipt income deductions | JSON |
126
128
  | `requestTaxReturnHistory(input)` / `getTaxReturnHistory(transactionId)` | 국세 신고내역 조회 / National tax return history | JSON |
129
+ | `requestResidentRegistration(input)` / `getResidentRegistration(transactionId)` | 주민등록표등본 발급 / Resident registration certificate | JSON |
130
+ | `requestResidentRegistrationCho(input)` / `getResidentRegistrationCho(transactionId)` | 주민등록표초본 발급 / Resident registration certificate (cho) | JSON |
131
+ | `requestGov24Bundle(input)` / `getGov24Bundle(transactionId)` | 정부24 통합 조회 / Selectable Government24 bundle | JSON |
132
+ | `requestIncomeAmountCert(input)` / `getIncomeAmountCert(transactionId)` | 소득금액증명 발급 / Income amount certificate | PDF·JSON |
133
+ | `requestPensionCreditCert(input)` / `getPensionCreditCert(transactionId)` | 연금보험료등 소득세액 공제확인서 발급 / Pension credit certificate | PDF·JSON |
134
+ | `requestFactCert(input)` / `getFactCert(transactionId)` | 납부내역증명(납세사실증명) 발급 / Tax payment fact certificate | PDF·JSON |
135
+ | `requestTaxClearanceCert(input)` / `getTaxClearanceCert(transactionId)` | 납세증명서 발급 / Tax clearance certificate | PDF·JSON |
136
+ | `requestIncomeCertBundle(input)` / `getIncomeCertBundle(transactionId)` | 소득 증빙서류 통합발급 / Income certificate bundle | PDF·JSON |
137
+ | `requestBusinessCertBundle(input)` / `getBusinessCertBundle(transactionId)` | 사업자 증빙서류 통합발급 / Business certificate bundle | PDF·JSON |
138
+ | `requestBusinessRegistrationCert(input)` / `getBusinessRegistrationCert(transactionId)` | 사업자등록증명 발급 / Business registration certificate | PDF·JSON |
139
+ | `requestVatTaxBaseCert(input)` / `getVatTaxBaseCert(transactionId)` | 부가가치세 과세표준증명 발급 / VAT tax base certificate | PDF·JSON |
140
+ | `requestFinancialStatementCert(input)` / `getFinancialStatementCert(transactionId)` | 표준재무제표증명 발급 / Financial statements certificate | PDF·JSON |
141
+ | `requestClosureCert(input)` / `getClosureCert(transactionId)` | 폐업사실증명 발급 / Business closure certificate | PDF·JSON |
127
142
  | `searchSkills(options)` / `getSkill(skillId)` | Skill 검색·상세 / Search and inspect Skills | JSON |
128
143
  | `getSkillPerformance()` | 시험 방법·표본 수·기계 검사·품질 점수 / Measured results and methods | JSON |
129
144
  | `quoteSkill(skillId, input, options)` | Skill 견적(무료) / Quote a run (free) | JSON |
@@ -313,9 +328,9 @@ The four document-specific methods return JSON. `maskResidentNumber` returns PNG
313
328
 
314
329
  ## 간편인증 기반 데이터 조회 / Simple-auth data lookups
315
330
 
316
- 본인 간편인증이 필요한 조회 상품(재직·소득·연금·면허·건강검진·현금영수증·국세 신고내역)은 접수(`request*`)와 결과 조회(`get*`)가 분리되어 있습니다. 접수 응답의 `transactionId`로 결과를 폴링하세요.
331
+ 본인 간편인증이 필요한 조회 상품(재직·소득·연금·면허·건강검진·현금영수증·국세 신고내역·주민등록표 발급·정부24 통합 조회·홈택스 민원증명)은 접수(`request*`)와 결과 조회(`get*`)가 분리되어 있습니다. 접수 응답의 `transactionId`로 결과를 폴링하세요.
317
332
 
318
- Products that require the user's own simple-auth verification (employment, income, pension, driver's license, health checkup, cash receipts, tax returns) split the call into a `request*()` acceptance and a `get*()` poll. Use the `transactionId` from the accepted response to poll for the result.
333
+ Products that require the user's own simple-auth verification (employment, income, pension, driver's license, health checkup, cash receipts, tax returns, resident registration certificates, and the Government24 bundle) split the call into a `request*()` acceptance and a `get*()` poll. Use the `transactionId` from the accepted response to poll for the result.
319
334
 
320
335
  아래 함수는 7종 모두에 공통으로 사용합니다. 같은 `transactionId`로 순차 조회하며 5→10→20→30초 간격으로 늘린 뒤 30초를 유지합니다. `resultAvailable === true`이면 즉시 결과를 반환합니다. `SUCCESS`는 전체 성공, `PARTIAL_SUCCESS`는 부분 성공이므로 `sources`에서 누락·실패 항목을 확인하세요. `AUTH_REJECTED`·`AUTH_EXPIRED`·`FAILED`는 실패 종료이며, `errorCode: 'RESULT_EXPIRED'`는 결과 보관 기간 만료입니다. 실패·만료 시 자동으로 재접수하지 않습니다.
321
336
 
@@ -392,6 +407,25 @@ try {
392
407
  ```
393
408
  <!-- simple-auth-usage:end -->
394
409
 
410
+ ### 정부24 통합 조회 / Government24 bundle
411
+
412
+ ```js
413
+ const bundle = await apick.requestGov24Bundle({
414
+ name: '홍길동',
415
+ birthDate: '19900101',
416
+ phone: '01011112222',
417
+ authProvider: 'kakao',
418
+ // 고른 상품만 인증·조회합니다. 등본 80P, 초본 80P로 선택한 상품 단가를 합산합니다.
419
+ products: ['resident_registration', 'resident_registration_cho'],
420
+ sido: '서울특별시',
421
+ sigungu: '구로구'
422
+ });
423
+ const issued = await pollDataResult(id => apick.getGov24Bundle(id), bundle);
424
+ const pdfBase64 = issued.data.result.residentRegistration['발급문서'];
425
+ ```
426
+
427
+ `GOV24_BUNDLE_PRODUCTS` lists the 13 selectable product keys. Selecting only `driving_license` (or any non-resident product) does not require `sido`/`sigungu`. / `GOV24_BUNDLE_PRODUCTS` lists the 13 selectable keys; the address is required only when a resident registration certificate is selected.
428
+
395
429
  근거: [APICK 개발가이드](https://apick.app/dev_guide/data_health_checkup) · [MCP 3.5.0 상태 계약](https://github.com/lead788/apick-mcp/blob/a803abcb81d07377c85f49bb0b670baf0c17ed04/TOOLS.md)
396
430
 
397
431
  지원 간편인증 방식(`authProvider`) 13종은 `AUTH_PROVIDERS`로 제공됩니다: `kakao`, `naver`, `toss`, `pass`, `samsung`, `kb`, `shinhan`, `hana`, `woori`, `ibk`, `nh`, `kakaobank`, `banksalad`.
@@ -411,6 +445,41 @@ Acceptance is billed at a flat rate; the result is billed only on its first succ
411
445
  | 국가 건강검진 결과 / Health checkup | `requestHealthCheckup` / `getHealthCheckup` | — |
412
446
  | 현금영수증 소득공제 내역 / Cash receipt deductions | `requestCashReceiptDeduction` / `getCashReceiptDeduction` | `incomeYears` (1–3) |
413
447
  | 국세 신고내역 조회 / Tax return history | `requestTaxReturnHistory` / `getTaxReturnHistory` | `years` (1–10) |
448
+ | 주민등록표등본 발급 / Resident registration certificate | `requestResidentRegistration` / `getResidentRegistration` | `sido`, `sigungu` (필수 / required), `purposeCd`, `submitTarget`, `includeAddressHistory`, `includeHousehold` |
449
+ | 주민등록표초본 발급 / Resident registration certificate (cho) | `requestResidentRegistrationCho` / `getResidentRegistrationCho` | `sido`, `sigungu` (필수 / required), `purposeCd`, `submitTarget`, `includeAddressHistory`, `includeHousehold` |
450
+ | 정부24 통합 조회 / Selectable Government24 bundle | `requestGov24Bundle` / `getGov24Bundle` | `products` (필수 / required), 등본·초본 선택 시 `sido`·`sigungu` (필수 / required when either resident certificate is selected) |
451
+ | 소득금액증명 발급 / Income amount certificate | `requestIncomeAmountCert` / `getIncomeAmountCert` | `year`, `use_purpose`, `submit_to`, `delivery` (필수 / required), `format`, `engl_yn`, `quantity`, `email`, `fax_no`, `wallet_address` |
452
+ | 연금보험료등 소득세액 공제확인서 발급 / Pension credit certificate | `requestPensionCreditCert` / `getPensionCreditCert` | `year`, `use_purpose`, `submit_to`, `delivery` (필수 / required), `format`, `address_open_yn`, `resno_open_yn`, `quantity`, `email`, `fax_no`, `wallet_address` |
453
+ | 납부내역증명(납세사실증명) 발급 / Tax payment fact certificate | `requestFactCert` / `getFactCert` | `use_purpose`, `submit_to`, `delivery`, `itrf_cd` (필수 / required), `year`, `start_month`, `end_month`, `issuance`, `engl_yn`, `format` |
454
+ | 납세증명서 발급 / Tax clearance certificate | `requestTaxClearanceCert` / `getTaxClearanceCert` | `cert_type`(`B0006` 납세증명서·`B0010` 해외이주용), `use_purpose`, `submit_to`, `delivery`, `itrf_cd` (필수 / required), `year`, `start_month`, `end_month`, `issuance`, `format` |
455
+ | 소득 증빙서류 통합발급 / Income certificate bundle | `requestIncomeCertBundle` / `getIncomeCertBundle` | `year`, `use_purpose`, `submit_to`, `delivery` (필수 / required), `format`, `amount_open_yn`, `income_source_open_yn`, `withholding_all_print_yn`, `address_open_yn`, `resno_open_yn`, `quantity`, `email`, `fax_no`, `wallet_address` |
456
+ | 사업자 증빙서류 통합발급 / Business certificate bundle | `requestBusinessCertBundle` / `getBusinessCertBundle` | `business_no`, `year`, `use_purpose`, `submit_to`, `delivery` (필수 / required), `agreed: true` 또는 `bind_id` (둘 중 하나 필수 / one required), `period`, `engl_yn`, `format`, `quantity`, `email`, `fax_no`, `wallet_address` |
457
+ | 사업자등록증명 발급 / Business registration certificate | `requestBusinessRegistrationCert` / `getBusinessRegistrationCert` | `business_no`, `use_purpose`, `submit_to`, `delivery` (필수 / required), `engl_yn`, `format`, `quantity`, `email`, `fax_no`, `wallet_address` |
458
+ | 부가가치세 과세표준증명 발급 / VAT tax base certificate | `requestVatTaxBaseCert` / `getVatTaxBaseCert` | `business_no`, `year`, `use_purpose`, `submit_to`, `delivery` (필수 / required), `period`(`1`·`2`·`all`), `engl_yn`, `format` |
459
+ | 표준재무제표증명 발급 / Financial statements certificate | `requestFinancialStatementCert` / `getFinancialStatementCert` | `business_no`, `year`, `use_purpose`, `submit_to`, `delivery` (필수 / required), `engl_yn`, `format` |
460
+ | 폐업사실증명 발급 / Business closure certificate | `requestClosureCert` / `getClosureCert` | `business_no`, `use_purpose`, `submit_to`, `delivery` (필수 / required), `engl_yn`, `format` |
461
+
462
+ 홈택스 민원증명은 발급 1건 60P 정액이고 `format` 으로 응답을 고릅니다(`pdf`·`json`·`both`, 기본 `both`). `json`·`both` 이면 발급된 PDF를 파싱한 `PDF데이터.필드` 가 함께 오며, 표 구조에 따라 필드가 비어 있을 수 있습니다. 구조화 값의 정본은 결과 본문(`문서확인번호`·`귀속연도` 등)입니다.
463
+ Hometax certificates cost a flat 60P per issuance. `format` selects the response (`pdf`, `json`, or `both`; default `both`). With `json`/`both` the parsed PDF fields arrive in `PDF데이터.필드`; some fields may be empty depending on the table layout. The structured values in the result body (`문서확인번호`, `귀속연도`, …) are authoritative.
464
+
465
+ 법원 경매사건 조회는 동기 상품입니다. 사건번호는 법원별로 관리되므로 `courtAuction(caseNo, court)` 처럼 법원(이름 `서울중앙지방법원` 또는 코드 `B000210`)을 함께 넘깁니다. 응답에는 사건 기본정보·매각물건·매각기일·배당요구종기가 담기고, 입찰대행·입찰서 작성은 제공하지 않습니다.
466
+ Court auction lookup is synchronous. A case number belongs to one court, so pass the court (name such as `서울중앙지방법원` or code such as `B000210`) together: `courtAuction(caseNo, court)`. The result contains case details, sale items, sale schedule and the dividend claim deadline; bidding assistance and bid form preparation are not provided.
467
+
468
+ 등기·증명서 발급확인 `registryDocVerify(issueNo, options)` 는 증명서에 인쇄된 발급확인번호 12자리(하이픈·공백 허용)와 문서 종류 `options.kind`(`realestate` 기본, `corporate`, `movable`)를 받습니다. 응답은 `verified`·`status`·`message`·`document`·`issued_date`·`registry_office` 이며 증명서 원문은 포함되지 않습니다. 발급일로부터 3개월 이내 발급분만 확인됩니다.
469
+ `registryDocVerify(issueNo, options)` verifies the 12-character verification number printed on an issued registration certificate (hyphens and spaces are accepted); `options.kind` selects `realestate` (default), `corporate` or `movable`. The result carries `verified`, `status`, `message`, `document`, `issued_date` and `registry_office` — never the certificate itself — and only certificates issued within the last three months can be verified.
470
+
471
+ 증빙서류 묶음 2종은 휴대폰 승인 한 번으로 담긴 증명을 함께 발급합니다. 소득 묶음은 소득금액증명·연금보험료등 소득세액 공제확인서(결과 `result.incomeAmountCert`·`result.pensionCreditCert`), 사업자 묶음은 사업자등록증명·부가가치세 과세표준증명·표준재무제표증명(결과 `result.businessRegistrationCert`·`result.vatTaxBaseCert`·`result.financialStatementCert`)입니다. 접수 20P, 최초 결과는 84P·126P로 개별 발급 합계보다 30% 쌉니다. 사업자 묶음은 대표자 본인 확인을 받으므로 `agreed: true` 또는 이전 응답의 `bind_id`(같은 계정·같은 사업자등록번호, 90일)를 보내야 하며, 빠지면 SDK가 호출 전에 `TypeError` 를 던집니다. 일부 증명만 발급되면 `status` 가 `PARTIAL_SUCCESS` 이고 결과 단가는 그대로 청구됩니다.
472
+ The two certificate bundles issue every included certificate after a single phone approval. Acceptance is 20P and the first result is 84P (income) or 126P (business), 30% below issuing each certificate separately. The business bundle requires representative consent: send `agreed: true` or a `bind_id` from a previous response (same account and business number, valid for 90 days); the SDK throws a `TypeError` before calling the server when both are missing. If only some certificates are issued, `status` is `PARTIAL_SUCCESS` and the bundle result price still applies.
473
+
474
+ ```js
475
+ const bundle = await client.requestBusinessCertBundle({
476
+ name: '홍길동', birthDate: '19900101', phone: '01011112222', authProvider: 'kakao',
477
+ business_no: '1234567890', year: '2025', period: 'all',
478
+ use_purpose: '99', submit_to: '99', delivery: '06', format: 'json', agreed: true
479
+ });
480
+ const issued = await pollDataResult(id => client.getBusinessCertBundle(id), bundle);
481
+ const { businessRegistrationCert, vatTaxBaseCert, financialStatementCert } = issued.data.result;
482
+ ```
414
483
 
415
484
  ## 오류 처리 / Error handling
416
485
 
@@ -505,3 +574,19 @@ Set `APICK_API_KEY` in the environment. 원격 MCP는 업로드된 자료를 처
505
574
 
506
575
 
507
576
  TTS: [Gemini·ChatGPT·정규화 / engines and normalization](docs/tts.md). `createOpenAiTtsJob`, `listOpenAiTtsVoices`, `getTtsOptions`를 포함한 최신 계약입니다.
577
+
578
+ ## 차량 자유문 검색 / Vehicle free-text search
579
+
580
+ 차명에 등급·연식·좌석을 함께 넣을 수 있습니다(`파나메라 gts 4인승 19년식`, `PANAMERA GTS 19년`). 입력한 연식·등급을 우선하며 좌석 수는 확인 가능한 차량 사양과 일치해야 합니다. 근접 연식을 선택하면 반환 연식과 안내를 확인하세요. 지정 등급을 찾지 못하거나 확신이 낮으면 제원 없이 무료 후보만 반환하며, 유사 차량이 전혀 없으면 없음 오류로 응답하고 과금하지 않습니다. 별도 연식·등급과 문장 조건이 충돌하면 입력 오류입니다.
581
+
582
+ Put the model, trim, year and seat count in model (for example, PANAMERA GTS 19년). Matching prioritizes the supplied year and trim, and the seat count must be identifiable and consistent with the available specification. Check the returned year and notice when a nearby year is selected. Unmatched trims and low-confidence matches return suggestions without specifications or charges; no similar vehicle returns a no-result error without charging. Conflicting explicit and free-text constraints are rejected.
583
+
584
+ ```js
585
+ await client.vehicleModelInfo({ model: "파나메라 gts 4인승 19년식" });
586
+ ```
587
+
588
+ ### 차량정보 안내 / Vehicle information notices
589
+
590
+ 차량정보는 공백·대소문자가 다른 동일 등급을 우선해 찾으며 연식·사양이 다른 차량은 구분합니다. 기존 `안내`에서 연식·사양 대체, 사양 충돌, 국내 출시 여부 확인 보류, 일부 제원의 추가 검증 상태를 확인할 수 있습니다. 국내 미출시가 확인된 차량은 해외 자료 기준이며 100% 정확성을 보장하지 않는다는 안내가 추가됩니다. 반환된 연식·등급과 안내를 확인하세요. 입력·응답 구조와 과금 방식은 유지됩니다.
591
+
592
+ Vehicle information prioritizes the same trim across spacing and case variations while distinguishing model years and specifications. The existing `안내` notice can describe year/specification substitutions, conflicting specifications, unverified Korean-market availability, or specifications still under review. Confirmed non-Korean-market vehicles receive an additional notice that overseas data does not guarantee 100% accuracy. Check the returned year, trim and notices. Request/response shapes and billing behavior remain unchanged.
package/docs/guide.en.md CHANGED
@@ -306,6 +306,38 @@ Sources: [APICK development guide](https://apick.app/dev_guide/data_health_check
306
306
 
307
307
  `authProvider` is one of the 13 values in `AUTH_PROVIDERS` (kakao, naver, toss, pass, samsung, kb, shinhan, hana, woori, ibk, nh, kakaobank, banksalad). Acceptance is billed at a flat rate; the result is billed only on its first return and free to re-poll afterward. `requestEmployment` takes an optional `insuranceYears` (1-3), `requestPersonalIncome` takes `incomeYears` (1-5), and `requestNpsJoinHistory` takes optional `from`/`to` (`YYYY-MM`). `requestNpsDeductionCert` takes optional `years` (1-5) and `requestNpsCareerHistory` takes optional `from`/`to` (`YYYY-MM`). `requestCashReceiptDeduction` takes optional `incomeYears` (1-3) and `requestTaxReturnHistory` takes optional `years` (1-10). The remaining products are `requestDrivingLicense` and `requestHealthCheckup`.
308
308
 
309
+ `requestResidentRegistration()` and `requestResidentRegistrationCho()` issue the resident registration certificate and require the resident address `sido` and `sigungu`. Each issue costs 80P, and the result carries the PDF base64 in `발급문서` and its SHA-256 in `문서해시`. `requestGov24Bundle()` collects only the products named in `products` with a single authentication, and the charge is the sum of the selected products' prices. `GOV24_BUNDLE_PRODUCTS` exports the 13 selectable keys, and `sido`/`sigungu` are required only when a resident registration product is selected.
310
+
311
+ ```js
312
+ const bundle = await client.requestGov24Bundle({
313
+ name: 'Hong Gildong', birthDate: '19900101', phone: '01011112222', authProvider: 'kakao',
314
+ products: ['resident_registration', 'resident_registration_cho'],
315
+ sido: '서울특별시', sigungu: '구로구'
316
+ });
317
+ const issued = await pollDataResult(id => client.getGov24Bundle(id), bundle);
318
+ ```
319
+
320
+ Hometax certificates are issued with `requestIncomeAmountCert` (income amount), `requestPensionCreditCert` (pension credit), `requestFactCert` (tax payment fact) and `requestTaxClearanceCert` (tax clearance) at a flat 60P per issuance. Every call issues for the authenticated person and requires `year`, `use_purpose`, `submit_to` and `delivery`; `format` (`pdf`, `json` or `both`, default `both`) selects the response. With `json`/`both` the parsed PDF fields arrive in `PDF데이터.필드`, and some fields may be empty depending on the table layout. The values in the result body such as `문서확인번호` and `귀속연도` are authoritative.
321
+
322
+ ```js
323
+ const cert = await client.requestIncomeAmountCert({
324
+ name: 'Hong Gildong', birthDate: '19900101', phone: '01011112222', authProvider: 'kakao',
325
+ year: '2025', use_purpose: '99', submit_to: '99', delivery: '06', format: 'both'
326
+ });
327
+ const issuedCert = await pollDataResult(id => client.getIncomeAmountCert(id), cert);
328
+ ```
329
+
330
+ The certificate bundles `requestIncomeCertBundle` (income amount and pension credit certificates) and `requestBusinessCertBundle` (business registration, VAT tax base and standard financial statement certificates) issue every included certificate after one approval. They take the same issue inputs as the single certificates, and each certificate has its own result section such as `result.incomeAmountCert`. The first result costs 84P and 126P. The business bundle needs `business_no` and representative consent (`agreed: true` or a `bind_id` from a previous response). With `PARTIAL_SUCCESS` some certificates were not issued and the bundle price still applies, so check for empty sections.
331
+
332
+ ```js
333
+ const incomeDocs = await client.requestIncomeCertBundle({
334
+ name: '홍길동', birthDate: '19900101', phone: '01011112222', authProvider: 'kakao',
335
+ year: '2025', use_purpose: '99', submit_to: '99', delivery: '06', format: 'json'
336
+ });
337
+ const incomeResult = await pollDataResult(id => client.getIncomeCertBundle(id), incomeDocs);
338
+ console.log(incomeResult.data.result.incomeAmountCert?.문서확인번호, incomeResult.data.result.pensionCreditCert?.문서확인번호);
339
+ ```
340
+
309
341
  ## Skills
310
342
 
311
343
  Search and run reviewed Skills. Each Skill fixes its input format (`input_schema`), output format (`output_schema`) and base amount (`price_points`). A run is charged only when a result in the promised format is returned.
package/docs/guide.ko.md CHANGED
@@ -233,7 +233,7 @@ console.log(result.data.result.fields);
233
233
 
234
234
  ## 간편인증 데이터 조회
235
235
 
236
- 재직·소득·연금·면허·건강검진·현금영수증·국세 신고내역 조회는 본인 간편인증이 필요해 접수(`request*`)와 결과 조회(`get*`)가 나뉩니다.
236
+ 재직·소득·연금·면허·건강검진·현금영수증·국세 신고내역·주민등록표 발급·정부24 통합 조회는 본인 간편인증이 필요해 접수(`request*`)와 결과 조회(`get*`)가 나뉩니다.
237
237
 
238
238
  아래 함수는 7종 모두에 공통으로 사용합니다. 같은 `transactionId`로 순차 조회하며 5→10→20→30초 간격으로 늘린 뒤 30초를 유지합니다. `resultAvailable === true`이면 즉시 결과를 반환합니다. `SUCCESS`는 전체 성공, `PARTIAL_SUCCESS`는 부분 성공이므로 `sources`에서 누락·실패 항목을 확인하세요. `AUTH_REJECTED`·`AUTH_EXPIRED`·`FAILED`는 실패 종료이며, `errorCode: 'RESULT_EXPIRED'`는 결과 보관 기간 만료입니다. 실패·만료 시 자동으로 재접수하지 않습니다.
239
239
 
@@ -309,6 +309,38 @@ try {
309
309
 
310
310
  `authProvider`는 `AUTH_PROVIDERS`(13종: kakao, naver, toss, pass, samsung, kb, shinhan, hana, woori, ibk, nh, kakaobank, banksalad) 중 하나입니다. 접수는 정액 과금, 결과는 최초 반환에서만 과금되며 재조회는 무료입니다. `requestEmployment`는 `insuranceYears`(1~3), `requestPersonalIncome`은 `incomeYears`(1~5), `requestNpsJoinHistory`는 `from`/`to`(`YYYY-MM`) 선택 입력을 받습니다. `requestNpsDeductionCert`는 `years`(1~5), `requestNpsCareerHistory`는 `from`/`to`(`YYYY-MM`) 선택 입력을 받습니다. `requestCashReceiptDeduction`은 `incomeYears`(1~3), `requestTaxReturnHistory`는 `years`(1~10) 선택 입력을 받습니다. 나머지 상품은 `requestDrivingLicense`, `requestHealthCheckup`입니다.
311
311
 
312
+ 주민등록표등본·초본은 `requestResidentRegistration()`·`requestResidentRegistrationCho()`로 발급하며 주민등록 주소지 `sido`·`sigungu`가 필수입니다. 발급 1건은 80P이고 결과의 `발급문서`는 PDF 원본의 base64, `문서해시`는 그 SHA-256입니다. 정부24 통합 조회 `requestGov24Bundle()`은 `products`에 고른 상품만 한 번의 인증으로 조회하며, 과금은 고른 상품 단가의 합입니다. 선택 가능한 13개 키는 `GOV24_BUNDLE_PRODUCTS`로 제공하고 `sido`·`sigungu`는 등본·초본을 고를 때만 필요합니다.
313
+
314
+ ```js
315
+ const bundle = await client.requestGov24Bundle({
316
+ name: '홍길동', birthDate: '19900101', phone: '01011112222', authProvider: 'kakao',
317
+ products: ['resident_registration', 'resident_registration_cho'],
318
+ sido: '서울특별시', sigungu: '구로구'
319
+ });
320
+ const issued = await pollDataResult(id => client.getGov24Bundle(id), bundle);
321
+ ```
322
+
323
+ 홈택스 민원증명은 `requestIncomeAmountCert`(소득금액증명), `requestPensionCreditCert`(연금보험료등 소득세액 공제확인서), `requestFactCert`(납부내역증명), `requestTaxClearanceCert`(납세증명서)로 발급하며 발급 1건은 60P입니다. 모두 본인명의 발급이고 `year`·`use_purpose`·`submit_to`·`delivery`가 필수이며 `format`(`pdf`·`json`·`both`, 기본 `both`)으로 응답을 고릅니다. `json`·`both` 이면 발급된 PDF를 파싱한 `PDF데이터.필드`가 함께 오고, 표 구조에 따라 일부 필드는 비어 있을 수 있습니다. 결과 본문의 `문서확인번호`·`귀속연도` 같은 값이 정본입니다.
324
+
325
+ ```js
326
+ const cert = await client.requestIncomeAmountCert({
327
+ name: '홍길동', birthDate: '19900101', phone: '01011112222', authProvider: 'kakao',
328
+ year: '2025', use_purpose: '99', submit_to: '99', delivery: '06', format: 'both'
329
+ });
330
+ const issuedCert = await pollDataResult(id => client.getIncomeAmountCert(id), cert);
331
+ ```
332
+
333
+ 증빙서류 묶음 `requestIncomeCertBundle`(소득금액증명·연금보험료등 소득세액 공제확인서)과 `requestBusinessCertBundle`(사업자등록증명·부가가치세 과세표준증명·표준재무제표증명)은 승인 한 번으로 담긴 증명을 함께 발급합니다. 발급 입력은 단건 증명과 같고 결과는 증명마다 `result.incomeAmountCert`처럼 섹션이 따로 옵니다. 최초 결과는 84P·126P입니다. 사업자 묶음은 `business_no`와 대표자 본인 확인(`agreed: true` 또는 이전 응답의 `bind_id`)이 필요합니다. 일부 증명만 발급되면 `status`가 `PARTIAL_SUCCESS`이며 결과 단가는 그대로 청구되니 섹션이 비었는지 확인하세요.
334
+
335
+ ```js
336
+ const incomeDocs = await client.requestIncomeCertBundle({
337
+ name: '홍길동', birthDate: '19900101', phone: '01011112222', authProvider: 'kakao',
338
+ year: '2025', use_purpose: '99', submit_to: '99', delivery: '06', format: 'json'
339
+ });
340
+ const incomeResult = await pollDataResult(id => client.getIncomeCertBundle(id), incomeDocs);
341
+ console.log(incomeResult.data.result.incomeAmountCert?.문서확인번호, incomeResult.data.result.pensionCreditCert?.문서확인번호);
342
+ ```
343
+
312
344
  ## Skills
313
345
 
314
346
  검수를 거친 Skill 을 검색하고 실행합니다. Skill 마다 입력 형식(`input_schema`)·결과 형식(`output_schema`)·기본 금액(`price_points`)이 정해져 있으며, 결과가 약속한 형식으로 반환된 실행만 차감됩니다.
package/package.json CHANGED
@@ -1,71 +1,71 @@
1
- {
2
- "name": "apick-api",
3
- "version": "4.8.1",
4
- "description": "Official zero-dependency Node.js client for APICK data, AI, and image APIs. 에이픽 데이터·AI·이미지 API 공식 Node.js SDK.",
5
- "type": "module",
6
- "main": "./src/index.cjs",
7
- "module": "./src/index.js",
8
- "types": "./src/index.d.ts",
9
- "exports": {
10
- ".": {
11
- "types": "./src/index.d.ts",
12
- "import": "./src/index.js",
13
- "require": "./src/index.cjs"
14
- }
15
- },
16
- "files": [
17
- "src",
18
- "docs",
19
- "examples",
20
- "README.md",
21
- "CHANGELOG.md",
22
- "SECURITY.md",
23
- "LICENSE"
24
- ],
25
- "sideEffects": false,
26
- "engines": {
27
- "node": ">=18"
28
- },
29
- "scripts": {
30
- "test": "node --test && npm run test:types",
31
- "test:types": "tsc -p tsconfig.json",
32
- "test:coverage": "node --test --experimental-test-coverage",
33
- "prepublishOnly": "npm test"
34
- },
35
- "devDependencies": {
36
- "typescript": "^7.0.2"
37
- },
38
- "repository": {
39
- "type": "git",
40
- "url": "git+https://github.com/lead788/apick-api.git"
41
- },
42
- "bugs": {
43
- "url": "https://github.com/lead788/apick-api/issues"
44
- },
45
- "homepage": "https://apick.app/dev_guide",
46
- "license": "MIT",
47
- "author": "APICK",
48
- "publishConfig": {
49
- "access": "public",
50
- "provenance": false
51
- },
52
- "keywords": [
53
- "apick",
54
- "api",
55
- "sdk",
56
- "korea",
57
- "korean-api",
58
- "business-registry",
59
- "parcel-tracking",
60
- "address",
61
- "ocr",
62
- "whois",
63
- "dns",
64
- "google-search",
65
- "pdf",
66
- "excel",
67
- "tts-jobs",
68
- "text-summary",
69
- "image-generation"
70
- ]
71
- }
1
+ {
2
+ "name": "apick-api",
3
+ "version": "4.11.0",
4
+ "description": "Official zero-dependency Node.js client for APICK data, AI, and image APIs. 에이픽 데이터·AI·이미지 API 공식 Node.js SDK.",
5
+ "type": "module",
6
+ "main": "./src/index.cjs",
7
+ "module": "./src/index.js",
8
+ "types": "./src/index.d.ts",
9
+ "exports": {
10
+ ".": {
11
+ "types": "./src/index.d.ts",
12
+ "import": "./src/index.js",
13
+ "require": "./src/index.cjs"
14
+ }
15
+ },
16
+ "files": [
17
+ "src",
18
+ "docs",
19
+ "examples",
20
+ "README.md",
21
+ "CHANGELOG.md",
22
+ "SECURITY.md",
23
+ "LICENSE"
24
+ ],
25
+ "sideEffects": false,
26
+ "engines": {
27
+ "node": ">=18"
28
+ },
29
+ "scripts": {
30
+ "test": "node --test && npm run test:types",
31
+ "test:types": "tsc -p tsconfig.json",
32
+ "test:coverage": "node --test --experimental-test-coverage",
33
+ "prepublishOnly": "npm test"
34
+ },
35
+ "devDependencies": {
36
+ "typescript": "^7.0.2"
37
+ },
38
+ "repository": {
39
+ "type": "git",
40
+ "url": "git+https://github.com/lead788/apick-api.git"
41
+ },
42
+ "bugs": {
43
+ "url": "https://github.com/lead788/apick-api/issues"
44
+ },
45
+ "homepage": "https://apick.app/dev_guide",
46
+ "license": "MIT",
47
+ "author": "APICK",
48
+ "publishConfig": {
49
+ "access": "public",
50
+ "provenance": false
51
+ },
52
+ "keywords": [
53
+ "apick",
54
+ "api",
55
+ "sdk",
56
+ "korea",
57
+ "korean-api",
58
+ "business-registry",
59
+ "parcel-tracking",
60
+ "address",
61
+ "ocr",
62
+ "whois",
63
+ "dns",
64
+ "google-search",
65
+ "pdf",
66
+ "excel",
67
+ "tts-jobs",
68
+ "text-summary",
69
+ "image-generation"
70
+ ]
71
+ }