REFERENCE

Every address, in one page.

Every option, every response field, every reason a request is refused — and it cannot drift, because the service writes it itself.

BASE ADDRESS

https://api.hykestudio.com

Every address below starts with it, and every address below is printed in full so you can copy it whole.

Rate limits

429 too-fast

Requests arriving faster than this key's limits allow; the answer carries Retry-After and retry_after_seconds.

429 monthly-limit-reached

The free plan only, once the month's 7,500 basic requests are used up; the answer carries Retry-After, the seconds until the month's requests start again.

Everything below is drawn by the reference viewer from the service's own description, so it always says what the service does today. Each address opens on its own.

GET https://api.hykestudio.com/v1/vehicle Returns the picture itself for the requested vehicle, in the requested options, immediately — not a link to a picture.

A publishable key in the key option, safe in the address — or a secret key in the Authorization: Bearer header, never in the address.

Options

keyrequired

A publishable key, sent here or in the Authorization: Bearer header — served exactly alike either way. A secret key goes in the Authorization: Bearer header only: a secret key sent here is refused invalid-key, and the key is flagged for regeneration. A key presented in both places at once is refused invalid-key. A key is required on every request — the one thing we cannot guess.

asset_idinstead of make and model

The id of a vehicle in the catalogue — the deterministic way to ask: no matching, no guessing. It wins outright: a make, model, market or vehicle_type sent beside it is reported ignored and the id decides what is served, with the difference ignored, not-offered, and nothing is refused.

An id we hold: that exact vehicle. Colour, angle, size and the rest still follow the usual never-refuse rules.

An id we issued, vehicle still being made: a stand-in of its shape, with a difference saying the vehicle is not in the library yet (not-in-library-yet).

An id we issued and have since withdrawn or replaced: still a picture. A replaced id quietly leads to its replacement; a withdrawn one is served a stand-in of the right shape, with the difference asset_id, substituted, blocked.

An id we never issued: refused asset-id-not-found, with the closest real ids suggested when any are close enough — the one place a mistake is made loud.

makeexpected, unless asset_id is given

The vehicle's make, expected unless asset_id is given. Left out, a generic vehicle, with the difference make, assumed, not-specified. A make we do not recognise is served a generic vehicle, with the difference make, substituted, not-recognised. A make on the do-not-make list whose vehicle we do not hold is served down the matching ladder, with the difference make, substituted, blocked.

modelexpected, unless asset_id is given

The vehicle's model, expected unless asset_id is given. Left out, a generic vehicle — of the body style asked when the request gave one — with the difference model, assumed, not-specified. A model we do not recognise is served a generic vehicle of the right kind where we can tell, with the difference model, substituted, not-recognised. A body style typed into the model is recognised: model=civic hatchback is treated as model=civic&body=hatchback; a model name already on our lists is never cut.

yearoptional

The model year. Left out, the newest run of years we hold for that model, with the difference year, assumed, not-specified; for a vehicle we have never made, the model's newest generation. A year outside every run we hold is served the nearest run of years, with the difference year, substituted, not-in-library-yet, at match level nearest-years.

One model, two runs of years: the year picks the run that covers it. make=yamaha&model=yzf-r1&color=blue
  • YAMAHA YZF-R1, blue, front three-quarter view, 2015–2019 model years — a computer-generated representationyear=2017
  • YAMAHA YZF-R1, blue, front three-quarter view, 2020–2024 model years — a computer-generated representationyear=2022

Shown here at up to 800 px wide · delivered at 1,536 px by default, up to 3,072 px. Any softness is only this page's display size.

A sample from our library, made for our own pages: our plate and mark on it never appear on pictures you request.

Computer-generated representation. Not supplied by or affiliated with any manufacturer.

bodyoptional

One of the sixty body styles of the five kinds, or a folded alias. A body we do not recognise is served the closest of the sixty — of the sent kind's own when a valid vehicle_type was sent — with the difference body, substituted, not-recognised. A body style of another kind than the confirmed model's is served the model's own body style, with the difference body, substituted, not-offered. The sixty, by kind: car (no default: a car with no shape known is served a plain generic vehicle): sedan, hatchback, suv, wagon, minivan, pickup, van, bus, coupe, convertible, microcar, campervan, semi_truck, box_truck, dump_truck, waste_truck, cargo_trike, rickshaw, trike, tadpole, autocycle, utv, quad, sport_utv; motorcycle (default standard): standard, sport, cruiser, touring, adventure, scooter, off_road; boat (default bowrider): bowrider, fishing, console, pontoon, watercraft, cabin_boat, yacht, sailboat, catamaran; heavy_machine (default tractor): tractor, crawler, combine, sprayer, paddy, excavator, mini_digger, loader, skid_steer, backhoe, telehandler, bulldozer, grader, hauler; aircraft (default single_prop): single_prop, twin_prop, turboprop, bizjet, airliner, helicopter.

Five of the car kind's body styles, each a Toyota we hold asked for by its model: Corolla, Vitz, Land Cruiser Prado, HiAce and Coaster. make=toyota
TOYOTA Corolla, silver, front three-quarter view — a computer-generated representation
body=sedan
marketoptional

Which market's design is wanted where one name means different cars in different markets: us, europe, japan, china, india or south-korea. Left out, the account's own vehicle market, and the US design when that is empty too. It changes nothing for a vehicle sold as one design everywhere. South Korea reads as south-korea, with no difference. A value that is still not one of the six is served the market the option would have fallen back to, with the difference market, substituted, not-recognised.

vehicle_typeoptional

