REST APIv1

Partner API

API for mobile proxy integration: port orders and renewals, access management and billing.

Example values are illustrative. Current prices, IDs and connection details are returned by the API.

Getting started

Authentication

The API is available after partner account activation. Tokens can be created and revoked exclusively in the GIGABIT dashboard. A new token replaces the previous one and is displayed once.

The token must be sent in the HTTP request header Authorization using the Bearer scheme.

HTTP
Authorization: Bearer gbp_PARTNER_TOKEN
Token management in the dashboard ↗

Request and response format

Request bodies use JSON. Request and response examples are provided for each endpoint.

ItemFormat and meaning
Request bodyJSON object and Content-Type: application/json. The body may be omitted when there are no parameters.
HTTP 202Operation accepted. The server returns id and status_url for checking progress.
GET /operations/{id}queued: waiting; processing: in progress; ready: completed; failed: error. result contains the outcome and error contains the failure code.
DatesISO 8601 with a timezone, e.g. 2026-12-09T22:59:59+00:00.
Amounts_cents fields: integer euro cents. 4500 = EUR 45.00.
LimitsBody up to 16 KiB; 600 requests per hour per account. For HTTP 429, Retry-After specifies the delay.

Successful response

200 · JSON
{
  "success": true,
  "data": {
    "currency": "EUR",
    "balance_cents": 10000
  }
}

Error response

401 · JSON
{
  "success": false,
  "error": "unauthenticated"
}

Balance and payments

API orders and renewals cover one port for 30 days. The price after the individual discount is debited from the net balance. available_cents includes the credit limit and reservations.

VAT is determined by the billing profile and added to Stripe top-ups. It is not charged again when purchasing ports.

Errors

HTTPerrorDescription
400invalid_rotation_token_requestToken reset does not accept additional parameters.
400invalid_jsonInvalid JSON in the request body.
400invalid_payment_requestUnsupported or invalid request parameters.
400invalid_payment_ordersInvalid port number or ID.
400invalid_partner_amountThe amount is outside the allowed constraints.
400invalid_paginationInvalid pagination parameters.
400invalid_partner_prefixThe login prefix is outside the allowed constraints.
400invalid_rotation_intervalInvalid rotation or rotation_seconds fields.
401unauthenticatedToken is missing, invalid or revoked.
403partner_requiredAn active partner account is required.
403payment_method_unavailableThe payment method is unavailable for this account.
403origin_not_allowedThe request origin is not allowed.
404not_foundObject not found or unavailable to this account.
409insufficient_partner_balanceInsufficient funds after accounting for the credit limit and reservations.
409insufficient_withdrawable_balanceInsufficient funds available for refund.
409inventory_changedPort availability changed since the catalogue was read.
409partner_prefix_takenThe prefix is already taken.
409record_changed_or_in_useThe record has changed or is in use by another operation.
409payment_busyA related operation is still in progress.
409rotation_busyIP rotation is still in progress.
409billing_requiredRequired billing details are missing from the profile.
409rotation_interval_too_shortThe interval is below 20 seconds or the port server's limit.
403 / 409order_expiredThe rental is inactive. Credential changes and IP rotation are available after renewal.
429too_many_requestsRequest limit exceeded. Retry-After specifies the delay.
502proxy_server_unavailableThe proxy server is temporarily unavailable.
502rotation_sync_pendingApplication of the IP rotation setting is not yet confirmed.
503database_unavailableThe database is temporarily unavailable.
503stripe_unavailableThe payment service is temporarily unavailable.
Operations

Operation status

GET

Returns the account operation’s status and result. A quick check without repeating the action.

Parameters

FieldTypeDescription
idPath · RequiredstringOperation ID returned in the HTTP 202 response.

Example request

cURL
curl --request GET \
  --url 'https://api.gigabit.ltd/api/partner/v1/operations/op_0123456789abcdef0123456789abcdef' \
  --header "Authorization: Bearer $GIGABIT_API_TOKEN"

