FiveMX Developer Portal

FiveMX publishes a read-only HTTP API over its FiveM script catalogue, an OpenAPI 3.1 description of it, and a command line tool that speaks to it. Everything on this page is public, needs no key and can be used by a person, a script or an agent.

The FiveMX catalogue API

One namespace, four GET endpoints, JSON only. It exposes the same 1.675 published products the shop does, with prices in the store base currency, stock, category and framework tags.

Base URL

https://fivemx.com/wp-json/fivemx/v1

Endpoints

  • GET /catalog — index with counts, currency and links to everything else on this page
  • GET /catalog/categories — all 46 categories with product counts
  • GET /catalog/products — one page of products, filterable by category and framework, up to 50 per page
  • GET /catalog/products/{slug} — a single product by its English slug

Authentication and writes

There is none, and there are none. Every endpoint is an anonymous GET. Nothing here creates an order, changes a price or touches an account, so there is no key to leak and no state for a mistake to damage.

OpenAPI specification

The full machine-readable description, generated from the same contract the API is implemented against, so the two cannot drift:

  • https://fivemx.com/openapi.json
  • https://fivemx.com/.well-known/openapi.json — byte identical, for clients that look there first
  • https://fivemx.com/.well-known/api-catalog — an RFC 9727 linkset pointing at both

The homepage also advertises it with a rel="service-desc" link, and https://fivemx.com/llms.txt describes the site for language models.

The FiveMX CLI

An official command line tool wraps the same API. Node 18 or newer, zero runtime dependencies.

npm install -g @fivemx/cli
fivemx catalog
fivemx products --framework qbcore --per-page 5
fivemx product audio-speaker-script --json

Exit codes separate a usage mistake from an outage without parsing any output: 0 ok, 1 usage error with no request sent, 2 the request failed, 3 the resource does not exist.

Error responses

Errors are JSON, never an HTML page, and every one carries a code, a message and a hint that says what to do next.

{
  "code": "fivemx_product_not_found",
  "message": "No published product has that slug.",
  "data": {
    "status": 404,
    "hint": "Slugs come from /wp-json/fivemx/v1/catalog/products."
  }
}

A client that sends Accept: application/json, or that identifies itself as a known AI agent, receives this shape for any missing path on the site, not only inside the API namespace. A browser keeps the normal error page.

Rate limits and caching

There is no published quota. Responses are cached for ten minutes at the origin, so a crawl of the whole catalogue is inexpensive for both sides. Please send a user agent that identifies you, and prefer one paginated pass over many single-product requests.

What this API deliberately does not do

  • It does not expose carts, checkout, orders, customers or downloads. Those paths are closed to crawlers in robots.txt and are not described by the specification.
  • It does not serve translated slugs. Locale versions of the site use translated URLs, and this API accepts the English slug only.
  • It does not convert prices. Values are in the base currency reported by /catalog, not in a visitor’s selected currency.
  • There is no MCP server, no agent card and no webhook feed. When one exists it will be listed here and in the API catalog rather than announced by an empty file.

Questions about the API belong on the FiveMX contact page.