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/v1Endpoints
GET /catalog— index with counts, currency and links to everything else on this pageGET /catalog/categories— all 46 categories with product countsGET /catalog/products— one page of products, filterable bycategoryandframework, up to 50 per pageGET /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.jsonhttps://fivemx.com/.well-known/openapi.json— byte identical, for clients that look there firsthttps://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 --jsonExit 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.txtand 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.
