Proposed API Developer platform draft

Net Rentals API

Build custom rental websites, apps, dashboards, integrations, and automations while Net Rentals handles the rental infrastructure underneath.

i
Draft specification

This page maps the proposed public Net Rentals developer platform based on the current rental architecture. Endpoints shown here should not be treated as generally available until they are marked as released.

PRODUCTION https://api.net-rentals.com/v1
SANDBOX https://api.sandbox.net-rentals.com/v1
API basics

Environments

Separate development traffic from live rental operations by using the environment that matches your integration stage.

Environment Base URL Use
Sandbox api.sandbox.net-rentals.com/v1 Testing and development
Production api.net-rentals.com/v1 Live rental operations
API basics

Authentication

Authenticate requests with a bearer API key. Secret keys belong on trusted servers and should never be exposed in browser JavaScript.

Authorization header

Pass your API key using the standard Authorization header.

HTTP
Authorization: Bearer nr_live_sk_xxxxxxxxx

Key types

nr_live_pk_*
Live publishable key

Browser-safe key for specifically approved public operations.

nr_live_sk_*
Live secret key

Server-only production credential.

nr_test_pk_*
Test publishable key

Browser-safe key for sandbox operations.

nr_test_sk_*
Test secret key

Server-only sandbox credential.

API basics

Errors

API errors should use a consistent structure so integrations can handle authentication, validation, conflicts, payment failures, and internal errors predictably.

Standard error object

Human-readable messages can be shown to developers while stable error codes drive integration logic.

JSON
{
  "error": {
    "type": "invalid_request",
    "code": "booking_not_ready",
    "message": "The rental cannot start until the security deposit is secured.",
    "request_id": "req_123"
  }
}
authentication_error authorization_error invalid_request validation_error conflict rate_limit_error payment_error integration_error internal_error
API basics

Pagination

Collection endpoints can use cursor-based pagination to move through large result sets.

HTTP
GET /v1/bookings?limit=50&starting_after=booking_123
API basics

Idempotency

Money-moving and lifecycle-changing requests should accept an idempotency key so network retries do not accidentally duplicate actions.

HTTP
Idempotency-Key: 6c57e21d-...
POST /bookings
POST /checkout
POST /refund
POST /deposit/capture
POST /charges/{id}/collect
POST /disputes
Core resource

Business

Read or update the rental business and its operational settings.

GET /v1/business

Retrieve the current business.

PATCH /v1/business

Update business information.

GET /v1/business/settings

Retrieve rental settings.

PATCH /v1/business/settings

Update supported operational settings.

Example settings

booking_approval_mode cancellation_window security_deposit_defaults included_mileage_defaults pickup_rules return_rules identity_requirements agreement_requirements
Core resource

Team & permissions

Manage team members, invitations, roles, and scoped access.

GET /v1/team

List team members.

GET /v1/team/{member_id}

Retrieve one team member.

POST /v1/team/invitations

Invite a team member.

PATCH /v1/team/{member_id}

Update role or permissions.

DELETE /v1/team/{member_id}

Remove a team member.

Core resource

Vehicles

Build around the fleet: pricing, availability, photos, locations, policies, mileage, and vehicle configuration.

GET /v1/vehicles

List vehicles.

POST /v1/vehicles

Create a vehicle.

GET /v1/vehicles/{vehicle_id}

Retrieve a vehicle.

PATCH /v1/vehicles/{vehicle_id}

Update a vehicle.

DELETE /v1/vehicles/{vehicle_id}

Archive or remove a vehicle.

GET /v1/vehicles/{vehicle_id}/availability

Read availability.

GET /v1/vehicles/{vehicle_id}/pricing

Read pricing configuration.

PATCH /v1/vehicles/{vehicle_id}/pricing

Update supported pricing.

Vehicle data

daily_rate deposit included_miles extra_mile_fee location delivery_options access_method minimum_age photos features
Core resource

Availability & quotes

Search vehicle availability and create price estimates before a booking is created.

GET /v1/availability

Search available vehicles.

POST /v1/quotes

Create a rental quote.

GET /v1/quotes/{quote_id}

Retrieve a quote.

Create a quote

Submit a vehicle and rental period to calculate the proposed booking price.

JSON
{
  "vehicle_id": "veh_123",
  "start_at": "2026-08-20T10:00:00-04:00",
  "end_at": "2026-08-23T10:00:00-04:00",
  "unlimited_miles": false
}
Core resource

Bookings

Bookings are the central rental object connecting the customer, vehicle, payment, pickup, return, and post-trip lifecycle.

POST /v1/bookings

Create a booking.

GET /v1/bookings

List bookings.

GET /v1/bookings/{booking_id}

Retrieve a booking.

PATCH /v1/bookings/{booking_id}

Update supported booking fields.

POST /v1/bookings/{booking_id}/approve

