17NAS DEVELOPER API

IP 조회 API

한 번의 요청으로 접속자의 실제 IP, IPv4·IPv6 여부, 국가·지역, ASN, 통신사, 시간대를 한꺼번에 받아옵니다.

17nas.com의 IPv6 검사 도구 자체가 바로 이 엣지 위에서 동작합니다. 지금까지 181,053 회의 검사를 처리했고, 그 모두가 이 API와 같은 경로를 지나갔습니다.

엔드포인트
ipapi.17nas.com
인증 방식
Bearer API Key
출력 형식
JSON / Text
curl
curl https://ipapi.17nas.com/v1/ip \
  -H "Authorization: Bearer 17nas_live_xxx"
{
  "ip": "203.0.113.10",
  "protocol": "IPv4",
  "country": { "code": "CN" },
  "asn": { "number": 4134 },
  "edge": { "colo": "HKG" }
}
누적 검사
181,053 회
고유 IP
47,088 개
최근 30일
24,374 회
서비스 노드
글로벌 엣지 네트워크
LIVE DEMO

가입 없이, 먼저 동작을 확인하세요

버튼을 누르면 지금 사용 중인 네트워크의 실제 IP로 공개 엔드포인트를 한 번 호출하고, 가공하지 않은 응답을 그대로 보여 줍니다. 여기서 호출하는 것은 공개 엔드포인트이며, 필드 구성은 키가 필요한 /v1/ip와 다릅니다. 후자는 아래 문서을 기준으로 하세요.

GET https://ip.17nas.com?format=json
위 버튼을 누르면 실제 응답이 여기에 표시됩니다.
방금 호출한 것은 공개 엔드포인트입니다. 일회성 확인이나 수동 점검에는 충분합니다.

자신의 사이트, 앱, 미니 프로그램, 서버 사이드 스크립트에 연동하는 순간부터는 API 키가 필요합니다. 공개 엔드포인트에는 전용 사용량도, 호출 통계도, 오류 기록도, IP 허용 목록도 없습니다. 남용 때문에 언제든 제한될 수 있고, 문제가 생겨도 확인할 로그가 남지 않습니다.

월 1,000 회 무료 개발 사용량 받기
USE CASES

사람들은 이걸로 무엇을 만드나

아래 코드는 그대로 복사해서 실행할 수 있습니다. 17nas_live_xxx만 자신의 키로 바꾸세요.

가정용 회선 IP가 바뀌면 DDNS 갱신

가정용 회선의 공인 IP는 예고 없이 바뀌고, 그러면 NAS 도메인은 존재하지 않는 주소를 가리키게 됩니다. cron으로 5분마다 확인해 실제로 바뀌었을 때만 DNS 사업자 API를 호출하세요. 매번 갱신하는 것보다 간단하고 DNS 쪽 사용량도 낭비하지 않습니다.

ddns-update.sh
#!/bin/bash
# crontab: */5 * * * * /opt/ddns-update.sh
KEY="17nas_live_xxx"
CACHE="/tmp/.last_wan_ip"

IP=$(curl -fsS --max-time 10 "https://ipapi.17nas.com/v1/ip?format=text" \
      -H "Authorization: Bearer $KEY") || exit 0

# 값이 없거나 지난번과 같으면 종료 — DNS 사업자를 호출하지 않음
[ -z "$IP" ] && exit 0
[ "$IP" = "$(cat "$CACHE" 2>/dev/null)" ] && exit 0

echo "$IP" > "$CACHE"
logger -t ddns "WAN IP changed to $IP"

# 사용 중인 DNS 사업자의 API로 교체하세요
curl -fsS -X POST "https://dns.example.com/api/record" \
  -d "name=nas.example.com&type=A&value=$IP"

공인 IP가 바뀌면 알림 받기

DNS를 자동으로 바꾸는 건 부담스럽지만 IP가 언제 바뀌었는지는 알고 싶을 때. 바뀌는 즉시 알림을 보내고 통신사와 지역까지 함께 알려 줍니다. 통신사가 주소 대역을 교체했을 때 특히 유용합니다.