The kind of vehicle wanted: car (Cars — trucks, three-wheelers and ATVs among them), motorcycle, boat, heavy_machine (farm and construction machines) or aircraft (planes and helicopters). Left out, the kind is decided from the vehicle named — the asset, the body style, the confirmed model's kind, a make that builds one kind only. Heavy Machines reads as heavy_machine, with no difference. Other words for a kind — truck, three_wheeler, atv, farm, construction — are read as the kind they belong to, with no difference; they are never listed as choices. A value that is still not one of the five is set aside and the vehicle served as though the kind were left out, with the difference vehicle_type, substituted, not-recognised. A kind the vehicle contradicts is set aside, never refused, with the difference vehicle_type, ignored, not-offered.

Each kind's body styles, the first its default when no shape is known:

  • car: sedan, hatchback, suv, wagon, minivan, pickup, van, bus, coupe, convertible, microcar, campervan, semi_truck, box_truck, dump_truck, waste_truck, cargo_trike, rickshaw, trike, tadpole, autocycle, utv, quad, sport_utv (no default: a plain generic vehicle)
  • motorcycle: standard, sport, cruiser, touring, adventure, scooter, off_road
  • boat: bowrider, fishing, console, pontoon, watercraft, cabin_boat, yacht, sailboat, catamaran
  • heavy_machine: tractor, crawler, combine, sprayer, paddy, excavator, mini_digger, loader, skid_steer, backhoe, telehandler, bulldozer, grader, hauler
  • aircraft: single_prop, twin_prop, turboprop, bizjet, airliner, helicopter
The five kinds, each vehicle asked for by its make and model: a Toyota Corolla, a Yamaha YZF-R1, an Azimut 60, a Komatsu D65, and two aircrafts — a Cessna 172 Skyhawk plane and a Robinson R44 helicopter.
  • TOYOTA Corolla, red, front three-quarter view — a computer-generated representationvehicle_type=car
  • YAMAHA YZF-R1, blue, front three-quarter view — a computer-generated representationvehicle_type=motorcycle
  • Cessna 172 Skyhawk, white, front three-quarter view — a computer-generated representationvehicle_type=aircraft
  • Robinson R44, red, front three-quarter view — a computer-generated representationvehicle_type=aircraft
vinoptional

A 17-character vehicle identification number — digits and the letters except I, O and Q — naming the vehicle instead of by make and model or by catalogue identifier. Sent beside asset_id, the id decides and the number is never decoded, with the difference vin, ignored, not-offered. A decoded number sent beside make and model decides, and each of them is reported with the difference ignored, not-offered. A number that cannot be turned into a vehicle, or one failing the character or length check, is served a plain generic vehicle, with the difference vin, substituted, vin-not-decodable; when a make and model came with it, the make and model decide instead. A number the free United States decoder cannot resolve while the worldwide vehicle lookup is off is served a plain generic vehicle, with the difference vin, substituted, vin-outside-united-states-lookup-off. A number is never refused, and never kept.

coloroptional

A colour name on the named-colour list, matched whatever its capitals, or any six-character colour code. Left out, silver. A name not on the list is served silver, with the difference color, substituted, not-recognised. In basic settings the colour becomes silver, black or white — a basic colour is kept — with the difference color, restricted, allowance-used-up.

The same Corolla in three named colours and a colour code. make=toyota&model=corolla&angle=front-3q
  • TOYOTA Corolla, red, front three-quarter view — a computer-generated representationcolor=red
  • TOYOTA Corolla, gold, front three-quarter view — a computer-generated representationcolor=gold
  • TOYOTA Corolla, white, front three-quarter view — a computer-generated representationcolor=white
  • TOYOTA Corolla, blue, front three-quarter view — a computer-generated representationcolor=2A52E4
angleoptional

One of the seven angles: front, front-3q, side, rear-3q, rear, side-right or hero-front. Left out, front-3q — the front three-quarter, from the vehicle's left. imagin.studio's numeric angle values are translated. A word that is not one of ours, or a number we cannot match, is served front-3q, with the difference angle, substituted, not-offered. A real angle this vehicle does not have yet is served the front three-quarter, with the difference angle, substituted, not-in-library-yet, and on a paid plan it is queued. In basic settings the angle becomes the default three-quarter front, with the difference angle, restricted, allowance-used-up. Asking for another angle never costs a new vehicle on its own: every opening-day vehicle carries all seven, so another angle of one of those is never a new vehicle; for a vehicle drawn to order, an angle not yet drawn uses no new vehicle either; and a vehicle never drawn at all is one new vehicle, made at all seven angles together. Every angle costs the same.

The same Corolla at each of the seven angles. make=toyota&model=corolla&color=silver
  • TOYOTA Corolla, silver, front view — a computer-generated representationangle=front
  • TOYOTA Corolla, silver, front three-quarter view — a computer-generated representationangle=front-3q
  • TOYOTA Corolla, silver, left side view — a computer-generated representationangle=side
  • TOYOTA Corolla, silver, rear three-quarter view — a computer-generated representationangle=rear-3q
  • TOYOTA Corolla, silver, rear view — a computer-generated representationangle=rear
  • TOYOTA Corolla, silver, right side view — a computer-generated representationangle=side-right
  • TOYOTA Corolla, silver, low hero front view — a computer-generated representationangle=hero-front
widthoptional

The width in pixels. Left out, 1536 — full settings serve up to 3072 on request. Above 3072 in full settings is served 3072, with the difference width, substituted, not-offered. In basic settings the width is capped at 800: any width above 800 is served 800, with the difference width, restricted, allowance-used-up.

formatoptional

webp, png or jpg. Left out, webp. An unrecognised value is served webp, with the difference format, substituted, not-recognised. In basic settings the format is WebP or JPEG: a png is served webp, with the difference format, restricted, allowance-used-up. Never a refusal either way.

backgroundoptional