Example response

200 · application/json
{
  "success": true,
  "data": {
    "id": "op_0123456789abcdef0123456789abcdef",
    "state": "queued",
    "error": null,
    "result": null,
    "created_at": "2026-11-10T12:00:00+00:00",
    "status_url": "/api/partner/v1/operations/op_0123456789abcdef0123456789abcdef"
  }
}
Response fields →
Balance & billing

Balance

GET

Current balance, credit limit, available funds, discount and partner prices.

No request body.

Example request

cURL
curl --request GET \
  --url 'https://api.gigabit.ltd/api/partner/v1/balance' \
  --header "Authorization: Bearer $GIGABIT_API_TOKEN"

Example response

200 · application/json
{
  "success": true,
  "data": {
    "currency": "EUR",
    "balance_cents": 10000,
    "reserved_cents": 0,
    "credit_limit_cents": 10000,
    "debt_cents": 0,
    "available_cents": 20000,
    "withdrawable_cents": 10000,
    "discount_percent": 10,
    "prefix": "astra",
    "api_token_hint": "demo12",
    "monthly_net_cents": 4500,
    "payment_method": "card",
    "connection_domains": {
      "host": "",
      "api": ""
    },
    "paid_in_cents": 10000,
    "prices": [
      {
        "currency": "EUR",
        "base_net_cents": 4500,
        "net_cents": 4050,
        "vat_cents": 0,
        "total_cents": 4050,
        "tax_at_topup": true,
        "discount_percent": 10,
        "months": 1,
        "days": 30,
        "pricing_version": 1,
        "tax": {
          "mode": "vat",
          "rate_percent": 23,
          "vat_code": "23",
          "reverse_charge": false
        }
      }
    ],
    "topup_tax": {
      "mode": "vat",
      "rate_percent": 23,
      "vat_code": "23",
      "reverse_charge": false
    },
    "can_order_new_ports": true
  }
}
Response fields →

Balance top-up

POST

Creates a Stripe payment link. amount_cents is the balance credit in euro cents; total_cents is the payment total including applicable VAT.

Parameters

FieldTypeDescription
amount_centsJSON body · Requiredinteger100-10000000EUR 1-100,000, in integer euro cents.

Example request

cURL
curl --request POST \
  --url 'https://api.gigabit.ltd/api/partner/v1/topups' \
  --header "Authorization: Bearer $GIGABIT_API_TOKEN" \
  --header 'Content-Type: application/json' \
  --data '{
  "amount_cents": 10000
}'

Example response

202 · application/json
{
  "success": true,
  "data": {
    "id": "op_0123456789abcdef0123456789abcdef",
    "state": "queued",
    "error": null,
    "result": null,
    "created_at": "2026-11-10T12:00:00+00:00",
    "status_url": "/api/partner/v1/operations/op_0123456789abcdef0123456789abcdef"
  }
}

Result after completion

GET /operations/{id} · 200
{
  "success": true,
  "data": {
    "id": "op_0123456789abcdef0123456789abcdef",
    "state": "ready",
    "error": null,
    "result": {
      "id": "ptop_0123456789abcdef0123456789abcdef",
      "state": "pending",
      "url": "https://checkout.stripe.com/c/pay/EXAMPLE_SESSION",
      "amount_cents": 10000,
      "vat_cents": 2300,
      "total_cents": 12300,
      "currency": "EUR"
    },
    "created_at": "2026-11-10T12:00:00+00:00",
    "status_url": "/api/partner/v1/operations/op_0123456789abcdef0123456789abcdef"
  }
}
Response fields →

Top-up status

GET

Returns the account’s top-up status. paid confirms the balance has been credited. Returning from Stripe alone does not confirm payment.

States: creating, pending, paid, expired, failed.

Parameters

FieldTypeDescription
idPath · RequiredstringTop-up ID returned by POST /topups.