wan_watch.py
import json, pathlib, requests

KEY = "17nas_live_xxx"
PUSH = "https://www.pushplus.plus/send"   # 사용 중인 푸시 채널로 교체하세요
TOKEN = "your_pushplus_token"
CACHE = pathlib.Path("/var/tmp/wan_ip.json")

r = requests.get(
    "https://ipapi.17nas.com/v1/ip",
    headers={"Authorization": f"Bearer {KEY}"},
    timeout=10,
)
r.raise_for_status()
now = r.json()

# 남은 사용량은 응답 헤더에 들어 있음 — 별도 조회 불필요
print("이번 달 남은 호출:", r.headers.get("X-Quota-Remaining"))

last = json.loads(CACHE.read_text()) if CACHE.exists() else {}
if last.get("ip") == now["ip"]:
    raise SystemExit(0)

CACHE.write_text(json.dumps(now))
requests.post(PUSH, json={
    "token": TOKEN,
    "title": f"공인 IP가 변경됨: {now['ip']}",
    "content": (
        f"프로토콜 {now['protocol']}\n"
        f"통신사 {now['asn']['organization']} (AS{now['asn']['number']})\n"
        f"지역 {now.get('city') or '-'} / {now['country']['code']}\n"
        f"이전 IP {last.get('ip', '기록 없음')}"
    ),
}, timeout=10)

평소와 다른 위치의 로그인 감지

로그인 시 IP의 지역과 ASN을 기록합니다. 다음 로그인이 다른 지역에서 오거나 가정용 회선에서 데이터센터 IP로 바뀌었다면 2차 인증을 요구하세요. IP를 그대로 저장하는 것보다 훨씬 정확합니다 — 가정용 IP는 매일 바뀌지만 지역과 통신사는 바뀌지 않습니다.

login_risk.php
<?php
/** 로그인 성공 후 호출하며, 2차 인증 필요 여부를 반환 */
function login_needs_verify(PDO $pdo, int $userId): bool
{
    $ch = curl_init('https://ipapi.17nas.com/v1/ip');
    curl_setopt_array($ch, [
        CURLOPT_RETURNTRANSFER => true,
        CURLOPT_TIMEOUT => 5,
        CURLOPT_HTTPHEADER => ['Authorization: Bearer 17nas_live_xxx'],
    ]);
    $body = curl_exec($ch);
    $status = curl_getinfo($ch, CURLINFO_HTTP_CODE);
    curl_close($ch);

    // 조회가 실패해도 사용자를 막지 않음 — 통과시키는 쪽으로 폴백
    if ($status !== 200 || !$body) {
        error_log('ip-api unavailable, skip risk check');
        return false;
    }

    $now = json_decode($body, true);
    $fingerprint = $now['country']['code'] . '|' . $now['region'] . '|' . $now['asn']['number'];

    $stmt = $pdo->prepare('SELECT ip_fingerprint FROM user_login_env WHERE user_id = ?');
    $stmt->execute([$userId]);
    $known = $stmt->fetchColumn();

    $pdo->prepare('REPLACE INTO user_login_env (user_id, ip_fingerprint, updated_at) VALUES (?, ?, NOW())')
        ->execute([$userId, $fingerprint]);

    return $known !== false && $known !== $fingerprint;
}

IPv4·IPv6에 따라 오리진 선택

듀얼 스택 환경에서 IPv6로 접속한 사용자에게 백엔드가 IPv4뿐이면 변환 홉에서 수십 밀리초를 낭비합니다. 먼저 프로토콜을 판별한 뒤 어떤 오리진 경로를 쓸지, 또는 어떤 리소스 주소를 반환할지 결정하세요.

origin-select.js
const KEY = process.env.IP_API_KEY;

