API Reference

ArcBilling provides a REST API for managing clients, services, invoices, and support tickets programmatically.

Authentication

Authorization: Bearer YOUR_API_KEY

Generate API keys from Admin Panel → Settings → API.

Base URL

https://yourdomain.com/api/v1

Response Format

{
    "status": "success",
    "data": { ... }
}
{
    "status": "error",
    "error": {
        "code": "VALIDATION_ERROR",
        "message": "The email field is required."
    }
}

Rate Limiting

ScopeLimit
Authenticated60 requests/minute
Unauthenticated10 requests/minute
X-RateLimit-Limit: 60
X-RateLimit-Remaining: 58
Retry-After: 42

Clients

List Clients

GET /api/v1/clients

Get Client

GET /api/v1/clients/{id}

Create Client

POST /api/v1/clients
FieldTypeRequired
first_namestringYes
last_namestringYes
emailstringYes
passwordstringYes (min 8 chars)
companystringNo
phonestringNo
addressstringNo
citystringNo
countrystringNo (ISO 3166-1)

Update Client

PUT /api/v1/clients/{id}

Delete Client

DELETE /api/v1/clients/{id}

Services

List Services

GET /api/v1/services

Get Service

GET /api/v1/services/{id}

Create Service

POST /api/v1/services
FieldTypeRequired
client_idintegerYes
product_idintegerYes
billing_cyclestringYes (monthly, quarterly, annually)
domainstringNo
usernamestringNo

Suspend Service

POST /api/v1/services/{id}/suspend

Unsuspend Service

POST /api/v1/services/{id}/unsuspend

Terminate Service

POST /api/v1/services/{id}/terminate

Invoices

List Invoices

GET /api/v1/invoices

Get Invoice

GET /api/v1/invoices/{id}

Create Invoice

POST /api/v1/invoices
FieldTypeRequired
client_idintegerYes
due_datedate (Y-m-d)Yes
itemsarrayYes
items[].descriptionstringYes
items[].amountdecimalYes

Mark Invoice Paid

POST /api/v1/invoices/{id}/pay

Support Tickets

List Tickets

GET /api/v1/tickets

Get Ticket

GET /api/v1/tickets/{id}

Create Ticket

POST /api/v1/tickets
FieldTypeRequired
client_idintegerYes
department_idintegerYes
subjectstringYes
messagestringYes
prioritystringNo (low, medium, high)

Reply to Ticket

POST /api/v1/tickets/{id}/reply

Close Ticket

POST /api/v1/tickets/{id}/close

Products

List Products

GET /api/v1/products

Get Product

GET /api/v1/products/{id}

Servers

List Servers

GET /api/v1/servers

Get Server

GET /api/v1/servers/{id}

Webhooks

EventTrigger
client.createdNew client registered
service.createdNew service provisioned
service.suspendedService suspended
service.terminatedService terminated
invoice.createdNew invoice generated
invoice.paidInvoice marked as paid
ticket.openedNew support ticket
ticket.repliedNew reply on a ticket

Webhook Payload

{
    "event": "invoice.paid",
    "timestamp": "2025-01-15T12:00:00Z",
    "data": {
        "id": 1234,
        "client_id": 56,
        "total": "29.99",
        "currency": "USD"
    },
    "signature": "sha256=a1b2c3d4..."
}

Error Codes

HTTP CodeError CodeDescription
400VALIDATION_ERRORInvalid request parameters
401UNAUTHORIZEDMissing or invalid API key
403FORBIDDENInsufficient permissions
404NOT_FOUNDResource not found
429RATE_LIMITEDToo many requests
500INTERNAL_ERRORServer error