# 개인정보 마스킹(주민등록번호)



이미지파일에서 주민등록번호를 인식하여 가립니다.



인증: Authorization: Bearer $APICK_API_KEY

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

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



## POST /rest/hide_rrn 응답 필드

## API 요청: POST /rest/hide_rrn



### 입력

- `image` (file, 필수): 주민등록번호가 들어 있는 이미지 파일 하나입니다. JPG·PNG 등 이미지만 받으며 PDF는 받지 않습니다. 50MB 이하입니다.

- `type` (string, 필수): 가림 처리 타입 (1: 주민등록번호 전체, 2: 뒷자리 전체, 3: 뒷자리 첫 숫자 제외, 4: 주민등록번호+주소)



### 응답 명세

```json

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

```

### curl

```curl

curl --fail-with-body --request POST 'https://apick.app/rest/hide_rrn' \
  --header "Authorization: Bearer $APICK_API_KEY" \
  --form 'image=@./id_card.jpg' \
  --form-string 'type=3' \
  --dump-header response.headers --output result.bin
# response.headers의 Content-Type을 확인한 뒤 파일을 사용하세요.

```

### Node.js (서버 ESM)

```javascript

import { readFile } from "node:fs/promises";
const form = new FormData();
form.append("image", new Blob([await readFile("./id_card.jpg")]), "id_card.jpg");
form.append("type", "3");
const response = await fetch("https://apick.app/rest/hide_rrn", {
  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 = [
    ("image", ("id_card.jpg", open("./id_card.jpg", "rb"))),
    ("type", (None, "3")),
]
response = requests.request("POST", "https://apick.app/rest/hide_rrn",
    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 = [
    'image' => new CURLFile('./id_card.jpg'),
    'type' => '3',
];
$curl = curl_init('https://apick.app/rest/hide_rrn');
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);

```

## 사용 예시 1. 뒷자리 첫 숫자만 남기기

보관용 사본에서 성별 자리만 남기고 주민등록번호 뒷자리 6자리를 가립니다.

```bash

curl --fail-with-body --request POST 'https://apick.app/rest/hide_rrn' \
  --header "Authorization: Bearer $APICK_API_KEY" \
  --form 'image=@./id_card.jpg' \
  --form-string 'type=3' \
  --dump-header response.headers --output result.bin
# response.headers의 Content-Type을 확인한 뒤 파일을 사용하세요.

```

- 응답 `Content-Type`이 `image/png`이면 본문을 그대로 .png 파일로 저장합니다.

- `Content-Type`이 JSON이면 실패이므로 `data.error`와 `data.error_code`를 확인합니다.

## 사용 예시 2. 주소까지 함께 가리기

등본·계약서 사진처럼 주소도 남기면 안 되는 문서는 type=4로 주민등록번호와 주소를 함께 가립니다.

```bash

curl --fail-with-body --request POST 'https://apick.app/rest/hide_rrn' \
  --header "Authorization: Bearer $APICK_API_KEY" \
  --form 'image=@./contract.jpg' \
  --form-string 'type=4' \
  --dump-header response.headers --output result.bin
# response.headers의 Content-Type을 확인한 뒤 파일을 사용하세요.

```

- `data.error_code`가 `IDENTITY_TEXT_UNREADABLE`(HTTP 422)이면 번호가 선명하게 보이는 이미지로 다시 보냅니다.

- `IDENTITY_DOCUMENT_MISMATCH`(HTTP 400)이면 주민등록번호가 없는 이미지입니다.

## 사용 예시 3. 번호 전체 가리기

외부 공유용 이미지처럼 생년월일도 보이면 안 될 때는 type=1로 13자리 전체를 가립니다.

```bash

curl --fail-with-body --request POST 'https://apick.app/rest/hide_rrn' \
  --header "Authorization: Bearer $APICK_API_KEY" \
  --form 'image=@./id_card.png' \
  --form-string 'type=1' \
  --dump-header response.headers --output result.bin
# response.headers의 Content-Type을 확인한 뒤 파일을 사용하세요.

```