async function pickOrigin() {
  const res = await fetch('https://ipapi.17nas.com/v1/ip', {
    headers: { Authorization: `Bearer ${KEY}` },
    signal: AbortSignal.timeout(5000),
  });

  if (res.status === 429) {
    // 사용량 소진 또는 속도 제한 — 복구 시점은 X-Quota-Reset 참고
    console.warn('quota/rate limited, reset at', res.headers.get('X-Quota-Reset'));
    return ORIGINS.v4;   // 예외를 던지지 말고 기본 경로로 폴백
  }
  if (!res.ok) return ORIGINS.v4;

  const { protocol, edge } = await res.json();
  console.log('edge colo:', edge.colo);
  return protocol === 'IPv6' ? ORIGINS.v6 : ORIGINS.v4;
}

const ORIGINS = {
  v4: 'https://origin-v4.example.com',
  v6: 'https://origin-v6.example.com',
};

앱·미니 프로그램 감사 로그 보관

앱과 미니 프로그램 심사에서는 사용자 작업 로그 보관을 요구하며, IP와 지역은 필수 항목입니다. 핵심은 반드시 서버에서 호출하는 것입니다. 키를 클라이언트 패키지에 넣는 것은 사용량을 모든 사용자에게 나눠 주는 것과 같습니다.

audit_log.php
<?php
/**
 * 서버에서 컴플라이언스 로그 한 건을 기록합니다.
 * 주의: 키는 서버에만 두세요. 앱·미니 프로그램은 자체 서버로 요청을 보내고,
 * 그 서버가 17NAS를 호출합니다. 클라이언트는 키를 절대 볼 수 없습니다.
 */
function write_audit_log(PDO $pdo, int $userId, string $action): void
{
    $ctx = ['ip' => null, 'country' => null, 'isp' => null];

    $ch = curl_init('https://ipapi.17nas.com/v1/ip');
    curl_setopt_array($ch, [
        CURLOPT_RETURNTRANSFER => true,
        CURLOPT_TIMEOUT => 5,
        CURLOPT_HTTPHEADER => ['Authorization: Bearer ' . getenv('IP_API_KEY')],
    ]);
    if ($body = curl_exec($ch)) {
        $data = json_decode($body, true);
        $ctx = [
            'ip' => $data['ip'] ?? null,
            'country' => $data['country']['code'] ?? null,
            'isp' => $data['asn']['organization'] ?? null,
        ];
    }
    curl_close($ch);

    $pdo->prepare(
        'INSERT INTO audit_logs (user_id, action, ip, country, isp, created_at)
         VALUES (?, ?, ?, ?, ?, NOW())'
    )->execute([$userId, $action, $ctx['ip'], $ctx['country'], $ctx['isp']]);
}

여러 회선의 출구 IP 일괄 점검

VPS와 프록시, 다중 회선이 여러 개 있고 각 회선의 실제 출구 IP와 도착 거점을 확인하고 싶을 때. 순서대로 호출하면 경로가 잘못된 것이 바로 드러납니다.

egress-check.sh
#!/bin/bash
KEY="17nas_live_xxx"
IFACES=("eth0" "eth1" "wg0")

printf "%-8s %-40s %-10s %s\n" "인터페이스" "출구 IP" "프로토콜" "통신사"
for IF in "${IFACES[@]}"; do
  JSON=$(curl -fsS --max-time 8 --interface "$IF" \
          "https://ipapi.17nas.com/v1/ip" \
          -H "Authorization: Bearer $KEY" 2>/dev/null)

  if [ -z "$JSON" ]; then
    printf "%-8s %-40s %-10s %s\n" "$IF" "(연결 안 됨)" "-" "-"
    continue
  fi

  printf "%-8s %-40s %-10s %s\n" \
    "$IF" \
    "$(echo "$JSON" | jq -r .ip)" \
    "$(echo "$JSON" | jq -r .protocol)" \
    "$(echo "$JSON" | jq -r .asn.organization)"
done
COMPARISON

직접 구축하는 게 나을까?