Example request

cURL
curl --request GET \
  --url 'https://api.gigabit.ltd/api/partner/v1/topups/ptop_0123456789abcdef0123456789abcdef' \
  --header "Authorization: Bearer $GIGABIT_API_TOKEN"

Example response

200 · application/json
{
  "success": true,
  "data": {
    "id": "ptop_0123456789abcdef0123456789abcdef",
    "state": "pending",
    "url": "https://checkout.stripe.com/c/pay/EXAMPLE_SESSION",
    "amount_cents": 10000,
    "vat_cents": 2300,
    "total_cents": 12300,
    "currency": "EUR"
  }
}
Response fields →

Transaction history

GET

Operations newest first, with sources, comments, amounts and balances after each entry. Technical purchase reservations are hidden by default.

Parameters

FieldTypeDescription
offsetQuery · Optionalinteger0-∞Number of entries to skip.
limitQuery · Optionalinteger1-100Page size: 1-100.
include_reservationsQuery · Optionalstring11 includes purchase_reserve and purchase_release.

Example request

cURL
curl --request GET \
  --url 'https://api.gigabit.ltd/api/partner/v1/transactions?offset=0&limit=30' \
  --header "Authorization: Bearer $GIGABIT_API_TOKEN"

Example response

200 · application/json
{
  "success": true,
  "data": {
    "items": [
      {
        "id": "ptop_0123456789abcdef0123456789abcdef:credit",
        "created_at": "2026-11-09T12:05:00+00:00",
        "currency": "EUR",
        "operation": "topup",
        "amount_cents": 10000,
        "reserved_delta_cents": 0,
        "source": "stripe",
        "comment": "",
        "reference": "ptop_0123456789abcdef0123456789abcdef",
        "balance_after_cents": 10000,
        "reserved_after_cents": 0,
        "sequence": 1
      }
    ],
    "total": 1,
    "offset": 0,
    "limit": 30
  }
}
Response fields →

Withdrawal request

POST

Creates a request and reserves the amount pending review. withdrawable_cents specifies the refundable amount; it excludes the credit limit and nonrefundable compensation.

After the request is processed, result.state=requested means a decision is pending. The operation remains processing until payment is confirmed or the request is rejected.

Parameters

FieldTypeDescription
amount_centsJSON body · Requiredinteger100-100000000EUR amount in cents, no more than the withdrawable funds.
commentJSON body · Requiredstring1-2000Payment details or explanation. Must be nonempty after trimming.

Example request

cURL
curl --request POST \
  --url 'https://api.gigabit.ltd/api/partner/v1/withdrawals' \
  --header "Authorization: Bearer $GIGABIT_API_TOKEN" \
  --header 'Content-Type: application/json' \
  --data '{
  "amount_cents": 5000,
  "comment": "Please contact me to confirm payment details."
}'

Example response

202 · application/json
{
  "success": true,
  "data": {
    "id": "op_0123456789abcdef0123456789abcdef",
    "state": "queued",
    "error": null,
    "result": null,
    "created_at": "2026-11-10T12:00:00+00:00",
    "status_url": "/api/partner/v1/operations/op_0123456789abcdef0123456789abcdef"
  }
}

Result after completion

GET /operations/{id} · 200
{
  "success": true,
  "data": {
    "id": "op_0123456789abcdef0123456789abcdef",
    "state": "ready",
    "error": null,
    "result": {
      "id": "pout_0123456789abcdef0123456789abcdef",
      "state": "paid"
    },
    "created_at": "2026-11-10T12:00:00+00:00",
    "status_url": "/api/partner/v1/operations/op_0123456789abcdef0123456789abcdef"
  }
}
Response fields →
Catalogue & orders

Available ports

GET

Available port numbers grouped by operator and location.

Availability is checked when placing an order. Viewing the catalogue does not reserve ports.

No request body.

Example request