transparent or a colour code. Left out, transparent. format=jpg with background=transparent is served white, with the difference background, substituted, not-offered. In basic settings the background becomes white, with the difference background, restricted, allowance-used-up.

A transparent background, drawn here over a checked backdrop so the see-through areas show. make=toyota&model=corolla&color=silver&angle=front-3q&background=transparent
TOYOTA Corolla, silver, front three-quarter view — a computer-generated representation
flipoptional

Only the literal string true mirrors the picture; left out, the vehicle faces left. Anything else is read as absent, with no difference.

plate_textoptional

Up to 10 characters — the letters A to Z, digits, spaces and hyphens — drawn on the plate, trimmed of spaces at either end and upper-cased first. Left out or empty, a blank plate. A character outside the list is dropped and the rest served, and text longer than 10 characters is cut to the first 10 — either way with one difference, plate_text, substituted, not-offered. The text is shown back in the live answer and kept nowhere. In basic settings plate text becomes none, with the difference plate_text, restricted, allowance-used-up.

plate_styleoptional

blank — the plate as the picture has it drawn; plain — your text on a plain white plate; custom — a plate design of your own, not offered yet, so it is served the blank plate with the difference plate_style, ignored, not-offered. Left out, blank. An unrecognised value is served blank, with the difference plate_style, substituted, not-recognised. In basic settings the plate style becomes blank, with the difference plate_style, restricted, allowance-used-up.

plate_style=plain with plate_text: your text on a plain white plate. A close-up of the plate in the picture this request returns. make=toyota&model=corolla&color=red&angle=front&plate_style=plain&plate_text=YOUR+TEXT
TOYOTA Corolla, red, close-up of a plain plate reading YOUR TEXT — a computer-generated representation
labeloptional

Your own short label, up to 80 characters, echoed in Hyke-Label and kept on the request's record. Longer is cut to the first 80, with no difference, because a label is not a rendering option; an empty label= is no label.

We also accept imagin.studio's spellings — modelFamily, modelYear, paintDescription, modelVariant, fileType, customer, trim, bodySize, zoomLevel and zoomType — so switching to us changes an address and little else.

Response headers

Content-Type

The picture's type — image/webp, image/png or image/jpeg.

Cache-Control

public, max-age=86400 on an exact match served in full settings; public, max-age=300 on any other match level and on every answer served in basic settings, exact matches included.

Hyke-Match

One of the five match levels: exact — the vehicle you asked for; nearest-years — the same model and body style, from the closest run of years we hold; other-body-style — the same model in a different body style; stand-in-body-shape — a generic vehicle of the right shape — a generic van, a generic bus; stand-in-generic — a plain generic vehicle.

Hyke-Asset

The asset_id that was served.

Hyke-Vehicle-Type

The kind of the vehicle served — one of the five kinds — on every picture answer.

Hyke-Differences

How many differences the response carries.

Hyke-Mode

full or basic.

Hyke-Full-Requests-Left

How many full requests are left this period.

Hyke-Request-Id

req_… — this request's id.

Hyke-Details

The address of the full record of this request.

Hyke-Generation

Present only while a picture is being made, as <status>; ready-about=<estimated ready time>.

Hyke-Label

Present only when the request carried a label; the label, percent-encoded as it arrived.

Hyke-Disclosure

Always: Computer-generated representation. Not supplied by or affiliated with any manufacturer.

Hyke-Match values

exact

The vehicle you asked for.

nearest-years

The same model and body style, from the closest run of years we hold.

other-body-style

The same model in a different body style.

stand-in-body-shape

A generic vehicle of the right shape — a generic van, a generic bus.

stand-in-generic

A plain generic vehicle.

Worked examples

An exact match

GET /v1/vehicle?key=YOUR_KEY&make=toyota&model=corolla&year=2020&color=7B1E3C&angle=front-3q

HTTP/1.1 200 OK
Content-Type: image/webp
Cache-Control: public, max-age=86400
Hyke-Match: exact
Hyke-Asset: toyota-corolla-sedan-2019-2022
Hyke-Vehicle-Type: car
Hyke-Differences: 0
Hyke-Mode: full
Hyke-Full-Requests-Left: 112
Hyke-Request-Id: req_01J8ZK3V9Q
Hyke-Details: https://api.hykestudio.com/v1/requests/req_01J8ZK3V9Q
Hyke-Disclosure: Computer-generated representation. Not supplied by or affiliated with any manufacturer.

‹the picture›
The picture this exact match returns. make=toyota&model=corolla&year=2020&color=7B1E3C&angle=front-3q
TOYOTA Corolla, maroon, front three-quarter view, 2019–2022 model years — a computer-generated representation

A close stand-in — the real one on its way

GET /v1/vehicle?key=YOUR_KEY&make=honda&model=civic&body=hatchback&year=2019&color=7B1E3C&angle=front-3q

HTTP/1.1 200 OK
Content-Type: image/webp
Cache-Control: public, max-age=300
Hyke-Match: other-body-style
Hyke-Asset: honda-civic-sedan-2016-2021
Hyke-Vehicle-Type: car
Hyke-Differences: 1
Hyke-Generation: queued; ready-about=2026-09-20T15:34:00Z
Hyke-Mode: full
Hyke-Full-Requests-Left: 23120
Hyke-Request-Id: req_01J8ZM7T2B
Hyke-Details: https://api.hykestudio.com/v1/requests/req_01J8ZM7T2B
Hyke-Disclosure: Computer-generated representation. Not supplied by or affiliated with any manufacturer.

‹picture of the Civic sedan, in the colour and angle asked for›
The picture this answer comes with: the Civic sedan, the closest body style we hold, while the hatchback is made. make=honda&model=civic&body=hatchback&year=2019&color=7B1E3C&angle=front-3q
HONDA Civic, maroon, front three-quarter view, 2016–2021 model years — a computer-generated representation