실제 IP를 반환하는 것 자체는 어렵지 않습니다. 어려운 건 몇 년씩 유지하는 일입니다. 세 가지 선택지의 실제 비용을 비교합니다.

비교 항목 자체 구축 해외 서비스 17NAS
중국 본토 접속 지연서버 위치에 따라 다름국경 통과로 변동 큼가장 가까운 엣지에서 응답
IPv6 지원듀얼 스택을 직접 설정대부분 지원네이티브 듀얼 스택
GeoIP / ASN DB 갱신직접 내려받아 갱신제공자가 관리제공자가 관리
일상 유지보수인증서·서버·모니터링 모두 직접없음없음
사용 통계와 오류 기록직접 구현제공콘솔에 기본 내장
결제 수단—대부분 신용카드만Alipay
문제 발생 시 문의처본인영어 티켓, 시차 있음중국어 지원, 동일 시간대
시작 비용서버 한 대 + 본인의 시간사용량 과금월 1,000 회 무료

솔직히 말하면, 개인 취미로 하루 몇 번만 호출한다면 직접 Nginx에서 $remote_addr를 반환하는 걸로 충분합니다. 돈을 쓸 필요가 없습니다. 유료가 의미 있는 건 "장애가 나면 누군가 찾아오는" 상황입니다. 운영 트래픽, 로그 보관 의무, 몇 년씩 멈추면 안 되는 자동화 같은 경우죠.

PLANS

API 요금제

사용량을 다 쓰면 호출이 멈출 뿐입니다. 미납이 발생하지 않고 자동 결제도 되지 않습니다. 연간 요금제는 사용량을 매달 나누어 지급합니다.

가입만 하면 무료로 사용

개발자로 가입하면 API 키 1개와 월 1,000회 호출 사용량(IPv4·IPv6 공용)을 받습니다. 결제를 결정하기 전에 연동을 마치기에 충분합니다. 개인 개발·테스트 전용이며, 상업적 이용은 아래 요금제를 선택하세요.

무료 API 키 만들기

API 개발자

¥19.9/월
  • 월 100,000 회
  • 5 QPS 동시 처리
  • API 키 1개
  • 허용 목록 미지원
  • 오류 기록 7일 보관
  • 상업적 이용 허용

API 비즈니스

¥299.0/월
  • 월 5,000,000 회
  • 50 QPS 동시 처리
  • API 키 5개
  • IP/CIDR 허용 목록 100개
  • 오류 기록 90일 보관
  • 상업적 이용 허용

엔터프라이즈

¥999/월부터
  • 사용량·동시성 맞춤 설정
  • 계약 및 전용 SLA
  • 전담 기술 지원
  • 온프레미스 배포 가능
문의하기
사용량이 부족한가요? 굳이 상위 요금제로 갈 필요 없습니다

유료 요금제를 사용 중이라면 언제든 일회성 추가 팩을 구매할 수 있습니다: ¥14.90 / 100,000 회, ¥59.90 / 1,000,000 회. 추가분은 이번 기간 사용량에 더해지고 함께 만료되며 자동 갱신되지 않습니다. 콘솔에서 바로 구매하세요.

현재 지원하는 결제 수단: Stripe. SLA가 포함된 기업 계약은 일반 상업용 요금제와 별도로 제공됩니다.

DATA

겸사겸사 데이터 이야기: IPv6는 어디까지 왔나

2026년 2월 5일 이후 17NAS 방문자가 실제로 수행한 181,053 회의 검사(고유 IP 47,088개)를 기준으로 합니다. 이 검사는 이 페이지에서 판매하는 바로 그 엣지 네트워크 위에서 실행됩니다.

듀얼 스택 (IPv4 + IPv6)가장 이상적인 상태 — 두 프로토콜 모두 사용 가능
61.2%108,517 회
IPv4만IPv6 미개통이거나 라우터·방화벽에서 차단됨
35.8%63,415 회
IPv6만드문 경우 — 일부 모바일 네트워크 및 IPv6 전용 환경
1.4%2,401 회
결과 없음약한 회선, 타임아웃, 프록시 환경에서 검사 실패
1.6%2,763 회

