@transcodely/sdk 0.3.14 → 0.3.16

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.d.ts CHANGED
@@ -1003,9 +1003,9 @@ interface TranscodelyErrorOptions {
1003
1003
  }
1004
1004
  /** Base class for every error the SDK throws. */
1005
1005
  declare class TranscodelyError extends Error {
1006
- /** Server-side error code (e.g. "JOB_NOT_FOUND"). */
1006
+ /** Server-side error code (e.g. "validation_error"). */
1007
1007
  readonly code: string | undefined;
1008
- /** Top-level error type (e.g. "validation_error"). */
1008
+ /** Connect error code (e.g. "invalid_argument"). */
1009
1009
  readonly type: string | undefined;
1010
1010
  /** Field-level validation violations. */
1011
1011
  readonly errors: FieldViolation[];
@@ -1835,9 +1835,10 @@ declare class AutoProfileDefaults extends Message<AutoProfileDefaults> {
1835
1835
  */
1836
1836
  qualityTier?: string;
1837
1837
  /**
1838
- * Encoding mode: "fixed" (default, static CRF) or "auto" (input-aware constrained CRF).
1838
+ * Encoding mode: "auto" (default, input-aware constrained CRF) or "fixed" (static CRF).
1839
1839
  * In "auto" mode, the worker caps each variant's bitrate based on the input's bitrate
1840
- * and resolution ratio, preventing output from exceeding the input's quality ceiling.
1840
+ * and resolution ratio, preventing output from exceeding the input's quality ceiling,
1841
+ * and skips any ladder rung larger than the source instead of upscaling it.
1841
1842
  *
1842
1843
  * @generated from field: optional string encoding_mode = 5;
1843
1844
  */
@@ -5442,13 +5443,17 @@ declare enum HDRFormat {
5442
5443
  */
5443
5444
  HDR_FORMAT_HLG = 3,
5444
5445
  /**
5445
- * Dolby Vision Profile 5 (single-layer, cross-compatible).
5446
+ * Dolby Vision Profile 5 (single-layer, no HDR10 or SDR compatibility
5447
+ * layer). Not available: refused at create with `parameter_unsupported` on
5448
+ * `hdr.format` until the worker produces Dolby Vision output.
5446
5449
  *
5447
5450
  * @generated from enum value: HDR_FORMAT_DOLBY_VISION_5 = 4;
5448
5451
  */
5449
5452
  HDR_FORMAT_DOLBY_VISION_5 = 4,
5450
5453
  /**
5451
- * Dolby Vision Profile 8 (MEL, backward-compatible with HDR10).
5454
+ * Dolby Vision Profile 8.1 (single-layer, HDR10-compatible base layer). Not
5455
+ * available: refused at create with `parameter_unsupported` on `hdr.format`
5456
+ * until the worker produces Dolby Vision output.
5452
5457
  *
5453
5458
  * @generated from enum value: HDR_FORMAT_DOLBY_VISION_8 = 5;
5454
5459
  */
@@ -5471,11 +5476,14 @@ declare enum HDRMode {
5471
5476
  */
5472
5477
  HDR_MODE_PASSTHROUGH = 1,
5473
5478
  /**
5474
- * Convert HDR to SDR via tone mapping. Requires an HDR input: whether the
5475
- * input carries HDR color signaling is only knowable once it has been
5476
- * probed, so a tone-map job on an SDR source is accepted at create and then
5477
- * fails at probe time with error code `input_not_hdr`, before any encode
5478
- * starts.
5479
+ * Convert HDR to SDR via tone mapping. The output is BT.709 (primaries,
5480
+ * transfer and matrix), limited range, 8-bit unless the variant is h265
5481
+ * `main10`, and carries no HDR metadata. Works into every video codec,
5482
+ * because the output is SDR: `format` names the source here, not the output.
5483
+ * Requires an HDR input: whether the input carries HDR color signaling is
5484
+ * only knowable once it has been probed, so a tone-map job on an SDR source
5485
+ * is accepted at create and then fails at probe time with error code
5486
+ * `input_not_hdr`, before any encode starts.
5479
5487
  *
5480
5488
  * @generated from enum value: HDR_MODE_TONEMAP = 2;
5481
5489
  */
@@ -5510,7 +5518,10 @@ declare enum ToneMapping {
5510
5518
  */
5511
5519
  HABLE = 2,
5512
5520
  /**
5513
- * ITU-R BT.2390 reference. Broadcast (default).
5521
+ * ITU-R BT.2390 reference. Broadcast (default). Approximated with `hable`
5522
+ * on CPU: the worker's tone-mapping filter has no BT.2390 curve, so this
5523
+ * value is encoded with the `hable` operator, the closest available
5524
+ * highlight roll-off.
5514
5525
  *
5515
5526
  * @generated from enum value: TONE_MAPPING_BT2390 = 3;
5516
5527
  */
@@ -5529,7 +5540,11 @@ declare enum ToneMapping {
5529
5540
  */
5530
5541
  declare class HDRConfig extends Message<HDRConfig> {
5531
5542
  /**
5532
- * Target HDR format (required for passthrough and force modes).
5543
+ * Target HDR format (required for passthrough and force modes). In tonemap
5544
+ * mode it names the HDR format of the source.
5545
+ * `dolby_vision_5` and `dolby_vision_8` are refused at create until the
5546
+ * worker produces Dolby Vision output; a refused request creates no job and
5547
+ * is neither quoted nor billed.
5533
5548
  *
5534
5549
  * @generated from field: transcodely.v1.HDRFormat format = 1;
5535
5550
  */
@@ -5541,14 +5556,17 @@ declare class HDRConfig extends Message<HDRConfig> {
5541
5556
  */
5542
5557
  mode: HDRMode;
5543
5558
  /**
5544
- * Tone mapping algorithm (for tonemap mode).
5559
+ * Tone mapping algorithm (tonemap mode only). Unset means `bt2390`, which,
5560
+ * like an explicit `bt2390`, is approximated with `hable` on CPU.
5545
5561
  *
5546
5562
  * @generated from field: transcodely.v1.ToneMapping tone_mapping = 3;
5547
5563
  */
5548
5564
  toneMapping: ToneMapping;
5549
5565
  /**
5550
- * Target peak brightness in nits (for tonemap and force modes).
5551
- * Range: 100-10000.
5566
+ * Target peak brightness in nits. Range: 100-10000. Applies to HDR output
5567
+ * only: refused with `parameter_forbidden` in tonemap mode, whose SDR target
5568
+ * has a fixed peak. Accepted in passthrough and force modes, where the
5569
+ * encoder does not currently read it, so it has no effect on the output.
5552
5570
  *
5553
5571
  * @generated from field: optional int32 target_peak_nits = 4;
5554
5572
  */
@@ -5568,7 +5586,9 @@ declare class HDRConfig extends Message<HDRConfig> {
5568
5586
  */
5569
5587
  contentLightLevel?: string;
5570
5588
  /**
5571
- * Dolby Vision RPU file URL (for DV metadata injection).
5589
+ * Dolby Vision RPU file URL. Only accepted with a `dolby_vision_*` format,
5590
+ * which is refused at create until the worker produces Dolby Vision output,
5591
+ * so this field is currently unreachable.
5572
5592
  *
5573
5593
  * @generated from field: optional string rpu_url = 7;
5574
5594
  */
@@ -7003,11 +7023,8 @@ declare class DRMConfig extends Message<DRMConfig> {
7003
7023
  /**
7004
7024
  * Content-aware encoding mode.
7005
7025
  *
7006
- * One of the two modes ships: `per_title` is accepted and acted on. `auto_abr`
7007
- * is still rejected at CreateJob with error code `parameter_unsupported` and
7008
- * the message "auto_abr is not available yet; per_title is" (issue #167),
7009
- * because it would change the NUMBER of renditions after the job was already
7010
- * quoted per rendition at create time.
7026
+ * Both modes are accepted and acted on. `per_title` tunes the ladder you
7027
+ * declare; `auto_abr` builds the ladder from one seed rendition.
7011
7028
  *
7012
7029
  * @generated from enum transcodely.v1.ContentAwareMode
7013
7030
  */
@@ -7027,45 +7044,87 @@ declare enum ContentAwareMode {
7027
7044
  */
7028
7045
  PER_TITLE = 1,
7029
7046
  /**
7030
- * Generate the bitrate ladder automatically. NOT YET ACCEPTED — rejected at
7031
- * create.
7047
+ * Choose which rungs of a standard ladder to render, and tune each rung's
7048
+ * CRF to the content.
7049
+ *
7050
+ * You declare a seed (one video rendition giving the codec, quality tier and
7051
+ * optional framerate) and optional bounds (AutoABRConfig). The API expands
7052
+ * the seed into a CEILING: the standard rungs (2160p, 1440p, 1080p, 720p,
7053
+ * 480p) inside the bounds. Tiers are names; nothing is ever upscaled: each
7054
+ * rung renders at the source scaled into its tier's frame (turned on its
7055
+ * side for a portrait source), never larger than the source, and at most
7056
+ * one tier at or above the source's short side is kept, rendered at the
7057
+ * source's own size (a 1920x800 source: 1080p at 1920x800, 720p at
7058
+ * 1280x534, 480p at 854x356; a 1080x1920 phone video: 1080x1920, 720x1280,
7059
+ * 480x854). Each rung is billed at the smaller of its tier and the tier its
7060
+ * rendered pixels need, never above the picture it carries.
7061
+ * Capped at max_variants by keeping the top and bottom rung. The worker runs
7062
+ * the per-title search once on the top rung, sets every rung's CRF from
7063
+ * it, and drops a rung whose
7064
+ * delivered bitrate would not be meaningfully below the rung above it. It
7065
+ * never adds a rung that is not in the ceiling.
7066
+ *
7067
+ * Billing: the output is quoted at the ceiling and billed for the rungs
7068
+ * actually rendered, at the 1.5x content-aware multiplier, so the bill is
7069
+ * never above the estimate shown once the source has been probed. When the
7070
+ * analysis cannot run (for example a source shorter than 120 seconds), the
7071
+ * whole ceiling is rendered at the quality tier's static CRFs and billed at
7072
+ * 1.0x. Streaming outputs (hls, dash, adaptive) only.
7073
+ *
7074
+ * This is not a convex-hull per-title ladder: rungs are not compared against
7075
+ * each other on quality, and no resolution outside the standard set is ever
7076
+ * produced.
7032
7077
  *
7033
7078
  * @generated from enum value: CONTENT_AWARE_MODE_AUTO_ABR = 2;
7034
7079
  */
7035
7080
  AUTO_ABR = 2
7036
7081
  }
7037
7082
  /**
7038
- * Auto ABR ladder generation constraints.
7039
- *
7040
- * NOT YET ACCEPTED — see ContentAwareConfig. These constraints are validated
7041
- * for shape but never applied, because a request in auto_abr mode is rejected
7042
- * at create.
7083
+ * Bounds for an auto_abr ladder. Only meaningful with mode `auto_abr`; sent
7084
+ * with `per_title` it is refused with `parameter_forbidden`. See
7085
+ * CONTENT_AWARE_MODE_AUTO_ABR for how the bounds shape the ladder.
7043
7086
  *
7044
7087
  * @generated from message transcodely.v1.AutoABRConfig
7045
7088
  */
7046
7089
  declare class AutoABRConfig extends Message<AutoABRConfig> {
7047
7090
  /**
7048
- * Minimum number of variants in the ladder.
7049
- * Default: 2.
7091
+ * Fewest rungs the ladder may be pruned to. Default: 2.
7092
+ *
7093
+ * A ladder can never hold more rungs than the source allows: only one tier
7094
+ * at or above the source's short side is kept, so a 480-line source yields
7095
+ * one rung whatever this says. When pruning would leave fewer rungs than
7096
+ * this, rungs are put back from the bottom of the ladder up. Set it to 1 to
7097
+ * say a single rung is an acceptable result for any source. Must not exceed
7098
+ * max_variants, nor the number of standard rungs between min_resolution and
7099
+ * max_resolution.
7050
7100
  *
7051
7101
  * @generated from field: optional int32 min_variants = 1;
7052
7102
  */
7053
7103
  minVariants?: number;
7054
7104
  /**
7055
- * Maximum number of variants in the ladder.
7056
- * Default: 8.
7105
+ * Most rungs the ladder may hold. A ceiling longer than this keeps its TOP
7106
+ * rung (quality) and its BOTTOM rung (reach) and drops interior rungs from
7107
+ * the highest down: 2160p..480p capped at 3 is 2160p, 720p, 480p. Default:
7108
+ * no cap beyond the standard rungs in range (at most five).
7057
7109
  *
7058
7110
  * @generated from field: optional int32 max_variants = 2;
7059
7111
  */
7060
7112
  maxVariants?: number;
7061
7113
  /**
7062
- * Lowest resolution in the generated ladder.
7114
+ * Lowest rung the ladder may contain. Default: 480p. When the source's short
7115
+ * side is below this, the ladder is one rung: the smallest tier at or above
7116
+ * the source's short side, rendered at the source's own size.
7063
7117
  *
7064
7118
  * @generated from field: transcodely.v1.Resolution min_resolution = 3;
7065
7119
  */
7066
7120
  minResolution: Resolution;
7067
7121
  /**
7068
- * Highest resolution in the generated ladder.
7122
+ * Highest rung the ladder may contain. Default: 1080p, NOT the highest the
7123
+ * source allows — 1440p and 2160p rungs must be asked for here. The worker
7124
+ * that renders the job is sized from this ceiling before the source is
7125
+ * known, and a default that sized every job for 4K would bill nobody more
7126
+ * but waste a large machine on most sources. 4320p is accepted and behaves
7127
+ * as 2160p, the largest standard rung.
7069
7128
  *
7070
7129
  * @generated from field: transcodely.v1.Resolution max_resolution = 4;
7071
7130
  */
@@ -7088,14 +7147,28 @@ declare class AutoABRConfig extends Message<AutoABRConfig> {
7088
7147
  * unchanged — same renditions, same resolutions — so the price quoted at create
7089
7148
  * still holds, with the 1.5x per-title multiplier applied.
7090
7149
  *
7091
- * Three requests are refused at create:
7092
- * - `auto_abr` mode (`parameter_unsupported`) — not available yet;
7150
+ * In `auto_abr` mode the output declares one seed rendition and the API
7151
+ * expands it into a ceiling of standard rungs; see CONTENT_AWARE_MODE_AUTO_ABR.
7152
+ *
7153
+ * Requests refused at create, for `per_title`:
7093
7154
  * - an output with no video renditions, or one whose every video rendition is
7094
7155
  * pinned to an explicit bitrate (`parameter_incompatible`) — a pinned
7095
7156
  * rendition ignores CRF, so the search would change nothing while still
7096
7157
  * being billed;
7097
- * - a source shorter than 120 seconds, refused at probe with
7098
- * `per_title_source_too_short` once the input has been measured.
7158
+ * - an `auto_abr` block (`parameter_forbidden`).
7159
+ *
7160
+ * For `auto_abr`: a non-streaming output (`parameter_unsupported`); more or
7161
+ * fewer than one video rendition (`parameter_incompatible`); a seed that
7162
+ * names a resolution, width or height (`parameter_forbidden`) or a bitrate
7163
+ * (`parameter_incompatible`); inverted bounds (`parameter_invalid`); and a
7164
+ * min_variants above the standard rungs in range (`parameter_out_of_range`).
7165
+ *
7166
+ * Either mode, on an output with any `hdr.mode: tonemap` variant
7167
+ * (`parameter_forbidden` on `outputs[i].content_aware`): the search would score
7168
+ * the HDR source, not the tone-mapped picture that is delivered.
7169
+ *
7170
+ * A source shorter than 120 seconds is refused at probe with
7171
+ * `per_title_source_too_short` once the input has been measured.
7099
7172
  *
7100
7173
  * What the search decided is reported back on OutputReport.content_aware.
7101
7174
  *
@@ -7103,8 +7176,7 @@ declare class AutoABRConfig extends Message<AutoABRConfig> {
7103
7176
  */
7104
7177
  declare class ContentAwareConfig extends Message<ContentAwareConfig> {
7105
7178
  /**
7106
- * Encoding mode (required). `per_title` is accepted; `auto_abr` is rejected
7107
- * at create.
7179
+ * Encoding mode (required): `per_title` or `auto_abr`.
7108
7180
  *
7109
7181
  * @generated from field: transcodely.v1.ContentAwareMode mode = 1;
7110
7182
  */
@@ -7125,8 +7197,8 @@ declare class ContentAwareConfig extends Message<ContentAwareConfig> {
7125
7197
  */
7126
7198
  vmafTarget?: number;
7127
7199
  /**
7128
- * Auto ABR constraints (only for auto_abr mode). NOT YET ACCEPTED — an
7129
- * auto_abr request is rejected at create whatever these say.
7200
+ * Ladder bounds, only for `auto_abr` mode. Refused with
7201
+ * `parameter_forbidden` on `per_title`.
7130
7202
  *
7131
7203
  * @generated from field: optional transcodely.v1.AutoABRConfig auto_abr = 3;
7132
7204
  */
@@ -9522,7 +9594,9 @@ declare class OutputSpec extends Message<OutputSpec> {
9522
9594
  * Enables per-title encoding, which tunes this output's CRF to the source
9523
9595
  * rather than to its quality tier. Requires at least one video rendition that
9524
9596
  * is not pinned to an explicit bitrate, and a source of at least 120 seconds.
9525
- * `auto_abr` mode is not accepted yet.
9597
+ * `auto_abr` mode (choose which rungs of a standard ladder to render, for
9598
+ * streaming outputs) is defined but not accepted yet: it is rejected with
9599
+ * `parameter_unsupported`.
9526
9600
  *
9527
9601
  * @generated from field: optional transcodely.v1.ContentAwareConfig content_aware = 13;
9528
9602
  */
@@ -9531,6 +9605,10 @@ declare class OutputSpec extends Message<OutputSpec> {
9531
9605
  * Encoding mode: "fixed" (default, static CRF) or "auto" (input-aware constrained CRF).
9532
9606
  * In "auto" mode, the worker caps each variant's bitrate based on the input's bitrate
9533
9607
  * and resolution ratio, preventing output from exceeding the input's quality ceiling.
9608
+ * "auto" also skips any ABR rung larger than the source instead of upscaling it.
9609
+ * A skipped rung is reported with status "skipped" and is not billed.
9610
+ * Outputs created since 2026-10-27 echo the resolved mode on responses (unset
9611
+ * resolves to "fixed"). Outputs created before then omit it: their mode was not stored.
9534
9612
  *
9535
9613
  * @generated from field: optional string encoding_mode = 14;
9536
9614
  */
@@ -9761,7 +9839,10 @@ declare class VariantPricingSnapshot extends Message<VariantPricingSnapshot> {
9761
9839
  */
9762
9840
  actualCost?: number;
9763
9841
  /**
9764
- * Variant encoding status: "pending", "processing", "completed", "failed".
9842
+ * Variant encoding status: "pending", "processing", "completed", "failed",
9843
+ * "canceled", or "skipped". A rung is "skipped" when `encoding_mode: auto`
9844
+ * left it unencoded because it would have upscaled the source. A skipped
9845
+ * rung has actual_cost 0 and is not billed.
9765
9846
  *
9766
9847
  * @generated from field: string status = 20;
9767
9848
  */
@@ -13439,6 +13520,13 @@ declare class UsageSummary extends Message<UsageSummary> {
13439
13520
  */
13440
13521
  storageGbAvg: number;
13441
13522
  /**
13523
+ * Storage cost of the period so far, as your invoice will carry it. Each
13524
+ * day is one GB-day: the day's stored bytes at the day's monthly price
13525
+ * divided by the days in that month. Days already billed are reported at
13526
+ * the rate they were billed at, so a later price or rate-card change never
13527
+ * re-prices them; the remaining days (see hosting_estimated_from) are
13528
+ * estimated the same way at your current rate.
13529
+ *
13442
13530
  * @generated from field: double storage_cost = 11;
13443
13531
  */
13444
13532
  storageCost: number;
@@ -13453,6 +13541,10 @@ declare class UsageSummary extends Message<UsageSummary> {
13453
13541
  */
13454
13542
  egressGb: number;
13455
13543
  /**
13544
+ * Delivery cost of the period so far, as your invoice will carry it:
13545
+ * billed delivery at the rate it was billed at, delivery not billed yet
13546
+ * estimated at your current rate.
13547
+ *
13456
13548
  * @generated from field: double egress_cost = 21;
13457
13549
  */
13458
13550
  egressCost: number;
@@ -13472,6 +13564,18 @@ declare class UsageSummary extends Message<UsageSummary> {
13472
13564
  * @generated from field: string currency = 31;
13473
13565
  */
13474
13566
  currency: string;
13567
+ /**
13568
+ * First day (YYYY-MM-DD, UTC) whose storage or delivery cost is an
13569
+ * estimate rather than billed usage. Hosting is billed daily, through the
13570
+ * previous day, so while you store or deliver video the current period has
13571
+ * an estimated tail, and the estimate turns into the billed amount as each
13572
+ * day is billed. Empty when no day with hosting usage in the period is
13573
+ * still unbilled, which is when storage_cost and egress_cost match your
13574
+ * invoice (to within the sub-cent remainder carried to the next charge).
13575
+ *
13576
+ * @generated from field: string hosting_estimated_from = 32;
13577
+ */
13578
+ hostingEstimatedFrom: string;
13475
13579
  /**
13476
13580
  * Per-day usage breakdown for the billing period identified by
13477
13581
  * billing_month, oldest day first. With a billing anchor day other than 1,
@@ -18005,7 +18109,7 @@ interface SerializeOptions {
18005
18109
  declare function toWireJson<T extends Message<T>>(msg: T, opts?: SerializeOptions): JsonValue;
18006
18110
 
18007
18111
  /** SDK version. Bumped by release-please from package.json on each tag. */
18008
- declare const SDK_VERSION = "0.3.14";
18112
+ declare const SDK_VERSION = "0.3.16";
18009
18113
  /**
18010
18114
  * API version this SDK release is pinned to. Sent on every request as
18011
18115
  * `Transcodely-Version`. Customers can override per-client via the
package/dist/index.mjs CHANGED
@@ -1916,9 +1916,10 @@ var AutoProfileDefaults = class _AutoProfileDefaults extends Message {
1916
1916
  */
1917
1917
  qualityTier;
1918
1918
  /**
1919
- * Encoding mode: "fixed" (default, static CRF) or "auto" (input-aware constrained CRF).
1919
+ * Encoding mode: "auto" (default, input-aware constrained CRF) or "fixed" (static CRF).
1920
1920
  * In "auto" mode, the worker caps each variant's bitrate based on the input's bitrate
1921
- * and resolution ratio, preventing output from exceeding the input's quality ceiling.
1921
+ * and resolution ratio, preventing output from exceeding the input's quality ceiling,
1922
+ * and skips any ladder rung larger than the source instead of upscaling it.
1922
1923
  *
1923
1924
  * @generated from field: optional string encoding_mode = 5;
1924
1925
  */
@@ -7301,7 +7302,11 @@ proto3.util.setEnumType(ToneMapping, "transcodely.v1.ToneMapping", [
7301
7302
  ]);
7302
7303
  var HDRConfig = class _HDRConfig extends Message {
7303
7304
  /**
7304
- * Target HDR format (required for passthrough and force modes).
7305
+ * Target HDR format (required for passthrough and force modes). In tonemap
7306
+ * mode it names the HDR format of the source.
7307
+ * `dolby_vision_5` and `dolby_vision_8` are refused at create until the
7308
+ * worker produces Dolby Vision output; a refused request creates no job and
7309
+ * is neither quoted nor billed.
7305
7310
  *
7306
7311
  * @generated from field: transcodely.v1.HDRFormat format = 1;
7307
7312
  */
@@ -7313,14 +7318,17 @@ var HDRConfig = class _HDRConfig extends Message {
7313
7318
  */
7314
7319
  mode = 0 /* HDR_MODE_UNSPECIFIED */;
7315
7320
  /**
7316
- * Tone mapping algorithm (for tonemap mode).
7321
+ * Tone mapping algorithm (tonemap mode only). Unset means `bt2390`, which,
7322
+ * like an explicit `bt2390`, is approximated with `hable` on CPU.
7317
7323
  *
7318
7324
  * @generated from field: transcodely.v1.ToneMapping tone_mapping = 3;
7319
7325
  */
7320
7326
  toneMapping = 0 /* UNSPECIFIED */;
7321
7327
  /**
7322
- * Target peak brightness in nits (for tonemap and force modes).
7323
- * Range: 100-10000.
7328
+ * Target peak brightness in nits. Range: 100-10000. Applies to HDR output
7329
+ * only: refused with `parameter_forbidden` in tonemap mode, whose SDR target
7330
+ * has a fixed peak. Accepted in passthrough and force modes, where the
7331
+ * encoder does not currently read it, so it has no effect on the output.
7324
7332
  *
7325
7333
  * @generated from field: optional int32 target_peak_nits = 4;
7326
7334
  */
@@ -7340,7 +7348,9 @@ var HDRConfig = class _HDRConfig extends Message {
7340
7348
  */
7341
7349
  contentLightLevel;
7342
7350
  /**
7343
- * Dolby Vision RPU file URL (for DV metadata injection).
7351
+ * Dolby Vision RPU file URL. Only accepted with a `dolby_vision_*` format,
7352
+ * which is refused at create until the worker produces Dolby Vision output,
7353
+ * so this field is currently unreachable.
7344
7354
  *
7345
7355
  * @generated from field: optional string rpu_url = 7;
7346
7356
  */
@@ -9050,27 +9060,43 @@ proto3.util.setEnumType(ContentAwareMode, "transcodely.v1.ContentAwareMode", [
9050
9060
  ]);
9051
9061
  var AutoABRConfig = class _AutoABRConfig extends Message {
9052
9062
  /**
9053
- * Minimum number of variants in the ladder.
9054
- * Default: 2.
9063
+ * Fewest rungs the ladder may be pruned to. Default: 2.
9064
+ *
9065
+ * A ladder can never hold more rungs than the source allows: only one tier
9066
+ * at or above the source's short side is kept, so a 480-line source yields
9067
+ * one rung whatever this says. When pruning would leave fewer rungs than
9068
+ * this, rungs are put back from the bottom of the ladder up. Set it to 1 to
9069
+ * say a single rung is an acceptable result for any source. Must not exceed
9070
+ * max_variants, nor the number of standard rungs between min_resolution and
9071
+ * max_resolution.
9055
9072
  *
9056
9073
  * @generated from field: optional int32 min_variants = 1;
9057
9074
  */
9058
9075
  minVariants;
9059
9076
  /**
9060
- * Maximum number of variants in the ladder.
9061
- * Default: 8.
9077
+ * Most rungs the ladder may hold. A ceiling longer than this keeps its TOP
9078
+ * rung (quality) and its BOTTOM rung (reach) and drops interior rungs from
9079
+ * the highest down: 2160p..480p capped at 3 is 2160p, 720p, 480p. Default:
9080
+ * no cap beyond the standard rungs in range (at most five).
9062
9081
  *
9063
9082
  * @generated from field: optional int32 max_variants = 2;
9064
9083
  */
9065
9084
  maxVariants;
9066
9085
  /**
9067
- * Lowest resolution in the generated ladder.
9086
+ * Lowest rung the ladder may contain. Default: 480p. When the source's short
9087
+ * side is below this, the ladder is one rung: the smallest tier at or above
9088
+ * the source's short side, rendered at the source's own size.
9068
9089
  *
9069
9090
  * @generated from field: transcodely.v1.Resolution min_resolution = 3;
9070
9091
  */
9071
9092
  minResolution = 0 /* RESOLUTION_UNSPECIFIED */;
9072
9093
  /**
9073
- * Highest resolution in the generated ladder.
9094
+ * Highest rung the ladder may contain. Default: 1080p, NOT the highest the
9095
+ * source allows — 1440p and 2160p rungs must be asked for here. The worker
9096
+ * that renders the job is sized from this ceiling before the source is
9097
+ * known, and a default that sized every job for 4K would bill nobody more
9098
+ * but waste a large machine on most sources. 4320p is accepted and behaves
9099
+ * as 2160p, the largest standard rung.
9074
9100
  *
9075
9101
  * @generated from field: transcodely.v1.Resolution max_resolution = 4;
9076
9102
  */
@@ -9102,8 +9128,7 @@ var AutoABRConfig = class _AutoABRConfig extends Message {
9102
9128
  };
9103
9129
  var ContentAwareConfig = class _ContentAwareConfig extends Message {
9104
9130
  /**
9105
- * Encoding mode (required). `per_title` is accepted; `auto_abr` is rejected
9106
- * at create.
9131
+ * Encoding mode (required): `per_title` or `auto_abr`.
9107
9132
  *
9108
9133
  * @generated from field: transcodely.v1.ContentAwareMode mode = 1;
9109
9134
  */
@@ -9124,8 +9149,8 @@ var ContentAwareConfig = class _ContentAwareConfig extends Message {
9124
9149
  */
9125
9150
  vmafTarget;
9126
9151
  /**
9127
- * Auto ABR constraints (only for auto_abr mode). NOT YET ACCEPTED — an
9128
- * auto_abr request is rejected at create whatever these say.
9152
+ * Ladder bounds, only for `auto_abr` mode. Refused with
9153
+ * `parameter_forbidden` on `per_title`.
9129
9154
  *
9130
9155
  * @generated from field: optional transcodely.v1.AutoABRConfig auto_abr = 3;
9131
9156
  */
@@ -12068,7 +12093,9 @@ var OutputSpec = class _OutputSpec extends Message {
12068
12093
  * Enables per-title encoding, which tunes this output's CRF to the source
12069
12094
  * rather than to its quality tier. Requires at least one video rendition that
12070
12095
  * is not pinned to an explicit bitrate, and a source of at least 120 seconds.
12071
- * `auto_abr` mode is not accepted yet.
12096
+ * `auto_abr` mode (choose which rungs of a standard ladder to render, for
12097
+ * streaming outputs) is defined but not accepted yet: it is rejected with
12098
+ * `parameter_unsupported`.
12072
12099
  *
12073
12100
  * @generated from field: optional transcodely.v1.ContentAwareConfig content_aware = 13;
12074
12101
  */
@@ -12077,6 +12104,10 @@ var OutputSpec = class _OutputSpec extends Message {
12077
12104
  * Encoding mode: "fixed" (default, static CRF) or "auto" (input-aware constrained CRF).
12078
12105
  * In "auto" mode, the worker caps each variant's bitrate based on the input's bitrate
12079
12106
  * and resolution ratio, preventing output from exceeding the input's quality ceiling.
12107
+ * "auto" also skips any ABR rung larger than the source instead of upscaling it.
12108
+ * A skipped rung is reported with status "skipped" and is not billed.
12109
+ * Outputs created since 2026-10-27 echo the resolved mode on responses (unset
12110
+ * resolves to "fixed"). Outputs created before then omit it: their mode was not stored.
12080
12111
  *
12081
12112
  * @generated from field: optional string encoding_mode = 14;
12082
12113
  */
@@ -12385,7 +12416,10 @@ var VariantPricingSnapshot = class _VariantPricingSnapshot extends Message {
12385
12416
  */
12386
12417
  actualCost;
12387
12418
  /**
12388
- * Variant encoding status: "pending", "processing", "completed", "failed".
12419
+ * Variant encoding status: "pending", "processing", "completed", "failed",
12420
+ * "canceled", or "skipped". A rung is "skipped" when `encoding_mode: auto`
12421
+ * left it unencoded because it would have upscaled the source. A skipped
12422
+ * rung has actual_cost 0 and is not billed.
12389
12423
  *
12390
12424
  * @generated from field: string status = 20;
12391
12425
  */
@@ -17324,6 +17358,13 @@ var UsageSummary = class _UsageSummary extends Message {
17324
17358
  */
17325
17359
  storageGbAvg = 0;
17326
17360
  /**
17361
+ * Storage cost of the period so far, as your invoice will carry it. Each
17362
+ * day is one GB-day: the day's stored bytes at the day's monthly price
17363
+ * divided by the days in that month. Days already billed are reported at
17364
+ * the rate they were billed at, so a later price or rate-card change never
17365
+ * re-prices them; the remaining days (see hosting_estimated_from) are
17366
+ * estimated the same way at your current rate.
17367
+ *
17327
17368
  * @generated from field: double storage_cost = 11;
17328
17369
  */
17329
17370
  storageCost = 0;
@@ -17338,6 +17379,10 @@ var UsageSummary = class _UsageSummary extends Message {
17338
17379
  */
17339
17380
  egressGb = 0;
17340
17381
  /**
17382
+ * Delivery cost of the period so far, as your invoice will carry it:
17383
+ * billed delivery at the rate it was billed at, delivery not billed yet
17384
+ * estimated at your current rate.
17385
+ *
17341
17386
  * @generated from field: double egress_cost = 21;
17342
17387
  */
17343
17388
  egressCost = 0;
@@ -17357,6 +17402,18 @@ var UsageSummary = class _UsageSummary extends Message {
17357
17402
  * @generated from field: string currency = 31;
17358
17403
  */
17359
17404
  currency = "";
17405
+ /**
17406
+ * First day (YYYY-MM-DD, UTC) whose storage or delivery cost is an
17407
+ * estimate rather than billed usage. Hosting is billed daily, through the
17408
+ * previous day, so while you store or deliver video the current period has
17409
+ * an estimated tail, and the estimate turns into the billed amount as each
17410
+ * day is billed. Empty when no day with hosting usage in the period is
17411
+ * still unbilled, which is when storage_cost and egress_cost match your
17412
+ * invoice (to within the sub-cent remainder carried to the next charge).
17413
+ *
17414
+ * @generated from field: string hosting_estimated_from = 32;
17415
+ */
17416
+ hostingEstimatedFrom = "";
17360
17417
  /**
17361
17418
  * Per-day usage breakdown for the billing period identified by
17362
17419
  * billing_month, oldest day first. With a billing anchor day other than 1,
@@ -17461,6 +17518,13 @@ var UsageSummary = class _UsageSummary extends Message {
17461
17518
  T: 9
17462
17519
  /* ScalarType.STRING */
17463
17520
  },
17521
+ {
17522
+ no: 32,
17523
+ name: "hosting_estimated_from",
17524
+ kind: "scalar",
17525
+ T: 9
17526
+ /* ScalarType.STRING */
17527
+ },
17464
17528
  { no: 40, name: "daily", kind: "message", T: DailyUsage, repeated: true }
17465
17529
  ]);
17466
17530
  static fromBinary(bytes, options) {
@@ -20299,9 +20363,9 @@ var JobService = {
20299
20363
 
20300
20364
  // src/errors.ts
20301
20365
  var TranscodelyError = class extends Error {
20302
- /** Server-side error code (e.g. "JOB_NOT_FOUND"). */
20366
+ /** Server-side error code (e.g. "validation_error"). */
20303
20367
  code;
20304
- /** Top-level error type (e.g. "validation_error"). */
20368
+ /** Connect error code (e.g. "invalid_argument"). */
20305
20369
  type;
20306
20370
  /** Field-level validation violations. */
20307
20371
  errors;
@@ -20399,7 +20463,7 @@ function backoff(attempt) {
20399
20463
  }
20400
20464
 
20401
20465
  // src/version.ts
20402
- var SDK_VERSION = "0.3.14";
20466
+ var SDK_VERSION = "0.3.16";
20403
20467
  var API_VERSION = "2026-05-03";
20404
20468
  var DEFAULT_BASE_URL = "https://api.transcodely.com";
20405
20469
 
@@ -25224,7 +25288,7 @@ function mapHttpError({ status, body, headers }) {
25224
25288
  const requestId = headers.get("x-request-id") ?? void 0;
25225
25289
  const parsed = parseBody(body);
25226
25290
  const message = parsed.message ?? `HTTP ${status}`;
25227
- const detail = parsed.details?.[0]?.debug;
25291
+ const detail = parsed.details?.find(isErrorDetails)?.debug;
25228
25292
  const code = detail?.code;
25229
25293
  const violations = detail?.field_violations ?? detail?.fieldViolations ?? [];
25230
25294
  const opts = {
@@ -25255,6 +25319,10 @@ function connectionError(cause, message) {
25255
25319
  const msg = (cause instanceof Error ? cause.message : "network request failed");
25256
25320
  return new APIConnectionError({ message: msg, cause });
25257
25321
  }
25322
+ var ERROR_DETAILS_TYPE = "transcodely.v1.ErrorDetails";
25323
+ function isErrorDetails(d) {
25324
+ return d.type === void 0 || d.type === ERROR_DETAILS_TYPE || d.type.endsWith(`/${ERROR_DETAILS_TYPE}`);
25325
+ }
25258
25326
  function parseBody(body) {
25259
25327
  if (typeof body === "string") {
25260
25328
  try {