Another kind of vehicle — a personal watercraft

GET /v1/vehicle?key=YOUR_KEY&make=sea-doo&model=gtx&vehicle_type=boat&color=2A52E4&angle=front-3q

HTTP/1.1 200 OK
Content-Type: image/webp
Cache-Control: public, max-age=86400
Hyke-Match: exact
Hyke-Asset: sea-doo-gtx-watercraft-2020-2024
Hyke-Vehicle-Type: boat
Hyke-Differences: 2
Hyke-Mode: full
Hyke-Full-Requests-Left: 14988
Hyke-Request-Id: req_01J8ZR4K7P
Hyke-Details: https://api.hykestudio.com/v1/requests/req_01J8ZR4K7P
Hyke-Disclosure: Computer-generated representation. Not supplied by or affiliated with any manufacturer.

‹the Sea-Doo GTX personal watercraft›
The personal watercraft this request returns. make=sea-doo&model=gtx&vehicle_type=boat&color=2A52E4&angle=front-3q
Sea-Doo GTX, blue, front three-quarter view — a computer-generated representation

When the kind is not clear

Never a refusal. The picture comes back, and the response says what happened in a sentence of its own:

vehicle_type=spaceship

We do not have a vehicle type called "spaceship", so we worked out the type from the rest of the request.

vehicle_type=boat&make=honda&model=civic

The Honda Civic is a car, so the vehicle type you sent was not used.

make=honda&model=xyz

Honda makes cars, motorcycles and aircraft, and the request did not say which, so we served a plain generic vehicle. Add vehicle_type to choose.

make=honda&model=civic&body=cruiser

The Honda Civic does not come as a cruiser motorcycle, so we served the Honda Civic sedan.

vehicle_type=motorcycle, no model

No body style was given, so we served a generic standard motorcycle, the most common kind of motorcycle.

plate_text on a boat

A boat carries no licence plate, so the plate options were not used.

vehicle_type=boat sent with a Honda Civic: the Civic comes back, as the car it is. make=honda&model=civic&vehicle_type=boat
HONDA Civic, silver, front three-quarter view — a computer-generated representation

Refusal shapes

A value we cannot honour is never a refusal. color=banana comes back in silver, with a line in the response saying the colour was not recognised.

color=banana comes back in silver. make=toyota&model=corolla&color=banana
TOYOTA Corolla, silver, front three-quarter view — a computer-generated representation

A used-up full-request allowance is never a refusal either. The pictures keep coming in basic settings until the month resets or you upgrade.

Basic requests are unlimited on Starter and Pro; the free plan gets 7,500 a month. Past the month's full requests every request is still answered, and Hyke-Mode says basic. Basic settings give:

  • colour: silver, black or white (a colour outside those is served in silver)
  • background: white
  • angle: front-3q, the front three-quarter
  • width: up to 800
  • format: webp or jpg
  • plate text: none
401 invalid-key

The key is missing, unknown or revoked, or presented two ways at once. The same shape carries the reason code secret-key-in-address when a secret key arrived in the address, and that key is flagged for regeneration.

403 key-not-allowed-here

A locked key used where it is not allowed.

403 account-suspended

The account is suspended.

404 asset-id-not-found

Only for an asset_id we never issued, with did_you_mean carrying the closest real ids.

429 too-fast

Requests arriving faster than this key's limits allow; the answer carries Retry-After and retry_after_seconds.

429 monthly-limit-reached

The free plan only, once the month's 7,500 basic requests are used up; the answer carries Retry-After, the seconds until the month's requests start again.

503 temporarily-unavailable

Our own failure; the answer carries Retry-After.

A refusal in full

HTTP/1.1 401 Unauthorized
Content-Type: application/json

{ "error": { "type": "invalid-key",
    "message": "That access key is not valid. Check it was copied in full, or create a new one.",
    "help_url": "https://app.hykestudio.com/dashboard/keys",
    "request_id": "req_01J8ZQ9F6G" } }
GET https://api.hykestudio.com/v1/vehicle.json Returns the same information a picture request for the same options would have produced, as facts instead of a picture.

A secret key in the Authorization: Bearer header only. A secret key sent in the address is refused, and that key is flagged for regeneration.

Options

Exactly the options the picture address takes — make, model, year, body, vehicle_type, market, vin, color, angle, width, format, background, flip, plate_text, plate_style, label, asset_id, and the imagin.studio spellings — minus key, which this address does not read.

Response headers

Content-Type

application/json — the facts, not a picture.

Hyke-Request-Id

req_… — this request's id.

Hyke-Disclosure

Always: Computer-generated representation. Not supplied by or affiliated with any manufacturer.

The labels that ride beside the picture as headers are inside the body here instead.

The answer

The request's id; the picture address that would serve it, carrying your oldest publishable key so it is safe to paste into a page; what you asked for; what would be served; how the two relate, difference by difference; whether a picture is being made; and your plan and period.

request_id

req_… — this request's id.

image_url

The equivalent picture address for the same options. Its key is the account's oldest active publishable key, or YOUR_KEY when the account holds none.

requested

What was asked for; anything not sent is null.

served

What was actually served.

match

How close the served vehicle is to the one asked — level, is_exact, one plain summary sentence and every difference. The five match levels: exact — the vehicle you asked for; nearest-years — the same model and body style, from the closest run of years we hold; other-body-style — the same model in a different body style; stand-in-body-shape — a generic vehicle of the right shape — a generic van, a generic bus; stand-in-generic — a plain generic vehicle.

generation

null when nothing is being made, otherwise the generation object.

plan

The plan's name, full or basic, the full requests used and allowed this period, and resets_at — when the allowance next resets.

A worked example

An exact match, asked for as facts