cURL
curl --request GET \
  --url 'https://api.gigabit.ltd/api/partner/v1/catalog' \
  --header "Authorization: Bearer $GIGABIT_API_TOKEN"

Example response

200 · application/json
{
  "success": true,
  "data": {
    "items": [
      {
        "operator": {
          "id": "operator-orange",
          "name": "Orange"
        },
        "location": {
          "id": "location-warsaw",
          "name": "Warsaw"
        },
        "ports": [
          {
            "id": "b1c2d3e4f5a60123456789abcdef0123",
            "number": 10001
          },
          {
            "id": "b2c3d4e5f6a70123456789abcdef0123",
            "number": 10002
          }
        ],
        "available": 2
      }
    ],
    "prices": [
      {
        "currency": "EUR",
        "base_net_cents": 4500,
        "net_cents": 4050,
        "vat_cents": 0,
        "total_cents": 4050,
        "tax_at_topup": true,
        "discount_percent": 10,
        "months": 1,
        "days": 30,
        "pricing_version": 1,
        "tax": {
          "mode": "vat",
          "rate_percent": 23,
          "vat_code": "23",
          "reverse_charge": false
        }
      }
    ]
  }
}
Response fields →

Port order

POST

Orders one available port for 30 days using its catalogue number or ID. The cost is debited from the balance.

Long-running operations return HTTP 202 and a server-generated id. Status and results are available through GET /operations/{id}. Checking status does not create another operation.

Parameters

FieldTypeDescription
port_numberJSON body · Optionalinteger1-65535Port number from the catalogue. Exactly one of port_number or port_id is required.
port_idJSON body · Optionalstring1-120Port ID from the catalogue, instead of port_number.

Example request

cURL
curl --request POST \
  --url 'https://api.gigabit.ltd/api/partner/v1/orders' \
  --header "Authorization: Bearer $GIGABIT_API_TOKEN" \
  --header 'Content-Type: application/json' \
  --data '{
  "port_number": 10001
}'

Example response

202 · application/json
{
  "success": true,
  "data": {
    "id": "op_0123456789abcdef0123456789abcdef",
    "state": "queued",
    "error": null,
    "result": null,
    "created_at": "2026-11-10T12:00:00+00:00",
    "status_url": "/api/partner/v1/operations/op_0123456789abcdef0123456789abcdef"
  }
}

Result after completion

GET /operations/{id} · 200
{
  "success": true,
  "data": {
    "id": "op_0123456789abcdef0123456789abcdef",
    "state": "ready",
    "error": null,
    "result": {
      "id": "partner_0123456789abcdef0123456789abcdef",
      "state": "ready",
      "error": null,
      "order_ids": [
        "a1b2c3d4e5f60123456789abcdef0123"
      ],
      "amount_cents": 4050,
      "currency": "EUR",
      "price": {
        "currency": "EUR",
        "base_net_cents": 4500,
        "net_cents": 4050,
        "vat_cents": 0,
        "total_cents": 4050,
        "tax_at_topup": true,
        "discount_percent": 10,
        "months": 1,
        "days": 30,
        "pricing_version": 1,
        "tax": {
          "mode": "vat",
          "rate_percent": 23,
          "vat_code": "23",
          "reverse_charge": false
        }
      }
    },
    "created_at": "2026-11-10T12:00:00+00:00",
    "status_url": "/api/partner/v1/operations/op_0123456789abcdef0123456789abcdef"
  }
}
Response fields →

Port list

GET

Current account ports: rental expiry, connection details, IP and automatic IP rotation.

To change the IP, send a GET request to the full rotation_url returned in the port details. No Authorization header is required. The URL already contains the port token.

No request body.

Example request

cURL
curl --request GET \
  --url 'https://api.gigabit.ltd/api/partner/v1/orders' \
  --header "Authorization: Bearer $GIGABIT_API_TOKEN"

Example response