Approve a booking.

POST /v1/bookings/{booking_id}/cancel

Cancel a booking.

POST /v1/bookings/{booking_id}/extend

Extend an eligible booking.

GET /v1/bookings/{booking_id}/timeline

Retrieve lifecycle history.

Lifecycle states

pending_payment checkout_started payment_pending booked confirmed ready_for_pickup active late return_in_review completed canceled refunded problem
Rental lifecycle

Payments

Keep rental payments attached to the reservation that created them.

POST /v1/bookings/{booking_id}/checkout

Create checkout for a booking.

GET /v1/bookings/{booking_id}/payment

Retrieve payment state.

POST /v1/bookings/{booking_id}/payment/retry

Retry an eligible failed payment.

POST /v1/bookings/{booking_id}/refund

Request an eligible refund.

GET /v1/bookings/{booking_id}/transactions

List booking transactions.

Rental lifecycle

Security deposits

Read and manage supported security-deposit operations around a booking.

GET /v1/bookings/{booking_id}/deposit

Retrieve deposit state.

POST /v1/bookings/{booking_id}/deposit

Create or secure a deposit.

POST /v1/bookings/{booking_id}/deposit/capture

Capture an eligible deposit.

POST /v1/bookings/{booking_id}/deposit/release

Release an eligible deposit.

Rental lifecycle

Identity verification

Start verification, read verification state, and access authorized identity media through restricted URLs.

POST /v1/bookings/{booking_id}/identity-verification

Start identity verification.

GET /v1/bookings/{booking_id}/identity-verification

Retrieve verification state.

GET /v1/bookings/{booking_id}/identity-verification/media

Retrieve authorized private media references.

Rental lifecycle

Rental agreements

Create, send, inspect, and retrieve agreement state for a booking.

POST /v1/bookings/{booking_id}/agreement

Create an agreement.

GET /v1/bookings/{booking_id}/agreement

Retrieve agreement data.

POST /v1/bookings/{booking_id}/agreement/send

Send agreement for signing.

GET /v1/bookings/{booking_id}/agreement/status

Retrieve agreement state.

Rental lifecycle

Insurance

Submit and review supported insurance requirements.

GET /v1/bookings/{booking_id}/insurance

Retrieve insurance state.

POST /v1/bookings/{booking_id}/insurance

Submit insurance information.

POST /v1/bookings/{booking_id}/insurance/approve

Approve an eligible submission.

POST /v1/bookings/{booking_id}/insurance/reject

Reject an eligible submission.

Rental lifecycle

Pickup & release

Read pickup readiness and submit the operational records required to start a rental.

GET /v1/bookings/{booking_id}/pickup-readiness

Retrieve readiness gates.

POST /v1/bookings/{booking_id}/pickup/photos

Submit release photos.

POST /v1/bookings/{booking_id}/pickup/mileage

Record mileage out.

POST /v1/bookings/{booking_id}/pickup/complete

Complete an eligible pickup.

Suggested photo slots

front rear driver_side passenger_side interior odometer damage_detail
Rental lifecycle

Vehicle access

Manage owner handoff, keys-in-car, access codes, or future external access providers without bypassing rental readiness gates.

GET /v1/bookings/{booking_id}/vehicle-access

Retrieve access configuration.

PATCH /v1/bookings/{booking_id}/vehicle-access

Update access configuration.

POST /v1/bookings/{booking_id}/vehicle-access/release

Release access when permitted.

POST /v1/bookings/{booking_id}/vehicle-access/revoke

Revoke released access.

Rental lifecycle

Returns

Start, submit, review, and complete the return lifecycle.

GET /v1/bookings/{booking_id}/return

Retrieve return state.

POST /v1/bookings/{booking_id}/return/start

Open the return flow.

POST /v1/bookings/{booking_id}/return/photos

Submit return photos.

POST /v1/bookings/{booking_id}/return/mileage

Record mileage in.

POST /v1/bookings/{booking_id}/return/submit

Submit return for review.

POST /v1/bookings/{booking_id}/return/complete

Complete an eligible return.

Rental lifecycle

Mileage

Read mileage out, mileage in, included mileage, overage, and calculated mileage fees.

Mileage object

Mileage state can connect the return workflow directly to post-trip fee calculation.

JSON
{
  "mileage_out": 42000,
  "mileage_in": 42350,
  "miles_used": 350,
  "included_miles": 300,
  "over_miles": 50,
  "extra_mile_fee_cents": 75,
  "mileage_fee_cents": 3750,
  "unlimited_miles": false
}
Post-trip

Post-trip charges

Create and manage supported fees, evidence, collection attempts, refunds, and waivers.

GET /v1/bookings/{booking_id}/charges

List charges for a booking.

POST /v1/bookings/{booking_id}/charges

Create a charge.

GET /v1/charges/{charge_id}