GET /v1/vehicle.json?make=toyota&model=corolla&year=2020&color=7B1E3C&angle=front-3q
Authorization: Bearer YOUR_KEY

HTTP/1.1 200 OK
Content-Type: application/json

{ "request_id": "req_01J8ZK3V9Q",
  "image_url": "https://api.hykestudio.com/v1/vehicle?key=YOUR_KEY&make=toyota&model=corolla&year=2020&color=7B1E3C&angle=front-3q",
  "requested": {
    "make": "toyota", "model": "corolla", "year": 2020, "body": null,
    "vehicle_type": null,
    "color": "7B1E3C", "angle": "front-3q", "width": null, "format": null,
    "background": null, "flip": null, "plate_text": null, "plate_style": null },
  "served": {
    "asset_id": "toyota-corolla-sedan-2019-2022",
    "make": "Toyota", "model": "Corolla", "body": "sedan",
    "vehicle_type": "car", "years": { "from": 2019, "to": 2022 },
    "color": { "code": "7B1E3C", "name": null },
    "angle": "front-3q", "width": 1536, "height": 1024, "format": "webp",
    "background": "transparent", "flip": false,
    "plate_style": "blank", "plate_text": null },
  "match": {
    "level": "exact", "is_exact": true,
    "summary": "This is the vehicle you asked for.",
    "differences": [
      { "field": "body", "kind": "assumed", "requested": null, "served": "sedan",
        "why": "only-one-available",
        "explanation": "No body style was given. The Toyota Corolla (2019–2022) comes in one body style in our library, the sedan." },
      { "field": "width", "kind": "assumed", "requested": null, "served": 1536,
        "why": "not-specified",
        "explanation": "No width was given, so we served our standard 1536 — full plans can ask for up to 3072." } ] },
  "generation": null,
  "plan": { "name": "free", "mode": "full",
    "full_requests_used": 38, "full_requests_allowance": 150,
    "resets_at": "2026-10-01T00:00:00Z" } }
The picture at this answer's image_url. make=toyota&model=corolla&year=2020&color=7B1E3C&angle=front-3q
TOYOTA Corolla, maroon, front three-quarter view, 2019–2022 model years — a computer-generated representation

Shown here at up to 800 px wide · delivered at 1,536 px by default, up to 3,072 px. Any softness is only this page's display size.

A sample from our library, made for our own pages: our plate and mark on it never appear on pictures you request.

Computer-generated representation. Not supplied by or affiliated with any manufacturer.

Refusal shapes

401 invalid-key

The key is missing, unknown or revoked, or presented two ways at once. The same shape carries the reason code secret-key-in-address when a secret key arrived in the address, and that key is flagged for regeneration.

403 key-not-allowed-here

A publishable key, in the header or in the key option: this address never takes one.

403 account-suspended

The account is suspended.

404 asset-id-not-found

Only for an asset_id we never issued, with did_you_mean carrying the closest real ids.

429 too-fast

Requests arriving faster than this key's limits allow; the answer carries Retry-After and retry_after_seconds.

503 temporarily-unavailable

Our own failure; the answer carries Retry-After.

GET https://api.hykestudio.com/v1/makes Every make with at least one ready vehicle — the first level of a dropdown.

A secret key in the Authorization: Bearer header only. A secret key sent in the address is refused, and that key is flagged for regeneration.

Options

vehicle_typeoptional

One of the five kinds. Only makes with a ready vehicle of that kind are listed, and models_ready counts that kind's models; a make that builds several kinds is listed under each. A value that is not one of the five answers an empty list, never a refusal. Left out: every kind.

Response headers

Hyke-Request-Id

req_… — this request's id.

Hyke-Disclosure

Always: Computer-generated representation. Not supplied by or affiliated with any manufacturer.

The answer

One entry per make — its id, its name and how many of its models are ready — and the total.

Every vehicle we hold also has a page of its own, showing the exact request that returns it: Every vehicle we hold.

makes

One entry per make: id, name and models_ready, how many of its models have a ready vehicle.

total

How many makes are listed.

A worked example

Every make we hold

GET /v1/makes
Authorization: Bearer YOUR_KEY

HTTP/1.1 200 OK
Content-Type: application/json

{ "makes": [
    { "id": "honda",  "name": "Honda",  "models_ready": 2 },
    { "id": "nissan", "name": "Nissan", "models_ready": 3 },
    { "id": "toyota", "name": "Toyota", "models_ready": 11 } ],
  "total": 3 }

Refusal shapes

401 invalid-key

The key is missing, unknown or revoked, or a secret key arrived in the address, which is then flagged for regeneration.

403 key-not-allowed-here

A publishable key, in the header or in the key option: this address takes a secret key only.

403 account-suspended

The account is suspended.

429 too-fast

Requests arriving faster than this key's limits allow; the answer carries Retry-After and retry_after_seconds.

503 temporarily-unavailable

Our own failure; the answer carries Retry-After.

No not-found applies here — a kind of vehicle we do not know answers an empty list, never a refusal.

GET https://api.hykestudio.com/v1/makes/{make}/models Every model of one make that has at least one ready vehicle — the second level of a dropdown.

A secret key in the Authorization: Bearer header only. A secret key sent in the address is refused, and that key is flagged for regeneration.

Options

makerequired, in the address

A make id from GET /v1/makes — honda, toyota, nissan.

vehicle_typeoptional

One of the five kinds. Narrows the list to that kind; a value that is not one of the five answers an empty list, never a refusal.

Response headers

Hyke-Request-Id

req_… — this request's id.

Hyke-Disclosure

Always: Computer-generated representation. Not supplied by or affiliated with any manufacturer.

The answer

The make, then one entry per model — its id, its name, its kind, the body styles we hold it in, its run of years and how many of its vehicles are ready. A make we do not know answers name: null and no models.

