LaserData Cloud
API Reference

Billing

Read pricing, estimate deployment costs, and manage billing records and payments

API Variables
ld-api-key
{tenant_id}

Set variables to auto-fill all examples and run requests in-browser.

The Billing API provides rates, estimates, contact details, usage reports, invoices, payment methods, and credits. Send requests to https://api.laserdata.cloud.

Tenant billing reads require billing:read. Changes require billing:manage. The public pricing endpoints below do not require authentication.

Public Pricing

GET
/pricing

Return the public rate card for managed AWS and GCP deployments and the BYOC starting monthly price. No authentication required.

The response contains currency, nodes, managed.aws, managed.gcp, and byoc. Managed clouds contain tiers, compute, network_drive, local_nvme, network, and throughput.

tiers describes Standard, Performance, and Enterprise. Each record includes these fields:

FieldsMeaning
monthly_baseStarting monthly configuration price
compute_profile_id, storage_profile_id, storage_gb_per_nodeDefault compute and storage configuration
throughput_mb_per_secondDefault traffic estimate
availability_modeDefault availability for the preset
included_telemetry_daysManaged-tier retention: 14, 30, or 90 days
vpc_peering, private_linkAccess to VPC peering and private endpoints

Managed telemetry retention comes from the tier record, not the compute profile. network.minimum_monthly describes networking operations already included in monthly_base. Do not add it to the transfer estimate again. Prices use USD under the current published pricing version.

Estimate Pricing

POST
/pricing/estimate

Estimate the monthly configuration price and usage-inclusive total for a managed configuration or a BYOC deployment. No authentication required. Requests are rate limited.

curl -X POST https://api.laserdata.cloud/pricing/estimate \
  -H "Content-Type: application/json" \
  -d '{
    "variant": "managed",
    "managed_tier": "standard",
    "cloud": "aws",
    "region": "us-east-1",
    "compute_profile_id": "small",
    "storage_profile_id": "network_drive",
    "storage_gb_per_node": 100,
    "throughput_mb_per_second": "0.1",
    "network_scope": "same_region",
    "availability_mode": "single_az"
  }'

All shown fields except region are required for managed estimates. Omit region to use us-east-1 for AWS or us-central1 for GCP. managed_tier accepts standard, performance, or enterprise.

compute_profile_id selects a size such as small or large. storage_profile_id accepts network_drive or local_nvme. Network scopes are same_region, cross_region_same_cloud, and cross_cloud. Local NVMe requires Performance or Enterprise, while Multi AZ requires Enterprise. Free is excluded because it has no charge.

Throughput uses decimal MB/s, with a self-service range of 0.1 to 100 MB/s. Compute sizing and Local NVMe impose further bounds. Network Drive supports 100 to 30,000 GB per node. Read current limits from the rate card instead of fixing them in application code.

The response includes monthly_base, monthly_total, currency, pricing_version, and these objects:

ObjectFields
breakdowncompute, storage, network
usageestimated_customer_gb_per_month, provisioned_storage_gb_total, partitions_per_node_at_default_segment, partitions_per_node_at_min_segment
deploymentnodes, compute_profile_label, storage_profile_label, availability_mode, included_telemetry_days
capacityshards_per_node, default_segment_bytes, min_segment_bytes

monthly_base is the monthly configuration price for compute, storage, and tier features. monthly_total adds estimated data transfer from breakdown.network. Transfer is billed on actual usage, not the selected throughput. Estimates use 30 days of symmetric traffic.

For AWS Standard at 0.1 MB/s, the response gives $199 per month plus $15.552 estimated transfer. The total is $214.552, displayed as $214.55. See Billing & Pricing.

Partitions are dynamic and require no upfront count. The segment-based capacity fields are diagnostic storage calculations, not guaranteed active-partition limits.

For BYOC, send {"variant":"byoc","vcpus_per_node":4}. The estimate uses three nodes for a full 720-hour month. Billing uses actual active capacity and agreed terms.

Billing Info

Get Billing Info

GET
/tenants/{tenant_id}/billing/info

Retrieve billing contact details, address, and tax ID for the tenant.

bash
curl https://api.laserdata.cloud/tenants/{tenant_id}/billing/info \
-H "ld-api-key: YOUR_API_KEY"
{
  "name": "John Doe",
  "company": "Acme Corp",
  "address": "123 Main St",
  "city": "San Francisco",
  "state": "CA",
  "postal_code": "94105",
  "country": "US",
  "tax_id": "US123456789",
  "email": "billing@acme.com",
  "phone": "+1-555-0100"
}

Update Billing Info

PUT
/tenants/{tenant_id}/billing/info