전체적으로 방문자의 62.6%가 IPv6를 사용할 수 있습니다. 다만 분명히 해 둘 점이 있습니다. 굳이 17NAS에서 IPv6를 검사해 보는 사람은 일반 사용자보다 IPv6에 관심이 많은 층입니다. 즉 이 표본에는 자기선택 편향이 있으며 전국 보급률로 읽어서는 안 됩니다. 어디까지나 "IPv6에 관심 있는 사람들"의 실태입니다. 데이터는 매시간 갱신됩니다. 내 네트워크를 확인하고 싶다면 IPv6 검사 도구는 여기.

REFERENCE

API 문서

아래 3단계부터 보세요. 5분이면 첫 요청이 성공합니다. 세부 사항은 그 아래에 있습니다.

  1. 1
    API 키 만들기

    로그인한 뒤 콘솔에서 "API 키 만들기"를 누르세요. 키 전문은 딱 한 번만 표시됩니다. 서버에는 해시만 저장되므로 분실하면 새로 만들어야 합니다.

    콘솔에서 만들기
  2. 2
    Bearer 헤더를 붙여 요청 보내기

    키를 Authorization 헤더에 넣고 /v1/ip를 호출하세요.

    요청 예시 보기
  3. 3
    응답 헤더에서 사용량 확인하기

    성공 응답마다 X-Quota-Remaining이 함께 오므로 사용량을 따로 조회할 필요가 없습니다.

    헤더 설명 보기

인증

서버 사이드 요청의 Authorization 헤더로 Bearer 키를 전송하세요.

Authorization: Bearer 17nas_live_xxxxxxxxx

키를 브라우저 스크립트, 앱 패키지, 미니 프로그램 번들에 넣지 마세요. 모두 디컴파일될 수 있습니다. 프런트엔드에서 필요하면 자체 서버로 요청을 보내고 서버가 대신 호출하게 하세요. 콘솔에서 IP/CIDR 허용 목록을 설정하면 출처를 더 좁힐 수 있습니다.

GET/v1/ip

ipapi.17nas.com

이번 HTTP 연결이 실제로 사용한 IP와 프로토콜을 반환합니다. IPv4로 들어오면 IPv4가, IPv6로 들어오면 IPv6가 반환되며 별도 지정은 필요 없습니다.

파라미터위치설명
AuthorizationHeader필수. Bearer <내 API 키>
formatQuery선택. json(기본) 또는 text. text는 IP만 반환해 셸에서 바로 쓰기 좋습니다
# JSON (기본)
curl https://ipapi.17nas.com/v1/ip \
  -H "Authorization: Bearer 17nas_live_xxx"

# IP만 담긴 평문 — 셸 변수에 그대로 넣기 좋음
curl "https://ipapi.17nas.com/v1/ip?format=text" \
  -H "Authorization: Bearer 17nas_live_xxx"

# curl 자체 옵션으로 IPv4 / IPv6를 강제
curl -4 https://ipapi.17nas.com/v1/ip -H "Authorization: Bearer 17nas_live_xxx"
curl -6 https://ipapi.17nas.com/v1/ip -H "Authorization: Bearer 17nas_live_xxx"

응답 필드

200 OK
{
  "ip": "203.0.113.10",
  "protocol": "IPv4",
  "country": { "code": "CN" },
  "region": "Guangdong",
  "city": "Shenzhen",
  "timezone": "Asia/Shanghai",
  "asn": { "number": 4134, "organization": "CHINANET" },
  "edge": { "colo": "HKG" },
  "request_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
  "generated_at": "2026-07-26T09:00:00.000Z"
}
필드타입설명
ipstring이 연결의 공인 IP
protocolstringIPv4 또는 IPv6
country.codestringISO 3166-1 두 자리 국가 코드. 알 수 없으면 null
region / citystring주·성과 도시(영문). 정확도는 엣지 DB에 따라 다르며 null일 수 있습니다
timezonestringIANA 시간대 이름 (예: Asia/Shanghai)
asn.numbernumber자율 시스템 번호. 알 수 없으면 0
asn.organizationstring통신사 이름. null일 수 있습니다
edge.colostring이 요청을 처리한 엣지 노드의 3자리 코드
request_idstring이 요청의 고유 ID — 문제를 신고할 때 함께 알려 주세요