make

The make asked for: id, and name — null for a make we do not know.

models

One entry per model: id, name, vehicle_type, body_styles, years and vehicles_ready.

Worked examples

A make we hold

GET /v1/makes/honda/models
Authorization: Bearer YOUR_KEY

HTTP/1.1 200 OK
Content-Type: application/json

{ "make": { "id": "honda", "name": "Honda" },
  "models": [
    { "id": "civic", "name": "Civic", "vehicle_type": "car", "body_styles": ["sedan", "hatchback"],
      "years": { "from": 2012, "to": 2021 }, "vehicles_ready": 2 },
    { "id": "cr-v", "name": "CR-V", "vehicle_type": "car", "body_styles": ["suv"],
      "years": { "from": 2007, "to": 2011 }, "vehicles_ready": 1 } ] }
The two models this answer lists, each asked for by make and model. make=honda
  • HONDA Civic, silver, front three-quarter view — a computer-generated representationmodel=civic
  • HONDA CR-V, silver, front three-quarter view — a computer-generated representationmodel=cr-v

Shown here at up to 800 px wide · delivered at 1,536 px by default, up to 3,072 px. Any softness is only this page's display size.

A sample from our library, made for our own pages: our plate and mark on it never appear on pictures you request.

Computer-generated representation. Not supplied by or affiliated with any manufacturer.

A make we do not know — an empty list, never a refusal

HTTP/1.1 200 OK

{ "make": { "id": "unknownmake", "name": null }, "models": [] }

Refusal shapes

401 invalid-key

The key is missing, unknown or revoked, or a secret key arrived in the address, which is then flagged for regeneration.

403 key-not-allowed-here

A publishable key, in the header or in the key option: this address takes a secret key only.

403 account-suspended

The account is suspended.

429 too-fast

Requests arriving faster than this key's limits allow; the answer carries Retry-After and retry_after_seconds.

503 temporarily-unavailable

Our own failure; the answer carries Retry-After.

A make we do not know is never a refusal — the answer is an empty list.

GET https://api.hykestudio.com/v1/makes/{make}/models/{model} Every specific vehicle of one make and model, each with its asset_id — the last level of the dropdown.

A secret key in the Authorization: Bearer header only. A secret key sent in the address is refused, and that key is flagged for regeneration.

Options

makerequired, in the address

A make id from GET /v1/makes.

modelrequired, in the address

A model id from GET /v1/makes/{make}/models.

vehicle_typeoptional

One of the five kinds. Narrows the list to that kind; a value that is not one of the five answers an empty list, never a refusal.

Response headers

Hyke-Request-Id

req_… — this request's id.

Hyke-Disclosure

Always: Computer-generated representation. Not supplied by or affiliated with any manufacturer.

The answer

The make, the model and its most common body style, then one entry per vehicle — its asset_id, its body style, its kind, its run of years, its market, whether it is ready or still being made, which angles are ready and, while it is being made, when it should be ready. The asset_id goes straight into the picture address.

make

The make asked for: id, and name — null for a make we do not know.

model

The model asked for: id, name and most_common_body — both null for a model we do not know.

vehicles

One entry per vehicle: asset_id, body, vehicle_type, years, market, status (ready or being-made), angles_ready and, while it is being made, estimated_ready_at.

Worked examples

One model's vehicles, then the picture

GET /v1/makes/honda/models/civic
Authorization: Bearer YOUR_KEY

HTTP/1.1 200 OK
Content-Type: application/json

{ "make": { "id": "honda", "name": "Honda" },
  "model": { "id": "civic", "name": "Civic", "most_common_body": "sedan" },
  "vehicles": [
    { "asset_id": "honda-civic-sedan-2012-2015", "body": "sedan", "vehicle_type": "car",
      "years": { "from": 2012, "to": 2015 }, "market": null, "status": "ready",
      "angles_ready": ["front", "front-3q", "side", "rear-3q",
                       "rear", "side-right", "hero-front"] },
    { "asset_id": "honda-civic-sedan-2016-2021", "body": "sedan", "vehicle_type": "car",
      "years": { "from": 2016, "to": 2021 }, "market": null, "status": "ready",
      "angles_ready": ["front", "front-3q", "side", "rear-3q",
                       "rear", "side-right"] },
    { "asset_id": "honda-civic-hatchback-2016-2021", "body": "hatchback", "vehicle_type": "car",
      "years": { "from": 2016, "to": 2021 }, "market": null, "status": "being-made",
      "angles_ready": [], "estimated_ready_at": "2026-09-20T15:34:00Z" } ] }

GET /v1/vehicle?key=YOUR_KEY&asset_id=honda-civic-sedan-2016-2021&color=7B1E3C&angle=front-3q
The picture the last line asks for: one vehicle, named by its asset_id. asset_id=honda-civic-sedan-2016-2021&color=7B1E3C&angle=front-3q
HONDA Civic, maroon, front three-quarter view — a computer-generated representation

Shown here at up to 800 px wide · delivered at 1,536 px by default, up to 3,072 px. Any softness is only this page's display size.

A sample from our library, made for our own pages: our plate and mark on it never appear on pictures you request.

Computer-generated representation. Not supplied by or affiliated with any manufacturer.

A model we do not know — an empty list, never a refusal

HTTP/1.1 200 OK

{ "make": { "id": "honda", "name": "Honda" },
  "model": { "id": "unknownmodel", "name": null, "most_common_body": null },
  "vehicles": [] }

Refusal shapes

401 invalid-key

The key is missing, unknown or revoked, or a secret key arrived in the address, which is then flagged for regeneration.

403 key-not-allowed-here

A publishable key, in the header or in the key option: this address takes a secret key only.

403 account-suspended

The account is suspended.

