프로그래밍 방식으로 URL 색인을 요청하세요. 간단한 REST API로 대량 URL 색인, 상태 확인, 크레딧 관리가 가능합니다.
Base URL: https://indexup.kr/api/v1IndexUp API를 사용하면 외부 애플리케이션에서 프로그래밍 방식으로 URL 색인을 요청할 수 있습니다. API를 사용하려면 다음 단계를 따르세요.
API 접근은 Starter 요금제 이상에서 사용 가능합니다. 요금제 보기
마이페이지 > API 키에서 API 키를 생성하세요.
발급받은 API 키를 사용하여 아래 엔드포인트를 호출하세요.
모든 API 요청에는 인증이 필요합니다. 다음 두 가지 방법 중 하나를 사용하세요.
Authorization: Bearer ixup_your_api_key_here
X-API-Key: ixup_your_api_key_here
주의: API 키는 비밀 정보입니다. 클라이언트 측 코드(프론트엔드, 모바일 앱)에 노출하지 마세요. 반드시 서버 측에서만 사용하세요.
/api/v1/submit하나 이상의 URL을 색인 요청합니다.
Content-Type: application/json Authorization: Bearer ixup_your_api_key_here
{
"urls": [
"https://example.com/page1",
"https://example.com/page2"
]
}{
"success": true,
"data": {
"batch_id": "abc-123-def-456",
"urls_submitted": 2,
"credits_used": 2,
"credits_remaining": 198
}
}{
"statusCode": 429,
"message": "월간 색인 요청 한도를 초과했습니다."
}/api/v1/status/:batch_id제출한 배치의 색인 처리 상태를 확인합니다.
| 파라미터 | 타입 | 설명 |
|---|---|---|
| batch_id | string | 색인 요청 시 반환된 배치 ID |
{
"success": true,
"data": {
"batch_id": "abc-123-def-456",
"urls": [
{
"url": "https://example.com/page1",
"status": "done",
"submitted_at": "2026-04-12 14:30:00"
},
{
"url": "https://example.com/page2",
"status": "processing",
"submitted_at": "2026-04-12 14:30:00"
}
]
}
}pending (대기) | processing (처리중) | done (완료) | failed (실패) /api/v1/credits현재 요금제의 크레딧 사용량과 잔여량을 확인합니다.
{
"success": true,
"data": {
"plan": "Pro",
"monthly_credits": 10000,
"used_this_month": 3500,
"remaining": 6500,
"resets_at": "2026-05-01"
}
}/api/v1/history색인 요청 이력을 페이지네이션으로 조회합니다.
| 파라미터 | 기본값 | 설명 |
|---|---|---|
| page | 1 | 페이지 번호 |
| per_page | 50 | 페이지당 항목 수 (최대 100) |
{
"success": true,
"data": {
"submissions": [
{
"batch_id": "abc-123",
"url": "https://example.com/page1",
"status": "done",
"submitted_at": "2026-04-12 14:30:00"
}
],
"total": 150,
"page": 1,
"per_page": 50
}
}API 요청 실패 시 다음과 같은 에러 코드가 반환됩니다.
| 코드 | 의미 | 설명 |
|---|---|---|
| 400 | Bad Request | 잘못된 요청 형식 (URL 누락, 잘못된 URL 등) |
| 401 | Unauthorized | API 키가 누락되었거나 유효하지 않음 |
| 403 | Forbidden | API 키 비활성화, 계정 차단, 또는 요금제 미달 |
| 404 | Not Found | 요청한 리소스를 찾을 수 없음 |
| 429 | Too Many Requests | 요청 한도 초과 (분당 또는 월간) |
{
"statusCode": 401,
"message": "유효하지 않은 API 키입니다."
}API 사용량은 요금제에 따라 제한됩니다.
| 요금제 | 월간 크레딧 | 일일 한도 | 분당 요청 | API 접근 |
|---|---|---|---|---|
| Free | 300 | 10 | - | 불가 |
| Starter | 2,000 | 100 | 30 | 가능 |
| Pro | 10,000 | 500 | 120 | 가능 |
| Business | 50,000 | 2,500 | 600 | 가능 |
Retry-After 헤더에 재시도 가능 시간(초)이 포함됩니다. 다양한 언어에서 IndexUp API를 사용하는 예제입니다.
curl -X POST https://indexup.kr/api/v1/submit \
-H "Content-Type: application/json" \
-H "Authorization: Bearer ixup_your_api_key_here" \
-d '{
"urls": [
"https://example.com/page1",
"https://example.com/page2"
]
}'curl https://indexup.kr/api/v1/credits \ -H "Authorization: Bearer ixup_your_api_key_here"
import requests
API_KEY = "ixup_your_api_key_here"
BASE_URL = "https://indexup.kr/api/v1"
headers = {
"Authorization": f"Bearer {API_KEY}",
"Content-Type": "application/json"
}
# URL 색인 요청
response = requests.post(f"{BASE_URL}/submit", json={
"urls": [
"https://example.com/page1",
"https://example.com/page2"
]
}, headers=headers)
result = response.json()
print(f"배치 ID: {result['data']['batch_id']}")
print(f"사용 크레딧: {result['data']['credits_used']}")
# 상태 확인
batch_id = result["data"]["batch_id"]
status = requests.get(
f"{BASE_URL}/status/{batch_id}",
headers=headers
).json()
for url_info in status["data"]["urls"]:
print(f"{url_info['url']}: {url_info['status']}")const API_KEY = 'ixup_your_api_key_here';
const BASE_URL = 'https://indexup.kr/api/v1';
// URL 색인 요청
const response = await fetch(`${BASE_URL}/submit`, {
method: 'POST',
headers: {
'Authorization': `Bearer ${API_KEY}`,
'Content-Type': 'application/json',
},
body: JSON.stringify({
urls: [
'https://example.com/page1',
'https://example.com/page2',
],
}),
});
const result = await response.json();
console.log(`배치 ID: ${result.data.batch_id}`);
// 크레딧 확인
const credits = await fetch(`${BASE_URL}/credits`, {
headers: { 'Authorization': `Bearer ${API_KEY}` },
}).then(r => r.json());
console.log(`남은 크레딧: ${credits.data.remaining}`);<?php
$apiKey = 'ixup_your_api_key_here';
$baseUrl = 'https://indexup.kr/api/v1';
// URL 색인 요청
$ch = curl_init("$baseUrl/submit");
curl_setopt_array($ch, [
CURLOPT_POST => true,
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => [
"Authorization: Bearer $apiKey",
'Content-Type: application/json',
],
CURLOPT_POSTFIELDS => json_encode([
'urls' => [
'https://example.com/page1',
'https://example.com/page2',
],
]),
]);
$response = curl_exec($ch);
curl_close($ch);
$result = json_decode($response, true);
echo "배치 ID: " . $result['data']['batch_id'] . "\n";
echo "사용 크레딧: " . $result['data']['credits_used'] . "\n";
?>