200 · application/json
{
  "success": true,
  "data": {
    "items": [
      {
        "id": "a1b2c3d4e5f60123456789abcdef0123",
        "port_id": "b1c2d3e4f5a60123456789abcdef0123",
        "number": 10001,
        "host": "l1.gigabit.ltd",
        "username": "astra_a1b2c3d4e5f",
        "proxy_password": "EXAMPLE_ONLY_22_CHARS_x",
        "status": "active",
        "expires": "2026-12-09T22:59:59+00:00",
        "operator": "Orange",
        "cityName": "Warsaw",
        "ip": "198.51.100.42",
        "rotation_url": "https://api.gigabit.ltd/change_ip?token=EXAMPLE_ROTATION_TOKEN_REPLACE_ME",
        "rotation": true,
        "rotation_seconds": 120,
        "connection_options": {
          "custom": {
            "host": "proxy.example.com",
            "rotation_url": "https://api.example.com/change_ip?token=EXAMPLE_ROTATION_TOKEN_REPLACE_ME"
          }
        }
      }
    ]
  }
}
Response fields →

Port details

GET

Details of an order belonging to the account. Unavailable or missing orders return 404.

To change the IP, send a GET request to the full rotation_url returned in the port details. No Authorization header is required. The URL already contains the port token.

Parameters

FieldTypeDescription
idPath · RequiredstringOrder ID (id) or port ID (port_id) from the port list.

Example request

cURL
curl --request GET \
  --url 'https://api.gigabit.ltd/api/partner/v1/orders/a1b2c3d4e5f60123456789abcdef0123' \
  --header "Authorization: Bearer $GIGABIT_API_TOKEN"

Example response

200 · application/json
{
  "success": true,
  "data": {
    "id": "a1b2c3d4e5f60123456789abcdef0123",
    "port_id": "b1c2d3e4f5a60123456789abcdef0123",
    "number": 10001,
    "host": "l1.gigabit.ltd",
    "username": "astra_a1b2c3d4e5f",
    "proxy_password": "EXAMPLE_ONLY_22_CHARS_x",
    "status": "active",
    "expires": "2026-12-09T22:59:59+00:00",
    "operator": "Orange",
    "cityName": "Warsaw",
    "ip": "198.51.100.42",
    "rotation_url": "https://api.gigabit.ltd/change_ip?token=EXAMPLE_ROTATION_TOKEN_REPLACE_ME",
    "rotation": true,
    "rotation_seconds": 120,
    "connection_options": {
      "custom": {
        "host": "proxy.example.com",
        "rotation_url": "https://api.example.com/change_ip?token=EXAMPLE_ROTATION_TOKEN_REPLACE_ME"
      }
    }
  }
}
Response fields →

Port renewal

POST

Extends one port rental by 30 days, paid from the balance. Only the port number or ID in the URL is required.

Long-running operations return HTTP 202 and a server-generated id. Status and results are available through GET /operations/{id}. Checking status does not create another operation.

Parameters

FieldTypeDescription
idPath · RequiredstringPort number or port ID. The order id from GET /orders is also accepted.

Example request

cURL
curl --request POST \
  --url 'https://api.gigabit.ltd/api/partner/v1/orders/10001/renew' \
  --header "Authorization: Bearer $GIGABIT_API_TOKEN" \
  --header 'Content-Type: application/json' \
  --data '{}'

Example response

202 · application/json
{
  "success": true,
  "data": {
    "id": "op_0123456789abcdef0123456789abcdef",
    "state": "queued",
    "error": null,
    "result": null,
    "created_at": "2026-11-10T12:00:00+00:00",
    "status_url": "/api/partner/v1/operations/op_0123456789abcdef0123456789abcdef"
  }
}

Result after completion