429 too-fast

Requests arriving faster than this key's limits allow; the answer carries Retry-After and retry_after_seconds.

503 temporarily-unavailable

Our own failure; the answer carries Retry-After.

A make or model we do not know is never a refusal — the answer is an empty list.

GET https://api.hykestudio.com/v1/options Every colour, angle, kind of vehicle, body style, market and format we offer, and the largest width.

A secret key in the Authorization: Bearer header only. A secret key sent in the address is refused, and that key is flagged for regeneration.

Options

None. The address takes nothing — it is what a request builder calls to fill its own form.

Response headers

Hyke-Request-Id

req_… — this request's id.

Hyke-Disclosure

Always: Computer-generated representation. Not supplied by or affiliated with any manufacturer.

The answer

The named colours and their codes, that any six-character colour code is accepted as well, the seven angles, the five kinds of vehicle — each with its body styles, the first its default — every body style of every kind, the markets, the formats and the largest width.

colors

The named colours, each a name and its six-character code.

any_color_code_accepted

true — any six-character colour code is accepted beside the named colours.

angles

The seven angles.

vehicle_types

The five kinds, each an id and its body_styles, the first its default.

body_styles

Every body style of every kind, in the kinds' order.

markets

The markets a design can be asked for by.

formats

The picture formats.

max_width

The largest width served, in pixels.

A worked example

Everything a form needs

GET /v1/options
Authorization: Bearer YOUR_KEY

HTTP/1.1 200 OK
Content-Type: application/json

{ "colors": [
    { "name": "silver", "code": "C0C0C0" },
    { "name": "black",  "code": "0B0B0C" },
    { "name": "white",  "code": "F4F4F2" },
    { "name": "maroon", "code": "7B1E3C" } ],
  "any_color_code_accepted": true,
  "angles": ["front", "front-3q", "side", "rear-3q",
             "rear", "side-right", "hero-front"],
  "vehicle_types": [
    { "id": "car", "body_styles": ["sedan", "hatchback", "suv", … ] },
    { "id": "motorcycle", "body_styles": ["standard", "sport", "cruiser", … ] },
    … the other kinds, each with its body styles … ],
  "body_styles": ["sedan", "hatchback", "suv", … all sixty, in the order above …],
  "markets": ["us", "europe", "japan", "china", "india", "south-korea"],
  "formats": ["webp", "png", "jpg"],
  "max_width": 3072 }
The four colours this answer lists, each as a picture asks for it. make=toyota&model=corolla&angle=front-3q
  • TOYOTA Corolla, silver, front three-quarter view — a computer-generated representationcolor=silver
  • TOYOTA Corolla, black, front three-quarter view — a computer-generated representationcolor=black
  • TOYOTA Corolla, white, front three-quarter view — a computer-generated representationcolor=white
  • TOYOTA Corolla, maroon, front three-quarter view — a computer-generated representationcolor=maroon

Shown here at up to 800 px wide · delivered at 1,536 px by default, up to 3,072 px. Any softness is only this page's display size.

A sample from our library, made for our own pages: our plate and mark on it never appear on pictures you request.

Computer-generated representation. Not supplied by or affiliated with any manufacturer.

Refusal shapes

401 invalid-key

The key is missing, unknown or revoked, or a secret key arrived in the address, which is then flagged for regeneration.

403 key-not-allowed-here

A publishable key, in the header or in the key option: this address takes a secret key only.

403 account-suspended

The account is suspended.

429 too-fast

Requests arriving faster than this key's limits allow; the answer carries Retry-After and retry_after_seconds.

503 temporarily-unavailable

Our own failure; the answer carries Retry-After.

GET https://api.hykestudio.com/v1/usage Your own usage this period and what it is costing you, broken down by key, by label and by match.

A secret key in the Authorization: Bearer header only. A secret key sent in the address is refused, and that key is flagged for regeneration.

Options

None. The period is your account's own open period — the calendar month on the free plan, your billing month on a paid plan.

Response headers

Hyke-Request-Id

req_… — this request's id.

Hyke-Disclosure

Always: Computer-generated representation. Not supplied by or affiliated with any manufacturer.

The answer

Your plan and whether you are in full or basic settings; the period; full requests used against what is included; basic requests used; new vehicles used against what is included; whether you pay monthly or yearly; what you have been charged so far; how your requests matched; and the same counts broken down by key and by your own labels. Calling this address moves no counter.

plan

The plan's name.

billing_interval

month or year — how you pay; null on the free plan.

mode

full or basic — the settings requests are answered in right now.

period

The period, from and to, as UTC dates.

full_requests

Full requests included, used and extra_used this period.

basic_requests

Basic requests used, and included — the free plan's monthly number, null on Starter and Pro, where there is none.

new_vehicles

New vehicles included, used and extra_used this period.

extra_usage

The extra-usage switches for requests and for vehicles, each with its limit and what it has spent.

charges_this_period_usd

What you have been charged so far this period, in US dollars: the plan, each extra line and the total.

requests_by_match

How many requests were served at each match level.

usage_by_key

The same counts for each of your keys.

requests_by_label

The same counts for each of your own labels; null for requests that carried none.

A worked example

A Starter account that has used its month's full requests

GET /v1/usage
Authorization: Bearer YOUR_KEY

HTTP/1.1 200 OK
Content-Type: application/json