Update billing contact information and address.

bash
curl -X PUT https://api.laserdata.cloud/tenants/{tenant_id}/billing/info \
-H "ld-api-key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
  "name": "John Doe",
  "company": "Acme Corporation",
  "email": "finance@acme.com",
  "address": "456 Market St",
  "city": "San Francisco",
  "state": "CA",
  "postal_code": "94105",
  "country": "US",
  "tax_id": "US123456789",
  "phone": "+1-555-0100"
}'

A successful request returns 204 No Content.


Usage Reports

List Usage Reports

GET
/tenants/{tenant_id}/billing/reports

List monthly usage reports with cost breakdown by deployment and resource type.

bash
curl "https://api.laserdata.cloud/tenants/{tenant_id}/billing/reports?page=1&results=10" \
-H "ld-api-key: YOUR_API_KEY"

Get Usage Report

GET
/tenants/{tenant_id}/billing/reports/{report_id}

Retrieve a detailed usage report with per-deployment cost breakdown.

bash
curl https://api.laserdata.cloud/tenants/{tenant_id}/billing/reports/{report_id} \
-H "ld-api-key: YOUR_API_KEY"

Detailed reports contain compute_cost, storage_cost, network_cost, and total_cost. Managed reports also expose monthly_base_charge and network_usage_cost before negotiated adjustments. The first includes prorated reserved resources and any billable additional capacity. The second describes measured transfer. Do not add these explanatory amounts to total_cost again.

Credits and Promo Codes

GET
/tenants/{tenant_id}/billing/credits

List the tenant's credits and remaining balances. Credits are consumed oldest first.

POST
/tenants/{tenant_id}/billing/promo_codes

Redeem a promo code once per tenant. Redemption is rate limited.

Redeem a code with {"code":"YOUR_PROMO_CODE"}. Its credit reduces later invoices until used or expired. Marketplace-billed tenants cannot redeem promo codes.


Invoices

List Invoices

GET
/tenants/{tenant_id}/billing/invoices

List all invoices for the tenant.

bash
curl "https://api.laserdata.cloud/tenants/{tenant_id}/billing/invoices?page=1&results=10" \
-H "ld-api-key: YOUR_API_KEY"
{
  "items": [
    {
      "id": 1,
      "tenant_id": 100,
      "division_id": null,
      "number": "INV-01-2026-100",
      "period_start": "2026-01-01T00:00:00Z",
      "period_end": "2026-02-01T00:00:00Z",
      "status": "paid",
      "currency": "USD",
      "total": "289.22",
      "created_at": "2026-02-01T00:00:00Z"
    }
  ],
  "page": 1,
  "total_pages": 1,
  "total_results": 1
}
Customer invoice statuses
approvedpaidfailedrefundedpartially_refunded

Customer endpoints do not return draft, pending, or cancelled invoices. Payment is due 14 days after invoice generation.

Get Invoice

GET
/tenants/{tenant_id}/billing/invoices/{invoice_id}

Retrieve a specific invoice with line items.

bash
curl https://api.laserdata.cloud/tenants/{tenant_id}/billing/invoices/{invoice_id} \
-H "ld-api-key: YOUR_API_KEY"

Download Invoice PDF

GET
/tenants/{tenant_id}/billing/invoices/{invoice_id}/pdf

Download the invoice as a PDF. Available for customer-visible invoices: approved, paid, failed, refunded, or partially_refunded. Returns the file with Content-Type: application/pdf.

bash
curl https://api.laserdata.cloud/tenants/{tenant_id}/billing/invoices/{invoice_id}/pdf \
-H "ld-api-key: YOUR_API_KEY"

Payment Methods

Get Payment Method

GET
/tenants/{tenant_id}/billing/payments/method

Retrieve the current payment method on file.

bash
curl https://api.laserdata.cloud/tenants/{tenant_id}/billing/payments/method \
-H "ld-api-key: YOUR_API_KEY"

Create Payment Intent

POST
/tenants/{tenant_id}/billing/payments/intents

Create a Stripe SetupIntent to add or update a payment method. Use the returned client_secret with Stripe.js to complete the setup in your UI.

bash
curl -X POST https://api.laserdata.cloud/tenants/{tenant_id}/billing/payments/intents \
-H "ld-api-key: YOUR_API_KEY"

Delete Payment Method

DELETE
/tenants/{tenant_id}/billing/payments/method

Remove the current payment method on file.

bash
curl -X DELETE https://api.laserdata.cloud/tenants/{tenant_id}/billing/payments/method \
-H "ld-api-key: YOUR_API_KEY"

Spend Limits

Configure a deployment threshold through Update Spend Limit.

On this page