- `data.error`가 "필수 입력값이 없습니다."(HTTP 400)이면 `type`이 1~4인지 확인합니다.

## 코드·오류

## 상세 기능·요금

업로드 용량 제한: 50MB 첨부 이미지 합계는 최대 50MB입니다. 서버가 판독 가능한 크기로 최적화하며, 지나치게 큰 해상도는 정확도를 높이지 않고 처리시간만 늘릴 수 있습니다. 제한을 초과하면 HTTP 413과 REQUEST_TOO_LARGE 오류가 반환되며 과금되지 않습니다. 제공 정보 주민등록번호가 보이는 이미지 하나를 보내면, 이미지에서 주민등록번호를 찾아 고른 방식(type)으로 가린 PNG 이미지를 바로 돌려줍니다. 신분증 사본·등본·계약서 사진을 보관하거나 다른 담당자에게 전달하기 전에 주민등록번호를 가릴 때 사용합니다. 가린 이미지와 함께 성명·생년월일 같은 항목 값도 필요하면 신분증 종류별 개인정보 마스킹 API(/rest/identity_document_id_card 등)를 사용하세요. Method URL POST https://apick.app/rest/hide_rrn

## 상세 요청

Header 이름 필수 설명 Authorization 필수 Bearer 인증키. 예: Authorization: Bearer 발급받은_API_키 번호 숫자가 흐리거나 잘리면 가릴 위치를 찾지 못해 실패합니다. 문서 전체가 보이고 글자가 선명한 이미지를 보내세요.

## 상세 응답

응답 헤더 필드 타입 설명 Content-Type String 성공하면 image/png입니다. 실패하면 JSON이므로 이 값으로 성공 여부를 먼저 구분하세요. Content-Disposition String 내려받을 파일 이름입니다. 항상 attachment; filename=output.png입니다. cost Integer 이번 호출에서 차감된 포인트입니다. 성공 응답에만 붙습니다. success Integer 성공 응답이면 1입니다. ms Integer 요청을 받아 응답을 만들기까지 걸린 시간(밀리초)입니다. Body 필드 타입 설명 (본문) Binary 가림 처리된 PNG 이미지 바이너리입니다. 그대로 파일로 저장하면 됩니다. 실패하면 본문 대신 data.error가 담긴 JSON이 옵니다.

## 상세 코드·정책

입력 오류 HTTP data.error 원인·조치 400 필수 입력값이 없습니다. type이 없거나 1~4가 아닙니다. 400 파일 유형이 맞지 않습니다. 이미지 형식의 파일만 허용됩니다. 이미지가 아닌 파일입니다. PDF는 이미지(JPG·PNG)로 바꿔 보내세요. 424 첨부파일이 없습니다. image 항목에 파일 본문이 첨부되지 않았습니다. multipart/form-data로 파일을 첨부했는지 확인하세요. 오류 응답 실패 응답은 data.success: 0, api.cost: 0을 유지하며 data.error_code로 원인을 구분합니다. HTTP / 오류 코드설명 422IDENTITY_TEXT_UNREADABLE 글자가 일부 가려졌거나 선명하지 않아 필요한 정보를 정확히 인식할 수 없습니다. 문서 전체와 글자가 선명하게 보이는 이미지를 업로드해 주세요. 400IDENTITY_DOCUMENT_MISMATCH 주민등록번호가 포함된 올바른 문서 이미지를 업로드해 주세요. 424IDENTITY_PROCESSING_FAILED 이미지 처리 중 오류가 발생했습니다. 잠시 후 다시 시도해 주세요.

## 상세 예제

결과 예시 [이미지] 요청 예시 form-data 전체 예제 보기 응답 예시 (성공) Content-Type: image/png 인 PNG 바이너리 호출 예시 같은 요청을 JavaScript와 Python으로 옮긴 예시입니다. 키는 환경변수 APICK_API_KEY 에서 읽습니다. JavaScript 예시 form-data 전체 예제 보기 Python 예시 form-data 전체 예제 보기