위치 필드는 엣지 노드의 GeoIP 데이터를 기반으로 하며, 모바일 회선·위성 링크·기업 NAT 출구·일부 프록시에서는 부정확하거나 비어 있을 수 있습니다. 사실이 아니라 참고값으로 다루세요. 강제적인 지역 차단에 사용하지 마세요.

사용량 헤더

성공 응답마다 현재 사용량 상태가 함께 오므로 따로 조회할 필요가 없습니다.

응답 헤더설명
X-RateLimit-Limit초당 허용 요청 수 (QPS)
X-RateLimit-Remaining현재 1초 동안 남은 횟수
X-RateLimit-Reset속도 제한 창이 초기화되는 Unix 타임스탬프
X-Quota-Limit이번 기간 총 사용량
X-Quota-Used이번 기간 사용량
X-Quota-Remaining이번 기간 잔여
X-Quota-Reset이번 기간 사용량 초기화 시각
X-Request-Id이 요청의 ID — 문제를 신고할 때 함께 알려 주세요

코드에서 X-Quota-Remaining을 모니터링하고 10% 아래로 떨어지면 알림을 보내세요. 호출이 실패한 뒤에 알게 되면 늦습니다.

오류 상태

401 키가 유효하지 않거나 폐기됐거나 형식이 잘못됨 403 출발지 IP가 허용 목록에 없음 429 QPS 제한 초과 또는 이번 기간 사용량 소진 503 일시적으로 사용할 수 없음 — 잠시 후 재시도
{
  "error": {
    "code": "quota_exhausted",
    "message": "Monthly quota exhausted",
    "request_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
    "docs_url": "https://17nas.com/ip-api.php#documentation",
    "upgrade_url": "https://17nas.com/ip-api.php?source=api-error&placement=quota-exhausted#pricing",
    "reset_at": "2026-08-01T00:00:00+08:00"
  }
}

429는 원인이 두 가지이며 헤더로 구분합니다. X-RateLimit-Remaining이 0이면 순간적인 속도 제한이라 1초만 기다리면 됩니다. X-Quota-Remaining이 0이면 이번 기간 사용량 소진이므로 reset_at을 기다리거나 추가 구매·업그레이드가 필요합니다.

재시도와 폴백

네트워크 호출이므로 언젠가는 반드시 실패합니다. 실무적인 지침 몇 가지:

  • 타임아웃을 5초 이내로 두어 주 흐름을 끌어내리지 않게 하세요
  • 503이나 타임아웃은 지수 백오프(1s, 2s, 4s)로 최대 3회까지 재시도
  • 401 / 403은 재시도하지 마세요. 설정 문제이며 재시도는 사용량만 낭비합니다
  • 사용량 소진으로 인한 429는 재시도해도 소용없습니다. 바로 폴백 로직으로 가세요
  • 비핵심 경로(예: 로그 기록)에서는 실패하면 그냥 건너뛰세요. 위치 조회가 안 됐다고 사용자의 정상 동작을 막지 마세요
  • 결과를 몇 분간 로컬에 캐시해도 됩니다 — 같은 서버의 출구 IP가 초 단위로 바뀌지는 않습니다
FAQ

구매 전에 궁금할 만한 것들

무료 사용량을 상업적으로 써도 되나요?

