콘텐츠로 이동

패키지

구매한 모든 것은 패키지가 됩니다. 트래픽 패키지(family: traffic_gateway)는 연결을 만들어 쓰는 기가바이트 용량입니다. 고정 주소 패키지(family: dedicated)는 하나의 로그인과 비밀번호를 쓰는 기간제 주소 N개입니다. 이 페이지의 라우트는 마지막 섹션을 제외하고 두 종류 공통입니다.

가격 계산. 아무것도 차감하지 않습니다. 권한 catalog:read. 본문은 구매와 같습니다.

Terminal window
curl -X POST https://ipv.rent/api/v1/quote \
-H 'Authorization: Bearer YOUR_API_KEY' -H 'Content-Type: application/json' \
-d '{
"product": "ipv4",
"country": "us",
"operator": "united-states",
"period": "month",
"quantity": 10
}'
{
"unit": "1.49",
"unit_label": "per_ip",
"quantity": 10,
"discount": "0.00",
"discount_percent": "0.00",
"total": "14.90",
"currency": "USD"
}
  • unit_label: 트래픽은 per_gb, 고정 주소는 per_ip.
  • total = unit * quantity - discount. discount는 금액 기준 할인, discount_percent는 같은 할인을 퍼센트로 나타낸 값이며 둘 다 문자열입니다.
  • 계산된 금액은 같은 본문으로 구매할 때 차감되는 금액과 정확히 같습니다.

구매. 권한 packages:write, Idempotency-Key 헤더 필수. 구매는 요청 안에서 완료됩니다: 201 응답에 order_id, package_id, status: completed가 담깁니다.

필요한 필드는 상품에 따라 다릅니다:

필드ResidentialIPv4의미
product예예카탈로그의 슬러그
volume예불가정수 기가바이트, integer 또는 string
country-예옵션의 국가 코드
operator-예옵션의 위치
period-예week, 2_weeks, month, 2_months, 3_months - 국가의 기간 중에서
quantity불가아니요, 1주소 수. 모두 하나의 패키지가 됨
plan-아니요요금제. 국가에 요금제가 여러 개일 때만 필요
auto_renew-아니요, true패키지 자동 연장 여부
client_reference아니요아니요최대 64자의 내 라벨. 고유하지 않아도 됨

상품과 관계없는 필드와 연결 설정(count, geo, protocol, ttl_minutes 등)은 이름으로 거부됩니다: field 필드와 함께 422 unsupported_field.

Terminal window
curl -X POST https://ipv.rent/api/v1/packages \
-H 'Authorization: Bearer YOUR_API_KEY' \
-H 'Idempotency-Key: 550e8400-e29b-41d4-a716-446655440000' \
-H 'Content-Type: application/json' \
-d '{
"product": "residential",
"volume": 25,
"client_reference": "deal-8891"
}'
{
"order_id": 128,
"package_id": 42,
"status": "completed",
"price": "50.00",
"client_reference": "deal-8891"
}

고정 주소는 응답에 필드가 세 개 더 있습니다:

{
"order_id": 131,
"package_id": 57,
"status": "completed",
"price": "14.90",
"client_reference": null,
"package_ids": [57],
"requested": 10,
"fulfilled": 10
}

requested는 주문한 주소 수, fulfilled는 발급된 주소 수입니다. 발급된 수가 적으면 차액은 이미 잔액으로 반환되었습니다.

오류:

  • 400 - invalid_body(트래픽에 volume 없음, 주소에 country, period 또는 operator 없음, 본문이 JSON이 아님), validation_failed, unknown_product
  • 409 - idempotency_in_progress
  • 422 - invalid_volume, invalid_quantity, country_unavailable, unknown_plan, unknown_operator, unknown_period, out_of_stock, type_unavailable, insufficient_balance, unsupported_field, purchase_refunded(금액 반환됨, 새 구매로 다시 시도), idempotency_key_required, idempotency_key_invalid, idempotency_key_reused
  • 500 - order_failed(금액에 변동 없음, 같은 키로 재시도해도 안전), order_needs_attention(금액 차감됨, 수동으로 처리 중, 재시도하지 말 것), operation_indeterminate(결과가 확정되지 않은 작업의 키로 재시도함)

