BizKitHub
DocsAPI ReferenceRouting/api/v1/routing/route
getRoutingPublic API v1

/api/v1/routing/route

Resolves a URL slug to its corresponding route, returning the entity type, ID, and locale. Returns error: true if the slug is invalid or not found.

If the slug is historical (i.e. canonical: false), the response also includes a redirectTo object with the current canonical slug — frontends should emit an HTTP 301 redirect to it. The transport status stays 200; redirectTo.status: 301 is a routing hint carried in the JSON body.

routinggetApiV1RoutingRoute

Parameters

3 query

Query parameters

· 3
apiKeystringRequired

Your BizKitHub API key (passed as GET parameter).

Key format: A 32-character string matching: ^(PROD|DEV_|ROOT)[A-Za-z0-9]{28}$
Prefixes: PROD (production key), DEV_ (individual developer), ROOT (system key with no limits). Learn more

ExamplePRODPGrFxpGEtrOZfuWhnoJohUYBXuOE
slugstringRequired

URL slug to resolve.

Examplekyber-cena-roku-2025-nejvetsi-vecer-ceske-kyberbezpecnosti-letos
localestringOptional

Communication locale code — controls the language of textual data (product names, descriptions, articles, storefront UI, transactional e-mails).

Preferred format: BCP 47 language tag — language[-Script][-REGION]. Use the full tag whenever the script or region matters:

  • en-GB vs. en-US (British vs. American spelling)
  • pt-PT vs. pt-BR (European vs. Brazilian Portuguese)
  • zh-Hans vs. zh-Hant (Simplified vs. Traditional Chinese)
  • sr-Latn vs. sr-Cyrl (Latin vs. Cyrillic Serbian)

Backwards-compatible fallback: the bare two-letter ISO 639-1 code (cs, en, pl, …) is accepted indefinitely — legacy clients that only send the language subtag continue to work unchanged.

Resolution algorithm (server-side): the input is resolved against the supported locale list via the [RFC 4647 Lookup] progressive-fallback strategy — trailing subtags are stripped one by one until a supported locale is found. Example: en-GB-oxendicten-GBen (matched). If no subtag combination is supported, the request is rejected.

Currently supported locales: cs, en, fr, it, pl, de, sk, sv, es, zh, ja, uk, da, hu, ro, nl, pt, fi, nb, hr. Region-specific variants (e.g. en-GB, pt-BR) are accepted and resolved to their base language when the exact variant is not registered separately.

Length: 235
Examplecs

Response schema

1 status code documented

200Success
object | object
One of 2:
Variant 1
routeobjectRequired
slugstringRequired
Examplekyber-cena-roku-2025-nejvetsi-vecer-ceske-kyberbezpecnosti-letos
typestringRequired

Route type. Possible values: product-detail, article, post-category, tag, glossary-term, glossary-category.

Examplesproduct-detailarticlepost-categorytagglossary-termglossary-category
localestringOptional

Communication locale code — controls the language of textual data (product names, descriptions, articles, storefront UI, transactional e-mails).

Preferred format: BCP 47 language tag — language[-Script][-REGION]. Use the full tag whenever the script or region matters:

  • en-GB vs. en-US (British vs. American spelling)
  • pt-PT vs. pt-BR (European vs. Brazilian Portuguese)
  • zh-Hans vs. zh-Hant (Simplified vs. Traditional Chinese)
  • sr-Latn vs. sr-Cyrl (Latin vs. Cyrillic Serbian)

Backwards-compatible fallback: the bare two-letter ISO 639-1 code (cs, en, pl, …) is accepted indefinitely — legacy clients that only send the language subtag continue to work unchanged.

Resolution algorithm (server-side): the input is resolved against the supported locale list via the [RFC 4647 Lookup] progressive-fallback strategy — trailing subtags are stripped one by one until a supported locale is found. Example: en-GB-oxendicten-GBen (matched). If no subtag combination is supported, the request is rejected.

Currently supported locales: cs, en, fr, it, pl, de, sk, sv, es, zh, ja, uk, da, hu, ro, nl, pt, fi, nb, hr. Region-specific variants (e.g. en-GB, pt-BR) are accepted and resolved to their base language when the exact variant is not registered separately.

Length: 235
Examplescsenen-GBpt-BRzh-Hans
canonicalbooleanRequired
related_entity_idstringRequired
Example570
inserted_dateDate | string | string | numberRequired
One of 4:
Variant 1
Date
Example2025-11-05T15:54:44.493Z
Variant 2
stringdate-time
Variant 3
stringdate
Variant 4
number
errorbooleanRequired
Examplefalse
linkstringOptional
Examplekyber-cena-roku-2025-nejvetsi-vecer-ceske-kyberbezpecnosti-letos
redirectToobjectOptional

Present only when the matched slug is historical (canonical: false) and a canonical replacement exists. The other fields (slug, type, locale, canonical, related_entity_id, inserted_date, link) still describe the historical row that was matched.

slugstringRequired

Current canonical slug for the same entity + locale. Emit an HTTP 301 to this slug.

Examplekyber-cena-roku-2025
canonical"true"Required

Always trueredirectTo only points at the canonical row.

status"301"Required

Routing hint for the caller — emit an HTTP 301 (Moved Permanently). The transport status of this API response stays 200.

Variant 2
routeobjectRequired
errorbooleanRequired
Exampletrue

Response example

application/json
{
  "route": {
    "slug": "kyber-cena-roku-2025-nejvetsi-vecer-ceske-kyberbezpecnosti-letos",
    "type": "product-detail",
    "locale": "cs",
    "canonical": false,
    "related_entity_id": "570",
    "inserted_date": "2025-11-05T15:54:44.493Z",
    "error": false,
    "link": "kyber-cena-roku-2025-nejvetsi-vecer-ceske-kyberbezpecnosti-letos",
    "redirectTo": {
      "slug": "kyber-cena-roku-2025",
      "canonical": true,
      "status": 301
    }
  }
}

Request example

GET /api/v1/routing/route

get
curl -X GET "https://api.bizkithub.com/api/v1/routing/route?apiKey=PRODPGrFxpGEtrOZfuWhnoJohUYBXuOE&slug=kyber-cena-roku-2025-nejvetsi-vecer-ceske-kyberbezpecnosti-letos&locale=cs" \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer YOUR_API_KEY"

Need an API key?

All BizKitHub public API endpoints require authentication via API key.

Get API Key