The API lets your own website, app or script read and change the data in your account: customers, leads, inventory, payments and more. This article explains how it works from the ground up and links to the article for each endpoint. If you are new to the API, start here.
| What | Value |
|---|---|
| Base URL | https://rental.software/api6 |
| Current version | API6. Versions 1 through 5 have been shut down |
| Data format | JSON responses. Requests can be form fields or JSON |
| Authentication | An API key sent as the apiKey parameter |
| Requirement | The API & WordPress module on your subscription |
Before You Start
- Activate the API & WordPress module under Settings > Subscription.
- Create an API key and give it the permissions your integration needs. See API - Setup Access.
- Know the costs. The first 500 API calls each month are free. After that, calls are billed. See API - Transaction Charges.
Your First Call
Paste this into a terminal, with your own key in place of YOUR_API_KEY. It asks for the first two items in your inventory.
curl "https://rental.software/api6/rentals?apiKey=YOUR_API_KEY&limit=2"
You can also open the same URL in a web browser. If the key works, you get JSON back:
{
"offset": 0,
"limit": "2",
"count": "127",
"first": "https://rental.software/api6/rentals?offset=0&limit=2",
"next": "https://rental.software/api6/rentals?offset=2&limit=2",
"previous": "https://rental.software/api6/rentals?offset=0&limit=2",
"items": [
{ "id": "336198", "ridename": "10x10 Tent" },
{ "id": "336199", "ridename": "11 x 11 Castle Jumper" }
],
"request_time": 1760000000
}(The items are shortened here.) If you get an error instead, look it up in API - Errors and Rate Limits.
How Requests Work
The URL
Every URL starts with the base URL, followed by the name of an endpoint, and sometimes the ID of one record:
https://rental.software/api6/{endpoint}
https://rental.software/api6/{endpoint}/{id}For example, /api6/customers is the list of customers and /api6/customers/533261 is one customer.
The HTTP Method
| Method | What it does | Example |
|---|---|---|
| GET | Reads data. Nothing is changed | GET /api6/leads/520247 reads a lead |
| POST without an ID | Creates a new record | POST /api6/customers creates a customer |
| POST with an ID | Updates that record. Fields you do not send stay the same | POST /api6/customers/533261 updates a customer |
| DELETE with an ID | Deletes that record, on the endpoints that support it | DELETE /api6/leads/520247 deletes a lead |
Each endpoint article says which methods it accepts. Using a method an endpoint does not accept returns HTTP 405.
The API Key
Send your key in a parameter named apiKey (with a capital K) on every call. It can go in any of these places:
- In the URL: ?apiKey=YOUR_API_KEY. Simple, and the usual choice for GET requests.
- In the form fields of a POST.
- In a JSON body: {"apiKey": "YOUR_API_KEY", ...}.
For POST requests, prefer the body over the URL. URLs tend to end up in server logs and browser history. Never put your key in JavaScript that runs in a visitor's browser. Call the API from your server.
Sending Data
When you create or update a record, send the fields in one of two ways.
As form fields, the same way an HTML form posts:
curl -X POST "https://rental.software/api6/customers" \ -d "apiKey=YOUR_API_KEY" \ -d "name=Jordan Rivera" \ -d "email=jordan.rivera@example.com"
Or as JSON, with the Content-Type: application/json header:
curl -X POST "https://rental.software/api6/customers" \
-H "Content-Type: application/json" \
-d '{"apiKey": "YOUR_API_KEY", "name": "Jordan Rivera", "email": "jordan.rivera@example.com"}'HTML tags are removed from the values you send.
How Responses Work
Status Codes
Always check the HTTP status code first. A code in the 200s means the call worked. A code in the 400s means something was wrong with the request, and the JSON body has a message explaining what. The full list is in API - Errors and Rate Limits.
Creating and Updating
When you create or update a customer or a lead, the answer tells you the ID of the record in recordid:
{
"status": 201,
"message": "Created",
"recordid": 533297,
"request_time": 1760000000
}Keep that ID. You need it to read, update or link the record later.
Lists and Paging
List endpoints return a page of records at a time, in items. Two parameters control the page:
- limit is how many records you want. The default is 25.
- offset is how many records to skip. The default is 0.
To read a whole list, start at offset=0 and add your limit each time (0, 100, 200 and so on). Stop when a page comes back with fewer records than your limit. If you ask for a page past the end, most lists answer with HTTP 404.
The first, next and previous links in a response show the offsets for you, but they do not include your API key or your other parameters. Add those again before calling one.
More Detail With _body
Many list calls return a short version of each record to stay fast. Add _body=true to get the full records. The request takes longer, so use it only when you need the extra fields.
Dates and Times
Most date fields come back three ways, so you can use whichever is easiest:
"createtime": "2025-09-29T16:47:54-04:00", "createtime_ts": "1759178874", "createtime_utc": "2025-09-29T20:47:54Z"
- The plain field is the date and time in your account's time zone.
- _ts is a Unix timestamp: the number of seconds since January 1, 1970 (UTC).
- _utc is the same moment in UTC.
When you send a date, each endpoint article says which format it expects. Most accept a Unix timestamp.
Extra Fields
Responses often include more fields than the articles list, and new fields can be added over time. Write your code so it reads the fields it needs and ignores the rest.
Rate Limits in Short
An API key can make 15 calls in 10 seconds and 300 calls in 5 minutes. Past that, calls are refused with HTTP 429 for a short time. Details and sample code are in API - Errors and Rate Limits.
Endpoint Index
Getting Started
- API - Setup Access: create a key and grant permissions
- API - Errors and Rate Limits: status codes, messages and limits
- API - Transaction Charges: what calls cost and how to see your usage
- API - Packages and Endpoint Access: which subscription package each endpoint needs
- API - PHP Example: a complete working call in PHP
- API - Migration (API1-5 to API6): moving an old integration to API6
Customers and Leads
| Endpoint | What you can do | Article |
|---|---|---|
| customers | Create, update or delete a customer | Customers - Create or Update |
| customers | Read one customer | Customers - Retrieve Details |
| customers | List customers | Customers - Retrieve List |
| leads | Create, update or delete a lead | Leads - Create or Update |
| leads | Read one lead | Leads - Retrieve Details |
| leads | List and search leads | Leads - Retrieve List |
| attach | Upload a file to a lead | Attachments - Upload a File to a Lead |
| handle_payment | Record a payment on a lead | Payments - Create |
| filters, filters_list | Read your saved filters | Filters - Retrieve List and Details |
Inventory, Availability and Pricing
| Endpoint | What you can do | Article |
|---|---|---|
| rentals | List rental items | Rentals - Retrieve List |
| rentals | Read one rental item, with prices | Rentals - Retrieve Details |
| categories_list | List inventory categories | Categories - Retrieve List |
| popular_items | List your most rented items | Popular Items - Retrieve List |
| availability_pricing | Check availability and price for a date and time | Availability & Pricing API Endpoint |
| availability_list | See what is rented and available on one day | Availability List - Retrieve by Date |
| packinglists | Read and update packing list progress | Packing Lists - Retrieve Details or Update |
Settings Lists
| Endpoint | What you can do | Article |
|---|---|---|
| statuses_list, surfaces_list, deliverymethods_list, customertypes_list, paymenttypes_list, referrals_list, emailtemplates_list, positions_list | Read the lists you set up in your settings | Lookup Lists |
| locations | List your locations or read one | Locations - Retrieve List or Location Data |
| stats | Read your dashboard statistics | Stats - Retrieve List |
Workers
| Endpoint | What you can do | Article |
|---|---|---|
| workers | List workers | Workers - Retrieve List |
| workers | Read one worker | Workers - Retrieve Details |
| shifts_list | List worker shifts in a date range | Shifts - Retrieve List |
Sales CRM
| Endpoint | What you can do | Article |
|---|---|---|
| tasks | Create a task | Tasks - Create |
| journals | Create a journal entry | Journal - Create |
| journals | Read and update journal entries (October 2026 release) | Journal - Retrieve and Update |
Vendors
| Endpoint | What you can do | Article |
|---|---|---|
| vendors, purchase_orders | Read vendors and purchase orders (October 2026 release) | Vendors and Purchase Orders |
Messaging, Webhooks and Zapier
| Topic | What you can do | Article |
|---|---|---|
| text | Send and receive text messages with IO Phone | SMS, Text Message Sending and Receiving |
| Webhooks | Have lead data sent to your own server | Webhooks |
| Zapier | Create or update leads from a Zap | Create/Update Lead with Zapier |
| Zapier | Send lead data to a Zap | Sending Data Using Zapier and Automations |
A Typical First Project
A common first integration is a custom quote form on your own website. The calls it makes are:
- GET /api6/categories_list and GET /api6/rentals to show what you offer. Store the results and refresh them once a day.
- POST /api6/availability_pricing to check that the items are free on the customer's date and to show a price.
- POST /api6/leads with the customer's details, the event details and the chosen items. This creates the customer and the lead in one call.
The PHP example shows how to make these calls from code.