API 요청
/rest/reverse_ip요청 파라미터 1개 · 필수 1
ip- 예시
168.126.63.1
응답 필드 12개
datadata.domain_countdata.domainsdata.domains[].namedata.domains[].last_resolveddata.successdata.errorapiapi.successapi.costapi.msapi.pl_id특정 IP에 등록된 도메인 이력 정보를 조회합니다.
https://apick.app/rest/reverse_ip왜 IP로 도메인 조회인가
사기 사이트 하나를 막아도 같은 서버에서 쌍둥이 도메인이 또 열립니다. IP 하나로 그 IP에 등록됐던 도메인 이력을 보여줘 같은 무리를 한 번에 잡을 수 있습니다.
IPv4 주소 하나를 보내면 그 IP에 연결된 적이 있는 도메인 목록과 마지막으로 연결이 확인된 날짜를 돌려줍니다. 같은 서버를 함께 쓰는 사이트 파악, 피싱·스팸 도메인의 연관 사이트 조사에 씁니다.
조회에 성공하면 한 건당 100P가 차감됩니다. 실제 차감액은 응답의 api.cost에서 확인하세요.
IP가 비었거나 IPv4 형식이 아니면 조회하지 않고 data.error로 응답하며 과금되지 않습니다.
목록에는 지금은 다른 IP로 옮긴 도메인도 들어 있을 수 있습니다. 현재 연결 여부는 last_resolved 날짜로 판단하거나 도메인으로 IP 조회로 다시 확인하세요.
/rest/reverse_ipip168.126.63.1datadata.domain_countdata.domainsdata.domains[].namedata.domains[].last_resolveddata.successdata.errorapiapi.successapi.costapi.msapi.pl_idPOST https://apick.app/rest/reverse_ipAuthorization: Bearer — 내 계정의 API 인증키multipart/form-data상황별로 보내는 값과 응답에서 확인할 값을 모았습니다. 언어 탭에서 그대로 복사해 쓸 수 있습니다.
IP 하나에 연결된 적이 있는 도메인 목록을 받습니다.
/rest/reverse_ipcurl --fail-with-body --request POST 'https://apick.app/rest/reverse_ip' \
--header "Authorization: Bearer $APICK_API_KEY" \
--form-string 'ip=168.126.63.1'const form = new FormData();
form.append("ip", "168.126.63.1");
const response = await fetch("https://apick.app/rest/reverse_ip", {
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()}`);
const result = await response.json();
console.log(result);import os
import requests
parts = [
("ip", (None, "168.126.63.1")),
]
response = requests.request("POST", "https://apick.app/rest/reverse_ip",
headers={"Authorization": "Bearer " + os.environ["APICK_API_KEY"]},
files=parts,
timeout=(10, 120))
response.raise_for_status()
result = response.json()
print(result)<?php
$headers = ["Authorization: Bearer " . getenv("APICK_API_KEY")];
$form = [
'ip' => '168.126.63.1',
];
$curl = curl_init('https://apick.app/rest/reverse_ip');
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);
curl_close($curl);
if ($status >= 400) { throw new RuntimeException($body); }
$result = json_decode($body, true, 512, JSON_THROW_ON_ERROR);
print_r($result);data.domains[].name이 도메인, last_resolved가 마지막 확인 날짜입니다.data.domain_count는 문자열이므로 숫자로 바꿔 씁니다.IPv4만 받으므로 도메인만 알면 먼저 도메인으로 IP 조회에서 얻은 result[0]을 넣습니다.
/rest/reverse_ipcurl --fail-with-body --request POST 'https://apick.app/rest/reverse_ip' \
--header "Authorization: Bearer $APICK_API_KEY" \
--form-string 'ip=93.184.216.34'const form = new FormData();
form.append("ip", "93.184.216.34");
const response = await fetch("https://apick.app/rest/reverse_ip", {
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()}`);
const result = await response.json();
console.log(result);import os
import requests
parts = [
("ip", (None, "93.184.216.34")),
]
response = requests.request("POST", "https://apick.app/rest/reverse_ip",
headers={"Authorization": "Bearer " + os.environ["APICK_API_KEY"]},
files=parts,
timeout=(10, 120))
response.raise_for_status()
result = response.json()
print(result)<?php
$headers = ["Authorization: Bearer " . getenv("APICK_API_KEY")];
$form = [
'ip' => '93.184.216.34',
];
$curl = curl_init('https://apick.app/rest/reverse_ip');
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);
curl_close($curl);
if ($status >= 400) { throw new RuntimeException($body); }
$result = json_decode($body, true, 512, JSON_THROW_ON_ERROR);
print_r($result);IP 형식이 잘못되었습니다.는 IPv4가 아닐 때 옵니다. 과금되지 않습니다.last_resolved는 지금은 다른 IP로 옮긴 도메인일 수 있습니다.HTTP 성공과 업무 결과를 구분하세요. 경로별 응답 필드와 예시는 위 요청과 응답에 함께 있습니다.
{
"data": {
"domain_count": "2",
"domains": [
{ "name": "kns.kornet.net", "last_resolved": "2026-10-18" },
{ "name": "example.com", "last_resolved": "2025-03-02" }
],
"success": 1
},
"api": { "success": true, "cost": 100, "ms": 1071, "pl_id": 1595639 }
}
도메인 수를 계산에 쓸 때는 domain_count를 숫자로 바꾸거나 domains.length를 쓰세요. 최근에 연결된 도메인만 보려면 last_resolved로 걸러 내면 됩니다.
"2").YYYY-MM-DD)입니다.응답을 아래 순서로 확인하세요. 결과 유무와 과금 여부는 서로 다릅니다.
data.error(사유 문구)와 data.success=0을 돌려줍니다. HTTP 상태는 사유에 따라 400·404·408·424 중 하나입니다.api.cost는 0이며 과금되지 않습니다. data.error 문구를 그대로 기록하고 사용자에게 보여 주세요.{
"data": {
"error": "입력값을 확인해 주세요.",
"success": 0
},
"api": {
"success": true,
"cost": 0,
"ms": 5
}
}ip를 채워 다시 요청합니다.0~255 숫자 4개를 점으로 연결)인지 확인합니다.오류 응답은 모두 api.cost가 0이며 과금되지 않습니다.
FORM_DATA_INVALIDFORM_DATA_FIELD_CONFLICTMULTIPART_LIMIT_OR_PARSE_ERROR실제 차감 금액은 응답의 api.cost로 확인하세요. 상세 요금은 요금정책에서 볼 수 있습니다.
같은 요청을 JavaScript와 Python으로 옮긴 예시입니다. 키는 환경변수 APICK_API_KEY 에서 읽습니다.