Retrieve a charge.

POST /v1/charges/{charge_id}/evidence

Add evidence.

POST /v1/charges/{charge_id}/collect

Start eligible collection.

POST /v1/charges/{charge_id}/waive

Waive an eligible charge.

Post-trip

Disputes

Attach disputes to individual fees while preserving booking-level operational safeguards.

GET /v1/disputes

List disputes.

GET /v1/disputes/{dispute_id}

Retrieve a dispute.

POST /v1/charges/{charge_id}/disputes

Create a dispute for a charge.

POST /v1/disputes/{dispute_id}/evidence

Add dispute evidence.

POST /v1/disputes/{dispute_id}/approve

Approve an eligible dispute.

POST /v1/disputes/{dispute_id}/close

Close a dispute.

Core resource

Customers

Read tenant-scoped customer records and their related rental history.

GET /v1/customers

List customers.

POST /v1/customers

Create a customer.

GET /v1/customers/{customer_id}

Retrieve a customer.

GET /v1/customers/{customer_id}/bookings

List customer bookings.

GET /v1/customers/{customer_id}/charges

List customer charges.

Core resource

Messages

Read conversations and send authorized messages through supported channels.

GET /v1/conversations

List conversations.

GET /v1/conversations/{conversation_id}

Retrieve a conversation.

POST /v1/conversations/{conversation_id}/messages

Send a message.

POST /v1/bookings/{booking_id}/messages

Send a booking-scoped message.

in_app sms email
Platform

Website & branding

Build custom customer-facing experiences while keeping Net Rentals underneath as the rental engine.

GET /v1/website

Retrieve website configuration.

PATCH /v1/website

Update supported website configuration.

GET /v1/public/vehicles

List public fleet vehicles.

GET /v1/public/vehicles/{vehicle_id}

Retrieve a public vehicle.

GET /v1/branding

Retrieve branding configuration.

PATCH /v1/branding

Update supported branding.

↗
Bring your own frontend

A future public fleet, availability, quote, and booking API could power React, Next.js, Webflow, Framer, native mobile apps, kiosks, or other custom customer experiences.

Platform

Custom domains

GET /v1/domains

List domains.

POST /v1/domains

Add a domain.

GET /v1/domains/{domain_id}/verification

Read verification requirements.

POST /v1/domains/{domain_id}/verify

Check verification.

Platform

Files & evidence

Use private file workflows for vehicle photos, rental evidence, agreements, and other authorized media.

POST /v1/files/upload-url

Create an authorized upload URL.

GET /v1/files/{file_id}

Retrieve authorized file metadata.

DELETE /v1/files/{file_id}

Delete an eligible file.

Platform

Reports & analytics

GET /v1/reports/revenue

Revenue metrics.

GET /v1/reports/bookings

Booking metrics.

GET /v1/reports/utilization

Fleet utilization metrics.

GET /v1/reports/disputes

Dispute metrics.

Platform

Custom metadata

Store integration-specific identifiers without changing Net Rentals' core rental model.

JSON
{
  "metadata": {
    "crm_customer_id": "salesforce_9921",
    "source": "miami_landing_page",
    "affiliate": "hotel_partner_32"
  }
}
Developers

Webhook endpoint management

Register external endpoints and manage delivery configuration through the developer API.

GET /v1/developers/webhooks

List webhook endpoints.

POST /v1/developers/webhooks

Create an endpoint.

PATCH /v1/developers/webhooks/{endpoint_id}

Update endpoint configuration.

GET /v1/developers/webhooks/{endpoint_id}/deliveries

List delivery attempts.

Next Webhooks and event catalog →
Security

Sensitive data stays outside the public API.

Developer access should preserve tenant boundaries, permissions, rental-state gates, and private-data restrictions.

Never expose
  • Full payment-card PAN
  • CVV
  • Stripe secret keys
  • Unauthorized private access credentials
  • Public identity-document URLs
  • Unredacted payment credentials from messages
Preserve
  • Tenant scoping
  • Role and permission checks
  • Booking-state gates
  • Deposit requirements
  • Dispute locks
  • Auditability
Proposed release scope

Start smaller than the architecture.

The rental platform can support a broad developer surface, but a first public release should focus on the resources developers need to build a reliable direct-booking integration.

V1 GET /vehicles GET /vehicles/{id} GET /availability POST /quotes POST /bookings GET /bookings/{id} POST /bookings/{id}/cancel GET /customers/{id} GET /bookings/{id}/payment GET /bookings/{id}/deposit GET /bookings/{id}/charges POST /messages
V2 pickup / return writes deposit capture post-trip charge creation dispute management website management domain API team API analytics files / evidence OAuth apps embedded components
NET RENTALS DEVELOPERS

Build your rental experience your way.

Net Rentals handles the rental infrastructure underneath.

Explore webhooks Open sandbox docs