GET /operations/{id} · 200
{
  "success": true,
  "data": {
    "id": "op_0123456789abcdef0123456789abcdef",
    "state": "ready",
    "error": null,
    "result": {
      "id": "partner_0123456789abcdef0123456789abcdef",
      "state": "ready",
      "error": null,
      "order_ids": [
        "a1b2c3d4e5f60123456789abcdef0123"
      ],
      "amount_cents": 4050,
      "currency": "EUR",
      "price": {
        "currency": "EUR",
        "base_net_cents": 4500,
        "net_cents": 4050,
        "vat_cents": 0,
        "total_cents": 4050,
        "tax_at_topup": true,
        "discount_percent": 10,
        "months": 1,
        "days": 30,
        "pricing_version": 1,
        "tax": {
          "mode": "vat",
          "rate_percent": 23,
          "vat_code": "23",
          "reverse_charge": false
        }
      }
    },
    "created_at": "2026-11-10T12:00:00+00:00",
    "status_url": "/api/partner/v1/operations/op_0123456789abcdef0123456789abcdef"
  }
}
Response fields →
Credentials & IP rotation

Reset IP rotation token

POST

Creates a new IP rotation token and returns a ready-to-use URL. The previous token and all URLs containing it stop working immediately. The proxy password and timer remain unchanged.

The response is returned immediately, without a background operation. The new URL is also available in the port’s rotation_url field.

Parameters

FieldTypeDescription
idPath · RequiredstringOrder ID from the id field in the port list.

Example request

cURL
curl --request POST \
  --url 'https://api.gigabit.ltd/api/partner/v1/orders/a1b2c3d4e5f60123456789abcdef0123/rotation-token' \
  --header "Authorization: Bearer $GIGABIT_API_TOKEN" \
  --header 'Content-Type: application/json' \
  --data '{}'

Example response

200 · application/json
{
  "success": true,
  "data": {
    "rotation_token": "0123456789abcdef0123456789abcdef",
    "rotation_url": "https://api.gigabit.ltd/change_ip?token=0123456789abcdef0123456789abcdef"
  }
}

Credential change by ID

POST

The server generates a new password. With change_login=true it also generates a login using the current partner prefix. Available only for active rentals.

New credentials are available in result after application. operation_superseded means a newer command changed the credentials.

Parameters

FieldTypeDescription
idPath · RequiredstringOrder ID (id) or port ID (port_id) from the port list.
change_loginJSON body · Optionalbooleantrue generates a new login with the current prefix and a new password. false changes the password only. Legacy shared credentials become a separate pair even without this flag.

Example request

cURL
curl --request POST \
  --url 'https://api.gigabit.ltd/api/partner/v1/orders/a1b2c3d4e5f60123456789abcdef0123/password' \
  --header "Authorization: Bearer $GIGABIT_API_TOKEN" \
  --header 'Content-Type: application/json' \
  --data '{
  "change_login": true
}'

Example response

202 · application/json
{
  "success": true,
  "data": {
    "id": "op_0123456789abcdef0123456789abcdef",
    "state": "queued",
    "error": null,
    "result": null,
    "created_at": "2026-11-10T12:00:00+00:00",
    "status_url": "/api/partner/v1/operations/op_0123456789abcdef0123456789abcdef"
  }
}

Result after completion

GET /operations/{id} · 200
{
  "success": true,
  "data": {
    "id": "op_0123456789abcdef0123456789abcdef",
    "state": "ready",
    "error": null,
    "result": {
      "state": "synced",
      "username": "astra_b2c3d4e5f6a",
      "password": "EXAMPLE_NEW_PASSWORD_xx"
    },
    "created_at": "2026-11-10T12:00:00+00:00",
    "status_url": "/api/partner/v1/operations/op_0123456789abcdef0123456789abcdef"
  }
}
Response fields →

IP rotation timer

GET

Current timer state. When rotation=true, rotation_seconds is included. When disabled, only rotation=false is returned.

Parameters

FieldTypeDescription
idPath · RequiredstringOrder ID (id) or port ID (port_id) from the port list.

