Getting Started
Welcome to the Tire Library API. This API provides read-only access to our tire catalog, vehicle fitment data, and rebate information.
Authentication
All API requests must include your company's API key via the x-api-key header:
x-api-key: tl_live_your_keyx-api-key header should only be sent from your backend server. If you’re building a web or mobile app, route API requests through your own server-side proxy rather than calling the Tire Library API directly from the browser or app. This prevents your key from being visible in network requests.
Quick Start
curl -H "x-api-key: tl_live_your_key" \
"https://app.tireweblibrary.com/api/v1/tires/search?width=205&aspect_ratio=65&rim_size=15"
const response = await fetch(
"https://app.tireweblibrary.com/api/v1/tires/search?width=205&aspect_ratio=65&rim_size=15",
{ headers: { "x-api-key": "tl_live_your_key" } }
);
const data = await response.json();
import requests
response = requests.get(
"https://app.tireweblibrary.com/api/v1/tires/search",
params={"width": "205", "aspect_ratio": "65", "rim_size": "15"},
headers={"x-api-key": "tl_live_your_key"},
)
data = response.json()
Rate Limits
API requests are limited to 200 requests per minute per API key by default. Exceeding this limit returns a 429 Too Many Requests response.
Read-Only Access
API keys only support GET requests. POST, PUT, PATCH, and DELETE requests will receive a 405 Method Not Allowed response.
Error Responses
| Status | Condition |
|---|---|
401 | Missing or invalid API key |
403 | Your subscription does not include API access |
404 | Requested resource not found |
405 | HTTP method not allowed (API is read-only) |
429 | Rate limit exceeded — slow down and retry |
500 | Internal server error |
Base URL & Versioning
All endpoints are versioned via the URL path. The current version is v1:
https://app.tireweblibrary.com/api/v1/Every request must include the version segment. Requests without a version (e.g. /api/tires/search) will return a 400 error with the message Unsupported API version.
/api/v2/), your existing integration on /api/v1/ will continue to work unchanged.
Response Format
All responses are JSON with snake_case property names. All string filter values are case-insensitive — for example, make_name=Michelin and make_name=MICHELIN produce the same results. Paginated endpoints return a standard envelope:
{
"current_page": 1,
"data": [ ... ],
"from": 1,
"last_page": 5,
"per_page": 20,
"to": 20,
"total": 100
}Pagination
Several endpoints return paginated results. Control pagination with two query parameters:
| Parameter | Type | Description |
|---|---|---|
page | int | Page number, 1-based. Defaults to 1. |
per_page | int | Results per page. Defaults vary by endpoint (see below). Maximum 100. |
Default per_page by Endpoint
| Endpoint | Default | Max |
|---|---|---|
/api/v1/tires/search | 20 | 100 |
/api/v1/tires/catalog | 30 | 100 |
/api/v1/tire-patterns/catalog | 24 | 100 |
/api/v1/rebate | 30 | 100 |
Paginated Response Fields
| Field | Type | Description |
|---|---|---|
current_page | int | The page number returned |
data | array | Results for the current page |
from | int? | 1-based index of the first result in this page |
last_page | int | Total number of pages |
per_page | int | Number of results per page |
to | int? | 1-based index of the last result in this page |
total | int | Total number of results across all pages |
Iterating Pages
Fetch page 1, check last_page, then request subsequent pages:
# Fetch first page
curl -H "x-api-key: tl_live_your_key" \
"https://app.tireweblibrary.com/api/v1/tires/search?width=205&per_page=100&page=1"
# Fetch subsequent pages by incrementing the page parameter
let page = 1;
let allResults = [];
while (true) {
const res = await fetch(
`https://app.tireweblibrary.com/api/v1/tires/search?width=205&per_page=100&page=${page}`,
{ headers: { "x-api-key": "tl_live_your_key" } }
);
const data = await res.json();
allResults.push(...data.data);
if (page >= data.last_page) break;
page++;
}
import requests
all_results = []
page = 1
while True:
response = requests.get(
"https://app.tireweblibrary.com/api/v1/tires/search",
params={"width": "205", "per_page": 100, "page": page},
headers={"x-api-key": "tl_live_your_key"},
)
data = response.json()
all_results.extend(data["data"])
if page >= data["last_page"]:
break
page += 1
per_page=100 to minimize the number of requests when fetching large result sets. Requesting pages beyond last_page returns an empty data array.
Available Endpoints
| Endpoint | Description |
|---|---|
| Tires | Search tires by size, browse with faceted filters, get tire details |
| Tire Makes | List all tire makes (manufacturers) |
| Tire Categories | List all tire categories for filtering |
| Tire Patterns | List tire patterns by make, browse with faceted filters, get pattern details |
| Vehicle Fitments | Look up tire fitments by year/make/model/trim |
| Rebates | Browse available rebates and rebate details |
OpenAPI Specification
The API provides a machine-readable OpenAPI 3.0 specification (also known as Swagger). You can use it to generate client SDKs, import into API tools, or explore the API interactively.
| Resource | URL | Description |
|---|---|---|
| Swagger UI | https://app.tireweblibrary.com/api/swagger | Interactive documentation with “Try it out” for every endpoint |
| OpenAPI JSON | https://app.tireweblibrary.com/api/swagger/v1/swagger.json | Machine-readable spec for code generation and tooling |
Using the OpenAPI Spec
Import into API tools: Load the JSON URL into Postman, Insomnia, or Hoppscotch to get a pre-configured collection of all endpoints.
Generate client SDKs: Use OpenAPI Generator to create type-safe clients in your language:
# Install the generator CLI
npm install @openapitools/openapi-generator-cli -g
# Generate a TypeScript client
openapi-generator-cli generate \
-i https://app.tireweblibrary.com/api/swagger/v1/swagger.json \
-g typescript-axios \
-o ./tire-library-client
// Install via npx (no global install needed)
// npx @openapitools/openapi-generator-cli generate \
// -i https://app.tireweblibrary.com/api/swagger/v1/swagger.json \
// -g javascript \
// -o ./tire-library-client
# Generate a Python client
# npx @openapitools/openapi-generator-cli generate \
# -i https://app.tireweblibrary.com/api/swagger/v1/swagger.json \
# -g python \
# -o ./tire-library-client