키 소유자의 패키지, 최신순. 권한 packages:read. 파라미터: offset, limit(여기서는 기본값 200), family, product.

파라미터의미
familytraffic_gateway 또는 dedicated. 알 수 없는 값은 필터 없음
product슬러그: residential, ipv4. 보유하지 않은 슬러그는 빈 목록
카드 필드의미
family, product패키지의 종류와 상품
statusprovisioning, active. 트래픽은 추가로 exhausted, 주소는 expired, closed, suspended
name설정된 경우 tag, 아니면 상품으로 구성: residential · 25 GB, ipv4 · US · United States · x10
traffic트래픽 잔량. 주소는 null
expires_at기간 종료. 트래픽은 null - 트래픽은 소멸되지 않음
auto_renew주소: 패키지가 자동으로 연장되는지 여부
endpoint주소: country, operator, addresses_count. 트래픽은 null

패키지와 접속 정보. 권한 packages:read.

트래픽 패키지:

{
"id": 42,
"order_id": 128,
"product": "residential",
"family": "traffic_gateway",
"tag": null,
"name": "residential · 25 GB",
"status": "active",
"traffic": {
"purchased_gb": "25.000",
"used_gb": "2.566",
"left_gb": "22.434",
"synced_at": "..."
},
"expires_at": null,
"created_at": "...",
"endpoint": null,
"credentials": {
"username": "...",
"password": "..."
},
"connection_options": [
{
"mode": "rotating",
"protocol": "http",
"host": "residential.ipv.rent",
"port": 9000
},
{
"mode": "rotating",
"protocol": "socks5",
"host": "residential.ipv.rent",
"port": 11000
},
{
"mode": "sticky",
"protocol": "http",
"host": "residential.ipv.rent",
"port": 10000
},
{
"mode": "sticky",
"protocol": "socks5",
"host": "residential.ipv.rent",
"port": 12000
}
],
"limits": {
"lifetime_min_minutes": 3,
"lifetime_max_minutes": 1440,
"lifetime_default_minutes": 60,
"modes": ["rotating", "sticky"],
"protocols": ["http", "socks5"]
}
}

credentials, connection_options, limits는 패키지가 발급되기 전까지 함께 null입니다. 완성된 연결 문자열은 POST /api/v1/packages/{id}/proxies에서 받으세요.

고정 주소 패키지:

{
"id": 57,
"order_id": 131,
"product": "ipv4",
"family": "dedicated",
"name": "ipv4 · US · United States · x2",
"status": "active",
"traffic": null,
"expires_at": "2026-11-04T12:00:00+00:00",
"created_at": "...",
"auto_renew": true,
"endpoint": {
"country": "us",
"operator": "United States",
"addresses_count": 2,
"...": "..."
},
"credentials": {
"username": "...",
"password": "..."
},
"addresses": [
{
"host": "198.51.100.11",
"port_http": 10010,
"port_socks": 10011
},
{
"host": "198.51.100.12",
"port_http": 10012,
"port_socks": 10013
}
],
"capabilities": ["prolong", "credentials", "replace", "fingerprint", "renewal"],
"credentials_retired": false,
"extendable_until": "2026-12-11T12:00:00+00:00",
"replace_available_at": null,
"replacement": null,
"renewal": {
"enabled": true,
"period": "month",
"next_charge_at": "2026-11-03T12:00:00+00:00",
"next_charge_amount": "2.98",
"last_failure": null,
"disabled_at": null
},
"fingerprint": {
"profile": null,
"profiles": [
{
"value": "windows_chrome",
"label": "Windows 11 · Chrome"
},
"..."
]
}
}

