Skip to content

AssetVariant

type AssetVariant = {
bytes: number;
createdAt?: string;
height?: number;
preset: VariantPreset;
sourceFrom?: | VariantPreset
| "upload";
url: string;
width?: number;
};

Defined in: packages/asset-client/src/index.ts:99

One generated variant of an asset. Returned by the admin endpoints (GET /assets/:id, POST /assets/:id/regenerate).

bytes: number;

Defined in: packages/asset-client/src/index.ts:109

Byte size of the variant file on R2.


optional createdAt?: string;

Defined in: packages/asset-client/src/index.ts:124

ISO timestamp this variant was written. Absent on pre-trace variants.


optional height?: number;

Defined in: packages/asset-client/src/index.ts:107

Pixel height. Same caveat as width.


preset: VariantPreset;

Defined in: packages/asset-client/src/index.ts:101

Long name (thumb / sm / … / original) — see VariantPreset.


optional sourceFrom?:
| VariantPreset
| "upload";

Defined in: packages/asset-client/src/index.ts:122

Where the bytes for this variant came from. Useful for quality traceability — a thumb with sourceFrom: "original" is the canonical case, while sourceFrom: "lg" means it was derived from an already-encoded WebP (slight quality compounding).

  • "upload" → first-write at /assets/process. The bytes came straight from the client’s PUT.
  • VariantPreset → regenerated from that preset’s variant.

Absent on variants written before the trace field existed.


url: string;

Defined in: packages/asset-client/src/index.ts:103

Public CDN URL of this variant.


optional width?: number;

Defined in: packages/asset-client/src/index.ts:105

Pixel width. Absent for original-only assets where sharp was skipped, or for video presets.