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_key
API keys are per-company. Generate and manage your keys from the Billing page in your Tire Library account. Only users with billing permissions can create or revoke keys.
Never expose your API key in client-side code. The x-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.

Need a higher limit? Contact us to request a per-key rate limit override.

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

StatusCondition
401Missing or invalid API key
403Your subscription does not include API access
404Requested resource not found
405HTTP method not allowed (API is read-only)
429Rate limit exceeded — slow down and retry
500Internal 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.

Why versioned URLs? Versioning in the URL path ensures that if we introduce breaking changes in a future version (e.g. /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:

ParameterTypeDescription
pageintPage number, 1-based. Defaults to 1.
per_pageintResults per page. Defaults vary by endpoint (see below). Maximum 100.

Default per_page by Endpoint

EndpointDefaultMax
/api/v1/tires/search20100
/api/v1/tires/catalog30100
/api/v1/tire-patterns/catalog24100
/api/v1/rebate30100

Paginated Response Fields

FieldTypeDescription
current_pageintThe page number returned
dataarrayResults for the current page
fromint?1-based index of the first result in this page
last_pageintTotal number of pages
per_pageintNumber of results per page
toint?1-based index of the last result in this page
totalintTotal 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
Tip: Use 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

EndpointDescription
TiresSearch tires by size, browse with faceted filters, get tire details
Tire MakesList all tire makes (manufacturers)
Tire CategoriesList all tire categories for filtering
Tire PatternsList tire patterns by make, browse with faceted filters, get pattern details
Vehicle FitmentsLook up tire fitments by year/make/model/trim
RebatesBrowse 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.

ResourceURLDescription
Swagger UIhttps://app.tireweblibrary.com/api/swaggerInteractive documentation with “Try it out” for every endpoint
OpenAPI JSONhttps://app.tireweblibrary.com/api/swagger/v1/swagger.jsonMachine-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
Authentication in Swagger UI: Click the Authorize button in Swagger UI and enter your API key to test any endpoint directly from the browser.