Example request

cURL
curl --request GET \
  --url 'https://api.gigabit.ltd/api/partner/v1/orders/a1b2c3d4e5f60123456789abcdef0123/rotation' \
  --header "Authorization: Bearer $GIGABIT_API_TOKEN"

Example response

200 · application/json
{
  "success": true,
  "data": {
    "rotation": true,
    "rotation_seconds": 120
  }
}
Response fields →

Timer settings

PUT

Enable the timer with rotation=true and rotation_seconds, an integer from 20 to 86400 seconds. Values below 20 return rotation_interval_too_short. To disable it, send only rotation=false.

The operation remains processing until the timer setting is confirmed.

Parameters

FieldTypeDescription
idPath · RequiredstringOrder ID (id) or port ID (port_id) from the port list.
rotationJSON body · Requiredbooleantrue enables the timer; false disables it.
rotation_secondsJSON body · Optionalinteger20-86400Required when rotation=true. Omit this field when rotation=false.

Example request

cURL
curl --request PUT \
  --url 'https://api.gigabit.ltd/api/partner/v1/orders/a1b2c3d4e5f60123456789abcdef0123/rotation' \
  --header "Authorization: Bearer $GIGABIT_API_TOKEN" \
  --header 'Content-Type: application/json' \
  --data '{
  "rotation": true,
  "rotation_seconds": 120
}'

Example response

202 · application/json
{
  "success": true,
  "data": {
    "id": "op_0123456789abcdef0123456789abcdef",
    "state": "queued",
    "error": null,
    "result": null,
    "created_at": "2026-11-10T12:00:00+00:00",
    "status_url": "/api/partner/v1/operations/op_0123456789abcdef0123456789abcdef"
  }
}

Result after completion

GET /operations/{id} · 200
{
  "success": true,
  "data": {
    "id": "op_0123456789abcdef0123456789abcdef",
    "state": "ready",
    "error": null,
    "result": {
      "rotation": true,
      "rotation_seconds": 120
    },
    "created_at": "2026-11-10T12:00:00+00:00",
    "status_url": "/api/partner/v1/operations/op_0123456789abcdef0123456789abcdef"
  }
}
Response fields →
Partner profile

Login prefix

PUT

The prefix is the beginning of port logins, such as a brand name. Logins use the format prefix_random: with prefix=astra, a new port receives a login such as astra_a1b2c3d4e5f. The random suffix is generated separately for each port.

Changing the prefix does not change existing logins. New ports and login changes using change_login=true use the current prefix. The prefix must be unique; a taken prefix returns 409 partner_prefix_taken.

Parameters

FieldTypeDescription
prefixJSON body · Requiredstring2-242-24 characters: Latin letters, digits and hyphens, starting with a letter. Normalized to lowercase. proxy and gigabit are reserved.

Example request

cURL
curl --request PUT \
  --url 'https://api.gigabit.ltd/api/partner/v1/profile' \
  --header "Authorization: Bearer $GIGABIT_API_TOKEN" \
  --header 'Content-Type: application/json' \
  --data '{
  "prefix": "astra"
}'

Example response

200 · application/json
{
  "success": true,
  "data": {
    "prefix": "astra"
  }
}
Response fields

Money & states

Fields of the data object. New fields may be added without changing the API version.

FieldTypeDescription
balance_centsintegerCurrent net balance; may be negative.
credit_limit_centsintegerAgreed maximum overdraft amount.
reserved_centsintegerFunds reserved for unfinished operations, still included in the balance.
available_centsintegerAvailable for orders: balance + credit − reservations, minimum 0.
withdrawable_centsintegerAccount funds available for refund after reservations.
debt_cents / paid_in_centsintegerDebt and total confirmed deposits respectively.
currency / monthly_net_cents / discount_percentstring / integerEUR; base 30-day price before discount; partner discount percentage.
prices[] / topup_taxarray / object30-day price and top-up tax profile. Incomplete billing yields empty prices and pricing_error=billing_required.
can_order_new_portsbooleanWhether available funds cover one 30-day port. Does not guarantee availability.
payment_methodstringTop-up method: card (Stripe).
prefix / api_token_hint / connection_domainsstring / objectNew login prefix, token suffix (not the token) and configured host/api domains. An empty string means the domain is unconfigured.