{ "plan": "starter", "billing_interval": "month", "mode": "basic",
  "period": { "from": "2026-09-01", "to": "2026-09-30" },
  "full_requests":  { "included": 26000, "used": 26000, "extra_used": 0 },
  "basic_requests": { "used": 3200, "included": null },
  "new_vehicles":   { "included": 10, "used": 10, "extra_used": 0 },
  "extra_usage": { … both switches off … },
  "charges_this_period_usd": {
    "plan": 49.00,
    "extra_requests": { "quantity": 0, "unit": "per 1,000",
                        "unit_price": 1.00, "amount": 0.00 },
    "extra_vehicles": { "quantity": 0, "unit": "per vehicle",
                        "unit_price": 2.00, "amount": 0.00 },
    "total_so_far": 49.00 },
  "requests_by_match": { "exact": 28000, "nearest-years": 600,
    "other-body-style": 200, "stand-in-body-shape": 300,
    "stand-in-generic": 100 },
  "usage_by_key": [
    { "key_id": "key_9f2c…", "name": "live", "kind": "secret",
      "full_requests_used": 20000, "basic_requests_used": 0,
      "new_vehicles_used": 8 },
    { "key_id": "key_bb31…", "name": "site", "kind": "publishable",
      "full_requests_used": 6000, "basic_requests_used": 3200,
      "new_vehicles_used": 2 } ],
  "requests_by_label": [
    { "label": "homepage-widget", "full_requests_used": 15000,
      "basic_requests_used": 1000 },
    { "label": null, "full_requests_used": 11000,
      "basic_requests_used": 2200 } ] }

Refusal shapes

401 invalid-key

The key is missing, unknown or revoked, or a secret key arrived in the address, which is then flagged for regeneration.

403 key-not-allowed-here

A publishable key, in the header or in the key option: this address takes a secret key only.

403 account-suspended

The account is suspended.

429 too-fast

Requests arriving faster than this key's limits allow; the answer carries Retry-After and retry_after_seconds.

503 temporarily-unavailable

Our own failure; the answer carries Retry-After.

GET https://api.hykestudio.com/v1/requests/{request_id} The full record of one request — copy the id from Hyke-Request-Id, or follow Hyke-Details straight to it.

A secret key on the account that made the request, in the Authorization: Bearer header only. A signed-in dashboard visit is never accepted here — the signed-in way into a record is the dashboard's own "Look up a request", which reads the same record.

Options

request_idrequired, in the address

The value the request's own Hyke-Request-Id header carried.

Response headers

Hyke-Request-Id

This look-up's own id — not the id you asked about.

Hyke-Disclosure

Always: Computer-generated representation. Not supplied by or affiliated with any manufacturer.

The answer

The same body the facts address returns for that request — what was asked for, what was served, how the two relate difference by difference, whether a picture was being made, and the plan as it stands now. Records are kept for 90 days. The plate text is never kept, so the record shows YOUR_PLATE_TEXT in its place.

request_id

req_… — this request's id.

image_url

The equivalent picture address for the same options. Its key is the account's oldest active publishable key, or YOUR_KEY when the account holds none.

requested

What was asked for; anything not sent is null.

served

What was actually served.

match

How close the served vehicle is to the one asked — level, is_exact, one plain summary sentence and every difference. The five match levels: exact — the vehicle you asked for; nearest-years — the same model and body style, from the closest run of years we hold; other-body-style — the same model in a different body style; stand-in-body-shape — a generic vehicle of the right shape — a generic van, a generic bus; stand-in-generic — a plain generic vehicle.

generation

null when nothing is being made, otherwise the generation object.

plan

The plan's name, full or basic, the full requests used and allowed this period, and resets_at — when the allowance next resets.

A worked example

Following Hyke-Details from a picture you served last week

GET /v1/requests/req_01J8ZK3V9Q
Authorization: Bearer YOUR_KEY

HTTP/1.1 200 OK
Content-Type: application/json

{ "request_id": "req_01J8ZK3V9Q",
  "image_url": "https://api.hykestudio.com/v1/vehicle?key=YOUR_KEY&make=toyota&model=corolla&year=2020&color=7B1E3C&angle=front-3q",
  "requested": { "make": "toyota", "model": "corolla", "year": 2020,
    "color": "7B1E3C", "angle": "front-3q" },
  "served": { "asset_id": "toyota-corolla-sedan-2019-2022",
    "make": "Toyota", "model": "Corolla", "body": "sedan",
    "vehicle_type": "car", "years": { "from": 2019, "to": 2022 },
    "color": { "code": "7B1E3C", "name": null },
    "angle": "front-3q", "width": 1536, "height": 1024, "format": "webp",
    "background": "transparent", "flip": false,
    "plate_style": "blank", "plate_text": null },
  "match": { "level": "exact", "is_exact": true,
    "summary": "This is the vehicle you asked for.",
    "differences": [] },
  "generation": null,
  "plan": { "name": "starter", "mode": "full",
    "full_requests_used": 4100, "full_requests_allowance": 26000,
    "resets_at": "2026-10-01T00:00:00Z" } }
The picture this record's image_url points at. make=toyota&model=corolla&year=2020&color=7B1E3C&angle=front-3q
TOYOTA Corolla, maroon, front three-quarter view, 2019–2022 model years — a computer-generated representation

Shown here at up to 800 px wide · delivered at 1,536 px by default, up to 3,072 px. Any softness is only this page's display size.

A sample from our library, made for our own pages: our plate and mark on it never appear on pictures you request.

Computer-generated representation. Not supplied by or affiliated with any manufacturer.

Refusal shapes

401 invalid-key

No key, an unknown key, or a secret key sent in the address.

403 key-not-allowed-here

A publishable key, in the header or in the key option: this address takes a secret key only.

403 account-suspended

The account is suspended.

404 request-record-not-found

An id that is not this account's, or one never issued: the same answer either way, so nothing can be learned by guessing.

410 request-record-expired

The record is more than 90 days old and has been deleted.

429 too-fast

Requests arriving faster than this key's limits allow; the answer carries Retry-After and retry_after_seconds.

503 temporarily-unavailable

Our own failure; the answer carries Retry-After.