apick-api 3.8.1 → 3.9.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/CHANGELOG.md +9 -4
- package/README.md +8 -3
- package/docs/guide.en.md +8 -4
- package/docs/guide.ko.md +8 -4
- package/package.json +71 -71
- package/src/index.cjs +5 -1
- package/src/index.d.ts +35 -2
package/CHANGELOG.md
CHANGED
|
@@ -1,9 +1,14 @@
|
|
|
1
|
-
# Changelog
|
|
1
|
+
# Changelog
|
|
2
2
|
|
|
3
|
-
## 3.
|
|
3
|
+
## 3.9.0 — 2026-10-04
|
|
4
4
|
|
|
5
|
-
-
|
|
6
|
-
-
|
|
5
|
+
- `getSkillPerformance()`와 공개 성능표 타입을 추가했습니다. 시험 방식·표본 수·평가일·성공률 구간·미검증 상태를 확인할 수 있습니다.
|
|
6
|
+
- Add `getSkillPerformance()` and report types for methods, sample sizes, evaluation dates, success-rate intervals and untested states.
|
|
7
|
+
|
|
8
|
+
## 3.8.1 — 2026-10-03
|
|
9
|
+
|
|
10
|
+
- 상품별 조회 안내와 공통 인증 가이드 링크를 보강했습니다. API 계약 변경은 없습니다.
|
|
11
|
+
- Document product-specific data guides and shared authentication; API contracts are unchanged.
|
|
7
12
|
|
|
8
13
|
## 3.8.0 — 2026-10-03
|
|
9
14
|
|
package/README.md
CHANGED
|
@@ -101,7 +101,8 @@ Leave the allowed-IP list blank for unrestricted access. To restrict access, reg
|
|
|
101
101
|
| `requestHealthCheckup(input)` / `getHealthCheckup(transactionId)` | 국가 건강검진 결과 조회 / National health checkup results | JSON |
|
|
102
102
|
| `requestCashReceiptDeduction(input)` / `getCashReceiptDeduction(transactionId)` | 현금영수증 소득공제 내역 / Cash receipt income deductions | JSON |
|
|
103
103
|
| `requestTaxReturnHistory(input)` / `getTaxReturnHistory(transactionId)` | 국세 신고내역 조회 / National tax return history | JSON |
|
|
104
|
-
| `searchSkills(options)` / `getSkill(skillId)` | Skill 검색·상세 / Search and inspect Skills | JSON |
|
|
104
|
+
| `searchSkills(options)` / `getSkill(skillId)` | Skill 검색·상세 / Search and inspect Skills | JSON |
|
|
105
|
+
| `getSkillPerformance()` | 시험 방법·표본 수·기계 검사·품질 점수 / Measured results and methods | JSON |
|
|
105
106
|
| `quoteSkill(skillId, input, options)` | Skill 견적(무료) / Quote a run (free) | JSON |
|
|
106
107
|
| `runSkill(skillId, input, options)` | Skill 실행 / Run a Skill | JSON |
|
|
107
108
|
| `getSkillRun(runId)` / `getSkillRunResult(runId)` / `cancelSkillRun(runId)` | 실행 조회·결과·취소 / Read, fetch result, cancel | JSON |
|
|
@@ -115,7 +116,7 @@ Search and run reviewed Skills. Points are charged only when a result in the pro
|
|
|
115
116
|
```js
|
|
116
117
|
import { randomUUID } from 'node:crypto';
|
|
117
118
|
|
|
118
|
-
const found = await apick.searchSkills({ query: '상품명', limit: 5 });
|
|
119
|
+
const found = await apick.searchSkills({ query: '상품명', limit: 5 });
|
|
119
120
|
const skillId = found.data.items[0].skill_id;
|
|
120
121
|
const detail = await apick.getSkill(skillId); // input_schema, output_schema, price_points, estimated_points
|
|
121
122
|
const input = { product_name: '튼튼한 접이식 우산' };
|
|
@@ -130,7 +131,11 @@ while (!['succeeded', 'failed', 'timed_out', 'cancelled'].includes(run.status))
|
|
|
130
131
|
console.log(run.status, run.billing, run.result);
|
|
131
132
|
```
|
|
132
133
|
|
|
133
|
-
`
|
|
134
|
+
검증 결과는 [스킬 성능표](https://apick.app/skills/performance) 또는 `const { data } = await apick.getSkillPerformance()`로 확인합니다. 표본 수·시험일·방법·기계 검사 통과율과 모델 평가 점수를 함께 읽으세요. 미검증 값은 `null`이며, 과거의 다른 조건에서 얻은 점수는 `legacy`로 구분합니다. 모델 점수는 객관적 정확도나 판매 성과 보장이 아닙니다.
|
|
135
|
+
|
|
136
|
+
See the [Skill performance report](https://apick.app/skills/performance) or call `const { data } = await apick.getSkillPerformance()`. Read sample sizes, dates, methods, machine checks and model scores together. Unmeasured values are `null`; historical results under different conditions are in `legacy`. Model scores are not objective accuracy or sales guarantees.
|
|
137
|
+
|
|
138
|
+
`searchSkills({ sort })` 로 추천(`recommended`)·인기(`popular`)·많이 사용(`used`)·좋아요순(`likes`)·평점순(`rating`)·최신(`new`) 순서를 고르고, 검색·상세 응답의 `usage_label`(사용 건수 구간)·`like_count`·`review_count`·`rating_average` 로 Skill 을 비교할 수 있습니다.
|
|
134
139
|
Pick an order with `searchSkills({ sort })` (`recommended`, `popular`, `used`, `likes`, `rating`, `new`) and compare Skills with `usage_label` (a usage tier), `like_count`, `review_count` and `rating_average` in search and detail responses.
|
|
135
140
|
|
|
136
141
|
`searchSkills({ sort })` 로 추천(`recommended`)·인기(`popular`)·많이 사용(`used`)·좋아요순(`likes`)·평점순(`rating`)·최신(`new`) 순서를 고르고, 검색·상세 응답의 `usage_label`(사용 건수 구간)·`like_count`·`review_count`·`rating_average` 로 Skill 을 비교할 수 있습니다.
|
package/docs/guide.en.md
CHANGED
|
@@ -1,5 +1,9 @@
|
|
|
1
1
|
# apick-api English guide
|
|
2
2
|
|
|
3
|
+
## Skill performance report
|
|
4
|
+
|
|
5
|
+
Use `const { data } = await apick.getSkillPerformance()` to read the [public measurements](https://apick.app/skills/performance). Review sample sizes, dates, methods and failure reasons together. Model scores are not objective accuracy; unmeasured values are `null`. Reading the report does not execute a paid Skill.
|
|
6
|
+
|
|
3
7
|
## Request and response formats
|
|
4
8
|
|
|
5
9
|
All SDK requests with a body use `multipart/form-data`. Arrays use separate indexed fields such as `utterance_ids[0]`; let the SDK set the Content-Type boundary. GET requests have no body. The server continues accepting older JSON requests for compatibility.
|
|
@@ -349,7 +353,7 @@ if (status.data.status === "completed") {
|
|
|
349
353
|
## Skill artifacts and execution estimates
|
|
350
354
|
|
|
351
355
|
Skill details and quotes provide estimated price and duration ranges and tool call counts. Check the maximum reservation before execution, then use getSkillArtifact(runId, fileId) to download files with authentication. See [Skill artifacts](skill-artifacts.md) for fields and examples.
|
|
352
|
-
|
|
353
|
-
## Product-specific data guides
|
|
354
|
-
|
|
355
|
-
Product-specific authenticated-data guides describe returned fields, source institutions, use cases, and FAQs. An authentication request starts access to the selected product and returns a transactionId for result polling. Request and response contracts and authentication are unchanged. See the [shared authentication guide](https://apick.app/dev_guide/data) for the flow and error handling.
|
|
356
|
+
|
|
357
|
+
## Product-specific data guides
|
|
358
|
+
|
|
359
|
+
Product-specific authenticated-data guides describe returned fields, source institutions, use cases, and FAQs. An authentication request starts access to the selected product and returns a transactionId for result polling. Request and response contracts and authentication are unchanged. See the [shared authentication guide](https://apick.app/dev_guide/data) for the flow and error handling.
|
package/docs/guide.ko.md
CHANGED
|
@@ -1,5 +1,9 @@
|
|
|
1
1
|
# apick-api 한국어 가이드
|
|
2
2
|
|
|
3
|
+
## 스킬 성능표
|
|
4
|
+
|
|
5
|
+
`const { data } = await apick.getSkillPerformance()`로 [공개 측정표](https://apick.app/skills/performance)를 조회합니다. 표본 수·시험일·검사 방법·실패 사유를 함께 확인하세요. 모델 점수는 객관적 정확도가 아니며 미검증 값은 `null`입니다. 조회 자체에는 유료 실행이 필요하지 않습니다.
|
|
6
|
+
|
|
3
7
|
## 요청과 응답 형식
|
|
4
8
|
|
|
5
9
|
SDK의 본문 요청은 모두 `multipart/form-data`입니다. `utterance_ids[0]`처럼 배열을 개별 필드로 전송하며 `Content-Type` 헤더를 직접 지정할 필요가 없습니다. GET 조회는 본문을 보내지 않습니다. 기존 JSON 요청도 서버에서 호환용으로 계속 처리합니다.
|
|
@@ -357,7 +361,7 @@ if (status.data.status === "completed") {
|
|
|
357
361
|
## 스킬 결과 파일과 실행 예상
|
|
358
362
|
|
|
359
363
|
스킬 상세·견적은 가격과 시간 범위, 도구별 예상 호출 수를 제공합니다. 실행 전 최대 예약액을 확인하고, 성공 결과의 파일은 인증이 적용되는 getSkillArtifact(runId, fileId)로 내려받으세요. 자세한 필드와 예시는 [스킬 결과 파일 안내](skill-artifacts.md)를 참고하세요.
|
|
360
|
-
|
|
361
|
-
## 상품별 조회 가이드
|
|
362
|
-
|
|
363
|
-
상품별 간편인증 조회 가이드에는 조회 데이터, 출처 기관, 활용 사례와 자주 묻는 질문이 있습니다. 인증 요청은 해당 상품의 자료를 조회하기 위한 단계이며 결과 조회용 transactionId를 반환합니다. 요청·응답 계약과 인증 방식은 동일합니다. [공통 인증 흐름](https://apick.app/dev_guide/data)에서 절차와 오류 처리를 확인하세요.
|
|
364
|
+
|
|
365
|
+
## 상품별 조회 가이드
|
|
366
|
+
|
|
367
|
+
상품별 간편인증 조회 가이드에는 조회 데이터, 출처 기관, 활용 사례와 자주 묻는 질문이 있습니다. 인증 요청은 해당 상품의 자료를 조회하기 위한 단계이며 결과 조회용 transactionId를 반환합니다. 요청·응답 계약과 인증 방식은 동일합니다. [공통 인증 흐름](https://apick.app/dev_guide/data)에서 절차와 오류 처리를 확인하세요.
|
package/package.json
CHANGED
|
@@ -1,71 +1,71 @@
|
|
|
1
|
-
{
|
|
2
|
-
"name": "apick-api",
|
|
3
|
-
"version": "3.
|
|
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": "3.9.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
|
+
}
|
package/src/index.cjs
CHANGED
|
@@ -948,7 +948,11 @@ class ApickClient {
|
|
|
948
948
|
return this._skills('GET', '/rest/skills', { query });
|
|
949
949
|
}
|
|
950
950
|
|
|
951
|
-
|
|
951
|
+
getSkillPerformance() {
|
|
952
|
+
return this._skills('GET', '/skills/performance/data.json');
|
|
953
|
+
}
|
|
954
|
+
|
|
955
|
+
getSkill(skillId) {
|
|
952
956
|
return this._skills('GET', '/rest/skills/' + normalizeSkillId(skillId));
|
|
953
957
|
}
|
|
954
958
|
|
package/src/index.d.ts
CHANGED
|
@@ -323,7 +323,9 @@ export class ApickClient {
|
|
|
323
323
|
getCashReceiptDeduction(transactionId: string): Promise<ApickResult<DataRequestResult<CashReceiptDeductionResultPayload>>>;
|
|
324
324
|
requestTaxReturnHistory(input: RequestTaxReturnHistoryInput): Promise<ApickResult<DataRequestAcceptedData>>;
|
|
325
325
|
getTaxReturnHistory(transactionId: string): Promise<ApickResult<DataRequestResult<TaxReturnHistoryResultPayload>>>;
|
|
326
|
-
searchSkills(options?: SkillSearchOptions): Promise<ApickResult<SkillPage<SkillSummary>>>;
|
|
326
|
+
searchSkills(options?: SkillSearchOptions): Promise<ApickResult<SkillPage<SkillSummary>>>;
|
|
327
|
+
/** Public measured results and methods; model scores are not accuracy guarantees. */
|
|
328
|
+
getSkillPerformance(): Promise<ApickResult<SkillPerformanceReport>>;
|
|
327
329
|
getSkill(skillId: string): Promise<ApickResult<SkillDetail>>;
|
|
328
330
|
quoteSkill(skillId: string, input: Record<string, unknown>, options?: { version?: string }): Promise<ApickResult<SkillQuote>>;
|
|
329
331
|
runSkill<T = Record<string, unknown>>(skillId: string, input: Record<string, unknown>, options: SkillRunOptions): Promise<ApickResult<SkillRun<T>>>;
|
|
@@ -339,7 +341,38 @@ export const SKILL_CATEGORIES: readonly ['data', 'ai', 'dev', 'document', 'marke
|
|
|
339
341
|
export type SkillCategory = typeof SKILL_CATEGORIES[number];
|
|
340
342
|
/** 검색 순서. 생략하면 등록 순서 / search order; registration order when omitted */
|
|
341
343
|
export const SKILL_SORTS: readonly ['recommended', 'popular', 'used', 'likes', 'rating', 'new', 'mine', 'liked'];
|
|
342
|
-
export type SkillSort = typeof SKILL_SORTS[number];
|
|
344
|
+
export type SkillSort = typeof SKILL_SORTS[number];
|
|
345
|
+
export interface SkillPerformanceRate {
|
|
346
|
+
passed: number; total: number; percent: number; interval95: [number, number];
|
|
347
|
+
}
|
|
348
|
+
export interface SkillPerformanceReport {
|
|
349
|
+
schema_version: 1;
|
|
350
|
+
updated_at: string;
|
|
351
|
+
inventory_verified: boolean;
|
|
352
|
+
method: { minimum_cases: number; min_score: number; mean_score: number; min_improvement: number; critical_failures: number; description: string; limitations: string[]; interval_note: string; split: { normal: number; boundary: number; adversarial: number } };
|
|
353
|
+
calibration: { at: string; cases: number; true_positive: number; false_negative: number; false_positive: number; true_negative: number; automatic_release_allowed: boolean } | null;
|
|
354
|
+
additional_calibrations: Array<{ label: string; at: string; cases: number; detected: number; missed: number; false_positive: number; uncertain: number; automatic_release_allowed: boolean; scope: string }>;
|
|
355
|
+
skills: Array<{
|
|
356
|
+
key: string; title: string; group: string; origin: 'new' | 'existing'; published: boolean | null; url: string | null;
|
|
357
|
+
current: {
|
|
358
|
+
state: 'not_tested' | 'partial' | 'held' | 'passed' | 'stale'; at?: string;
|
|
359
|
+
cases: number; planned_cases: number; score: number | null; baseline_score: number | null;
|
|
360
|
+
score_samples?: number; evaluation_errors?: number;
|
|
361
|
+
delivery: SkillPerformanceRate | null; machine: SkillPerformanceRate | null;
|
|
362
|
+
median_seconds: number | null; p95_seconds: number | null; timing_samples?: number;
|
|
363
|
+
reasons: string[]; method?: string; sample_type?: string;
|
|
364
|
+
baseline_format_valid?: boolean;
|
|
365
|
+
evaluation_stage?: 'preliminary' | 'holdout';
|
|
366
|
+
dataset_composition?: { normal: number; boundary: number; adversarial: number; misplaced_rejections: number; valid: boolean };
|
|
367
|
+
min_score?: number | null; critical_cases?: number | null;
|
|
368
|
+
case_split?: { standard: number; boundary: number; adversarial: number };
|
|
369
|
+
extra_checks?: Array<{ name: string; passed: number; total: number }>;
|
|
370
|
+
tool_calls?: Array<{ label: string; samples: number; total: number | null; median: number | null; p95: number | null }>;
|
|
371
|
+
case_results?: Array<{ index: number; name: string; kind: 'standard' | 'boundary' | 'adversarial'; status: 'tested' | 'evaluation_error' | 'machine_only' | 'not_tested'; expected: 'success' | 'reject' | null; machine_pass: boolean; score: number | null; baseline_score: number | null; failed_checks: string[]; reason: string | null }>;
|
|
372
|
+
};
|
|
373
|
+
legacy: { cases: number; score: number; baseline_score: number; method: string; independent_holdout: false; at?: string } | null;
|
|
374
|
+
}>;
|
|
375
|
+
}
|
|
343
376
|
export type SkillRunStatus = 'queued' | 'running' | 'completing' | 'succeeded' | 'failed' | 'timed_out' | 'cancelled';
|
|
344
377
|
export type SkillBillingStatus = 'reserved' | 'captured' | 'released' | 'partially_refunded' | 'refunded';
|
|
345
378
|
export type SkillFailureCode = 'EXECUTION_FAILED' | 'OUTPUT_INVALID' | 'TIMED_OUT' | 'CANCELLED' | 'UPSTREAM_UNAVAILABLE';
|