Boxes
Introduction
The Box API provides endpoints for managing WordPress boxes. This includes listing, creating, retrieving box details, and deleting boxes. All endpoints require JWT authentication.
List boxes
Retrieve a paginated list of boxes for the authenticated user.
Endpoint
GET /v1/boxes
Request Parameters
| Parameter | Location | Type | Required | Default | Description |
|---|---|---|---|---|---|
Authorization |
Header | string | Yes | - | Bearer token (JWT) |
page |
Query | integer | No | 1 | Page number for pagination |
per_page |
Query | integer | No | 10 | Number of items per page |
sort |
Query | string | No | - | Sort field (prefix with - for descending, e.g., -created_at) |
search |
Query | string | No | - | Search term to filter boxes by name or title |
filter[staging] |
Query | boolean | No | - | Filter by staging status |
filter[type] |
Query | array | No | - | Filter by box type(s) |
filter[planId] |
Query | array | No | - | Filter by plan ID(s) |
filter[ownership] |
Query | boolean | No | - | Filter by ownership |
Example Query
GET /v1/boxes?page=1&per_page=10&sort=-created_at&search=wordpress
Responses
Success Response
- Status Code:
200 OK - Description: List of boxes retrieved successfully
- Body:
{ "boxes": [ { "id": "XK7BM2QP", "name": "wp4x7kz", "title": "Acme Corp Website", "domain": "acme-corp.com", "ip_v4": "185.175.196.42", "ip_v6": "2a00:1c98:60:1011::a1b2:3c4d", "status": [
{ "type": "staging", "state": "inactive" }, { "type": "backup", "state": "inactive" } ], "created_at": "2024-03-15T09:30:00+00:00", "screenshots": {
"xsmall": "https://api-gateway.raidboxes.io/api/v1/boxes/XK7BM2QP/screenshot/xsmall", "small": "https://api-gateway.raidboxes.io/api/v1/boxes/XK7BM2QP/screenshot/small", "medium": "https://api-gateway.raidboxes.io/api/v1/boxes/XK7BM2QP/screenshot/medium", "large": "https://api-gateway.raidboxes.io/api/v1/boxes/XK7BM2QP/screenshot/large" } } ], "meta": {
"current_page": 1, "per_page": 10, "total": 25, "last_page": 3 } }
| Field | Type | Description |
|---|---|---|
boxes |
array | Array of box objects |
meta.current_page |
integer | Current page number |
meta.per_page |
integer | Items per page |
meta.total |
integer | Total number of boxes |
meta.last_page |
integer | Last page number |
Error Responses
401 Unauthorized
{ "timestamp": "timestamp", "path": "/v1/boxes", "request_id": "request-id", "message": "Unauthenticated."}
Get a specific Box
Get the specific box with details by ID.
Endpoint
GET /v1/boxes/{id}
Request Parameters
| Parameter | Location | Type | Required | Description |
|---|---|---|---|---|
id |
Path | string | Yes | The ID of the box |
Authorization |
Header | string | Yes | Bearer token (JWT) |
Responses
Success Response
- Status Code:
200 OK - Description: Response contains the details of the specified box
- Body:
{ "id": "XK7BM2QP", "name": "wp4x7kz", "title": "Acme Corp Website", "domain": "acme-corp.com", "ip_v4": "185.175.196.42", "ip_v6": "2a00:1c98:60:1011::a1b2:3c4d", "status": [
{ "type": "staging", "state": "inactive" }, { "type": "backup", "state": "inactive" }, { "type": "migration", "state": "inactive" } ], "created_at": "2024-03-15T09:30:00+00:00", "screenshots": {
"xsmall": "https://api-gateway.raidboxes.io/api/v1/boxes/XK7BM2QP/screenshot/xsmall", "small": "https://api-gateway.raidboxes.io/api/v1/boxes/XK7BM2QP/screenshot/small", "medium": "https://api-gateway.raidboxes.io/api/v1/boxes/XK7BM2QP/screenshot/medium", "large": "https://api-gateway.raidboxes.io/api/v1/boxes/XK7BM2QP/screenshot/large" } }
Error Responses
401 Unauthorized
Invalid credentials provided.
{ "timestamp": "timestamp", "path": "/v1/boxes/{id}", "request_id": "request-id", "message": "Unauthenticated."}
400 Bad Request
Validation errors.
{ "timestamp": "timestamp", "message": "Request could not be processed.", "path": "/v1/boxes/{id}", "request_id": "3d4379f2-7ceb-4e1e-aa36-cb45f82dd85f"}
Create
Create a new box for a specific process.
Endpoint
POST /v1/boxes
Request Parameters
| Parameter | Location | Type | Required | Description |
|---|---|---|---|---|
Authorization |
Header | string | Yes | Bearer token (JWT) |
Request Body
| Field | Type | Required | Validation | Description |
|---|---|---|---|---|
title |
string | Yes | Min: 3, Max: 150 | Title of the box |
subscription_id |
string | No | Valid UUID | Subscription ID |
performance_level |
string | Yes | Max: 255 | Performance level |
callback_url |
string | No | Valid URL | Callback URL for async notifications |
ai_assistant |
boolean | No | - | Enable AI assistant |
wordpress |
object | Yes | - | WordPress configuration |
wordpress.version |
string | Yes | - | WordPress version |
wordpress.admin_username |
string | Yes | Letters, numbers, dashes, underscores | WordPress admin username |
wordpress.admin_password |
string | Yes | Min: 8, one letter, symbol and number | WordPress admin password |
Example Request Body
{ "title": "My WordPress Box", "subscription_id": "550e8400-e29b-41d4-a716-446655440000", "performance_level": "basic", "callback_url": "https://example.com/webhook/box-created", "ai_assistant": false, "wordpress": { "version": "6.4.2", "admin_username": "admin_user", "admin_password": "MySecur€Pass123!" }}
Responses
Success Response
- Status Code:
202 Accepted - Description: Your request has been accepted and is being processed asynchronously
- Body:
{ "data": { "process_id": "58fb017a-0636-3176-90a3-7a9cc14c56bc", "user_id": "12345", "org_id": "AJ6EJQCF", "operation": "POST v1/boxes", "status": "accepted", "process": 0, "created_at": "2025-12-01T16:14:54+00:00", "updated_at": "2025-12-01T16:14:54+00:00", "callback_url": null, "result_data": [], "error_data": null }}
Note: Use the returned
process_idto track the box creation progress via the Processes API.
Error Responses
401 Unauthorized
Invalid credentials provided.
{ "timestamp": "timestamp", "path": "/v1/boxes", "request_id": "request-id", "message": "Unauthenticated."}
400 Bad Request
Validation errors.
{ "timestamp": "timestamp", "message": "The title field is required. (and 5 more errors)", "path": "/v1/boxes", "request_id": "3d4379f2-7ceb-4e1e-aa36-cb45f82dd85f", "details": {
"title": [ { "message": "The title field is required." } ], "performance_level": [ { "message": "The performance level field is required." } ], "wordpress": [ { "message": "The wordpress field is required." } ], "wordpress.version": [ { "message": "The wordpress.version field is required." } ], "wordpress.admin_username": [ { "message": "The wordpress.admin username field is required." } ], "wordpress.admin_password": [ { "message": "The wordpress.admin password field is required." } ] } }
Delete
Delete a specified box.
Endpoint
DELETE /v1/boxes/{id}
Request Parameters
| Parameter | Location | Type | Required | Description |
|---|---|---|---|---|
id |
Path | string | Yes | The ID of the box to delete |
Authorization |
Header | string | Yes | Bearer token (JWT) |
Responses
Success Response
- Status Code:
204 No Content - Description: Box deleted successfully
- Body: Empty
Error Responses
401 Unauthorized
Invalid credentials provided.
{ "timestamp": "timestamp", "path": "/v1/boxes/{id}", "request_id": "request-id", "message": "Unauthenticated."}
400 Bad Request
Validation errors.
{ "timestamp": "timestamp", "message": "Request could not be processed.", "path": "/v1/boxes/{id}", "request_id": "3d4379f2-7ceb-4e1e-aa36-cb45f82dd85f"}