IPMusk Static Proxies API
The Static Proxies API from IPMusk — 5 operation(s) for static proxies.
The Static Proxies API from IPMusk — 5 operation(s) for static proxies.
Every API here is available over the APIs.io API and to AI agents over MCP.
One button, every client — Claude, Cursor, VS Code and the rest.
https://apis.io/mcp
find_apisBrowse and filter every API in the catalog.get_api_artifactsOne API's artifacts, grouped by type.get_openapiThe primary OpenAPI for this API.find_similar_apisAPIs that look like this one.apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.resolveTurn a domain, URL or GitHub org into the provider it belongs to.find_cohortsEvery scored population of providers in the catalog.curl "https://apis.io/api/v1/apis/ipmusk-com:ipmusk-com-static-proxies-api"
curl "https://apis.io/api/v1/apis?limit=25"
Calls without X-API-Key need no key. Calls with it need a paid plan — get a key.
Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.
A second provider on the same verified email joins the account you already have.
openapi: 3.2.0
info:
title: IPMusk Customer Static Proxies API
version: 1.0.0
description: 'Read the catalogue, get residential and static proxy credentials, check usage and orders, and handle support tickets. Authenticate with an API key from the dashboard (Settings > API keys) sent as `Authorization: Bearer `; each key carries the scopes read, connect and/or support. Rate limits per key and minute: read 60, connect 20, support 30 (429 rate_limited, with a Retry-After header in seconds). JSON responses are `{ data, request_id }`; errors are `{ error: { code, message, field_errors? }, request_id }`. Money is amount_minor (minor units) with an ISO 4217 currency.'
servers:
- url: https://ipmusk.com
tags:
- name: Static Proxies
paths:
/api/v1/static-proxies:
get:
operationId: static_proxies_list
summary: List static proxies
description: 'Every static proxy on the account, newest first, with status and days left. No credentials: use the detail or export endpoint for those.'
security:
- bearerAuth: []
x-ipmusk-scope: read
parameters:
- name: category
in: query
required: false
description: Only proxies of this kind.
schema:
description: Only proxies of this kind.
type: string
enum:
- native_isp
- isp
- datacenter
- residential
responses:
'200':
description: List static proxies
content:
application/json:
schema:
type: object
properties:
data:
type: object
properties:
items:
type: array
items:
type: object
properties:
id:
type: string
minLength: 1
maxLength: 128
order_id:
type: string
minLength: 1
maxLength: 128
ip:
anyOf:
- type: string
format: ipv4
pattern: ^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])$
- type: string
format: ipv6
pattern: ^(([0-9a-fA-F]{1,4}:){7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:))$
region:
type: string
minLength: 1
maxLength: 120
region_name:
type: string
minLength: 1
maxLength: 120
subdivision_name:
anyOf:
- type: string
minLength: 1
maxLength: 120
- type: 'null'
category:
type: string
enum:
- native_isp
- isp
- datacenter
- residential
state:
type: string
enum:
- available
- released
- expiring
- provisioning
- checking
- faulty
- replaced
remark:
type: string
maxLength: 120
expires_at:
anyOf:
- type: string
format: date-time
pattern: ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z|([+-](?:[01]\d|2[0-3]):[0-5]\d)))$
- type: 'null'
replacement_ip:
anyOf:
- anyOf:
- type: string
format: ipv4
pattern: ^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])$
- type: string
format: ipv6
pattern: ^(([0-9a-fA-F]{1,4}:){7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:))$
- type: 'null'
replacement_in_review:
type: boolean
status:
type: string
enum:
- active
- expiring
- being_replaced
- expired
days_left:
anyOf:
- type: integer
minimum: 0
maximum: 9007199254740991
- type: 'null'
renewable:
type: boolean
required:
- id
- order_id
- ip
- region
- region_name
- subdivision_name
- category
- state
- remark
- expires_at
- replacement_ip
- replacement_in_review
- status
- days_left
- renewable
additionalProperties: false
summary:
type: object
properties:
total:
type: integer
minimum: 0
maximum: 9007199254740991
active:
type: integer
minimum: 0
maximum: 9007199254740991
expiring:
type: integer
minimum: 0
maximum: 9007199254740991
being_replaced:
type: integer
minimum: 0
maximum: 9007199254740991
expired:
type: integer
minimum: 0
maximum: 9007199254740991
required:
- total
- active
- expiring
- being_replaced
- expired
additionalProperties: false
required:
- items
- summary
additionalProperties: false
request_id:
type: string
minLength: 8
maxLength: 128
required:
- data
- request_id
additionalProperties: false
default:
$ref: '#/components/responses/Error'
tags:
- Static Proxies
/api/v1/static-proxies/export:
post:
operationId: static_proxies_export
summary: Export static proxies as a file
description: The chosen proxies with their credentials, as a txt, csv or json file download (not the data envelope). Errors still use the error envelope.
security:
- bearerAuth: []
x-ipmusk-scope: connect
parameters: []
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
proxy_ids:
minItems: 1
maxItems: 1000
type: array
items:
type: string
minLength: 1
maxLength: 128
format:
type: string
enum:
- txt
- csv
- json
required:
- proxy_ids
- format
additionalProperties: false
responses:
'200':
description: Export static proxies as a file
content:
text/plain:
schema:
type: string
default:
$ref: '#/components/responses/Error'
tags:
- Static Proxies
/api/v1/static-proxies/{proxyId}:
get:
operationId: static_proxies_get
summary: One static proxy with its credentials
description: The proxy and, while it still connects, its host, port, username and password. 404 when it is not this account's.
security:
- bearerAuth: []
x-ipmusk-scope: connect
parameters:
- name: proxyId
in: path
required: true
schema:
type: string
minLength: 1
maxLength: 128
responses:
'200':
description: One static proxy with its credentials
content:
application/json:
schema:
type: object
properties:
data:
type: object
properties:
id:
type: string
minLength: 1
maxLength: 128
order_id:
type: string
minLength: 1
maxLength: 128
ip:
anyOf:
- type: string
format: ipv4
pattern: ^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])$
- type: string
format: ipv6
pattern: ^(([0-9a-fA-F]{1,4}:){7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:))$
region:
type: string
minLength: 1
maxLength: 120
region_name:
type: string
minLength: 1
maxLength: 120
subdivision_name:
anyOf:
- type: string
minLength: 1
maxLength: 120
- type: 'null'
category:
type: string
enum:
- native_isp
- isp
- datacenter
- residential
state:
type: string
enum:
- available
- released
- expiring
- provisioning
- checking
- faulty
- replaced
remark:
type: string
maxLength: 120
expires_at:
anyOf:
- type: string
format: date-time
pattern: ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z|([+-](?:[01]\d|2[0-3]):[0-5]\d)))$
- type: 'null'
replacement_ip:
anyOf:
- anyOf:
- type: string
format: ipv4
pattern: ^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])$
- type: string
format: ipv6
pattern: ^(([0-9a-fA-F]{1,4}:){7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:))$
- type: 'null'
replacement_in_review:
type: boolean
status:
type: string
enum:
- active
- expiring
- being_replaced
- expired
days_left:
anyOf:
- type: integer
minimum: 0
maximum: 9007199254740991
- type: 'null'
renewable:
type: boolean
connection:
anyOf:
- type: object
properties:
host:
type: string
port:
type: integer
minimum: 1
maximum: 65535
username:
type: string
password:
type: string
required:
- host
- port
- username
- password
additionalProperties: false
- type: 'null'
required:
- id
- order_id
- ip
- region
- region_name
- subdivision_name
- category
- state
- remark
- expires_at
- replacement_ip
- replacement_in_review
- status
- days_left
- renewable
- connection
additionalProperties: false
request_id:
type: string
minLength: 8
maxLength: 128
required:
- data
- request_id
additionalProperties: false
default:
$ref: '#/components/responses/Error'
tags:
- Static Proxies
/api/v1/static-proxies/renew-quote:
post:
operationId: static_renew_quote
summary: Price a static proxy renewal
description: The price of renewing the chosen static proxies for 30 or 90 days, one line per IP with its new expiry. The proxies must share one location and kind; otherwise 400 lists the groups to renew separately. Nothing is ordered.
security:
- bearerAuth: []
x-ipmusk-scope: order
parameters: []
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
proxy_ids:
minItems: 1
maxItems: 100
type: array
items:
type: string
minLength: 1
maxLength: 128
description: Static proxy ids from GET /static-proxies; one location and kind per renewal.
resource_days:
anyOf:
- type: number
const: 30
- type: number
const: 90
description: 'Term in days: 30 or 90.'
required:
- proxy_ids
- resource_days
additionalProperties: false
responses:
'200':
description: Price a static proxy renewal
content:
application/json:
schema:
type: object
properties:
data:
type: object
properties:
amount_minor:
type: integer
minimum: 0
maximum: 9007199254740991
currency:
type: string
pattern: ^[A-Z]{3}$
quantity:
type: integer
exclusiveMinimum: 0
maximum: 9007199254740991
resource_days:
type: integer
exclusiveMinimum: 0
maximum: 9007199254740991
lines:
type: array
items:
type: object
properties:
proxy_id:
type: string
minLength: 1
maxLength: 128
ip:
type: string
category:
type: string
enum:
- native_isp
- isp
- datacenter
- residential
country_code:
type: string
country_name:
type: string
subdivision_name:
anyOf:
- type: string
- type: 'null'
current_expires_at:
anyOf:
- type: string
- type: 'null'
renewed_expires_at:
anyOf:
- type: string
- type: 'null'
unit_amount_minor:
type: integer
minimum: 0
maximum: 9007199254740991
currency:
type: string
pattern: ^[A-Z]{3}$
required:
- proxy_id
- ip
- category
- country_code
- country_name
- subdivision_name
- current_expires_at
- renewed_expires_at
- unit_amount_minor
- currency
additionalProperties: false
required:
- amount_minor
- currency
- quantity
- resource_days
- lines
additionalProperties: false
request_id:
type: string
minLength: 8
maxLength: 128
required:
- data
- request_id
additionalProperties: false
default:
$ref: '#/components/responses/Error'
tags:
- Static Proxies
/api/v1/static-proxies/renew:
post:
operationId: static_renew
summary: Renew static proxies and get a payment link
description: 'Creates an unpaid renewal order and returns its payment link for the customer to open and pay; nothing is charged by this call. Quote first (POST /static-proxies/renew-quote) and pass the agreed expected_amount_minor: a different current price answers 409 with the new one. The Idempotency-Key header makes a retry return the same order and link.'
security:
- bearerAuth: []
x-ipmusk-scope: order
parameters:
- name: Idempotency-Key
in: header
required: true
description: 'A unique value per logical request (8-128 of A-Z a-z 0-9 . _ : -). Retrying with the same value returns the first result.'
schema:
type: string
minLength: 8
maxLength: 128
pattern: ^[A-Za-z0-9._:-]+$
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
proxy_ids:
minItems: 1
maxItems: 100
type: array
items:
type: string
minLength: 1
maxLength: 128
description: Static proxy ids from GET /static-proxies; one location and kind per renewal.
resource_days:
anyOf:
- type: number
const: 30
- type: number
const: 90
description: 'Term in days: 30 or 90.'
expected_amount_minor:
description: The amount_minor the customer agreed to. A different current price is refused with 409 and the new price.
type: integer
minimum: 0
maximum: 9007199254740991
provider:
type: string
enum:
- stripe
- paypal
- infini
description: 'Payment provider for the link. Default: the first one this deployment offers.'
required:
- proxy_ids
- resource_days
additionalProperties: false
responses:
'201':
description: Renew static proxies and get a payment link
content:
application/json:
schema:
type: object
properties:
data:
type: object
properties:
order_id:
type: string
minLength: 1
maxLength: 128
checkout_url:
type: string
format: uri
required:
- order_id
- checkout_url
additionalProperties: false
request_id:
type: string
minLength: 8
maxLength: 128
required:
- data
- request_id
additionalProperties: false
default:
$ref: '#/components/responses/Error'
tags:
- Static Proxies
components:
responses:
Error:
description: 'Any failure: 400 validation_error, 401 authentication_required, 403 forbidden / capability_unavailable, 404 not_found, 409 invalid_state_transition / idempotency_conflict, 422 product_unavailable, 429 rate_limited, 500 internal_error.'
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorEnvelope'
schemas:
ErrorEnvelope:
type: object
properties:
error:
type: object
properties:
code:
type: string
enum:
- validation_error
- authentication_required
- region_blocked
- forbidden
- not_found
- idempotency_conflict
- invalid_state_transition
- checkout_unavailable
- product_unavailable
- capability_unavailable
- rate_limited
- challenge_required
- upstream_unavailable
- internal_error
message:
type: string
minLength: 1
maxLength: 500
field_errors:
type: object
propertyNames:
type: string
additionalProperties:
type: array
items:
type: string
minLength: 1
maxLength: 300
required:
- code
- message
additionalProperties: false
request_id:
type: string
minLength: 8
maxLength: 128
required:
- error
- request_id
additionalProperties: false
securitySchemes:
bearerAuth:
type: http
scheme: bearer
description: An IPMusk API key (ipm_live_…).