안 됩니다. 무료 월 1,000회는 개인 개발·테스트 전용입니다. 자신의 웹사이트, 앱, 미니 프로그램, 고객에게 납품하는 시스템 등 외부에 서비스를 제공하는 용도는 모두 상업용 요금제가 필요합니다. 유료 요금제는 콘솔에 "상업적 이용 허용"으로 표시됩니다.

사용량을 다 쓰면 어떻게 되나요? 자동으로 결제되나요?

아니요. 사용량이 소진되면 엔드포인트는 429를 반환하고 호출을 중단합니다. 미납이 발생하지 않고 자동 결제도 되지 않습니다. 다음 기간에 자동으로 복구되기를 기다리거나, 추가 팩을 구매해 바로 이어서 쓸 수 있습니다. 후불 과금을 일부러 도입하지 않은 이유는, 코드의 무한 루프가 거액 청구로 이어지지 않게 하기 위해서입니다.

연 결제 사용량은 한 번에 전부 주나요?

아니요, 매달 나누어 지급합니다. 연간 API Pro는 매달 100만 회를 12개월 동안 제공하는 것이며, 1,200만 회를 한 번에 주지 않습니다. 첫 달에 비정상 호출로 1년치를 다 써 버리는 것을 막기 위해서입니다. 매달 남은 사용량은 다음 달로 이월되지 않습니다.

결제 후 얼마나 빨리 사용할 수 있나요?

결제가 완료되면 새 사용량이 1분 이내에 전 세계 엣지 노드에 반영됩니다. 반영이 끝나기 전의 호출은 기존 사용량으로 계산되므로 손해 보지 않습니다. 콘솔에서 주문이 "완료"로 바뀌면 적용된 것입니다.

환불이 되나요?

API 사용량은 디지털 상품이므로 지급된 뒤에는 원칙적으로 환불이 어렵습니다. 다만 저희 쪽 문제로 서비스를 이용할 수 없었거나 결제 후 사용량이 반영되지 않았다면, 주문 번호와 함께 피드백 페이지으로 알려 주세요. 건별로 처리해 드립니다. 먼저 무료 사용량으로 연동을 마친 뒤 구매하시길 권합니다.

API 키가 유출되면 어떻게 하나요?

즉시 콘솔에서 해당 키를 폐기하고 새로 만드세요. 폐기는 1분 이내에 엣지까지 반영됩니다. 예방책으로 IP/CIDR 허용 목록을 미리 설정해 두면, 키가 유출돼도 서버 IP 밖에서는 쓸 수 없습니다.

중간에 요금제를 올릴 수 있나요?

가능합니다. 콘솔에서 "요금제 업그레이드"를 누르면 차액만 결제되고 만료일은 그대로입니다. 업그레이드는 현재 결제 주기를 유지합니다(월 결제는 월 결제로, 연 결제는 연 결제로). 월 결제에서 연 결제로 바꾸려면 갱신할 때 연 결제를 선택하세요.

데이터는 어디에 저장되나요? 무엇을 조회했는지 기록되나요?

저장하는 것은 집계된 사용 통계(시간당 성공·실패 횟수, 평균 응답 시간)와 오류 로그뿐입니다. 오류 로그의 출발지 IP는 비식별 처리해 저장하며, 보관 기간은 요금제에 따라 다릅니다(7일부터). 조회 결과로 반환한 IP 내용 자체는 저장하지 않습니다.

서비스 안정성은 어떻게 보장되나요?

엔드포인트는 글로벌 엣지 네트워크에서 동작하며, 요청은 호출자와 가장 가까운 노드가 응답합니다. 단일 오리진 서버로 되돌아가지 않으므로 특정 지역의 노드 장애가 전체 중단으로 이어지지 않습니다. 계약상 SLA가 필요하다면 기업 맞춤형 요금제를 선택하세요.

아직 망설여지나요?

그렇다면 먼저 무료 사용량으로 연동을 끝내 보세요. 동작을 확인한 뒤에 구매를 결정하면 되고, 확인하는 데는 비용이 들지 않습니다.