Port price

Fields of the data object. New fields may be added without changing the API version.

FieldTypeDescription
currency / base_net_centsstring / integerEUR and the period’s base net price before discount.
net_cents / total_centsintegerNet cost per port for the period after discount; the balance debit.
vat_cents / tax_at_topupinteger / booleanPurchases have vat_cents=0 and tax_at_topup=true: VAT is handled at top-up.
months / days / discount_percent / pricing_versionintegerPeriod of 1 month (30 days), individual discount and price version.
taxobjectmode, rate_percent, vat_code, reverse_charge. Top-up tax profile, not an additional port charge.

Purchase / renewal operation

Fields of the data object. New fields may be added without changing the API version.

FieldTypeDescription
id / state / errorstring / nullOperation ID, state and error code (null when none).
order_ids[]string[]Created or renewed order IDs for GET /orders/{id}.
amount_cents / currency / priceinteger / string / objectNet debit amount, EUR currency and the port price saved for the operation.

Port and credentials

Fields of the data object. New fields may be added without changing the API version.

FieldTypeDescription
id / port_id / numberstring / integerOrder ID, catalogue port ID and port number.
host / username / proxy_passwordstringProxy connection host, username and password.
status / expiresstringactive or due; rental expiry in ISO 8601.
operator / cityName / ipstringOperator, city and current exit IP. ip may be empty when unavailable.
rotation_urlstringTo change the IP, send a GET request to the full rotation_url returned in the port details. No Authorization header is required. The URL already contains the port token.
rotation / rotation_secondsboolean / integerWhether the timer is enabled; the interval in seconds is included only when rotation=true.
connection_optionsobjectAdditional connection addresses when configured: ip and custom, each containing host and rotation_url.

IP rotation timer

Fields of the data object. New fields may be added without changing the API version.

FieldTypeDescription
rotationbooleantrue means the timer is enabled; false means disabled.
rotation_secondsintegerInterval in seconds, from 20 to 86400. Included only when rotation=true.

Balance top-up

Fields of the data object. New fields may be added without changing the API version.

FieldTypeDescription
id / state / urlstring / nullStripe: ID, state, Checkout link. url can be null while the payment is being created.
amount_cents / vat_cents / total_cents / currencyinteger / stringStripe: balance credit, VAT, total payable and EUR.

Transaction

Fields of the data object. New fields may be added without changing the API version.

FieldTypeDescription
items[] / total / offset / limitarray / integerEntries, total after the reservation filter, offset and page size.
id / created_at / sequence / currencystring / integerEntry ID, date, sequence number and EUR.
operation / sourcestringOperation: topup, purchase, renewal, correction, compensation, credit_limit, withdrawal_reserve, withdrawal_paid, withdrawal_rejected; technical purchase_reserve/purchase_release on request. Sources: stripe, admin, api, customer, system.
amount_cents / reserved_delta_centsintegerChanges to balance and reservations. Debits are negative. A reservation can have amount_cents=0; it is not a deposit.
balance_after_cents / reserved_after_centsintegerBalance and reservations after this entry.
comment / referencestring / nullPlain-text comment and related payment or operation. The comment may be empty.

Background operation

Fields of the data object. New fields may be added without changing the API version.

FieldTypeDescription
id / status_urlstringServer-generated operation ID and status URL.
statestringqueued, processing, ready or failed.
resultobject / nullOperation result: credentials, order details or a payment link depending on the method.
error / created_atstring / nullFailure code when applicable and operation creation time.