NovaProxy Docs
OrdersCreate

Create Order

Create new proxy orders

Create a new order for a specific plan.

Endpoint: POST /orders

The endpoint accepts both application/json and multipart/form-data; use whichever your client finds convenient.

Common Fields

FieldTypeRequiredNotes
planstring (slug)yesPlan slug from GET /plans (e.g. residential, datacenter).
bandwidthnumber (GB)variesRequired for bandwidth-type plans. Integer GB; must satisfy tier rules from GET /plans/{slug}.
durationstring (slug)variesRequired for duration-type plans. Must match plan.durations[].slug.
configobjectvariesRequired when the chosen duration exposes options; keys are option name values, values from option.options[].value or numeric constraints.
discount_codestringnoOptional discount code.

Orders are always charged to the authenticated user's account balance. Do not send payment_gateway_id.

Pick the relevant page for examples:

Examples

Bandwidth plan:

{
    "plan": "residential",
    "bandwidth": 2
}

Duration plan with options:

{
    "plan": "datacenter",
    "duration": "1_week",
    "config": {
        "speed": 10
    }
}

Successful Response

POST /orders returns 201 Created with a UserPlanResource as the root (no data envelope):

{
    "uuid": "9bdfe2d6-2c9a-4f7e-9e8c-1a2b3c4d5e6f",
    "username": null,
    "password": null,
    "initial_bandwidth_in_bytes": 10737418240,
    "remaining_bandwidth_in_bytes": 10737418240,
    "consumed_bandwidth_in_bytes": 0,
    "expires_at": "2026-06-03T12:00:00Z",
    "status": "active",
    "price": { "gross": 19.99, "discount": 0, "net": 19.99 },
    "plan": { /* ... */ },
    "duration_options": [],
    "created_at": "2026-01-04T21:19:12.000000Z",
    "updated_at": "2026-01-04T21:19:12.000000Z"
}

For duration-type orders with configurable options, duration_options lists the resolved choices (labels, values, and line prices). username and password remain null until the order status allows credentials (i.e. not awaiting_payment, pending, or invoice_expired).

Error Responses

422 Unprocessable Entity:

{ "error": "<human-readable message>" }

Common messages:

  • Plan '<slug>' not found.
  • Invalid duration format '<slug>'. Expected e.g. '30_days', '1_day', '20_minutes'.
  • Duration '<slug>' is not available for plan '<plan-slug>'.
  • The config field is required for this plan duration.
  • Missing config value for option '<name>'.
  • Option '<name>' does not exist for the selected plan duration.
  • Invalid value for option '<name>'.
  • Value for option '<name>' must be numeric.
  • Value for option '<name>' must be at least <min>.
  • Value for option '<name>' must be at most <max>.
  • Value for option '<name>' must be a multiple of <step>.
  • The selected plan is not active.
  • The entered bandwidth is not valid.
  • You have reached the maximum number of orders for this plan.
  • Insufficient balance.

On this page