고정 주소의 각 필드가 무엇을 뜻하는지는 고정 주소 페이지에 있습니다.

오류: 404 not_found.

비밀번호 재발급, 두 종류 공통. 권한 packages:write. 로그인은 바뀌지 않습니다.

이전 비밀번호는 즉시 작동을 멈춥니다. applies_in_seconds는 새 비밀번호가 받아들여지기 시작하기까지의 최대 시간입니다.

오류: 404 not_found; 422 package_unavailable(패키지가 아직 발급되지 않음), package_expired(주소 기간 종료 - 먼저 연장하세요); 500 package_failed.

아래 라우트는 Residential 전용입니다. 고정 주소 패키지에서는 422 unsupported_capability로 응답합니다.

연결 생성. 권한 packages:write, 멱등성 불필요. 본문은 선택 사항입니다.

필드타입기본값의미
countinteger 1..5001생성할 문자열 수
moderotating | stickyrotating세션 모드
protocolhttp | socks5http프로토콜
ttl_minutesinteger | null60sticky에서 주소가 유지되는 시간, 3..1440
geo.country, geo.state, geo.city, geo.asnstring-지역 카탈로그의 코드. state, city, asn은 country 필요
Terminal window
curl -X POST https://ipv.rent/api/v1/packages/42/proxies \
-H 'Authorization: Bearer YOUR_API_KEY' -H 'Content-Type: application/json' \
-d '{
"count": 3,
"mode": "sticky",
"protocol": "http",
"ttl_minutes": 30,
"geo": {
"country": "us"
}
}'

sticky 모드에서는 세트의 각 문자열이 자체 세션 라벨을 가지므로 별도의 출구 주소를 제공하며, 각각 자체 rotation_url이 있습니다.

rotating 모드에서는 문자열이 모두 같습니다: 주소가 연결마다 선택되므로 N개의 문자열은 N개의 서로 다른 출구를 제공하며, IP 변경 링크는 없습니다.

빠진 필드는 이전 호출의 값이 아니라 기본값을 사용합니다. 이전에 발급한 문자열은 계속 작동합니다.

오류:

  • 400 - invalid_body(필드의 타입 또는 범위)
  • 404 - not_found
  • 422 - invalid_targeting(field와 value 포함: 카탈로그에 없는 값, 알 수 없는 geo 키, country 없는 범위 지정), package_unavailable(패키지가 아직 발급되지 않음, ttl_minutes가 limits 밖, 지원하지 않는 모드나 프로토콜), unsupported_capability

용량 추가. 권한 packages:write, Idempotency-Key 필수. 본문: {"volume": 10}.

응답은 202와 패키지 카드입니다: 새 용량은 카드에 즉시 보이고, 새 한도에 따른 트래픽은 약 2분 뒤부터 통과합니다.

트래픽 추가는 applied_to_package_id를 가진 별도의 주문을 만듭니다.

오류:

  • 400 - invalid_body
  • 404 - not_found
  • 409 - idempotency_in_progress
  • 422 - invalid_volume, type_unavailable, insufficient_balance, package_unavailable, unsupported_capability, purchase_refunded, idempotency_key_required, idempotency_key_invalid, idempotency_key_reused
  • 500 - package_failed(금액 차감 안 됨, 재시도 가능), order_needs_attention (차감 완료, 재시도 금지), operation_indeterminate(결과가 확정되지 않은 작업의 키로 재시도함)

POST /api/v1/packages/{id}/rotation-secret

섹션 제목: “POST /api/v1/packages/{id}/rotation-secret”

IP 변경 링크의 비밀 값 재발급. 권한 packages:write. 모든 /r/{token} 링크를 즉시 무효화합니다. 하나만 폐기할 수는 없습니다. 응답은 패키지 전체입니다.

오류: 404 not_found; 422 unsupported_capability.