codai-sdk 0.69.0 → 0.70.0

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
@@ -1,4 +1,3 @@
1
- //#region src/generated/gateway.d.ts
2
1
  /**
3
2
  * This file was auto-generated by openapi-typescript.
4
3
  * Do not make direct changes to the file.
@@ -5949,6 +5948,124 @@ type paths$1 = {
5949
5948
  readonly patch?: never;
5950
5949
  readonly trace?: never;
5951
5950
  };
5951
+ readonly '/v1/studio/music-room': {
5952
+ readonly parameters: {
5953
+ readonly query?: never;
5954
+ readonly header?: never;
5955
+ readonly path?: never;
5956
+ readonly cookie?: never;
5957
+ };
5958
+ /**
5959
+ * List Music Room songs
5960
+ * @description Your Music Room songs, newest first. Page with `before` (the `created_at` of the last item) while `has_more` is true.
5961
+ */
5962
+ readonly get: operations$1['listStudioMusicRooms'];
5963
+ readonly put?: never;
5964
+ /**
5965
+ * Start a Music Room song
5966
+ * @description A team of role agents (producer, composer, lyricist, arranger, session players, vocal producer, mix and mastering
5967
+ * engineers, critic, rights) writes, plays, sings and mixes one song that should sound played by people. Agents
5968
+ * write symbolic parts on a beat grid, deterministic code humanises them, real sampled instruments render the
5969
+ * stems, ACE-Step adds vocals, and a critic asks for at most two rounds of targeted fixes. The song lives in an
5970
+ * editable `audio` creative. The workflow stops at three gates (`plan`, `demo`, `final`) with `status: waiting`
5971
+ * until you answer with `POST /v1/studio/music-room/{id}/choose`; `auto: true` skips the gates. Poll
5972
+ * `GET /v1/studio/music-room/{id}`. Within the monthly plan quota the song is free (see
5973
+ * `GET /v1/studio/music-room/quota`); beyond it every step is quoted and held on your wallet. `budget_micro_usd`
5974
+ * (default 4,000,000 = $4, max $20) caps one song. At most 2 songs run at once per user (429
5975
+ * `too_many_music_rooms`). Supports `Idempotency-Key`.
5976
+ */
5977
+ readonly post: operations$1['createStudioMusicRoom'];
5978
+ readonly delete?: never;
5979
+ readonly options?: never;
5980
+ readonly head?: never;
5981
+ readonly patch?: never;
5982
+ readonly trace?: never;
5983
+ };
5984
+ readonly '/v1/studio/music-room/{id}': {
5985
+ readonly parameters: {
5986
+ readonly query?: never;
5987
+ readonly header?: never;
5988
+ readonly path?: never;
5989
+ readonly cookie?: never;
5990
+ };
5991
+ /**
5992
+ * Retrieve a Music Room song
5993
+ * @description The song state; reading it advances the workflow like a poll (a gate waits for your answer). Unknown or foreign ids are 404.
5994
+ */
5995
+ readonly get: operations$1['getStudioMusicRoom'];
5996
+ readonly put?: never;
5997
+ readonly post?: never;
5998
+ readonly delete?: never;
5999
+ readonly options?: never;
6000
+ readonly head?: never;
6001
+ readonly patch?: never;
6002
+ readonly trace?: never;
6003
+ };
6004
+ readonly '/v1/studio/music-room/{id}/choose': {
6005
+ readonly parameters: {
6006
+ readonly query?: never;
6007
+ readonly header?: never;
6008
+ readonly path?: never;
6009
+ readonly cookie?: never;
6010
+ };
6011
+ readonly get?: never;
6012
+ readonly put?: never;
6013
+ /**
6014
+ * Answer a Music Room gate
6015
+ * @description Answer the gate the song waits at: pick one of the plan variants (`{gate: 'plan', variant}`), approve the
6016
+ * arranged demo (`{gate: 'demo', approve: true}`) or approve the final mix (`{gate: 'final', approve: true}`). The
6017
+ * workflow then continues. Answering a gate the song is not at is 409 `not_at_gate`.
6018
+ */
6019
+ readonly post: operations$1['chooseStudioMusicRoom'];
6020
+ readonly delete?: never;
6021
+ readonly options?: never;
6022
+ readonly head?: never;
6023
+ readonly patch?: never;
6024
+ readonly trace?: never;
6025
+ };
6026
+ readonly '/v1/studio/music-room/{id}/direct': {
6027
+ readonly parameters: {
6028
+ readonly query?: never;
6029
+ readonly header?: never;
6030
+ readonly path?: never;
6031
+ readonly cookie?: never;
6032
+ };
6033
+ readonly get?: never;
6034
+ readonly put?: never;
6035
+ /**
6036
+ * Direct one Music Room player
6037
+ * @description Talk to one player of the team (`role`, optionally one `section_id`): the player re-plays that part following
6038
+ * your `direction` (up to 500 characters) and the demo is re-rendered. Only while the song waits at the demo or
6039
+ * final gate (409 `not_at_gate` otherwise). The extra turn and render count against `budget_micro_usd`. Supports
6040
+ * `Idempotency-Key`.
6041
+ */
6042
+ readonly post: operations$1['directStudioMusicRoom'];
6043
+ readonly delete?: never;
6044
+ readonly options?: never;
6045
+ readonly head?: never;
6046
+ readonly patch?: never;
6047
+ readonly trace?: never;
6048
+ };
6049
+ readonly '/v1/studio/music-room/quota': {
6050
+ readonly parameters: {
6051
+ readonly query?: never;
6052
+ readonly header?: never;
6053
+ readonly path?: never;
6054
+ readonly cookie?: never;
6055
+ };
6056
+ /**
6057
+ * Music Room quota
6058
+ * @description Songs included in your plan this calendar month (UTC), how many you used and when the period ends. Songs beyond the quota are billed to your wallet. Free.
6059
+ */
6060
+ readonly get: operations$1['getStudioMusicRoomQuota'];
6061
+ readonly put?: never;
6062
+ readonly post?: never;
6063
+ readonly delete?: never;
6064
+ readonly options?: never;
6065
+ readonly head?: never;
6066
+ readonly patch?: never;
6067
+ readonly trace?: never;
6068
+ };
5952
6069
  readonly '/v1/studio/previews/{id}': {
5953
6070
  readonly parameters: {
5954
6071
  readonly query?: never;
@@ -6330,6 +6447,41 @@ type paths$1 = {
6330
6447
  readonly patch?: never;
6331
6448
  readonly trace?: never;
6332
6449
  };
6450
+ readonly '/v1/studio/voices/{id}/singing-consent': {
6451
+ readonly parameters: {
6452
+ readonly query?: never;
6453
+ readonly header?: never;
6454
+ readonly path: {
6455
+ readonly id: string;
6456
+ };
6457
+ readonly cookie?: never;
6458
+ };
6459
+ readonly get?: never;
6460
+ readonly put?: never;
6461
+ /**
6462
+ * Add the singing consent to a custom voice (beta)
6463
+ * @description Voice passport (beta): lets your OWN custom voice sing in your Music Room songs. A separate, explicit and
6464
+ * revocable consent on top of the voice-creation consent. Flow: `POST /v1/studio/voices/sessions` with
6465
+ * `purpose: "singing"`, `voice_id` and the singing consent text version → record the returned singing
6466
+ * statement (`kind: consent`, checked against the statement like at voice creation) and a 3-10 s sung sample
6467
+ * (`kind: reference`) in the app → this call with the session id. The consent proof (statement, versions,
6468
+ * KMS-sealed recording) is stored separately from the voice-creation consent; the sung sample is stored KMS-sealed
6469
+ * and used only as the timbre reference of your songs. The result approximates your timbre; it is not a faithful
6470
+ * clone. Available only where voice cloning is enabled for your account. Free.
6471
+ */
6472
+ readonly post: operations$1['addStudioVoiceSingingConsent'];
6473
+ /**
6474
+ * Revoke the singing consent of a custom voice
6475
+ * @description Revokes ONLY the singing purpose: the sung sample is deleted at once, songs stop using the voice
6476
+ * (also a song already in progress, from its next sung section), the voice keeps working for narration. The
6477
+ * consent proof is kept for 3 years for the audit trail. Deleting the voice revokes everything. Idempotent. Free.
6478
+ */
6479
+ readonly delete: operations$1['revokeStudioVoiceSingingConsent'];
6480
+ readonly options?: never;
6481
+ readonly head?: never;
6482
+ readonly patch?: never;
6483
+ readonly trace?: never;
6484
+ };
6333
6485
  readonly '/v1/systemone': {
6334
6486
  readonly parameters: {
6335
6487
  readonly query?: never;
@@ -13589,6 +13741,209 @@ type components$1 = {
13589
13741
  readonly input_tokens: number;
13590
13742
  readonly output_tokens: number;
13591
13743
  };
13744
+ /**
13745
+ * Music Room role
13746
+ * @description A member of the Music Room team.
13747
+ * @enum {string}
13748
+ */
13749
+ readonly MusicRole: 'producer' | 'composer' | 'lyricist' | 'arranger' | 'drums' | 'bass' | 'guitar' | 'keys' | 'strings' | 'brass' | 'winds' | 'balkan_lead' | 'balkan_rhythm' | 'percussion' | 'synth' | 'vocal_producer' | 'sound_designer' | 'mix_engineer' | 'mastering_engineer' | 'critic' | 'rights';
13750
+ /** Music Room song */
13751
+ readonly MusicRoom: {
13752
+ readonly brief: string;
13753
+ readonly budget_micro_usd: string;
13754
+ /** @description Melody similarity against the reference corpus. */
13755
+ readonly copy_risk: {
13756
+ readonly matches: readonly {
13757
+ readonly id?: string;
13758
+ readonly score?: number;
13759
+ readonly title?: string;
13760
+ }[];
13761
+ readonly max_score: number;
13762
+ } | null;
13763
+ /** Format: date-time */
13764
+ readonly created_at: string;
13765
+ /** @description The editable audio creative holding the song. */
13766
+ readonly creative_id: string | null;
13767
+ /** @description Credit lines to publish with the song (CC-BY sample libraries, `Built with Llama`…). */
13768
+ readonly credits: readonly string[];
13769
+ /** @description The critic's last review. */
13770
+ readonly critique: {
13771
+ readonly issues: readonly {
13772
+ readonly fix: string;
13773
+ readonly problem: string;
13774
+ readonly role: components$1['schemas']['MusicRole'];
13775
+ readonly section_id?: string | null;
13776
+ }[];
13777
+ readonly round: number;
13778
+ /** @description Scores from 0 to 10 per aspect (`groove`, `harmony`, `melody`, `arrangement`, `mix`, `humanness`, `genre_fit`). */
13779
+ readonly scores: {
13780
+ readonly [key: string]: number;
13781
+ };
13782
+ /** @enum {string} */
13783
+ readonly verdict: 'ship' | 'revise';
13784
+ } | null;
13785
+ readonly demo_asset_id: string | null;
13786
+ readonly error: string | null;
13787
+ readonly final_asset_id: string | null;
13788
+ /** @description The gate the song waits at (`null` when it is not waiting). */
13789
+ readonly gate: {
13790
+ /** @enum {string} */
13791
+ readonly kind: 'plan' | 'demo' | 'final';
13792
+ /** Format: date-time */
13793
+ readonly since: string;
13794
+ /** @description Plan gate only: up to 3 plan variants to choose from. */
13795
+ readonly variants?: readonly components$1['schemas']['MusicRoomPlanVariant'][];
13796
+ } | null;
13797
+ readonly genre_id: string | null;
13798
+ /** Format: uuid */
13799
+ readonly id: string;
13800
+ /** @enum {string} */
13801
+ readonly language: 'ro' | 'en';
13802
+ /** @enum {string} */
13803
+ readonly object: 'studio.music_room';
13804
+ /**
13805
+ * @description plan → gate_plan → compose → lyrics → arrange → parts → render_demo → gate_demo → vocals → mix → master → critique → gate_final → ready | failed.
13806
+ * @enum {string}
13807
+ */
13808
+ readonly phase: 'plan' | 'gate_plan' | 'compose' | 'lyrics' | 'arrange' | 'parts' | 'render_demo' | 'gate_demo' | 'vocals' | 'mix' | 'master' | 'critique' | 'gate_final' | 'ready' | 'failed';
13809
+ readonly quota: {
13810
+ readonly included: number;
13811
+ readonly used: number;
13812
+ /** @description The song is covered by the monthly plan quota (free). */
13813
+ readonly within: boolean;
13814
+ };
13815
+ /** @description Symbolic AI-tell metric: 0 sounds human, 1 sounds robotic. */
13816
+ readonly robot_score: number | null;
13817
+ readonly spent_micro_usd: string;
13818
+ /**
13819
+ * @description `running` while the team works, `waiting` at a gate, then `succeeded` or `failed`.
13820
+ * @enum {string}
13821
+ */
13822
+ readonly status: 'running' | 'waiting' | 'succeeded' | 'failed';
13823
+ readonly stems_asset_ids: readonly string[];
13824
+ readonly team: readonly {
13825
+ readonly instrument_id?: string | null;
13826
+ readonly name: string;
13827
+ readonly rationale?: string | null;
13828
+ readonly role: components$1['schemas']['MusicRole'];
13829
+ /** @enum {string} */
13830
+ readonly status: 'done' | 'playing' | 'waiting';
13831
+ readonly track_id?: string | null;
13832
+ }[];
13833
+ readonly title: string | null;
13834
+ /** @description Non-fatal notes. Voice passport values: `voice_passport_beta` (sung with your voice, beta: approximates your timbre), `voice_passport_needs_singing_consent` (the voice has no active singing consent, or it was revoked during the song), `voice_passport_not_found` (not one of your active voices), `voice_passport_unavailable` (voice cloning is not enabled for your account, or the voice is paused), `voice_passport_lyrics_refused` (the lyrics failed the voice-safety text check, so the passport was not used). Others: `artist_reference_removed: N`, `vocal_asr_check_unavailable`, `critic_text_only`, `<step>_skipped: <reason>`. */
13835
+ readonly warnings: readonly string[];
13836
+ };
13837
+ /**
13838
+ * Music Room gate answer
13839
+ * @description The answer to the gate the song waits at.
13840
+ */
13841
+ readonly MusicRoomChoose: {
13842
+ /** @enum {string} */
13843
+ readonly gate: 'plan';
13844
+ /** @description Index of the chosen plan variant. */
13845
+ readonly variant: number;
13846
+ } | {
13847
+ /** @enum {boolean} */
13848
+ readonly approve: true;
13849
+ /** @enum {string} */
13850
+ readonly gate: 'demo';
13851
+ } | {
13852
+ /** @enum {boolean} */
13853
+ readonly approve: true;
13854
+ /** @enum {string} */
13855
+ readonly gate: 'final';
13856
+ };
13857
+ /** Music Room request */
13858
+ readonly MusicRoomCreate: {
13859
+ /**
13860
+ * @description Skip the three gates (plan variant 0, demo and final approved).
13861
+ * @default false
13862
+ */
13863
+ readonly auto?: boolean;
13864
+ /** @description What the song is for and how it should feel: occasion, mood, story, audience (10–2,000 characters; no artist names). */
13865
+ readonly brief: string;
13866
+ /**
13867
+ * @description Spending cap for one song beyond the plan quota, in micro-USD (default 4,000,000 = $4, max 20,000,000).
13868
+ * @default 4000000
13869
+ */
13870
+ readonly budget_micro_usd?: number;
13871
+ /** @description Target length in seconds (max 4 minutes). */
13872
+ readonly duration_seconds?: number;
13873
+ /** @description Genre pack id (`pop`, `jingle`, `rock`, `hiphop`, `cinematic`, `lofi`, `hora`, `sarba`, `doina`, `manele`, `pop_folk_ro`, `fanfara`, `cocek`…); default: the producer picks. */
13874
+ readonly genre?: string;
13875
+ /** @description Instrument ids the band must use (`drums.kit_rock`, `balkan.accordion`…). */
13876
+ readonly instruments?: readonly string[];
13877
+ /**
13878
+ * @description Language of the lyrics.
13879
+ * @default ro
13880
+ * @enum {string}
13881
+ */
13882
+ readonly language?: 'ro' | 'en';
13883
+ /** @description Vocal timbre id; default: chosen for the genre. */
13884
+ readonly timbre?: string;
13885
+ /** @description Song / creative title. */
13886
+ readonly title?: string;
13887
+ /**
13888
+ * @description Sung vocals; `false` for an instrumental.
13889
+ * @default true
13890
+ */
13891
+ readonly vocals?: boolean;
13892
+ /**
13893
+ * Format: uuid
13894
+ * @description Sing with your own voice (beta): the id of one of your custom voices that has an active singing consent (`POST /v1/studio/voices/{id}/singing-consent`). ACE-Step uses your consented sung sample as a timbre reference, so the vocal approximates your timbre; it is not a faithful clone. Without singing consent, for an unknown voice or while voice cloning is not enabled for you, the song is still made with `timbre` and `warnings` says why.
13895
+ */
13896
+ readonly voice_passport_id?: string;
13897
+ };
13898
+ /** Music Room direction */
13899
+ readonly MusicRoomDirect: {
13900
+ /** @description What to change, e.g. "lay back on the chorus, fewer fills". */
13901
+ readonly direction: string;
13902
+ readonly role: components$1['schemas']['MusicRole'];
13903
+ /** @description Only this section (an id from the plan); default: the whole song. */
13904
+ readonly section_id?: string;
13905
+ };
13906
+ /** Music Room song list */
13907
+ readonly MusicRoomList: {
13908
+ readonly data: readonly components$1['schemas']['MusicRoom'][];
13909
+ readonly has_more?: boolean;
13910
+ /** @enum {string} */
13911
+ readonly object: 'list';
13912
+ };
13913
+ /** Music Room plan variant */
13914
+ readonly MusicRoomPlanVariant: {
13915
+ readonly bpm: number;
13916
+ readonly genre_id: string;
13917
+ readonly instrumentation: readonly {
13918
+ readonly instrument_id: string;
13919
+ readonly role: components$1['schemas']['MusicRole'];
13920
+ }[];
13921
+ /** @description Time signature, e.g. `4/4` or `7/8`. */
13922
+ readonly meter: string;
13923
+ /** @description Scale / mode id, e.g. `major`, `minor`, `hijaz`. */
13924
+ readonly mode_id: string;
13925
+ readonly rationale: string;
13926
+ readonly sections: readonly {
13927
+ readonly bars: number;
13928
+ readonly id: string;
13929
+ readonly kind: string;
13930
+ }[];
13931
+ readonly title: string;
13932
+ };
13933
+ /** Music Room quota */
13934
+ readonly MusicRoomQuota: {
13935
+ /** @description Songs included this month. */
13936
+ readonly included: number;
13937
+ /**
13938
+ * Format: date-time
13939
+ * @description End of the current calendar month (UTC).
13940
+ */
13941
+ readonly period_end: string;
13942
+ /** @description Your plan (`free`, `pro`, `power`, `max`, `team`…). */
13943
+ readonly plan: string;
13944
+ readonly remaining: number;
13945
+ readonly used: number;
13946
+ };
13592
13947
  /**
13593
13948
  * Music track metadata
13594
13949
  * @description Extra fields on each `/v1/audio/music` item.
@@ -17224,6 +17579,21 @@ type components$1 = {
17224
17579
  /** @description Volume of a video scene's own audio (default 1, or 0 when the scene is narrated). */
17225
17580
  readonly video_volume?: number;
17226
17581
  };
17582
+ /** Custom voice */
17583
+ readonly StudioVoice: {
17584
+ /** Format: date-time */
17585
+ readonly created_at: string;
17586
+ readonly display_name: string;
17587
+ /** Format: uuid */
17588
+ readonly id: string;
17589
+ /** @enum {string} */
17590
+ readonly kind: 'ai_clone';
17591
+ readonly label: string;
17592
+ readonly locale: string;
17593
+ /** @enum {string} */
17594
+ readonly object: 'studio.voice';
17595
+ readonly singing: components$1['schemas']['StudioVoiceSinging'];
17596
+ };
17227
17597
  /** Voice takedown ticket */
17228
17598
  readonly StudioVoiceRevocation: {
17229
17599
  /** Format: uuid */
@@ -17250,6 +17620,30 @@ type components$1 = {
17250
17620
  /** @description Name of the person whose voice is concerned. */
17251
17621
  readonly voice_owner_name: string;
17252
17622
  };
17623
+ /** Singing consent (beta) */
17624
+ readonly StudioVoiceSinging: {
17625
+ /** Format: date-time */
17626
+ readonly consented_at: string | null;
17627
+ /**
17628
+ * @description Always `beta`: the singing approximates your timbre.
17629
+ * @enum {string}
17630
+ */
17631
+ readonly quality: 'beta';
17632
+ /** Format: date-time */
17633
+ readonly revoked_at: string | null;
17634
+ /**
17635
+ * @description `none` (never given), `active`, `revoked` (by you, or the voice ended).
17636
+ * @enum {string}
17637
+ */
17638
+ readonly status: 'none' | 'active' | 'revoked';
17639
+ };
17640
+ readonly StudioVoiceSingingConsentRequest: {
17641
+ /**
17642
+ * Format: uuid
17643
+ * @description Id of the singing recording session (both clips recorded).
17644
+ */
17645
+ readonly session_id: string;
17646
+ };
17253
17647
  readonly SystemOneAnswer: {
17254
17648
  readonly choice?: string;
17255
17649
  readonly confidence?: number;
@@ -30973,6 +31367,210 @@ interface operations$1 {
30973
31367
  readonly 404: components$1['responses']['NotFound'];
30974
31368
  };
30975
31369
  };
31370
+ readonly listStudioMusicRooms: {
31371
+ readonly parameters: {
31372
+ readonly query?: {
31373
+ /** @description Only songs created before this instant (ISO 8601). */
31374
+ readonly before?: string;
31375
+ /** @description Page size (1–100, default 20). */
31376
+ readonly limit?: number;
31377
+ };
31378
+ readonly header?: never;
31379
+ readonly path?: never;
31380
+ readonly cookie?: never;
31381
+ };
31382
+ readonly requestBody?: never;
31383
+ readonly responses: {
31384
+ /** @description A page of songs. */
31385
+ readonly 200: {
31386
+ headers: {
31387
+ readonly [name: string]: unknown;
31388
+ };
31389
+ content: {
31390
+ readonly 'application/json': components$1['schemas']['MusicRoomList'];
31391
+ };
31392
+ };
31393
+ readonly 400: components$1['responses']['BadRequest'];
31394
+ readonly 401: components$1['responses']['Unauthorized'];
31395
+ };
31396
+ };
31397
+ readonly createStudioMusicRoom: {
31398
+ readonly parameters: {
31399
+ readonly query?: never;
31400
+ readonly header?: {
31401
+ /** @description Replays the stored response of an earlier request with the same key for 24 h instead of running it again. */
31402
+ readonly 'Idempotency-Key'?: components$1['parameters']['IdempotencyKey'];
31403
+ };
31404
+ readonly path?: never;
31405
+ readonly cookie?: never;
31406
+ };
31407
+ readonly requestBody: {
31408
+ readonly content: {
31409
+ readonly 'application/json': components$1['schemas']['MusicRoomCreate'];
31410
+ };
31411
+ };
31412
+ readonly responses: {
31413
+ /** @description The song started; the producer is planning (or already waits at the plan gate). */
31414
+ readonly 202: {
31415
+ headers: {
31416
+ readonly [name: string]: unknown;
31417
+ };
31418
+ content: {
31419
+ readonly 'application/json': components$1['schemas']['MusicRoom'];
31420
+ };
31421
+ };
31422
+ readonly 400: components$1['responses']['BadRequest'];
31423
+ readonly 401: components$1['responses']['Unauthorized'];
31424
+ readonly 402: components$1['responses']['InsufficientFunds'];
31425
+ readonly 429: components$1['responses']['RateLimited'];
31426
+ /** @description The music renderer is not configured on this gateway (code `media_ops_unavailable`). */
31427
+ readonly 503: {
31428
+ headers: {
31429
+ readonly [name: string]: unknown;
31430
+ };
31431
+ content: {
31432
+ readonly 'application/json': components$1['schemas']['Error'];
31433
+ };
31434
+ };
31435
+ };
31436
+ };
31437
+ readonly getStudioMusicRoom: {
31438
+ readonly parameters: {
31439
+ readonly query?: never;
31440
+ readonly header?: never;
31441
+ readonly path: {
31442
+ /** @description Music Room song UUID. */
31443
+ readonly id: string;
31444
+ };
31445
+ readonly cookie?: never;
31446
+ };
31447
+ readonly requestBody?: never;
31448
+ readonly responses: {
31449
+ /** @description The song. */
31450
+ readonly 200: {
31451
+ headers: {
31452
+ readonly [name: string]: unknown;
31453
+ };
31454
+ content: {
31455
+ readonly 'application/json': components$1['schemas']['MusicRoom'];
31456
+ };
31457
+ };
31458
+ readonly 401: components$1['responses']['Unauthorized'];
31459
+ readonly 404: components$1['responses']['NotFound'];
31460
+ };
31461
+ };
31462
+ readonly chooseStudioMusicRoom: {
31463
+ readonly parameters: {
31464
+ readonly query?: never;
31465
+ readonly header?: never;
31466
+ readonly path: {
31467
+ /** @description Music Room song UUID. */
31468
+ readonly id: string;
31469
+ };
31470
+ readonly cookie?: never;
31471
+ };
31472
+ readonly requestBody: {
31473
+ readonly content: {
31474
+ readonly 'application/json': components$1['schemas']['MusicRoomChoose'];
31475
+ };
31476
+ };
31477
+ readonly responses: {
31478
+ /** @description The song after the answer. */
31479
+ readonly 200: {
31480
+ headers: {
31481
+ readonly [name: string]: unknown;
31482
+ };
31483
+ content: {
31484
+ readonly 'application/json': components$1['schemas']['MusicRoom'];
31485
+ };
31486
+ };
31487
+ readonly 400: components$1['responses']['BadRequest'];
31488
+ readonly 401: components$1['responses']['Unauthorized'];
31489
+ readonly 404: components$1['responses']['NotFound'];
31490
+ /** @description The song is not waiting at that gate (code `not_at_gate`). */
31491
+ readonly 409: {
31492
+ headers: {
31493
+ readonly [name: string]: unknown;
31494
+ };
31495
+ content: {
31496
+ readonly 'application/json': components$1['schemas']['Error'];
31497
+ };
31498
+ };
31499
+ };
31500
+ };
31501
+ readonly directStudioMusicRoom: {
31502
+ readonly parameters: {
31503
+ readonly query?: never;
31504
+ readonly header?: {
31505
+ /** @description Replays the stored response of an earlier request with the same key for 24 h instead of running it again. */
31506
+ readonly 'Idempotency-Key'?: components$1['parameters']['IdempotencyKey'];
31507
+ };
31508
+ readonly path: {
31509
+ /** @description Music Room song UUID. */
31510
+ readonly id: string;
31511
+ };
31512
+ readonly cookie?: never;
31513
+ };
31514
+ readonly requestBody: {
31515
+ readonly content: {
31516
+ readonly 'application/json': components$1['schemas']['MusicRoomDirect'];
31517
+ };
31518
+ };
31519
+ readonly responses: {
31520
+ /** @description The player is re-playing the part. */
31521
+ readonly 202: {
31522
+ headers: {
31523
+ readonly [name: string]: unknown;
31524
+ };
31525
+ content: {
31526
+ readonly 'application/json': components$1['schemas']['MusicRoom'];
31527
+ };
31528
+ };
31529
+ readonly 400: components$1['responses']['BadRequest'];
31530
+ readonly 401: components$1['responses']['Unauthorized'];
31531
+ readonly 402: components$1['responses']['InsufficientFunds'];
31532
+ readonly 404: components$1['responses']['NotFound'];
31533
+ /** @description The song is not waiting at the demo or final gate (code `not_at_gate`). */
31534
+ readonly 409: {
31535
+ headers: {
31536
+ readonly [name: string]: unknown;
31537
+ };
31538
+ content: {
31539
+ readonly 'application/json': components$1['schemas']['Error'];
31540
+ };
31541
+ };
31542
+ /** @description The music renderer is not configured on this gateway (code `media_ops_unavailable`). */
31543
+ readonly 503: {
31544
+ headers: {
31545
+ readonly [name: string]: unknown;
31546
+ };
31547
+ content: {
31548
+ readonly 'application/json': components$1['schemas']['Error'];
31549
+ };
31550
+ };
31551
+ };
31552
+ };
31553
+ readonly getStudioMusicRoomQuota: {
31554
+ readonly parameters: {
31555
+ readonly query?: never;
31556
+ readonly header?: never;
31557
+ readonly path?: never;
31558
+ readonly cookie?: never;
31559
+ };
31560
+ readonly requestBody?: never;
31561
+ readonly responses: {
31562
+ /** @description The monthly quota. */
31563
+ readonly 200: {
31564
+ headers: {
31565
+ readonly [name: string]: unknown;
31566
+ };
31567
+ content: {
31568
+ readonly 'application/json': components$1['schemas']['MusicRoomQuota'];
31569
+ };
31570
+ };
31571
+ readonly 401: components$1['responses']['Unauthorized'];
31572
+ };
31573
+ };
30976
31574
  readonly retrievePreview: {
30977
31575
  readonly parameters: {
30978
31576
  readonly query?: never;
@@ -31619,6 +32217,76 @@ interface operations$1 {
31619
32217
  readonly 429: components$1['responses']['RateLimited'];
31620
32218
  };
31621
32219
  };
32220
+ readonly addStudioVoiceSingingConsent: {
32221
+ readonly parameters: {
32222
+ readonly query?: never;
32223
+ readonly header?: never;
32224
+ readonly path: {
32225
+ readonly id: string;
32226
+ };
32227
+ readonly cookie?: never;
32228
+ };
32229
+ /** @description A finished `purpose: singing` recording session for this voice. */
32230
+ readonly requestBody: {
32231
+ readonly content: {
32232
+ readonly 'application/json': components$1['schemas']['StudioVoiceSingingConsentRequest'];
32233
+ };
32234
+ };
32235
+ readonly responses: {
32236
+ /** @description The voice, with `singing.status: active`. */
32237
+ readonly 200: {
32238
+ headers: {
32239
+ readonly [name: string]: unknown;
32240
+ };
32241
+ content: {
32242
+ readonly 'application/json': components$1['schemas']['StudioVoice'];
32243
+ };
32244
+ };
32245
+ /** @description Wrong session (`session_purpose_mismatch`), missing clips (`consent_missing`, `reference_missing`), outdated consent text (`singing_text_version_mismatch`) or no 18+ attestation. */
32246
+ readonly 400: {
32247
+ headers: {
32248
+ readonly [name: string]: unknown;
32249
+ };
32250
+ content: {
32251
+ readonly 'application/json': components$1['schemas']['Error'];
32252
+ };
32253
+ };
32254
+ readonly 401: components$1['responses']['Unauthorized'];
32255
+ readonly 403: components$1['responses']['Forbidden'];
32256
+ readonly 404: components$1['responses']['NotFound'];
32257
+ /** @description The 5-minute recording session expired (`session_expired`). */
32258
+ readonly 410: {
32259
+ headers: {
32260
+ readonly [name: string]: unknown;
32261
+ };
32262
+ content: {
32263
+ readonly 'application/json': components$1['schemas']['Error'];
32264
+ };
32265
+ };
32266
+ };
32267
+ };
32268
+ readonly revokeStudioVoiceSingingConsent: {
32269
+ readonly parameters: {
32270
+ readonly query?: never;
32271
+ readonly header?: never;
32272
+ readonly path: {
32273
+ readonly id: string;
32274
+ };
32275
+ readonly cookie?: never;
32276
+ };
32277
+ readonly requestBody?: never;
32278
+ readonly responses: {
32279
+ /** @description Singing consent revoked. */
32280
+ readonly 204: {
32281
+ headers: {
32282
+ readonly [name: string]: unknown;
32283
+ };
32284
+ content?: never;
32285
+ };
32286
+ readonly 401: components$1['responses']['Unauthorized'];
32287
+ readonly 404: components$1['responses']['NotFound'];
32288
+ };
32289
+ };
31622
32290
  readonly createSystemOne: {
31623
32291
  readonly parameters: {
31624
32292
  readonly query?: never;
@@ -34967,8 +35635,6 @@ interface operations$1 {
34967
35635
  };
34968
35636
  };
34969
35637
  }
34970
- //#endregion
34971
- //#region src/http.d.ts
34972
35638
  type ErrorEnvelope = components$1['schemas']['Error'];
34973
35639
  type ErrorCode = ErrorEnvelope['error']['code'];
34974
35640
  export declare class CodaiError extends Error {
@@ -35147,8 +35813,6 @@ interface SseFrame {
35147
35813
  export declare function readSse(res: Response, signal?: AbortSignal): AsyncGenerator<SseFrame>;
35148
35814
  /** Parse a frame's data as JSON, returning `null` for `[DONE]` / non-JSON. */
35149
35815
  export declare function frameJson<T = unknown>(frame: SseFrame): T | null;
35150
- //#endregion
35151
- //#region src/resources/_shared.d.ts
35152
35816
  type Schemas = components$1['schemas'];
35153
35817
  type Schema<K extends keyof Schemas> = Schemas[K];
35154
35818
  /** JSON request body of an operation. */
@@ -35174,8 +35838,6 @@ type QueryOf<Op extends keyof operations$1> = operations$1[Op]['parameters'] ext
35174
35838
  * build request bodies with plain mutable objects.
35175
35839
  */
35176
35840
  type Mutable<T> = T extends ReadonlyArray<infer U> ? Array<Mutable<U>> : T extends object ? { -readonly [K in keyof T]: Mutable<T[K]>; } : T;
35177
- //#endregion
35178
- //#region src/resources/account.d.ts
35179
35841
  export type AccountView = Reply<'getAccount'>;
35180
35842
  export type AccountPatchRequest = Mutable<Body<'patchAccount'>>;
35181
35843
  export type AccountPatchResponse = Reply<'patchAccount'>;
@@ -35183,7 +35845,7 @@ export type Receipt = Reply<'getReceipt'>;
35183
35845
  export type FeedbackRequest = Mutable<Body<'submitFeedback'>>;
35184
35846
  export type FeedbackResponse = Reply<'submitFeedback'>;
35185
35847
  export type PhoneModel = Schema<'AccountPhoneModel'>;
35186
- type CallOpts$38 = {
35848
+ type CallOpts$40 = {
35187
35849
  ext?: CodaiRequestExtensions;
35188
35850
  signal?: AbortSignal;
35189
35851
  };
@@ -35191,9 +35853,9 @@ export declare class Account {
35191
35853
  private readonly http;
35192
35854
  constructor(http: HttpClient);
35193
35855
  /** `GET /v1/account` — the full account card. */
35194
- get(opts?: CallOpts$38): Promise<AccountView>;
35856
+ get(opts?: CallOpts$40): Promise<AccountView>;
35195
35857
  /** `PATCH /v1/account` — consents, username, referral (at least one field). */
35196
- update(body: AccountPatchRequest, opts?: CallOpts$38): Promise<AccountPatchResponse>;
35858
+ update(body: AccountPatchRequest, opts?: CallOpts$40): Promise<AccountPatchResponse>;
35197
35859
  }
35198
35860
  export declare class Receipts {
35199
35861
  private readonly http;
@@ -35205,7 +35867,7 @@ export declare class Receipts {
35205
35867
  get(query?: {
35206
35868
  sessionId?: string;
35207
35869
  since?: string | Date;
35208
- }, opts?: CallOpts$38): Promise<Receipt>;
35870
+ }, opts?: CallOpts$40): Promise<Receipt>;
35209
35871
  }
35210
35872
  export declare class Feedback {
35211
35873
  private readonly http;
@@ -35214,16 +35876,14 @@ export declare class Feedback {
35214
35876
  * `POST /v1/feedback` — rate one turn. Exactly one of `event_id`,
35215
35877
  * `session_id`, `client_request_id` must be present.
35216
35878
  */
35217
- submit(body: FeedbackRequest, opts?: CallOpts$38): Promise<FeedbackResponse>;
35879
+ submit(body: FeedbackRequest, opts?: CallOpts$40): Promise<FeedbackResponse>;
35218
35880
  }
35219
35881
  export declare class PhoneModels {
35220
35882
  private readonly http;
35221
35883
  constructor(http: HttpClient);
35222
35884
  /** `GET /v1/phone/models` — on-device model catalog with signed URLs. */
35223
- list(opts?: CallOpts$38): Promise<PhoneModel[]>;
35885
+ list(opts?: CallOpts$40): Promise<PhoneModel[]>;
35224
35886
  }
35225
- //#endregion
35226
- //#region src/resources/agents.d.ts
35227
35887
  export type AgentRunRequest = Mutable<Body<'runAgentSync'>>;
35228
35888
  export type AgentRunCreateRequest = Mutable<Body<'createAgentRun'>>;
35229
35889
  export type AgentSyncResult = Reply<'runAgentSync'>;
@@ -35232,7 +35892,7 @@ export type AgentRun = Reply<'getAgentRun'>;
35232
35892
  export type AgentRunStep = Schema<'AgentRunStep'>;
35233
35893
  export type AgentRunStats = Reply<'getAgentRunStats'>;
35234
35894
  export type AgentRunStatus = Schema<'AgentRunStatus'>;
35235
- type CallOpts$37 = {
35895
+ type CallOpts$39 = {
35236
35896
  ext?: CodaiRequestExtensions;
35237
35897
  signal?: AbortSignal;
35238
35898
  };
@@ -35269,31 +35929,29 @@ export declare class AgentRuns {
35269
35929
  private readonly http;
35270
35930
  constructor(http: HttpClient);
35271
35931
  /** `POST /v1/agents/runs` — returns 202 with the run id. */
35272
- create(body: AgentRunCreateRequest, opts?: CallOpts$37): Promise<AgentRunAccepted>;
35932
+ create(body: AgentRunCreateRequest, opts?: CallOpts$39): Promise<AgentRunAccepted>;
35273
35933
  /** `GET /v1/agents/runs/{id}` */
35274
- get(id: string, opts?: CallOpts$37): Promise<AgentRun>;
35934
+ get(id: string, opts?: CallOpts$39): Promise<AgentRun>;
35275
35935
  /** `GET /v1/agents/runs/{id}/steps` — newest first. */
35276
- steps(id: string, opts?: CallOpts$37): Promise<AgentRunStep[]>;
35936
+ steps(id: string, opts?: CallOpts$39): Promise<AgentRunStep[]>;
35277
35937
  /** `GET /v1/agents/runs/stats?days=` */
35278
- stats(days?: number, opts?: CallOpts$37): Promise<AgentRunStats>;
35938
+ stats(days?: number, opts?: CallOpts$39): Promise<AgentRunStats>;
35279
35939
  /** `POST /v1/agents/runs/{id}/cancel` */
35280
- cancel(id: string, opts?: CallOpts$37): Promise<Reply<'cancelAgentRun'>>;
35940
+ cancel(id: string, opts?: CallOpts$39): Promise<Reply<'cancelAgentRun'>>;
35281
35941
  /**
35282
35942
  * `GET /v1/agents/runs/{id}/stream` — async iterator over `step` / `done` /
35283
35943
  * `timeout` events. The iterator ends after `done`; on `timeout` (30 min)
35284
35944
  * it also ends and you may reconnect (full replay from seq 0).
35285
35945
  */
35286
- stream(id: string, opts?: CallOpts$37): AsyncGenerator<AgentRunStreamEvent, void, undefined>;
35946
+ stream(id: string, opts?: CallOpts$39): AsyncGenerator<AgentRunStreamEvent, void, undefined>;
35287
35947
  }
35288
35948
  export declare class Agents {
35289
35949
  private readonly http;
35290
35950
  readonly runs: AgentRuns;
35291
35951
  constructor(http: HttpClient);
35292
35952
  /** `POST /v1/agents/run` — blocks until the agent loop finishes. */
35293
- run(body: AgentRunRequest, opts?: CallOpts$37): Promise<AgentRunResult>;
35953
+ run(body: AgentRunRequest, opts?: CallOpts$39): Promise<AgentRunResult>;
35294
35954
  }
35295
- //#endregion
35296
- //#region src/resources/audio.d.ts
35297
35955
  export type TranscriptionResponse = Reply<'createTranscription'>;
35298
35956
  export type SpeechRequest = Mutable<Body<'createSpeech'>>;
35299
35957
  export type SpeechStreamRequest = Mutable<Body<'createSpeechStream'>>;
@@ -35432,8 +36090,6 @@ export declare class Audio {
35432
36090
  signal?: AbortSignal;
35433
36091
  }): AsyncGenerator<SpeechStreamEvent, void, undefined>;
35434
36092
  }
35435
- //#endregion
35436
- //#region src/resources/billing.d.ts
35437
36093
  export type BillingOverview = Reply<'getBilling'>;
35438
36094
  export type BillingPlan = Schema<'BillingPlan'>;
35439
36095
  export type BillingWallet = Schema<'BillingWallet'>;
@@ -35455,7 +36111,7 @@ export interface StudioQuoteQuery {
35455
36111
  model?: string;
35456
36112
  n?: number;
35457
36113
  }
35458
- type CallOpts$36 = {
36114
+ type CallOpts$38 = {
35459
36115
  ext?: CodaiRequestExtensions;
35460
36116
  signal?: AbortSignal;
35461
36117
  };
@@ -35479,16 +36135,16 @@ export declare class Billing {
35479
36135
  private readonly http;
35480
36136
  constructor(http: HttpClient);
35481
36137
  /** `GET /v1/billing` — plan, wallet, auto top-up, cards and pay links (read-only). */
35482
- get(opts?: CallOpts$36): Promise<BillingOverview>;
36138
+ get(opts?: CallOpts$38): Promise<BillingOverview>;
35483
36139
  /** `GET /v1/billing/invoices` — fiscal invoices and credit notes, newest first. */
35484
36140
  invoices(query?: {
35485
36141
  limit?: number;
35486
- }, opts?: CallOpts$36): Promise<BillingInvoice[]>;
36142
+ }, opts?: CallOpts$38): Promise<BillingInvoice[]>;
35487
36143
  /**
35488
36144
  * `GET /v1/studio/quote` — what a Studio action costs (USD and wallet EUR micros) and your spendable balance,
35489
36145
  * before you run it. Paid Studio calls answer 402 `insufficient_funds` when `sufficient` is false. Free.
35490
36146
  */
35491
- studioQuote(query: StudioQuoteQuery, opts?: CallOpts$36): Promise<StudioQuote>;
36147
+ studioQuote(query: StudioQuoteQuery, opts?: CallOpts$38): Promise<StudioQuote>;
35492
36148
  /**
35493
36149
  * Poll `get()` every `intervalMs` and call `onLow` once each time the wallet
35494
36150
  * balance crosses below `thresholdEur`. Read-only: never creates a checkout.
@@ -35496,8 +36152,6 @@ export declare class Billing {
35496
36152
  */
35497
36153
  watchBalance(opts: WatchBalanceOptions): () => void;
35498
36154
  }
35499
- //#endregion
35500
- //#region src/resources/cards.d.ts
35501
36155
  /** `{ block, provenance }` (+ `results` for geocode) as returned by every JSON card endpoint. */
35502
36156
  export type CardDataResponse = Schema<'CardDataResponse'>;
35503
36157
  export type CardsWeatherParams = QueryOf<'cardsWeather'>;
@@ -35533,7 +36187,7 @@ export interface CardsRendered {
35533
36187
  width: number | null;
35534
36188
  height: number | null;
35535
36189
  }
35536
- type CallOpts$35 = {
36190
+ type CallOpts$37 = {
35537
36191
  ext?: CodaiRequestExtensions;
35538
36192
  signal?: AbortSignal;
35539
36193
  };
@@ -35542,62 +36196,60 @@ export declare class Cards {
35542
36196
  constructor(http: HttpClient);
35543
36197
  private get;
35544
36198
  /** `GET /v1/cards/weather` — `weather` block from MET Norway (cached 30–60 min per 0.01°, free). */
35545
- weather(params: CardsWeatherParams, opts?: CallOpts$35): Promise<CardsWeatherResponse>;
36199
+ weather(params: CardsWeatherParams, opts?: CallOpts$37): Promise<CardsWeatherResponse>;
35546
36200
  /**
35547
36201
  * `GET /v1/cards/places` — `places` block from Google Places: Text Search with `q` (biased to `lat`/`lng`/`radius`),
35548
36202
  * Nearby Search without it. Billed per call; `block` is null when nothing matched.
35549
36203
  */
35550
- places(params: CardsPlacesParams, opts?: CallOpts$35): Promise<CardsPlacesResponse>;
36204
+ places(params: CardsPlacesParams, opts?: CallOpts$37): Promise<CardsPlacesResponse>;
35551
36205
  /** `GET /v1/cards/geocode` — `map` block (≤ 5 markers) plus raw `results` (Google Geocoding, billed). */
35552
- geocode(params: CardsGeocodeParams, opts?: CallOpts$35): Promise<CardsGeocodeResponse>;
36206
+ geocode(params: CardsGeocodeParams, opts?: CallOpts$37): Promise<CardsGeocodeResponse>;
35553
36207
  /**
35554
36208
  * `GET /v1/cards/static-map` — PNG from Google Maps Static proxied through the gateway (no maps key on the client).
35555
36209
  * Needs `center` or `markers` (`lat,lng[,L]` joined by `|`); ≤ 640×400 points. Billed per call.
35556
36210
  */
35557
- staticMap(params: CardsStaticMapParams, opts?: CallOpts$35): Promise<CardsStaticMap>;
36211
+ staticMap(params: CardsStaticMapParams, opts?: CallOpts$37): Promise<CardsStaticMap>;
35558
36212
  /**
35559
36213
  * `GET /v1/cards/fx` — BNR (default) or ECB reference rates: a `metric` block with `from`+`to`, otherwise a `table`
35560
36214
  * block against `quote`, optionally limited to `symbols` (comma-separated). Free.
35561
36215
  */
35562
- fx(params?: CardsFxParams, opts?: CallOpts$35): Promise<CardsFxResponse>;
36216
+ fx(params?: CardsFxParams, opts?: CallOpts$37): Promise<CardsFxResponse>;
35563
36217
  /**
35564
36218
  * `GET /v1/cards/route` — travel time from Google Routes: `route` { mode, durationS, staticDurationS, distanceM,
35565
36219
  * polyline } and a `map` block. `origin`/`destination` as "lat,lng" or `from`/`to` as addresses; `mode` drive
35566
36220
  * (traffic-aware, default), walk, bicycle, transit, two_wheeler. Billed per call; both null when no route exists.
35567
36221
  */
35568
- route(params: CardsRouteParams, opts?: CallOpts$35): Promise<CardsRouteResponse>;
36222
+ route(params: CardsRouteParams, opts?: CallOpts$37): Promise<CardsRouteResponse>;
35569
36223
  /**
35570
36224
  * `GET /v1/cards/track` — parcel history as a `timeline` block plus `result` (carrier, configured, found,
35571
36225
  * delivered, events, trackingUrl). `carrier` (sameday | fan | cargus | dpd) is guessed from the AWB when omitted;
35572
36226
  * carriers without gateway credentials answer `configured: false` with only the tracking link. Free.
35573
36227
  */
35574
- track(params: CardsTrackParams, opts?: CallOpts$35): Promise<CardsTrackResponse>;
36228
+ track(params: CardsTrackParams, opts?: CallOpts$37): Promise<CardsTrackResponse>;
35575
36229
  /**
35576
36230
  * `GET /v1/cards/efactura` — your fiscal documents issued through Brivio with their ANAF e-Factura status
35577
36231
  * (`documents[]` + a `table` block, null when there are none). Free.
35578
36232
  */
35579
- efactura(params?: CardsEfacturaParams, opts?: CallOpts$35): Promise<CardsEfacturaResponse>;
36233
+ efactura(params?: CardsEfacturaParams, opts?: CallOpts$37): Promise<CardsEfacturaResponse>;
35580
36234
  /**
35581
36235
  * `POST /v1/cards/unfurl` — `links` block (variant `preview`) for a public https page; SSRF-guarded, cached 24 h.
35582
36236
  * Private targets throw 400 `unfurl_blocked`, non-https pages 422 `unfurl_not_https`.
35583
36237
  */
35584
- unfurl(url: string, opts?: CallOpts$35): Promise<CardsUnfurlResponse>;
36238
+ unfurl(url: string, opts?: CallOpts$37): Promise<CardsUnfurlResponse>;
35585
36239
  /**
35586
36240
  * `POST /v1/cards/product` — `products` block with one item from a public https product page's schema.org
35587
36241
  * `Product` JSON-LD (or OpenGraph product tags): name, image, price + currency (lowest offer), old price, rating
35588
36242
  * (0–5), reviews, seller, availability badge in `lang` (en default). Only what the page states; never sponsored.
35589
36243
  * SSRF-guarded like `unfurl`, cached 6 h. No product data throws 422 `product_not_found`.
35590
36244
  */
35591
- product(url: string, lang?: 'en' | 'ro', opts?: CallOpts$35): Promise<CardsProductResponse>;
36245
+ product(url: string, lang?: 'en' | 'ro', opts?: CallOpts$37): Promise<CardsProductResponse>;
35592
36246
  /**
35593
36247
  * `POST /v1/cards/render` — renders a `chart` or `qr` block to `format` (`png` default, or `svg`) at
35594
36248
  * `width` x `height` CSS px (64–1200, defaults 480 x 300; QR is square) times `scale` (1–3, PNG only).
35595
36249
  * Other block types (Mermaid `diagram`, `math`, …) throw 422 `render_unsupported`. Free; 2000 renders per day.
35596
36250
  */
35597
- render(body: CardsRenderBody, opts?: CallOpts$35): Promise<CardsRendered>;
36251
+ render(body: CardsRenderBody, opts?: CallOpts$37): Promise<CardsRendered>;
35598
36252
  }
35599
- //#endregion
35600
- //#region src/resources/chat.d.ts
35601
36253
  export type ChatCompletionRequest = Mutable<Body<'createChatCompletion'>>;
35602
36254
  /** Request body as accepted by the SDK: `stream` is set by the method and `model` defaults to `codai`. */
35603
36255
  export type ChatCompletionInput = Omit<ChatCompletionRequest, 'stream' | 'model'> & {
@@ -35704,13 +36356,11 @@ export declare class Chat {
35704
36356
  readonly completions: ChatCompletions;
35705
36357
  constructor(http: HttpClient);
35706
36358
  }
35707
- //#endregion
35708
- //#region src/resources/devices.d.ts
35709
36359
  export type Device = Schema<'DeviceListItem'>;
35710
36360
  export type DevicePatch = Mutable<Body<'updateDevice'>>;
35711
36361
  export type DevicePatched = Reply<'updateDevice'>;
35712
36362
  export type DispatchInbox = Reply<'getMyDispatchInbox'>;
35713
- type CallOpts$34 = {
36363
+ type CallOpts$36 = {
35714
36364
  ext?: CodaiRequestExtensions;
35715
36365
  signal?: AbortSignal;
35716
36366
  };
@@ -35718,26 +36368,24 @@ export declare class Devices {
35718
36368
  private readonly http;
35719
36369
  constructor(http: HttpClient);
35720
36370
  /** `GET /v1/devices` — most recently seen first. */
35721
- list(opts?: CallOpts$34): Promise<Device[]>;
36371
+ list(opts?: CallOpts$36): Promise<Device[]>;
35722
36372
  /** `PATCH /v1/devices/{id}` — push token and/or capabilities. */
35723
- update(id: string, body: DevicePatch, opts?: CallOpts$34): Promise<DevicePatched>;
36373
+ update(id: string, body: DevicePatch, opts?: CallOpts$36): Promise<DevicePatched>;
35724
36374
  /** `DELETE /v1/devices/{id}` */
35725
- delete(id: string, opts?: CallOpts$34): Promise<Reply<'deleteDevice'>>;
36375
+ delete(id: string, opts?: CallOpts$36): Promise<Reply<'deleteDevice'>>;
35726
36376
  /**
35727
36377
  * `POST /v1/keys/self/revoke` — the API key this client uses revokes ITSELF (sign out).
35728
36378
  * Every later call with it fails with 401.
35729
36379
  */
35730
- revokeSelfKey(opts?: CallOpts$34): Promise<Reply<'revokeSelfKey'>>;
36380
+ revokeSelfKey(opts?: CallOpts$36): Promise<Reply<'revokeSelfKey'>>;
35731
36381
  /**
35732
36382
  * `GET /v1/devices/me/dispatch?limit=` — pending controls dispatched at the
35733
36383
  * calling device (`x-codai-device` required) across all owned sessions.
35734
36384
  */
35735
36385
  dispatchInbox(query?: {
35736
36386
  limit?: number;
35737
- }, opts?: CallOpts$34): Promise<DispatchInbox>;
36387
+ }, opts?: CallOpts$36): Promise<DispatchInbox>;
35738
36388
  }
35739
- //#endregion
35740
- //#region src/resources/embeddings.d.ts
35741
36389
  export type EmbeddingsRequest = Mutable<Body<'createEmbeddings'>>;
35742
36390
  export type EmbeddingsResponse = Reply<'createEmbeddings'>;
35743
36391
  export interface EmbeddingsResult {
@@ -35760,8 +36408,6 @@ export declare class Embeddings {
35760
36408
  signal?: AbortSignal;
35761
36409
  }): Promise<EmbeddingsResult>;
35762
36410
  }
35763
- //#endregion
35764
- //#region src/resources/environments.d.ts
35765
36411
  export type Environment = Schema<'Environment'>;
35766
36412
  export type EnvironmentDetail = Schema<'EnvironmentDetail'>;
35767
36413
  export type EnvironmentState = Schema<'EnvironmentState'>;
@@ -35797,7 +36443,7 @@ export type EnvironmentJobStartBody = Mutable<Body<'startEnvironmentJob'>>;
35797
36443
  export type EnvironmentJobStarted = Schema<'EnvironmentJobStarted'>;
35798
36444
  export type EnvironmentJob = Schema<'EnvironmentJob'>;
35799
36445
  export type GetEnvironmentJobQuery = Mutable<QueryOf<'getEnvironmentJob'>>;
35800
- type CallOpts$33 = {
36446
+ type CallOpts$35 = {
35801
36447
  ext?: CodaiRequestExtensions;
35802
36448
  signal?: AbortSignal;
35803
36449
  };
@@ -35805,70 +36451,70 @@ export declare class EnvironmentMembers {
35805
36451
  private readonly http;
35806
36452
  constructor(http: HttpClient);
35807
36453
  /** `GET /v1/environments/{id}/members` — any role. */
35808
- list(envId: string, opts?: CallOpts$33): Promise<EnvironmentMember[]>;
36454
+ list(envId: string, opts?: CallOpts$35): Promise<EnvironmentMember[]>;
35809
36455
  /** `POST /v1/environments/{id}/members` — exactly one of `user_id` / `email`. */
35810
- add(envId: string, body: EnvironmentAddMemberBody, opts?: CallOpts$33): Promise<EnvironmentMemberCreated>;
36456
+ add(envId: string, body: EnvironmentAddMemberBody, opts?: CallOpts$35): Promise<EnvironmentMemberCreated>;
35811
36457
  /** `PUT /v1/environments/{id}/members/me/ssh-key` — one `authorized_keys` line. */
35812
- setSshKey(envId: string, publicKey: string, opts?: CallOpts$33): Promise<Reply<'setMyEnvironmentSshKey'>>;
36458
+ setSshKey(envId: string, publicKey: string, opts?: CallOpts$35): Promise<Reply<'setMyEnvironmentSshKey'>>;
35813
36459
  /** `PATCH /v1/environments/{id}/members/{userId}` — 409 `last_owner` on demoting the last owner. */
35814
- setRole(envId: string, userId: string, role: EnvironmentRole, opts?: CallOpts$33): Promise<Reply<'setEnvironmentMemberRole'>['member']>;
36460
+ setRole(envId: string, userId: string, role: EnvironmentRole, opts?: CallOpts$35): Promise<Reply<'setEnvironmentMemberRole'>['member']>;
35815
36461
  /** `DELETE /v1/environments/{id}/members/{userId}` — pass your own id to leave. */
35816
- remove(envId: string, userId: string, opts?: CallOpts$33): Promise<Reply<'removeEnvironmentMember'>>;
36462
+ remove(envId: string, userId: string, opts?: CallOpts$35): Promise<Reply<'removeEnvironmentMember'>>;
35817
36463
  /** `POST /v1/environments/{id}/members/me/ssh-cert` — 12 h OpenSSH user certificate for your key. */
35818
- sshCert(envId: string, body: EnvironmentSshCertBody, opts?: CallOpts$33): Promise<EnvironmentSshCert>;
36464
+ sshCert(envId: string, body: EnvironmentSshCertBody, opts?: CallOpts$35): Promise<EnvironmentSshCert>;
35819
36465
  }
35820
36466
  /** `/v1/environments/{id}/tasks` — fire-and-forget agent tasks run in the environment. */
35821
36467
  export declare class EnvironmentTasks {
35822
36468
  private readonly http;
35823
36469
  constructor(http: HttpClient);
35824
36470
  /** `GET /v1/environments/{id}/tasks` */
35825
- list(envId: string, opts?: CallOpts$33): Promise<EnvironmentTaskList>;
36471
+ list(envId: string, opts?: CallOpts$35): Promise<EnvironmentTaskList>;
35826
36472
  /** `POST /v1/environments/{id}/tasks` — queued; you get a notification when it finishes. */
35827
- create(envId: string, body: EnvironmentTaskCreateBody, opts?: CallOpts$33): Promise<EnvironmentTaskCreated>;
36473
+ create(envId: string, body: EnvironmentTaskCreateBody, opts?: CallOpts$35): Promise<EnvironmentTaskCreated>;
35828
36474
  /** `GET /v1/environments/{id}/tasks/{taskId}` */
35829
- get(envId: string, taskId: string, opts?: CallOpts$33): Promise<EnvironmentTaskDetail>;
36475
+ get(envId: string, taskId: string, opts?: CallOpts$35): Promise<EnvironmentTaskDetail>;
35830
36476
  }
35831
36477
  /** `/v1/environments/{id}/files` — read/write/list over the relay (developer role or higher). */
35832
36478
  export declare class EnvironmentFiles {
35833
36479
  private readonly http;
35834
36480
  constructor(http: HttpClient);
35835
36481
  /** `GET /v1/environments/{id}/files?path=` — directory entries; no path → your workspace. */
35836
- list(envId: string, path?: string, opts?: CallOpts$33): Promise<EnvironmentFileList>;
36482
+ list(envId: string, path?: string, opts?: CallOpts$35): Promise<EnvironmentFileList>;
35837
36483
  /** `GET /v1/environments/{id}/files/{path}` — UTF-8 text (64 KB default, `maxBytes` ≤ 512 KB). */
35838
36484
  get(envId: string, path: string, options?: {
35839
36485
  maxBytes?: number;
35840
- } & CallOpts$33): Promise<EnvironmentFile>;
36486
+ } & CallOpts$35): Promise<EnvironmentFile>;
35841
36487
  /** `PUT /v1/environments/{id}/files/{path}` — replace with UTF-8 text (≤ 2 MB). */
35842
- put(envId: string, path: string, content: string, opts?: CallOpts$33): Promise<EnvironmentFileWritten>;
36488
+ put(envId: string, path: string, content: string, opts?: CallOpts$35): Promise<EnvironmentFileWritten>;
35843
36489
  }
35844
36490
  /** `/v1/environments/{id}/jobs` — background jobs on the environment daemon. */
35845
36491
  export declare class EnvironmentJobs {
35846
36492
  private readonly http;
35847
36493
  constructor(http: HttpClient);
35848
36494
  /** `POST /v1/environments/{id}/jobs` — returns at once with `job_id`. */
35849
- start(envId: string, body: EnvironmentJobStartBody, opts?: CallOpts$33): Promise<EnvironmentJobStarted>;
36495
+ start(envId: string, body: EnvironmentJobStartBody, opts?: CallOpts$35): Promise<EnvironmentJobStarted>;
35850
36496
  /** `GET /v1/environments/{id}/jobs/{jobId}` — status + output (`since` = previous `next_offset`). */
35851
- get(envId: string, jobId: string | number, query?: GetEnvironmentJobQuery, opts?: CallOpts$33): Promise<EnvironmentJob>;
36497
+ get(envId: string, jobId: string | number, query?: GetEnvironmentJobQuery, opts?: CallOpts$35): Promise<EnvironmentJob>;
35852
36498
  }
35853
36499
  export declare class EnvironmentPorts {
35854
36500
  private readonly http;
35855
36501
  constructor(http: HttpClient);
35856
36502
  /** `GET /v1/environments/{id}/ports` — published (forwarded) ports. */
35857
- list(envId: string, opts?: CallOpts$33): Promise<EnvironmentPort[]>;
36503
+ list(envId: string, opts?: CallOpts$35): Promise<EnvironmentPort[]>;
35858
36504
  /** `PUT /v1/environments/{id}/ports/{port}` — publish or change visibility (upsert). */
35859
- set(envId: string, port: number, body: EnvironmentPortBody, opts?: CallOpts$33): Promise<EnvironmentPort>;
36505
+ set(envId: string, port: number, body: EnvironmentPortBody, opts?: CallOpts$35): Promise<EnvironmentPort>;
35860
36506
  /** `DELETE /v1/environments/{id}/ports/{port}` — unpublish. */
35861
- remove(envId: string, port: number, opts?: CallOpts$33): Promise<Reply<'removeEnvironmentPort'>>;
36507
+ remove(envId: string, port: number, opts?: CallOpts$35): Promise<Reply<'removeEnvironmentPort'>>;
35862
36508
  }
35863
36509
  export declare class EnvironmentSecrets {
35864
36510
  private readonly http;
35865
36511
  constructor(http: HttpClient);
35866
36512
  /** `GET /v1/environments/{id}/secrets` — names and timestamps only, never values. */
35867
- list(envId: string, opts?: CallOpts$33): Promise<EnvironmentSecret[]>;
36513
+ list(envId: string, opts?: CallOpts$35): Promise<EnvironmentSecret[]>;
35868
36514
  /** `PUT /v1/environments/{id}/secrets/{name}` — upsert; `name` is `ENV_STYLE`. */
35869
- set(envId: string, name: string, value: string, opts?: CallOpts$33): Promise<EnvironmentSecretSet>;
36515
+ set(envId: string, name: string, value: string, opts?: CallOpts$35): Promise<EnvironmentSecretSet>;
35870
36516
  /** `DELETE /v1/environments/{id}/secrets/{name}` */
35871
- remove(envId: string, name: string, opts?: CallOpts$33): Promise<Reply<'removeEnvironmentSecret'>>;
36517
+ remove(envId: string, name: string, opts?: CallOpts$35): Promise<Reply<'removeEnvironmentSecret'>>;
35872
36518
  }
35873
36519
  export declare class Environments {
35874
36520
  private readonly http;
@@ -35883,45 +36529,43 @@ export declare class Environments {
35883
36529
  * `POST /v1/environments/{id}/exec` — run one relay op and wait (developer+). `op` defaults to
35884
36530
  * `shell` with `command`; 409 `environment_offline`, 504 `host_timeout`.
35885
36531
  */
35886
- exec(envId: string, body: EnvironmentExecBody, opts?: CallOpts$33): Promise<EnvironmentExecResult>;
36532
+ exec(envId: string, body: EnvironmentExecBody, opts?: CallOpts$35): Promise<EnvironmentExecResult>;
35887
36533
  /** `GET /v1/environments/{id}/ssh-ca` — CA public keys to trust (`@cert-authority` lines). */
35888
- sshCa(envId: string, opts?: CallOpts$33): Promise<EnvironmentSshCa>;
36534
+ sshCa(envId: string, opts?: CallOpts$35): Promise<EnvironmentSshCa>;
35889
36535
  /** `GET /v1/environments?project_id=&for_user_id=me` — newest first, every state. */
35890
- list(query?: ListEnvironmentsQuery, opts?: CallOpts$33): Promise<Environment[]>;
36536
+ list(query?: ListEnvironmentsQuery, opts?: CallOpts$35): Promise<Environment[]>;
35891
36537
  /**
35892
36538
  * `POST /v1/environments` — `byo` starts `pending`; managed providers start
35893
36539
  * `creating`. 409 `already_has_env` in a `vm_per_dev` project (the error
35894
36540
  * body carries the `environment_id` to reuse).
35895
36541
  */
35896
- create(body: EnvironmentCreateBody, opts?: CallOpts$33): Promise<Environment>;
36542
+ create(body: EnvironmentCreateBody, opts?: CallOpts$35): Promise<Environment>;
35897
36543
  /**
35898
36544
  * `POST /v1/environments/enroll` — daemon side. The one-time `codai_env_…`
35899
36545
  * token in the body is the only credential; the client's API key header is
35900
36546
  * ignored by this route. Managed environments additionally receive a
35901
36547
  * freshly minted `api_key`, returned exactly once.
35902
36548
  */
35903
- enroll(body: EnvironmentEnrollBody, opts?: CallOpts$33): Promise<EnvironmentEnrolled>;
36549
+ enroll(body: EnvironmentEnrollBody, opts?: CallOpts$35): Promise<EnvironmentEnrolled>;
35904
36550
  /** `GET /v1/environments/{id}` — environment, your role, members, ports, recent events. */
35905
- get(envId: string, opts?: CallOpts$33): Promise<EnvironmentDetail>;
36551
+ get(envId: string, opts?: CallOpts$35): Promise<EnvironmentDetail>;
35906
36552
  /** `PATCH /v1/environments/{id}` — `name` and/or `idle_timeout_minutes` (5..1440). */
35907
- update(envId: string, body: EnvironmentPatchBody, opts?: CallOpts$33): Promise<Environment>;
36553
+ update(envId: string, body: EnvironmentPatchBody, opts?: CallOpts$35): Promise<Environment>;
35908
36554
  /** `POST /v1/environments/{id}/start` — managed providers only (`stopped` → `starting`). */
35909
- start(envId: string, opts?: CallOpts$33): Promise<EnvironmentTransition>;
36555
+ start(envId: string, opts?: CallOpts$35): Promise<EnvironmentTransition>;
35910
36556
  /** `POST /v1/environments/{id}/stop` — managed providers only (`running` → `stopping`). */
35911
- stop(envId: string, opts?: CallOpts$33): Promise<EnvironmentTransition>;
36557
+ stop(envId: string, opts?: CallOpts$35): Promise<EnvironmentTransition>;
35912
36558
  /** `POST /v1/environments/{id}/archive` — keeps history, releases the machine. */
35913
- archive(envId: string, opts?: CallOpts$33): Promise<EnvironmentTransition>;
36559
+ archive(envId: string, opts?: CallOpts$35): Promise<EnvironmentTransition>;
35914
36560
  /** `POST /v1/environments/{id}/destroy` — owner only; terminal. */
35915
- destroy(envId: string, opts?: CallOpts$33): Promise<EnvironmentTransition>;
36561
+ destroy(envId: string, opts?: CallOpts$35): Promise<EnvironmentTransition>;
35916
36562
  /**
35917
36563
  * `POST /v1/environments/{id}/enroll-token` — `byo` only; a 30-minute
35918
36564
  * one-time token for `enroll()`. Minting again replaces the previous one.
35919
36565
  */
35920
- enrollToken(envId: string, opts?: CallOpts$33): Promise<EnvironmentEnrollToken>;
36566
+ enrollToken(envId: string, opts?: CallOpts$35): Promise<EnvironmentEnrollToken>;
35921
36567
  private transition;
35922
36568
  }
35923
- //#endregion
35924
- //#region src/resources/health.d.ts
35925
36569
  export type HealthResponse = Reply<'getHealth'>;
35926
36570
  export type HealthReadyResponse = Reply<'getHealthReady'>;
35927
36571
  export type StatusResponse = Reply<'getStatus'>;
@@ -35946,15 +36590,13 @@ export declare class Health {
35946
36590
  signal?: AbortSignal;
35947
36591
  }): Promise<StatusResponse>;
35948
36592
  }
35949
- //#endregion
35950
- //#region src/resources/hosts.d.ts
35951
36593
  export type HostPresence = Schema<'HostPresence'>;
35952
36594
  export type HostOp = Schema<'HostOp'>;
35953
36595
  export type HostExecBody = Mutable<Body<'execOnHost'>>;
35954
36596
  export type HostExecResponse = Reply<'execOnHost'>;
35955
36597
  export type HostExecRequest = Schema<'HostExecRequest'>;
35956
36598
  export type HostExecResultBody = Mutable<Body<'postHostExecResult'>>;
35957
- type CallOpts$32 = {
36599
+ type CallOpts$34 = {
35958
36600
  ext?: CodaiRequestExtensions;
35959
36601
  signal?: AbortSignal;
35960
36602
  };
@@ -35981,7 +36623,7 @@ export declare class Hosts {
35981
36623
  private readonly http;
35982
36624
  constructor(http: HttpClient);
35983
36625
  /** `GET /v1/hosts` — your devices currently connected as hosts. */
35984
- list(opts?: CallOpts$32): Promise<HostPresence[]>;
36626
+ list(opts?: CallOpts$34): Promise<HostPresence[]>;
35985
36627
  /**
35986
36628
  * `POST /v1/hosts/{deviceId}/exec` — run one op on a connected host and
35987
36629
  * block until it answers (or `timeout_ms`, default 60 s).
@@ -35989,9 +36631,9 @@ export declare class Hosts {
35989
36631
  exec(deviceId: string, op: HostOp, args?: Record<string, unknown>, extra?: {
35990
36632
  timeoutMs?: number;
35991
36633
  label?: string;
35992
- } & CallOpts$32): Promise<HostExecResponse>;
36634
+ } & CallOpts$34): Promise<HostExecResponse>;
35993
36635
  /** `POST /v1/hosts/exec/{reqId}/result` — host side: deliver an exec result. */
35994
- postResult(reqId: string, body: HostExecResultBody, opts?: CallOpts$32): Promise<Reply<'postHostExecResult'>>;
36636
+ postResult(reqId: string, body: HostExecResultBody, opts?: CallOpts$34): Promise<Reply<'postHostExecResult'>>;
35995
36637
  /**
35996
36638
  * `GET /v1/hosts/stream?os=&hostname=&roots=` — host side: announce this
35997
36639
  * device and receive `hello` / `ping` / `exec` events. Closed by the server
@@ -36001,10 +36643,8 @@ export declare class Hosts {
36001
36643
  os?: string;
36002
36644
  hostname?: string;
36003
36645
  roots?: string[];
36004
- }, opts?: CallOpts$32): AsyncGenerator<HostStreamEvent, void, undefined>;
36646
+ }, opts?: CallOpts$34): AsyncGenerator<HostStreamEvent, void, undefined>;
36005
36647
  }
36006
- //#endregion
36007
- //#region src/resources/assets.d.ts
36008
36648
  /** A stored asset (`GET /v1/assets/{id}`; `data` items with `response_format: 'url'`). */
36009
36649
  export type AssetDto = Schema<'AssetDto'>;
36010
36650
  export type AssetKind = Schema<'AssetKind'>;
@@ -36013,7 +36653,7 @@ export type AssetDeleted = Reply<'deleteAsset'>;
36013
36653
  export type AssetListQuery = QueryOf<'listAssets'>;
36014
36654
  /** `b64_json` (default, inline bytes) or `url` (stored asset + 1 h signed URL; 503 `assets_unavailable` without storage). */
36015
36655
  export type MediaResponseFormat = Schema<'MediaResponseFormat'>;
36016
- type CallOpts$31 = {
36656
+ type CallOpts$33 = {
36017
36657
  ext?: CodaiRequestExtensions;
36018
36658
  signal?: AbortSignal;
36019
36659
  };
@@ -36023,28 +36663,26 @@ export declare class Assets {
36023
36663
  private readonly http;
36024
36664
  constructor(http: HttpClient);
36025
36665
  /** `GET /v1/assets` — newest first, `limit` ≤ 100 (default 30). Paginate by passing `next_before` as `before`. */
36026
- list(query?: AssetListQuery, opts?: CallOpts$31): Promise<AssetList>;
36666
+ list(query?: AssetListQuery, opts?: CallOpts$33): Promise<AssetList>;
36027
36667
  /** Iterate every asset across pages (`list` with `before` = previous `next_before`). */
36028
- iterate(query?: Omit<AssetListQuery, 'before'>, opts?: CallOpts$31): AsyncGenerator<AssetDto, void, undefined>;
36668
+ iterate(query?: Omit<AssetListQuery, 'before'>, opts?: CallOpts$33): AsyncGenerator<AssetDto, void, undefined>;
36029
36669
  /** `GET /v1/assets/{id}` — one asset with a fresh 1 h signed `url` (`null` while not `ready`). */
36030
- retrieve(id: string, opts?: CallOpts$31): Promise<AssetDto>;
36670
+ retrieve(id: string, opts?: CallOpts$33): Promise<AssetDto>;
36031
36671
  /**
36032
36672
  * A fresh signed URL of the asset's bytes (valid 1 h), from `GET /v1/assets/{id}`. Throws when the asset has no
36033
36673
  * content yet. Use it in `<audio>`/`<video>`/`fetch` — it needs no Authorization header.
36034
36674
  */
36035
- contentUrl(id: string, opts?: CallOpts$31): Promise<string>;
36675
+ contentUrl(id: string, opts?: CallOpts$33): Promise<string>;
36036
36676
  /**
36037
36677
  * The authenticated redirect endpoint `GET /v1/assets/{id}/content` (302 to the signed URL). Useful for tools that
36038
36678
  * follow redirects with the API key (`curl -L -H 'Authorization: Bearer …'`); browsers should use `contentUrl()`.
36039
36679
  */
36040
36680
  contentPath(id: string): string;
36041
36681
  /** Download the asset's bytes (fetches the signed URL, no API key sent to storage). */
36042
- content(id: string, opts?: CallOpts$31): Promise<Uint8Array>;
36682
+ content(id: string, opts?: CallOpts$33): Promise<Uint8Array>;
36043
36683
  /** `DELETE /v1/assets/{id}` — deletes the object; signed URLs already handed out stop working. */
36044
- delete(id: string, opts?: CallOpts$31): Promise<AssetDeleted>;
36684
+ delete(id: string, opts?: CallOpts$33): Promise<AssetDeleted>;
36045
36685
  }
36046
- //#endregion
36047
- //#region src/resources/images.d.ts
36048
36686
  export type ImagesRequest = Mutable<Body<'createImage'>>;
36049
36687
  export type ImagesResponse = Reply<'createImage'>;
36050
36688
  export type ImageEditRequest = Mutable<Body<'editImage'>>;
@@ -36089,8 +36727,6 @@ export declare class Images {
36089
36727
  }): Promise<ImagesResult>;
36090
36728
  private post;
36091
36729
  }
36092
- //#endregion
36093
- //#region src/resources/media.d.ts
36094
36730
  export interface MusicRequest {
36095
36731
  /** `codai-music` (default, Lyria 3 Clip), `codai-music-pro` (Lyria 3 Pro) or `codai-music-legacy` (Lyria 2). */
36096
36732
  model?: 'codai-music' | 'codai-music-pro' | 'codai-music-legacy' | (string & {});
@@ -36534,8 +37170,6 @@ export declare class Renders {
36534
37170
  ext?: CodaiRequestExtensions;
36535
37171
  }): Promise<RenderResult>;
36536
37172
  }
36537
- //#endregion
36538
- //#region src/resources/documents.d.ts
36539
37173
  export type DocumentType = 'deck' | 'doc' | 'sheet';
36540
37174
  export type DocumentTheme = Schema<'DocumentTheme'>;
36541
37175
  export type DeckSpec = Mutable<Schema<'DeckSpec'>>;
@@ -36550,11 +37184,11 @@ export type DocumentPreview = Reply<'retrievePreview'>;
36550
37184
  export type DocumentPreviewStatus = DocumentPreview['status'];
36551
37185
  export type DocumentVideoRequest = Mutable<Body<'createDocumentVideo'>>;
36552
37186
  export type DocumentVideoAccepted = Reply<'createDocumentVideo', 202>;
36553
- type CallOpts$30 = {
37187
+ type CallOpts$32 = {
36554
37188
  ext?: CodaiRequestExtensions;
36555
37189
  signal?: AbortSignal;
36556
37190
  };
36557
- export interface DocumentPollOptions extends CallOpts$30 {
37191
+ export interface DocumentPollOptions extends CallOpts$32 {
36558
37192
  /** Delay between polls (default 3000 ms for previews, 5000 ms for videos). */
36559
37193
  pollIntervalMs?: number;
36560
37194
  /** Give up after this long (default 300 000 ms for previews, 900 000 ms for videos). */
@@ -36569,21 +37203,21 @@ export declare class Documents {
36569
37203
  * `sheet` -> `SheetSpec`); invalid specs are 400 `invalid_spec`. Files are free. `based_on` creates the next version
36570
37204
  * of one of your documents; `preview: true` also queues a (billed) preview, returned as `preview`.
36571
37205
  */
36572
- create(body: DocumentCreateRequest, opts?: CallOpts$30): Promise<StudioDocument>;
37206
+ create(body: DocumentCreateRequest, opts?: CallOpts$32): Promise<StudioDocument>;
36573
37207
  /** `GET /v1/studio/documents/{id}` — fresh 1 h signed `file.url`, the stored `spec` and `latest_preview_id`. */
36574
- retrieve(id: string, opts?: CallOpts$30): Promise<StudioDocument>;
37208
+ retrieve(id: string, opts?: CallOpts$32): Promise<StudioDocument>;
36575
37209
  /**
36576
37210
  * Queue a preview (`POST /v1/studio/documents/{id}/previews`, HTTP 202): tagged PDF, page PNGs (1280 px) and a
36577
37211
  * contact sheet. Billed once on the first poll that sees the result; at most 3 active previews per user (429).
36578
37212
  */
36579
- preview(id: string, body?: DocumentPreviewRequest, opts?: CallOpts$30): Promise<DocumentPreviewAccepted>;
37213
+ preview(id: string, body?: DocumentPreviewRequest, opts?: CallOpts$32): Promise<DocumentPreviewAccepted>;
36580
37214
  /** Poll a preview (`GET /v1/studio/previews/{id}`): `queued` | `rendering` | `succeeded` | `failed`. */
36581
- retrievePreview(previewId: string, opts?: CallOpts$30): Promise<DocumentPreview>;
37215
+ retrievePreview(previewId: string, opts?: CallOpts$32): Promise<DocumentPreview>;
36582
37216
  /**
36583
37217
  * Turn a deck into an MP4 (`POST /v1/studio/documents/{id}/video`, HTTP 202). Returns a render: poll it with
36584
37218
  * `renders.retrieve(id)` or use `videoAndWait`. Narration (`narrate`) is synthesized and billed now.
36585
37219
  */
36586
- video(id: string, body?: DocumentVideoRequest, opts?: CallOpts$30): Promise<DocumentVideoAccepted>;
37220
+ video(id: string, body?: DocumentVideoRequest, opts?: CallOpts$32): Promise<DocumentVideoAccepted>;
36587
37221
  /** Queue a preview and poll until it succeeds. Throws on `failed` or timeout. */
36588
37222
  createPreviewAndWait(id: string, opts?: DocumentPollOptions & {
36589
37223
  body?: DocumentPreviewRequest;
@@ -36593,8 +37227,6 @@ export declare class Documents {
36593
37227
  accepted: DocumentVideoAccepted;
36594
37228
  }>;
36595
37229
  }
36596
- //#endregion
36597
- //#region src/resources/exports.d.ts
36598
37230
  export type StudioExport = Schema<'StudioExport'>;
36599
37231
  export type ExportFcpxmlQuery = QueryOf<'exportCreativeFcpxml'>;
36600
37232
  /** `creatives.exportLottie` / `downloadLottie` options (`download` is chosen by the method). */
@@ -36605,11 +37237,11 @@ export interface LottieDownload {
36605
37237
  filename: string | null;
36606
37238
  contentType: string | null;
36607
37239
  }
36608
- type CallOpts$29 = {
37240
+ type CallOpts$31 = {
36609
37241
  ext?: CodaiRequestExtensions;
36610
37242
  signal?: AbortSignal;
36611
37243
  };
36612
- export interface ExportWaitOptions extends CallOpts$29 {
37244
+ export interface ExportWaitOptions extends CallOpts$31 {
36613
37245
  /** Delay between polls (default 3000 ms). */
36614
37246
  intervalMs?: number;
36615
37247
  /** Give up after this long (default 900 000 ms = 15 min). */
@@ -36619,7 +37251,7 @@ export declare class Exports {
36619
37251
  private readonly http;
36620
37252
  constructor(http: HttpClient);
36621
37253
  /** The export: `queued` / `running`, then `succeeded` (signed `url`, valid 1 h) or `failed` (`error`). Free. */
36622
- retrieve(id: string, opts?: CallOpts$29): Promise<StudioExport>;
37254
+ retrieve(id: string, opts?: CallOpts$31): Promise<StudioExport>;
36623
37255
  /**
36624
37256
  * Poll `retrieve` every `intervalMs` (default 3 s) until the export is `succeeded` or `failed` and resolve with it
36625
37257
  * (a `failed` export resolves too — check `status` / `error`). Throws when it is not done within `timeoutMs`
@@ -36627,8 +37259,6 @@ export declare class Exports {
36627
37259
  */
36628
37260
  wait(id: string, opts?: ExportWaitOptions): Promise<StudioExport>;
36629
37261
  }
36630
- //#endregion
36631
- //#region src/resources/creatives.d.ts
36632
37262
  export type CreativeKind = Schema<'CreativeKind'>;
36633
37263
  export type CreativeDoc = Mutable<Schema<'CreativeDoc'>>;
36634
37264
  export type CreativeOp = Mutable<Schema<'CreativeOp'>>;
@@ -36775,7 +37405,7 @@ export interface CreativeEditRequest {
36775
37405
  /** Bypass locked nodes and variables. */
36776
37406
  force?: boolean;
36777
37407
  }
36778
- type CallOpts$28 = {
37408
+ type CallOpts$30 = {
36779
37409
  ext?: CodaiRequestExtensions;
36780
37410
  signal?: AbortSignal;
36781
37411
  };
@@ -36783,49 +37413,49 @@ export declare class Creatives {
36783
37413
  private readonly http;
36784
37414
  constructor(http: HttpClient);
36785
37415
  /** List your creatives, most recently updated first (`next_before` pages). */
36786
- list(query?: CreativeListQuery, opts?: CallOpts$28): Promise<CreativeList>;
37416
+ list(query?: CreativeListQuery, opts?: CallOpts$30): Promise<CreativeList>;
36787
37417
  /**
36788
37418
  * Create a creative (`kind` + optional `title` / `doc`); without `doc` you get an empty document for the kind.
36789
37419
  * `brand_kit_id` applies one of your brand kits (`brandKits`) to version 1: `brand = { kitId, tokens }` + its logo.
36790
37420
  * `template` (+ `vars`, values by var key) starts from one of your templates (`templates`) instead of `doc`.
36791
37421
  */
36792
- create(body: CreativeCreateRequest, opts?: CallOpts$28): Promise<Creative>;
37422
+ create(body: CreativeCreateRequest, opts?: CallOpts$30): Promise<Creative>;
36793
37423
  /** The document at the head (or `seq`) with signed `assets` (1 h URLs). */
36794
37424
  retrieve(id: string, query?: {
36795
37425
  seq?: number;
36796
- }, opts?: CallOpts$28): Promise<CreativeDetail>;
37426
+ }, opts?: CallOpts$30): Promise<CreativeDetail>;
36797
37427
  /** Compact text outline (+ formats and vars) — the cheapest structure for a prompt. */
36798
- outline(id: string, opts?: CallOpts$28): Promise<CreativeOutline>;
37428
+ outline(id: string, opts?: CallOpts$30): Promise<CreativeOutline>;
36799
37429
  /** Node ids matching `query` (a string = text/name/id substring, or `{ text, type, sceneId, assetId, locked }`). */
36800
- find(id: string, query: CreativeFindRequest['query'], opts?: CallOpts$28): Promise<CreativeFindResult>;
37430
+ find(id: string, query: CreativeFindRequest['query'], opts?: CallOpts$30): Promise<CreativeFindResult>;
36801
37431
  /** Full JSON of `ids` (scene ids return whole scenes) or of one `sceneId`. */
36802
- subtree(id: string, body: CreativeSubtreeRequest, opts?: CallOpts$28): Promise<CreativeSubtree>;
37432
+ subtree(id: string, body: CreativeSubtreeRequest, opts?: CallOpts$30): Promise<CreativeSubtree>;
36803
37433
  /**
36804
37434
  * Apply an op batch (all or nothing) authored against `baseSeq`. A stale base is rebased when the touched
36805
37435
  * targets did not change meanwhile; otherwise the call throws `CodaiError` 409 `stale` (reload and retry). Rejected
36806
37436
  * ops throw 400 with `code` (`invalid`, `not_found`, `locked`, `duplicate_id`).
36807
37437
  */
36808
- edit(id: string, body: CreativeEditRequest, opts?: CallOpts$28): Promise<CreativeOpsResult>;
37438
+ edit(id: string, body: CreativeEditRequest, opts?: CallOpts$30): Promise<CreativeOpsResult>;
36809
37439
  /** Version history, newest first (`beforeSeq` pages). */
36810
37440
  versions(id: string, query?: {
36811
37441
  beforeSeq?: number;
36812
37442
  limit?: number;
36813
- }, opts?: CallOpts$28): Promise<CreativeVersionList>;
37443
+ }, opts?: CallOpts$30): Promise<CreativeVersionList>;
36814
37444
  /** New head whose document is version `seq`'s (undo / redo). */
36815
- revert(id: string, seq: number, opts?: CallOpts$28): Promise<CreativeRevertResult>;
37445
+ revert(id: string, seq: number, opts?: CallOpts$30): Promise<CreativeRevertResult>;
36816
37446
  /** New creative from version `seq` (default the head). */
36817
- fork(id: string, body?: CreativeForkRequest, opts?: CallOpts$28): Promise<Creative>;
37447
+ fork(id: string, body?: CreativeForkRequest, opts?: CallOpts$30): Promise<Creative>;
36818
37448
  /** Soft-delete the creative. */
36819
- delete(id: string, opts?: CallOpts$28): Promise<CreativeDeleted>;
37449
+ delete(id: string, opts?: CallOpts$30): Promise<CreativeDeleted>;
36820
37450
  /**
36821
37451
  * Contrast, safe area, empty text, missing assets, brand colours, platform safe zones and text floors, alt text,
36822
37452
  * missing captions, reading speed, flashing, missing / stale translations. Issues carry `format` / `fixable` /
36823
37453
  * `locale`; `fixable` counts them (`lintFix`). `locale` lints the translated document (adds
36824
37454
  * `text_overflow_locale`); 404 `Locale not found.` for an unknown locale.
36825
37455
  */
36826
- lint(id: string, body?: CreativeLintRequest, opts?: CallOpts$28): Promise<CreativeLintResult>;
37456
+ lint(id: string, body?: CreativeLintRequest, opts?: CallOpts$30): Promise<CreativeLintResult>;
36827
37457
  /** Preview HTML (signed asset URLs) for `format` / one `scene` / a translation (`locale`). */
36828
- compiled(id: string, query?: CreativeCompiledQuery, opts?: CallOpts$28): Promise<CreativeCompiled>;
37458
+ compiled(id: string, query?: CreativeCompiledQuery, opts?: CallOpts$30): Promise<CreativeCompiled>;
36829
37459
  /**
36830
37460
  * Queue an MP4 render of the head (`codai-render`, HTTP 202, `cached: false`); poll `renders.retrieve(render_id)`.
36831
37461
  * When the same render already exists for this version / format / quality / fps you get it back at once
@@ -36834,7 +37464,7 @@ export declare class Creatives {
36834
37464
  * `ai_label` (`none` | `corner` | `end_card`, EU AI Act art. 50(4)) burns a visible AI label into the video; omitted =
36835
37465
  * `corner` when the creative uses TTS narration or AI images, else `none` (`none` with narration: 400 `ai_label_required`).
36836
37466
  */
36837
- render(id: string, body?: CreativeRenderRequest, opts?: CallOpts$28): Promise<CreativeRenderResult>;
37467
+ render(id: string, body?: CreativeRenderRequest, opts?: CallOpts$30): Promise<CreativeRenderResult>;
36838
37468
  /**
36839
37469
  * Mixdown + mastering + exports of an `audio` creative (MU-05; same `POST …/render` route, HTTP 202). `formats`
36840
37470
  * (default `['wav', 'mp3']`), `stems: true` adds one WAV per audible track (+50 %), `lrc` exports the timed lyrics
@@ -36843,7 +37473,7 @@ export declare class Creatives {
36843
37473
  * (`output: mix | stem | lrc`). $0.001 per output second, minimum $0.01; held up front, billed on the measured length.
36844
37474
  * 400 `empty_audio` / `too_long` (20 min) / `no_lyrics`; video creatives use `render`.
36845
37475
  */
36846
- renderAudio(id: string, body?: CreativeAudioRenderRequest, opts?: CallOpts$28 & {
37476
+ renderAudio(id: string, body?: CreativeAudioRenderRequest, opts?: CallOpts$30 & {
36847
37477
  idempotencyKey?: string;
36848
37478
  }): Promise<CreativeAudioRenderAccepted>;
36849
37479
  /**
@@ -36852,41 +37482,41 @@ export declare class Creatives {
36852
37482
  * running job (`status: 'running'`) to poll with `frameJob(id, frame_job_id)`. Cached frames are free; 60 frame
36853
37483
  * jobs per UTC day are free, then billed (`billed_micro_usd`).
36854
37484
  */
36855
- frame(id: string, body: CreativeFrameRequest, opts?: CallOpts$28): Promise<CreativeFrameResult>;
37485
+ frame(id: string, body: CreativeFrameRequest, opts?: CallOpts$30): Promise<CreativeFrameResult>;
36856
37486
  /**
36857
37487
  * Turn a comment pinned on a frame (`t_ms`, optional `node_id` / `scene_id`) into an edit: one bounded `codai`
36858
37488
  * model turn proposes ops, applied like `edit` against `base_seq` (rebased when possible, 409 `stale` else).
36859
37489
  * 422 `no_edit` when the model made no edit (its answer in `error.text`); `apply: false` only proposes the ops.
36860
37490
  * Token-metered like any `codai` text call.
36861
37491
  */
36862
- comment(id: string, body: CreativeCommentRequest, opts?: CallOpts$28): Promise<CreativeCommentResult>;
37492
+ comment(id: string, body: CreativeCommentRequest, opts?: CallOpts$30): Promise<CreativeCommentResult>;
36863
37493
  /**
36864
37494
  * Generate A/B variants: one bounded `codai` model turn proposes `count` (default 3) variants changing only
36865
37495
  * `focus` (default hook / title / cta); each becomes a fork of the creative at `base_seq` with the ops applied, plus
36866
37496
  * a queued draft render (`render: false` to skip; poll `renders.retrieve(render_id)`). The original is unchanged
36867
37497
  * until `pickVariant`. 422 `no_edit` when no valid variant came back, 504 `timeout` after 90 s. Token-metered.
36868
37498
  */
36869
- variants(id: string, body: CreativeVariantsRequest, opts?: CallOpts$28): Promise<CreativeVariantsResult>;
37499
+ variants(id: string, body: CreativeVariantsRequest, opts?: CallOpts$30): Promise<CreativeVariantsResult>;
36870
37500
  /** The latest variant group of a creative (`group_id: null` when none) with statuses and stored render state. */
36871
- listVariants(id: string, opts?: CallOpts$28): Promise<CreativeVariantList>;
37501
+ listVariants(id: string, opts?: CallOpts$30): Promise<CreativeVariantList>;
36872
37502
  /**
36873
37503
  * Pick the winner: its ops are applied to the original against `base_seq` (rebased when possible, 409 `stale`
36874
37504
  * else); the winner is marked `winner`, the rest of its group `rejected`.
36875
37505
  */
36876
- pickVariant(id: string, variantId: string, body: CreativeVariantPickRequest, opts?: CallOpts$28): Promise<CreativeVariantPickResult>;
37506
+ pickVariant(id: string, variantId: string, body: CreativeVariantPickRequest, opts?: CallOpts$30): Promise<CreativeVariantPickResult>;
36877
37507
  /**
36878
37508
  * Save the creative (at `seq`, default the head) as a private template: each `vars` entry turns a text node's text
36879
37509
  * (`prop: 'text'`) or an image node's asset (`prop: 'image'`) into a variable whose default is the current value.
36880
37510
  * 400 `node_not_found` / `invalid_pick` / `duplicate_key`. Free.
36881
37511
  */
36882
- saveTemplate(id: string, body: SaveTemplateRequest, opts?: CallOpts$28): Promise<CreativeTemplate>;
37512
+ saveTemplate(id: string, body: SaveTemplateRequest, opts?: CallOpts$30): Promise<CreativeTemplate>;
36883
37513
  /**
36884
37514
  * Queue an FCPXML export of a video creative (`seq`, default the head; `format`, default the first 1920×1080 /
36885
37515
  * 1080×1920 / 1080×1080 format): a zip with `project.fcpxml` + per-scene MP4 segments + audio, for Final Cut Pro,
36886
37516
  * DaVinci Resolve or Premiere. Resolves to the queued export; poll it with `exports.wait(e.id)`. Only newly
36887
37517
  * rendered seconds are billed (final render price). 400 `unsupported_kind` / `unsupported_format` / `too_long`.
36888
37518
  */
36889
- exportFcpxml(id: string, query?: ExportFcpxmlQuery, opts?: CallOpts$28): Promise<StudioExport>;
37519
+ exportFcpxml(id: string, query?: ExportFcpxmlQuery, opts?: CallOpts$30): Promise<StudioExport>;
36890
37520
  /**
36891
37521
  * Export a video creative as a Lottie animation (`seq`, default the head; `format`, default the document's default
36892
37522
  * format, or `formats: 'all'`; `container: 'json'` (default, Bodymovin JSON with embedded images) or `'dotlottie'`).
@@ -36894,19 +37524,19 @@ export declare class Creatives {
36894
37524
  * fidelity report in `warnings` (video, chart, HTML block, table, cell grid and audio nodes are not exported).
36895
37525
  * 400 `unsupported_kind` / `invalid_request`, 413 `too_large` (over 20 MB).
36896
37526
  */
36897
- exportLottie(id: string, query?: ExportLottieQuery, opts?: CallOpts$28): Promise<StudioExport>;
37527
+ exportLottie(id: string, query?: ExportLottieQuery, opts?: CallOpts$30): Promise<StudioExport>;
36898
37528
  /**
36899
37529
  * The Lottie file itself (`download=1`, nothing stored): `application/json` for one Bodymovin JSON, `application/zip`
36900
37530
  * for a dotLottie archive or a zip of JSON files (`formats: 'all'`). Same options and errors as `exportLottie`. Free.
36901
37531
  */
36902
- downloadLottie(id: string, query?: ExportLottieQuery, opts?: CallOpts$28): Promise<LottieDownload>;
37532
+ downloadLottie(id: string, query?: ExportLottieQuery, opts?: CallOpts$30): Promise<LottieDownload>;
36903
37533
  /**
36904
37534
  * Turn one of your Studio documents (deck, doc, sheet) into an editable creative — slides become scenes with a
36905
37535
  * `layout` and speaker `notes`, doc pages a `flow` group, sheets a `cell_grid`; nodes carry semantic `role`s.
36906
37536
  * Idempotent: a document that already has a creative resolves to it (`existing: true`). Free. 404 unknown document,
36907
37537
  * 409 `document_spec_missing`, 400 `invalid_spec`, 413 `too_large`.
36908
37538
  */
36909
- fromDocument(documentId: string, opts?: CallOpts$28): Promise<StudioCreativeFromDocument>;
37539
+ fromDocument(documentId: string, opts?: CallOpts$30): Promise<StudioCreativeFromDocument>;
36910
37540
  /**
36911
37541
  * Build a deck / doc / sheet creative (at `seq`, default the head) into a PPTX / DOCX / XLSX — a new version of its
36912
37542
  * Studio document (`document`, exactly the `POST /v1/studio/documents` body). Converter notes come back in
@@ -36918,7 +37548,7 @@ export declare class Creatives {
36918
37548
  * `quote_micro_usd` is held). Tell the two apart with `isPagedBuild`, poll with `exports.wait(r.export.id)` or use
36919
37549
  * `buildAndWait`.
36920
37550
  */
36921
- build(id: string, body?: CreativeBuildRequest | CreativePagedBuildRequest, opts?: CallOpts$28): Promise<CreativeBuildResult>;
37551
+ build(id: string, body?: CreativeBuildRequest | CreativePagedBuildRequest, opts?: CallOpts$30): Promise<CreativeBuildResult>;
36922
37552
  /**
36923
37553
  * `build`, then — for a carousel / print creative — poll the export job until it has `succeeded` or `failed`
36924
37554
  * (`exports.wait`). Resolves to the 200 build for deck / doc / sheet, or to the finished `StudioExport`.
@@ -36931,7 +37561,7 @@ export declare class Creatives {
36931
37561
  * the creative. Token-metered (`cost_micro_usd`) under a small wallet hold (402 `insufficient_funds`); 400
36932
37562
  * `not_supported_for_kind`, 422 `no_post_copy`, 504 `timeout`. `idempotencyKey` replays a retry (24 h).
36933
37563
  */
36934
- postCopy(id: string, body?: StudioPostCopyRequest, opts?: CallOpts$28 & {
37564
+ postCopy(id: string, body?: StudioPostCopyRequest, opts?: CallOpts$30 & {
36935
37565
  idempotencyKey?: string;
36936
37566
  }): Promise<StudioPostCopy>;
36937
37567
  /**
@@ -36940,7 +37570,7 @@ export declare class Creatives {
36940
37570
  * one new version (`base_seq` rebased like `edit`, locks honoured unless `force`). Free. 409 `captions_required`
36941
37571
  * (run `captions` on that clip first) or `stale`; video creatives only.
36942
37572
  */
36943
- transcriptCut(id: string, body: CreativeTranscriptCutRequest, opts?: CallOpts$28): Promise<CreativeTranscriptCutResult>;
37573
+ transcriptCut(id: string, body: CreativeTranscriptCutRequest, opts?: CallOpts$30): Promise<CreativeTranscriptCutResult>;
36944
37574
  /**
36945
37575
  * Generate a new picture for an `image` node (`prompt`, optional `model`, `aspect_ratio` — default the closest
36946
37576
  * ratio of the node box — `base_seq`, `force`) and swap it in as one new version. A node with a `castId` sends that
@@ -36948,7 +37578,7 @@ export declare class Creatives {
36948
37578
  * like `images.generate` (402 `insufficient_funds`); 400 `content_filtered` charges nothing. `idempotencyKey`
36949
37579
  * replays a retry (24 h).
36950
37580
  */
36951
- regenerateNode(id: string, nodeId: string, body: CreativeRegenerateNodeRequest, opts?: CallOpts$28 & {
37581
+ regenerateNode(id: string, nodeId: string, body: CreativeRegenerateNodeRequest, opts?: CallOpts$30 & {
36952
37582
  idempotencyKey?: string;
36953
37583
  }): Promise<CreativeRegenerateNodeResult>;
36954
37584
  /**
@@ -36957,7 +37587,7 @@ export declare class Creatives {
36957
37587
  * `fonts` (default true) sets heading / body font refs by role, locked nodes are skipped unless `force`. The kit
36958
37588
  * logo is registered too. `base_seq` defaults to the head (rebased like `edit`, 409 `stale` else). Free.
36959
37589
  */
36960
- restyle(id: string, body: CreativeRestyleRequest, opts?: CallOpts$28): Promise<CreativeRestyleResult>;
37590
+ restyle(id: string, body: CreativeRestyleRequest, opts?: CallOpts$30): Promise<CreativeRestyleResult>;
36961
37591
  /**
36962
37592
  * Auto-captions: transcribe a voice clip (`clip_id`, default the first voice clip) word by word and add or update a
36963
37593
  * captions node (`preset`, default `bold-pill`) as one new version. Words are cached on the asset (free next time
@@ -36965,86 +37595,84 @@ export declare class Creatives {
36965
37595
  * transcription is billed at the speech-to-text rate (`cost_micro_usd`). Video creatives only (400
36966
37596
  * `unsupported_kind`); 403 `residency_unavailable`, 503 `transcription_unavailable`.
36967
37597
  */
36968
- captions(id: string, body?: CreativeCaptionsRequest, opts?: CallOpts$28): Promise<CreativeCaptionsResult>;
37598
+ captions(id: string, body?: CreativeCaptionsRequest, opts?: CallOpts$30): Promise<CreativeCaptionsResult>;
36969
37599
  /** The captions as SubRip text on the document timeline (`node_id`, `seq` optional); 404 without captions. Free. */
36970
- captionsSrt(id: string, query?: CreativeCaptionsQuery, opts?: CallOpts$28): Promise<string>;
37600
+ captionsSrt(id: string, query?: CreativeCaptionsQuery, opts?: CallOpts$30): Promise<string>;
36971
37601
  /** The captions as WebVTT text on the document timeline (`node_id`, `seq` optional); 404 without captions. Free. */
36972
- captionsVtt(id: string, query?: CreativeCaptionsQuery, opts?: CallOpts$28): Promise<string>;
37602
+ captionsVtt(id: string, query?: CreativeCaptionsQuery, opts?: CallOpts$30): Promise<string>;
36973
37603
  /**
36974
37604
  * Adapt to platforms (`tiktok`, `reels`, `shorts`, `feed-square`, `feed-portrait`, `youtube`): one format per
36975
37605
  * platform in one new version, text kept inside each platform's safe zone and above its legible size.
36976
37606
  * `focal: 'vision'` (token-metered) finds the focal point of full-bleed images; it fails open. Free otherwise.
36977
37607
  */
36978
- adapt(id: string, body: CreativeAdaptRequest, opts?: CallOpts$28): Promise<CreativeAdaptResult>;
37608
+ adapt(id: string, body: CreativeAdaptRequest, opts?: CallOpts$30): Promise<CreativeAdaptResult>;
36979
37609
  /**
36980
37610
  * Fix lint issues as one new version: deterministic fixes (free) for `off_brand_color`, `text_too_small`,
36981
37611
  * `outside_platform_safe_zone` and `flashing` (`codes` limits them); `agent: true` (token-metered) gives the rest
36982
37612
  * to one `codai` turn. Nothing to fix: the current `seq`, empty `fixed`, no new version.
36983
37613
  */
36984
- lintFix(id: string, body?: CreativeLintFixRequest, opts?: CallOpts$28): Promise<CreativeLintFixResult>;
37614
+ lintFix(id: string, body?: CreativeLintFixRequest, opts?: CallOpts$30): Promise<CreativeLintFixResult>;
36985
37615
  /**
36986
37616
  * The tweak panel model: one control per variable (stored `meta.controls` entry or derived from the type). Change
36987
37617
  * values with a `setVar` op and controls with a `setControl` op (`edit`). Free.
36988
37618
  */
36989
- controls(id: string, opts?: CallOpts$28): Promise<CreativeControls>;
37619
+ controls(id: string, opts?: CallOpts$30): Promise<CreativeControls>;
36990
37620
  /**
36991
37621
  * Localisation state: source locale, glossary, unit count and per locale translated / missing / stale / voice.
36992
37622
  * With `locale` (+ `units`, default 1) also the units of that locale (paged with `offset` / `limit` ≤ 500). Free.
36993
37623
  */
36994
- locales(id: string, query?: CreativeLocalesQuery, opts?: CallOpts$28): Promise<CreativeLocaleStatus>;
37624
+ locales(id: string, query?: CreativeLocalesQuery, opts?: CallOpts$30): Promise<CreativeLocaleStatus>;
36995
37625
  /**
36996
37626
  * Translate every text into up to 10 BCP-47 `locales` as per-locale overrides (one new version, author `agent`).
36997
37627
  * Token-metered `codai` turns; `glossary` terms and the brand kit name stay verbatim, `tone` picks the address,
36998
37628
  * `only_missing` (default true) skips fresh translations, `voice: true` (video, billed) narrates voice clips again.
36999
37629
  * 400 `nothing_to_translate`; 503 `localize_unavailable` when every locale failed.
37000
37630
  */
37001
- localize(id: string, body: CreativeLocalizeRequest, opts?: CallOpts$28): Promise<CreativeLocalizeResult>;
37631
+ localize(id: string, body: CreativeLocalizeRequest, opts?: CallOpts$30): Promise<CreativeLocalizeResult>;
37002
37632
  /**
37003
37633
  * Save `locale` as a new standalone creative (translations applied, overrides dropped, `fork_of` recorded; default
37004
37634
  * title `<title> (<locale>)`). 404 `Locale not found.`. Free (HTTP 201).
37005
37635
  */
37006
- forkLocale(id: string, locale: string, body?: CreativeLocaleForkRequest, opts?: CallOpts$28): Promise<CreativeLocaleForkResult>;
37636
+ forkLocale(id: string, locale: string, body?: CreativeLocaleForkRequest, opts?: CallOpts$30): Promise<CreativeLocaleForkResult>;
37007
37637
  /**
37008
37638
  * Create a public link: `view` (read-only preview of version `seq` or the head; `allow_remix` default false) or
37009
37639
  * `review` (comments by name, no account; `can_approve` lets the holder approve). The `token` and `url` are shown
37010
37640
  * only in this answer (HTTP 201). 400 `unknown_seq`; 409 `too_many_shares` (20 active links). Free.
37011
37641
  */
37012
- createShare(id: string, body: StudioShareCreateRequest, opts?: CallOpts$28): Promise<StudioShareCreated>;
37642
+ createShare(id: string, body: StudioShareCreateRequest, opts?: CallOpts$30): Promise<StudioShareCreated>;
37013
37643
  /** The active links (not revoked, not expired), newest first; `url` is always null. Free. */
37014
- listShares(id: string, opts?: CallOpts$28): Promise<StudioShareList>;
37644
+ listShares(id: string, opts?: CallOpts$30): Promise<StudioShareList>;
37015
37645
  /** Revoke a link: it answers 404 from now on. 404 when unknown or already revoked. Free. */
37016
- revokeShare(id: string, shareId: string, opts?: CallOpts$28): Promise<void>;
37646
+ revokeShare(id: string, shareId: string, opts?: CallOpts$30): Promise<void>;
37017
37647
  /**
37018
37648
  * The review state: `status` (`draft` → `in_review` → `approved` | `changes_requested`), requested / approved
37019
37649
  * version (`approved_is_head` false once the creative changed), decider and thread counts. Free.
37020
37650
  */
37021
- review(id: string, opts?: CallOpts$28): Promise<StudioReview>;
37651
+ review(id: string, opts?: CallOpts$30): Promise<StudioReview>;
37022
37652
  /** Send the head to review (`in_review`, earlier decision cleared) so approver links can decide. Free. */
37023
- requestReview(id: string, opts?: CallOpts$28): Promise<StudioReview>;
37653
+ requestReview(id: string, opts?: CallOpts$30): Promise<StudioReview>;
37024
37654
  /** Back to `draft` (decision cleared, comments kept). Free. */
37025
- resetReview(id: string, opts?: CallOpts$28): Promise<StudioReview>;
37655
+ resetReview(id: string, opts?: CallOpts$30): Promise<StudioReview>;
37026
37656
  /** Comment threads, newest first (≤ 200), replies oldest first; `status` `open` | `resolved` | `all`. Free. */
37027
- reviewThreads(id: string, query?: StudioReviewThreadsQuery, opts?: CallOpts$28): Promise<StudioReviewThreadList>;
37657
+ reviewThreads(id: string, query?: StudioReviewThreadsQuery, opts?: CallOpts$30): Promise<StudioReviewThreadList>;
37028
37658
  /**
37029
37659
  * Start a thread as the owner, optionally anchored to `node_id` / `scene_id` / `t_ms` (checked against the head:
37030
37660
  * 400 `unknown_node` / `unknown_scene`; HTTP 201). 409 `too_many_comments`. Free.
37031
37661
  */
37032
- createReviewThread(id: string, body: StudioReviewThreadCreateRequest, opts?: CallOpts$28): Promise<StudioReviewThread>;
37662
+ createReviewThread(id: string, body: StudioReviewThreadCreateRequest, opts?: CallOpts$30): Promise<StudioReviewThread>;
37033
37663
  /** Reply in a thread as the owner (HTTP 201) — returns the whole thread. Free. */
37034
37664
  replyReviewThread(id: string, threadId: string, body: {
37035
37665
  body: string;
37036
- }, opts?: CallOpts$28): Promise<StudioReviewThread>;
37666
+ }, opts?: CallOpts$30): Promise<StudioReviewThread>;
37037
37667
  /** Resolve a thread. Free. */
37038
- resolveReviewThread(id: string, threadId: string, opts?: CallOpts$28): Promise<StudioReviewThread>;
37668
+ resolveReviewThread(id: string, threadId: string, opts?: CallOpts$30): Promise<StudioReviewThread>;
37039
37669
  /** Reopen a resolved thread. Free. */
37040
- reopenReviewThread(id: string, threadId: string, opts?: CallOpts$28): Promise<StudioReviewThread>;
37670
+ reopenReviewThread(id: string, threadId: string, opts?: CallOpts$30): Promise<StudioReviewThread>;
37041
37671
  /** Delete any comment (owner moderation; deleting a root hides the thread). 404 when unknown. Free. */
37042
- deleteReviewComment(id: string, commentId: string, opts?: CallOpts$28): Promise<void>;
37672
+ deleteReviewComment(id: string, commentId: string, opts?: CallOpts$30): Promise<void>;
37043
37673
  /** Poll a frame job: frames when done (`status: 'succeeded'`), `status: 'running'` meanwhile; 404 unknown job. */
37044
- frameJob(id: string, jobId: string, opts?: CallOpts$28): Promise<CreativeFrameResult>;
37674
+ frameJob(id: string, jobId: string, opts?: CallOpts$30): Promise<CreativeFrameResult>;
37045
37675
  }
37046
- //#endregion
37047
- //#region src/resources/brand-kits.d.ts
37048
37676
  export type BrandKit = Schema<'BrandKit'>;
37049
37677
  export type BrandKitTokens = Schema<'BrandKitTokens'>;
37050
37678
  export type BrandKitDtcg = Mutable<Schema<'BrandKitDtcg'>>;
@@ -37057,7 +37685,7 @@ export type BrandKitCreateRequest = Mutable<Body<'createBrandKit'>>;
37057
37685
  export type BrandKitUpdateRequest = Mutable<Body<'updateBrandKit'>>;
37058
37686
  export type BrandKitList = Reply<'listBrandKits'>;
37059
37687
  export type BrandKitDeleted = Reply<'deleteBrandKit'>;
37060
- type CallOpts$27 = {
37688
+ type CallOpts$29 = {
37061
37689
  ext?: CodaiRequestExtensions;
37062
37690
  signal?: AbortSignal;
37063
37691
  };
@@ -37069,37 +37697,35 @@ export declare class BrandKits {
37069
37697
  * (import) — exactly one. 400 `invalid_tokens` (with `details.issues`) for an invalid DTCG document, 404 when
37070
37698
  * `logo_asset_id` is not one of your ready image assets. Free.
37071
37699
  */
37072
- create(body: BrandKitCreateRequest, opts?: CallOpts$27): Promise<BrandKit>;
37700
+ create(body: BrandKitCreateRequest, opts?: CallOpts$29): Promise<BrandKit>;
37073
37701
  /**
37074
37702
  * Edit a kit: `tokens` is merged onto the current kit, `dtcg` replaces the whole document (not both),
37075
37703
  * `logo_asset_id: null` removes the logo. Creatives keep their tokens until `creatives.restyle`. Free.
37076
37704
  */
37077
- update(id: string, body: BrandKitUpdateRequest, opts?: CallOpts$27): Promise<BrandKit>;
37705
+ update(id: string, body: BrandKitUpdateRequest, opts?: CallOpts$29): Promise<BrandKit>;
37078
37706
  /** The kit as a DTCG 2025.10 JSON document (`$extensions['ro.codai']` = kit id, name, logo asset id). Free. */
37079
- exportDtcg(id: string, opts?: CallOpts$27): Promise<BrandKitDtcg>;
37707
+ exportDtcg(id: string, opts?: CallOpts$29): Promise<BrandKitDtcg>;
37080
37708
  /**
37081
37709
  * Extract a brand kit from a public `https` page (`{ url }`) or from one of your logo images
37082
37710
  * (`{ logo_asset_id }`, PNG / JPEG / WebP up to 5 MB; it becomes the kit logo): palette (primary, secondary, accent,
37083
37711
  * background, text) and heading / body fonts. One bounded `codai` model call (token-metered); 400 `url_blocked` for
37084
37712
  * private hosts, 400 `unsupported_media` for a bad logo, 422 `fetch_failed` / `extract_failed`, 504 `timeout`.
37085
37713
  */
37086
- extract(body: BrandKitExtractRequest, opts?: CallOpts$27): Promise<BrandKit>;
37714
+ extract(body: BrandKitExtractRequest, opts?: CallOpts$29): Promise<BrandKit>;
37087
37715
  /** Your brand kits, newest first (`limit` 1–100, default 50). Free. */
37088
37716
  list(query?: {
37089
37717
  limit?: number;
37090
- }, opts?: CallOpts$27): Promise<BrandKitList>;
37718
+ }, opts?: CallOpts$29): Promise<BrandKitList>;
37091
37719
  /** One kit with a signed logo URL (1 h), its `dtcg` and the WCAG `contrast` pairs. Free. */
37092
- retrieve(id: string, opts?: CallOpts$27): Promise<BrandKit>;
37720
+ retrieve(id: string, opts?: CallOpts$29): Promise<BrandKit>;
37093
37721
  /** Delete a kit (creatives keep their tokens; the logo asset stays). Free. */
37094
- delete(id: string, opts?: CallOpts$27): Promise<BrandKitDeleted>;
37722
+ delete(id: string, opts?: CallOpts$29): Promise<BrandKitDeleted>;
37095
37723
  }
37096
- //#endregion
37097
- //#region src/resources/templates.d.ts
37098
37724
  export type CreativeTemplateVar = Schema<'CreativeTemplateVar'>;
37099
37725
  export type CreativeTemplateList = Reply<'listCreativeTemplates'>;
37100
37726
  export type CreativeTemplateListQuery = QueryOf<'listCreativeTemplates'>;
37101
37727
  export type CreativeTemplateDeleted = Reply<'deleteCreativeTemplate'>;
37102
- type CallOpts$26 = {
37728
+ type CallOpts$28 = {
37103
37729
  ext?: CodaiRequestExtensions;
37104
37730
  signal?: AbortSignal;
37105
37731
  };
@@ -37112,25 +37738,23 @@ export declare class Templates {
37112
37738
  * (default). `kind` filters both. Without `doc`. Free. A starter id works anywhere a template id does
37113
37739
  * (`retrieve`, `creatives.create({ template })`, batches); starters cannot be deleted.
37114
37740
  */
37115
- list(query?: CreativeTemplateListQuery, opts?: CallOpts$26): Promise<CreativeTemplateList>;
37741
+ list(query?: CreativeTemplateListQuery, opts?: CallOpts$28): Promise<CreativeTemplateList>;
37116
37742
  /** One template with its variables and `doc`. Free. */
37117
- retrieve(id: string, opts?: CallOpts$26): Promise<Schema<'CreativeTemplate'>>;
37743
+ retrieve(id: string, opts?: CallOpts$28): Promise<Schema<'CreativeTemplate'>>;
37118
37744
  /** Delete a template (creatives made from it are not affected). Free. */
37119
- delete(id: string, opts?: CallOpts$26): Promise<CreativeTemplateDeleted>;
37745
+ delete(id: string, opts?: CallOpts$28): Promise<CreativeTemplateDeleted>;
37120
37746
  }
37121
- //#endregion
37122
- //#region src/resources/productions.d.ts
37123
37747
  export type StudioProductionCreate = Mutable<Body<'createStudioProduction'>>;
37124
37748
  export type StudioProduction = Schema<'StudioProduction'>;
37125
- type CallOpts$25 = {
37749
+ type CallOpts$27 = {
37126
37750
  ext?: CodaiRequestExtensions;
37127
37751
  signal?: AbortSignal;
37128
37752
  };
37129
- export interface ProductionCreateOptions extends CallOpts$25 {
37753
+ export interface ProductionCreateOptions extends CallOpts$27 {
37130
37754
  /** `Idempotency-Key`: a retry with the same key replays the first production instead of starting another one. */
37131
37755
  idempotencyKey?: string;
37132
37756
  }
37133
- export interface ProductionWaitOptions extends CallOpts$25 {
37757
+ export interface ProductionWaitOptions extends CallOpts$27 {
37134
37758
  /** Delay between polls (default 5000 ms). */
37135
37759
  intervalMs?: number;
37136
37760
  /** Give up after this long (default 600 000 ms = 10 min). */
@@ -37143,7 +37767,7 @@ export declare class Productions {
37143
37767
  /** `POST /v1/studio/productions` — brief → storyboard → assets → creative → queued draft render (202). */
37144
37768
  create(body: StudioProductionCreate, opts?: ProductionCreateOptions): Promise<StudioProduction>;
37145
37769
  /** `GET /v1/studio/productions/{id}` — advances the production and returns it (another account's id is a 404). */
37146
- retrieve(id: string, opts?: CallOpts$25): Promise<StudioProduction>;
37770
+ retrieve(id: string, opts?: CallOpts$27): Promise<StudioProduction>;
37147
37771
  /**
37148
37772
  * Poll `retrieve` every `intervalMs` (default 5 s) until the production `succeeded` or `failed` (a failed one
37149
37773
  * resolves too — check `status` / `error`). Throws after `timeoutMs` (default 10 min) or when `signal` aborts.
@@ -37152,8 +37776,66 @@ export declare class Productions {
37152
37776
  /** `create` + `wait`. */
37153
37777
  run(body: StudioProductionCreate, opts?: ProductionCreateOptions & ProductionWaitOptions): Promise<StudioProduction>;
37154
37778
  }
37155
- //#endregion
37156
- //#region src/resources/media-ops.d.ts
37779
+ export type MusicRoomCreate = Mutable<Body<'createStudioMusicRoom'>>;
37780
+ export type MusicRoomChoose = Mutable<Schema<'MusicRoomChoose'>>;
37781
+ export type MusicRoomDirect = Mutable<Body<'directStudioMusicRoom'>>;
37782
+ export type MusicRoomDto = Schema<'MusicRoom'>;
37783
+ export type MusicRoomList = Schema<'MusicRoomList'>;
37784
+ export type MusicRoomQuota = Schema<'MusicRoomQuota'>;
37785
+ export type MusicRole = Schema<'MusicRole'>;
37786
+ export type MusicRoomPlanVariant = Schema<'MusicRoomPlanVariant'>;
37787
+ export type MusicRoomListQuery = QueryOf<'listStudioMusicRooms'>;
37788
+ type CallOpts$26 = {
37789
+ ext?: CodaiRequestExtensions;
37790
+ signal?: AbortSignal;
37791
+ };
37792
+ export interface MusicRoomWriteOptions extends CallOpts$26 {
37793
+ /** `Idempotency-Key`: a retry with the same key replays the first answer instead of starting the work again. */
37794
+ idempotencyKey?: string;
37795
+ }
37796
+ export interface MusicRoomWaitOptions extends CallOpts$26 {
37797
+ /** Also return when the song waits at a gate (`status: 'waiting'`). Default false. */
37798
+ untilGate?: boolean;
37799
+ /** Delay between polls (default 10 000 ms). */
37800
+ intervalMs?: number;
37801
+ /** Give up after this long (default 1 800 000 ms = 30 min). */
37802
+ timeoutMs?: number;
37803
+ }
37804
+ /** The song reached a terminal state (`succeeded` or `failed`). */
37805
+ export declare const isMusicRoomFinished: (r: Pick<MusicRoomDto, "status">) => boolean;
37806
+ export declare class MusicRoom {
37807
+ private readonly http;
37808
+ constructor(http: HttpClient);
37809
+ /** `POST /v1/studio/music-room` — start a song (202; the producer plans it, then it waits at the plan gate). */
37810
+ create(body: MusicRoomCreate, opts?: MusicRoomWriteOptions): Promise<MusicRoomDto>;
37811
+ /** `GET /v1/studio/music-room/{id}` — advances the workflow and returns the song (another account's id is a 404). */
37812
+ get(id: string, opts?: CallOpts$26): Promise<MusicRoomDto>;
37813
+ /** `GET /v1/studio/music-room` — your songs, newest first; page with `before` while `has_more`. */
37814
+ list(query?: MusicRoomListQuery, opts?: CallOpts$26): Promise<MusicRoomList>;
37815
+ /**
37816
+ * `POST /v1/studio/music-room/{id}/choose` — answer the open gate: `{ gate: 'plan', variant }`,
37817
+ * `{ gate: 'demo', approve: true }` or `{ gate: 'final', approve: true }` (409 `not_at_gate` otherwise).
37818
+ */
37819
+ choose(id: string, answer: MusicRoomChoose, opts?: CallOpts$26): Promise<MusicRoomDto>;
37820
+ /**
37821
+ * `POST /v1/studio/music-room/{id}/direct` — one player re-plays its part following `direction` and the demo is
37822
+ * re-rendered (202; only at the demo or final gate).
37823
+ */
37824
+ direct(id: string, body: MusicRoomDirect, opts?: MusicRoomWriteOptions): Promise<MusicRoomDto>;
37825
+ /** `GET /v1/studio/music-room/quota` — `{ plan, included, used, remaining, period_end }` for this calendar month. */
37826
+ quota(opts?: CallOpts$26): Promise<MusicRoomQuota>;
37827
+ /**
37828
+ * Poll `get` every `intervalMs` (default 10 s) until the song `succeeded` or `failed` (a failed one resolves too —
37829
+ * check `status` / `error`), or with `untilGate: true` until it waits at a gate. Throws after `timeoutMs`
37830
+ * (default 30 min) or when `signal` aborts.
37831
+ */
37832
+ wait(id: string, opts?: MusicRoomWaitOptions): Promise<MusicRoomDto>;
37833
+ }
37834
+ /** codai Studio namespace (`client.studio.musicRoom`). */
37835
+ export interface Studio {
37836
+ /** Music Room: a team of role agents makes a song with three approval gates. */
37837
+ readonly musicRoom: MusicRoom;
37838
+ }
37157
37839
  export type MediaOpId = Schema<'MediaOpId'>;
37158
37840
  export type MediaOp = Schema<'MediaOp'>;
37159
37841
  export type MediaOpList = Reply<'listStudioMediaOps'>;
@@ -37161,7 +37843,7 @@ export type MediaOpRequest = Mutable<Schema<'MediaOpRequest'>>;
37161
37843
  export type MediaOpQuote = Schema<'MediaOpQuote'>;
37162
37844
  export type MediaOpResult = Schema<'MediaOpResult'>;
37163
37845
  export type MediaOpJob = Schema<'MediaOpJob'>;
37164
- type CallOpts$24 = {
37846
+ type CallOpts$25 = {
37165
37847
  ext?: CodaiRequestExtensions;
37166
37848
  signal?: AbortSignal;
37167
37849
  };
@@ -37177,11 +37859,11 @@ export interface MediaOpInput {
37177
37859
  */
37178
37860
  maskPngB64?: string;
37179
37861
  }
37180
- export interface MediaOpRunOptions extends CallOpts$24 {
37862
+ export interface MediaOpRunOptions extends CallOpts$25 {
37181
37863
  /** `Idempotency-Key`: a retry with the same key replays the first answer instead of running (and billing) again. */
37182
37864
  idempotencyKey?: string;
37183
37865
  }
37184
- export interface MediaOpWaitOptions extends CallOpts$24 {
37866
+ export interface MediaOpWaitOptions extends CallOpts$25 {
37185
37867
  /** Delay between polls (default 3000 ms). */
37186
37868
  intervalMs?: number;
37187
37869
  /** Give up after this long (default 1 200 000 ms = 20 min, the server-side job timeout). */
@@ -37194,16 +37876,16 @@ export declare class MediaOps {
37194
37876
  private readonly http;
37195
37877
  constructor(http: HttpClient);
37196
37878
  /** `GET /v1/studio/media-ops` — every op with engine, mode, inputs, `available` and a list quote (free). */
37197
- list(opts?: CallOpts$24): Promise<MediaOpList>;
37879
+ list(opts?: CallOpts$25): Promise<MediaOpList>;
37198
37880
  /** `POST /v1/studio/media-ops/{op}/quote` — exact price of this request; nothing is held or billed. */
37199
- quote(op: MediaOpId | string, input?: MediaOpInput, opts?: CallOpts$24): Promise<MediaOpQuote>;
37881
+ quote(op: MediaOpId | string, input?: MediaOpInput, opts?: CallOpts$25): Promise<MediaOpQuote>;
37200
37882
  /**
37201
37883
  * `POST /v1/studio/media-ops/{op}` — sync ops resolve to a `media_op.result` with the outputs, async ops to a
37202
37884
  * `media_op.job` (`status: pending`; poll with `job` / `wait`). Use `isMediaOpJob` to tell them apart.
37203
37885
  */
37204
37886
  run(op: MediaOpId | string, input?: MediaOpInput, opts?: MediaOpRunOptions): Promise<MediaOpResult | MediaOpJob>;
37205
37887
  /** `GET /v1/studio/media-ops/jobs/{id}` — the job; reading a finished one stores its outputs and bills it once. */
37206
- job(id: string, opts?: CallOpts$24): Promise<MediaOpJob>;
37888
+ job(id: string, opts?: CallOpts$25): Promise<MediaOpJob>;
37207
37889
  /**
37208
37890
  * Poll `job` every `intervalMs` (default 3 s) until it is `ready` or `failed` (a failed job resolves too — check
37209
37891
  * `status` / `error`). Throws after `timeoutMs` (default 20 min) or when `signal` aborts.
@@ -37212,8 +37894,6 @@ export declare class MediaOps {
37212
37894
  /** `run`, then `wait` when the op is async. */
37213
37895
  runAndWait(op: MediaOpId | string, input?: MediaOpInput, opts?: MediaOpRunOptions & MediaOpWaitOptions): Promise<MediaOpResult | MediaOpJob>;
37214
37896
  }
37215
- //#endregion
37216
- //#region src/resources/lyrics.d.ts
37217
37897
  export type LyricsRequest = Mutable<Schema<'StudioLyricsRequest'>>;
37218
37898
  export type LyricsSectionKind = Schema<'StudioLyricsSectionKind'>;
37219
37899
  export type LyricsLine = Schema<'StudioLyricsLine'>;
@@ -37243,8 +37923,6 @@ export declare class LyricsResource {
37243
37923
  */
37244
37924
  align(body: LyricsAlignRequest, opts?: LyricsCallOptions): Promise<LyricsAlignment>;
37245
37925
  }
37246
- //#endregion
37247
- //#region src/resources/realtime.d.ts
37248
37926
  /**
37249
37927
  * `wss://…/v1/realtime` — dependency-free realtime client (live transcription and the OpenAI
37250
37928
  * Realtime protocol lanes). Not an OpenAPI operation (OpenAPI cannot describe WebSockets), so it is
@@ -37383,8 +38061,6 @@ export declare class Realtime {
37383
38061
  /** Open a realtime session. Returns immediately; `await session.ready` to wait for the socket. */
37384
38062
  connect(opts?: RealtimeConnectOptions): RealtimeSession;
37385
38063
  }
37386
- //#endregion
37387
- //#region src/resources/jam.d.ts
37388
38064
  export declare const JAM_SUBPROTOCOL = "codai-jam";
37389
38065
  /** WebSocket close codes of `/v1/studio/jam`. */
37390
38066
  export declare const JAM_CLOSE_CODES: {
@@ -37496,8 +38172,6 @@ export declare class Jam {
37496
38172
  /** Open a live jam. Returns immediately; `await session.ready` to wait for the socket. */
37497
38173
  connect(opts?: JamConnectOptions): JamSession;
37498
38174
  }
37499
- //#endregion
37500
- //#region src/resources/batches.d.ts
37501
38175
  export type StudioBatchStatus = Schema<'StudioBatchStatus'>;
37502
38176
  export type StudioBatchRowStatus = Schema<'StudioBatchRowStatus'>;
37503
38177
  export type StudioBatch = Schema<'StudioBatch'>;
@@ -37514,11 +38188,11 @@ export type StudioBatchDryRun = Schema<'StudioBatchDryRun'>;
37514
38188
  export type StudioBatchCreateRequest = Mutable<Schema<'StudioBatchCreateRequest'>>;
37515
38189
  export type StudioBatchListQuery = QueryOf<'listStudioBatches'>;
37516
38190
  export type StudioBatchGetQuery = QueryOf<'getStudioBatch'>;
37517
- type CallOpts$23 = {
38191
+ type CallOpts$24 = {
37518
38192
  ext?: CodaiRequestExtensions;
37519
38193
  signal?: AbortSignal;
37520
38194
  };
37521
- export interface BatchWaitOptions extends CallOpts$23 {
38195
+ export interface BatchWaitOptions extends CallOpts$24 {
37522
38196
  /** Delay between polls (default 3000 ms). */
37523
38197
  intervalMs?: number;
37524
38198
  /** Give up after this long (default 600 000 ms = 10 min). */
@@ -37531,32 +38205,30 @@ export declare class Batches {
37531
38205
  * Create a batch: rows are validated (invalid rows are stored as `failed`) and run in the background; poll `get`
37532
38206
  * or `wait`. 400 `invalid_rows` when every row is invalid. Free (translations and renders are billed as usual).
37533
38207
  */
37534
- create(body: StudioBatchCreateRequest, opts?: CallOpts$23): Promise<StudioBatchDetail>;
38208
+ create(body: StudioBatchCreateRequest, opts?: CallOpts$24): Promise<StudioBatchDetail>;
37535
38209
  /** Validate only (`dry_run: true`): the mapping, row errors, a 3-row preview and an estimate; nothing stored. Free. */
37536
- dryRun(body: StudioBatchCreateRequest, opts?: CallOpts$23): Promise<StudioBatchDryRun>;
38210
+ dryRun(body: StudioBatchCreateRequest, opts?: CallOpts$24): Promise<StudioBatchDryRun>;
37537
38211
  /** Your batches, newest first (`limit` 1–50, `before` = the previous `next_before`). Free. */
37538
- list(query?: StudioBatchListQuery, opts?: CallOpts$23): Promise<StudioBatchList>;
38212
+ list(query?: StudioBatchListQuery, opts?: CallOpts$24): Promise<StudioBatchList>;
37539
38213
  /** The batch (`rows: 1` adds rows; `status`, `offset`, `limit` ≤ 100). Each poll advances it a little. Free. */
37540
- get(id: string, query?: StudioBatchGetQuery, opts?: CallOpts$23): Promise<StudioBatchDetail>;
38214
+ get(id: string, query?: StudioBatchGetQuery, opts?: CallOpts$24): Promise<StudioBatchDetail>;
37541
38215
  /** Stop the batch; rows not started become `skipped`. 409 `not_cancellable` when already finished. Free. */
37542
- cancel(id: string, opts?: CallOpts$23): Promise<StudioBatch>;
38216
+ cancel(id: string, opts?: CallOpts$24): Promise<StudioBatch>;
37543
38217
  /** Queue the failed rows again (≤ 3 attempts each). 409 `nothing_to_retry`. Free. */
37544
- retry(id: string, opts?: CallOpts$23): Promise<StudioBatch>;
38218
+ retry(id: string, opts?: CallOpts$24): Promise<StudioBatch>;
37545
38219
  /** The original CSV plus `creative_id`, `status`, `error`, `render_url` per row (formula-safe). Free. */
37546
- exportCsv(id: string, opts?: CallOpts$23): Promise<string>;
38220
+ exportCsv(id: string, opts?: CallOpts$24): Promise<string>;
37547
38221
  /**
37548
38222
  * Start building a ZIP of the finished renders (202, `zip.status: 'building'`; unchanged when already building or
37549
38223
  * ready). Poll `get` until `zip.status` is `ready` (signed `zip.url`). 409 `no_renders`. Free.
37550
38224
  */
37551
- zip(id: string, opts?: CallOpts$23): Promise<StudioBatch>;
38225
+ zip(id: string, opts?: CallOpts$24): Promise<StudioBatch>;
37552
38226
  /**
37553
38227
  * Poll `get` every `intervalMs` (default 3 s) until the batch is `completed`, `failed` or `cancelled` and resolve
37554
38228
  * with it. Throws when it is not done within `timeoutMs` (default 10 min) or when `signal` aborts.
37555
38229
  */
37556
38230
  wait(id: string, opts?: BatchWaitOptions): Promise<StudioBatch>;
37557
38231
  }
37558
- //#endregion
37559
- //#region src/resources/shares.d.ts
37560
38232
  export type StudioShareKind = Schema<'StudioShareKind'>;
37561
38233
  export type StudioPublicShare = Schema<'StudioPublicShare'>;
37562
38234
  export type StudioPublicReview = Schema<'StudioPublicReview'>;
@@ -37576,7 +38248,7 @@ export type StudioPublicShareQuery = {
37576
38248
  format?: string;
37577
38249
  locale?: string;
37578
38250
  };
37579
- type CallOpts$22 = {
38251
+ type CallOpts$23 = {
37580
38252
  ext?: CodaiRequestExtensions;
37581
38253
  signal?: AbortSignal;
37582
38254
  };
@@ -37593,28 +38265,26 @@ export declare class Shares {
37593
38265
  * `locale` (null for images); review links add the review state and every thread. 404 for unknown, revoked or
37594
38266
  * expired links. No key needed.
37595
38267
  */
37596
- get(tokenOrUrl: string, query?: StudioPublicShareQuery, opts?: CallOpts$22): Promise<StudioPublicShare>;
38268
+ get(tokenOrUrl: string, query?: StudioPublicShareQuery, opts?: CallOpts$23): Promise<StudioPublicShare>;
37597
38269
  /**
37598
38270
  * Copy the version a `view` link shows into a new creative of yours (the owner's ready assets are copied, the
37599
38271
  * foreign brand kit dropped; HTTP 201). 404 for review links or links without remix; 413 `remix_too_large`. Free.
37600
38272
  */
37601
- remix(tokenOrUrl: string, body?: StudioRemixRequest, opts?: CallOpts$22): Promise<StudioRemixResult>;
38273
+ remix(tokenOrUrl: string, body?: StudioRemixRequest, opts?: CallOpts$23): Promise<StudioRemixResult>;
37602
38274
  /** Start a thread through a review link (`name`, `body`, optional anchor; HTTP 201). 400 `invalid_name`. */
37603
- comment(tokenOrUrl: string, body: StudioPublicThreadCreateRequest, opts?: CallOpts$22): Promise<StudioReviewThread>;
38275
+ comment(tokenOrUrl: string, body: StudioPublicThreadCreateRequest, opts?: CallOpts$23): Promise<StudioReviewThread>;
37604
38276
  /** Reply in a thread through a review link (`name`, `body`; HTTP 201) — returns the whole thread. */
37605
- reply(tokenOrUrl: string, threadId: string, body: StudioPublicReplyRequest, opts?: CallOpts$22): Promise<StudioReviewThread>;
38277
+ reply(tokenOrUrl: string, threadId: string, body: StudioPublicReplyRequest, opts?: CallOpts$23): Promise<StudioReviewThread>;
37606
38278
  /** Resolve a thread through a review link (`resolved_by` = `name`). */
37607
- resolve(tokenOrUrl: string, threadId: string, body: StudioPublicNameRequest, opts?: CallOpts$22): Promise<StudioReviewThread>;
38279
+ resolve(tokenOrUrl: string, threadId: string, body: StudioPublicNameRequest, opts?: CallOpts$23): Promise<StudioReviewThread>;
37608
38280
  /** Reopen a resolved thread through a review link. */
37609
- reopen(tokenOrUrl: string, threadId: string, body: StudioPublicNameRequest, opts?: CallOpts$22): Promise<StudioReviewThread>;
38281
+ reopen(tokenOrUrl: string, threadId: string, body: StudioPublicNameRequest, opts?: CallOpts$23): Promise<StudioReviewThread>;
37610
38282
  /**
37611
38283
  * Approve or request changes (approver review links only). 403 `not_an_approver`, 409 `review_not_open`, 409
37612
38284
  * `stale` (with `head_seq`) when `seq` is not the head. Returns the new review state.
37613
38285
  */
37614
- decide(tokenOrUrl: string, body: StudioPublicDecisionRequest, opts?: CallOpts$22): Promise<StudioPublicReview>;
38286
+ decide(tokenOrUrl: string, body: StudioPublicDecisionRequest, opts?: CallOpts$23): Promise<StudioPublicReview>;
37615
38287
  }
37616
- //#endregion
37617
- //#region src/resources/voice-revocations.d.ts
37618
38288
  /** `email`, `voice_owner_name`, `details`, optional `evidence_url`. */
37619
38289
  export type StudioVoiceRevocationRequest = Mutable<Schema<'StudioVoiceRevocationRequest'>>;
37620
38290
  /** `{ id, object: 'studio.voice_revocation', status: 'open' }`. */
@@ -37628,8 +38298,30 @@ export declare class VoiceRevocations {
37628
38298
  signal?: AbortSignal;
37629
38299
  }): Promise<StudioVoiceRevocation>;
37630
38300
  }
37631
- //#endregion
37632
- //#region src/resources/vault.d.ts
38301
+ /** `{ session_id }` of a finished `purpose: singing` recording session for this voice. */
38302
+ export type StudioVoiceSingingConsentRequest = Mutable<Schema<'StudioVoiceSingingConsentRequest'>>;
38303
+ /** A custom voice (never the cloning key or any recording). */
38304
+ export type StudioVoice = Schema<'StudioVoice'>;
38305
+ /** `{ status: 'none' | 'active' | 'revoked', consented_at, revoked_at, quality: 'beta' }`. */
38306
+ export type StudioVoiceSinging = Schema<'StudioVoiceSinging'>;
38307
+ type CallOpts$22 = {
38308
+ ext?: CodaiRequestExtensions;
38309
+ signal?: AbortSignal;
38310
+ };
38311
+ export declare class Voices {
38312
+ private readonly http;
38313
+ constructor(http: HttpClient);
38314
+ /**
38315
+ * `POST /v1/studio/voices/{id}/singing-consent` — add the singing purpose from a finished singing recording session
38316
+ * (liveness-checked statement + sung sample). Returns the voice with `singing.status: 'active'`. Never retried.
38317
+ */
38318
+ addSingingConsent(id: string, body: StudioVoiceSingingConsentRequest, opts?: CallOpts$22): Promise<StudioVoice>;
38319
+ /**
38320
+ * `DELETE /v1/studio/voices/{id}/singing-consent` — revoke ONLY the singing purpose (204). The sung sample is deleted
38321
+ * at once; the voice keeps working for narration. Idempotent.
38322
+ */
38323
+ revokeSingingConsent(id: string, opts?: CallOpts$22): Promise<void>;
38324
+ }
37633
38325
  export type VaultAccount = Schema<'VaultAccount'>;
37634
38326
  export type VaultItemEnvelope = Mutable<Schema<'VaultItemEnvelope'>>;
37635
38327
  export type VaultUseDecision = Schema<'VaultUseDecision'>;
@@ -37764,8 +38456,6 @@ export declare class Vault {
37764
38456
  /** `POST /v1/vault/resolve` — codai local brokers only (cloud fallback of `codaid vault run`); 202 = approval. */
37765
38457
  resolve(body: VaultResolveRequest, opts?: CallOpts$21): Promise<VaultObject>;
37766
38458
  }
37767
- //#endregion
37768
- //#region src/resources/abuse-reports.d.ts
37769
38459
  /** `share_token`, `surface`, `category`, `explanation`, `reporter_name`, `reporter_email`, `good_faith: true`. */
37770
38460
  export type StudioAbuseReportRequest = Mutable<Schema<'StudioAbuseReportRequest'>>;
37771
38461
  /** `{ id, object: 'studio.abuse_report', status: 'open' }`. */
@@ -37779,8 +38469,6 @@ export declare class AbuseReports {
37779
38469
  signal?: AbortSignal;
37780
38470
  }): Promise<StudioAbuseReport>;
37781
38471
  }
37782
- //#endregion
37783
- //#region src/resources/provenance.d.ts
37784
38472
  /** `{ media_type, findings, codai_generated, synthid_checked: false, signature_verified: false }`. */
37785
38473
  export type ProvenanceCheckResult = Schema<'ProvenanceCheckResult'>;
37786
38474
  /** One mark: `{ kind, present, ai_marked, codai, details }`. */
@@ -37800,8 +38488,6 @@ export declare class Provenance {
37800
38488
  signal?: AbortSignal;
37801
38489
  }): Promise<ProvenanceCheckResult>;
37802
38490
  }
37803
- //#endregion
37804
- //#region src/resources/messages.d.ts
37805
38491
  export type MessageRequest = Mutable<Body<'createMessage'>>;
37806
38492
  export type MessageResponse = Reply<'createMessage'>;
37807
38493
  /** Request body as accepted by the SDK: `stream` is set by the method and `model` defaults to `codai`. */
@@ -37850,8 +38536,6 @@ export declare class Messages {
37850
38536
  create(body: MessageInput, opts?: MessageCallOptions): Promise<MessageResult>;
37851
38537
  stream(body: MessageInput, opts?: MessageCallOptions): MessageStream;
37852
38538
  }
37853
- //#endregion
37854
- //#region src/resources/models.d.ts
37855
38539
  export type Model = Schema<'CoreModel'>;
37856
38540
  export type ModelList = Reply<'listModels'>;
37857
38541
  export declare class Models {
@@ -37863,8 +38547,6 @@ export declare class Models {
37863
38547
  signal?: AbortSignal;
37864
38548
  }): Promise<Model[]>;
37865
38549
  }
37866
- //#endregion
37867
- //#region src/resources/orgs.d.ts
37868
38550
  export type Org = Schema<'OrgWithRole'>;
37869
38551
  export type OrgMember = Schema<'OrgMember'>;
37870
38552
  export type OrgRole = Schema<'OrgRole'>;
@@ -37892,8 +38574,6 @@ export declare class Orgs {
37892
38574
  /** `GET /v1/orgs` */
37893
38575
  list(opts?: CallOpts$20): Promise<Org[]>;
37894
38576
  }
37895
- //#endregion
37896
- //#region src/resources/projects.d.ts
37897
38577
  export type Project = Schema<'Project'>;
37898
38578
  export type ProjectIsolation = Schema<'ProjectIsolation'>;
37899
38579
  export type ProjectCreateBody = Mutable<Body<'createProject'>>;
@@ -37917,8 +38597,6 @@ export declare class Projects {
37917
38597
  /** `DELETE /v1/projects/{id}` — 409 `project_has_environments` until all are destroyed. */
37918
38598
  delete(projectId: string, opts?: CallOpts$19): Promise<Reply<'deleteProject'>>;
37919
38599
  }
37920
- //#endregion
37921
- //#region src/resources/referrals.d.ts
37922
38600
  export type ReferralsView = Reply<'getReferrals'>;
37923
38601
  export type ReferralRow = Schema<'ReferralRow'>;
37924
38602
  export type ReferralStats = Schema<'AccountReferral'>;
@@ -37941,8 +38619,6 @@ export declare class Referrals {
37941
38619
  setConsent(consent: boolean, opts?: CallOpts$18): Promise<AccountPatchResponse>;
37942
38620
  private patch;
37943
38621
  }
37944
- //#endregion
37945
- //#region src/generated/resolve.d.ts
37946
38622
  /**
37947
38623
  * This file was auto-generated by openapi-typescript.
37948
38624
  * Do not make direct changes to the file.
@@ -38879,8 +39555,6 @@ interface operations {
38879
39555
  };
38880
39556
  };
38881
39557
  }
38882
- //#endregion
38883
- //#region src/resources/resolve.d.ts
38884
39558
  type ResolveSchemas = components['schemas'];
38885
39559
  export type ResolveIntake = Mutable<ResolveSchemas['ResolveIntake']>;
38886
39560
  export type ResolveQuote = ResolveSchemas['ResolveQuote'];
@@ -39055,8 +39729,6 @@ export declare class Resolve {
39055
39729
  waitFor(id: string, opts?: ResolveWaitOptions): Promise<ResolveJob>;
39056
39730
  private call;
39057
39731
  }
39058
- //#endregion
39059
- //#region src/resources/responses.d.ts
39060
39732
  export type ResponsesRequest = Mutable<Body<'createResponse'>>;
39061
39733
  export type ResponsesResponse = Reply<'createResponse'>;
39062
39734
  /** Request body as accepted by the SDK: `stream` is set by the method and `model` defaults to `codai`. */
@@ -39100,8 +39772,6 @@ export declare class Responses {
39100
39772
  create(body: ResponsesInput, opts?: ResponsesCallOptions): Promise<ResponsesResult>;
39101
39773
  stream(body: ResponsesInput, opts?: ResponsesCallOptions): ResponsesStream;
39102
39774
  }
39103
- //#endregion
39104
- //#region src/resources/sessions.d.ts
39105
39775
  export type Session = Schema<'Session'>;
39106
39776
  export type SessionListItem = Schema<'SessionListItem'>;
39107
39777
  export type SessionDetail = Reply<'getSession'>;
@@ -39264,8 +39934,6 @@ export declare class Sessions {
39264
39934
  share?: string;
39265
39935
  }, opts?: CallOpts$16): AsyncGenerator<SessionStreamEvent, void, undefined>;
39266
39936
  }
39267
- //#endregion
39268
- //#region src/resources/settings.d.ts
39269
39937
  export type SettingsResponse = Reply<'getSettings'>;
39270
39938
  export type UserSettings = Schema<'UserSettings'>;
39271
39939
  export type TranscriptsSettings = Schema<'TranscriptsSettings'>;
@@ -39294,8 +39962,6 @@ export declare class Settings {
39294
39962
  */
39295
39963
  update(partial: SettingsPatch, opts?: UpdateOpts): Promise<SettingsResponse>;
39296
39964
  }
39297
- //#endregion
39298
- //#region src/resources/os-gate.d.ts
39299
39965
  export type PolicyResponse = Reply<'getPolicy'>;
39300
39966
  export type OsGateEvent = Schema<'OsGateEvent'>;
39301
39967
  export type OsGateCheckId = OsGateEvent['checks'][number];
@@ -39316,8 +39982,6 @@ export declare class OsGate {
39316
39982
  */
39317
39983
  recordEvent(event: OsGateEvent, opts?: CallOpts$14): Promise<OsGateEventAccepted>;
39318
39984
  }
39319
- //#endregion
39320
- //#region src/resources/sfx.d.ts
39321
39985
  /** One sound (always `license: 'CC0-1.0'`). */
39322
39986
  export type SfxDto = Schema<'SfxDto'>;
39323
39987
  export type SfxCategory = Schema<'SfxCategory'>;
@@ -39345,8 +40009,6 @@ export declare class Sfx {
39345
40009
  */
39346
40010
  import(sfxId: string, opts?: CallOpts$13): Promise<AssetDto>;
39347
40011
  }
39348
- //#endregion
39349
- //#region src/resources/system-one.d.ts
39350
40012
  export type SystemOneRequest = Mutable<Body<'createSystemOne'>>;
39351
40013
  export type SystemOneResponse = Reply<'createSystemOne'>;
39352
40014
  type SystemOneState = NonNullable<SystemOneRequest['state']>;
@@ -39398,8 +40060,6 @@ export declare class SystemOne {
39398
40060
  signal?: AbortSignal;
39399
40061
  }): Promise<SystemOneBatchResponse>;
39400
40062
  }
39401
- //#endregion
39402
- //#region src/resources/tasks.d.ts
39403
40063
  export type Task = Schema<'Task'>;
39404
40064
  export type TaskOutcome = Schema<'TaskOutcome'>;
39405
40065
  export type TaskStats = Reply<'getTaskStats'>;
@@ -39425,8 +40085,6 @@ export declare class Tasks {
39425
40085
  /** `POST /v1/tasks/{id}/confirm` — answer "Did codai solve it?". */
39426
40086
  confirm(id: string, body: TaskConfirmRequest, opts?: CallOpts$12): Promise<TaskConfirmResponse>;
39427
40087
  }
39428
- //#endregion
39429
- //#region src/resources/triggers.d.ts
39430
40088
  export type TriggerList = Reply<'listTriggers'>;
39431
40089
  export type TriggerCreateRequest = Mutable<Body<'createTrigger'>>;
39432
40090
  export type TriggerCreated = Reply<'createTrigger'>;
@@ -39498,8 +40156,6 @@ export declare class Notifications {
39498
40156
  /** `POST /v1/notifications/delete` — 1..200 ids; ids of other users are skipped. */
39499
40157
  deleteMany(ids: number[], opts?: CallOpts$11): Promise<NotificationsDeleted>;
39500
40158
  }
39501
- //#endregion
39502
- //#region src/resources/prompts.d.ts
39503
40159
  /** PR-07 recurrence: repeat every day/week/month (at HH:MM UTC), or reopen when the run session ends. */
39504
40160
  export type PromptRecurrence = Mutable<Schema<'PromptRecurrence'>>;
39505
40161
  /** PR-07 launch preset applied when the prompt is started. */
@@ -39584,8 +40240,6 @@ export declare class Prompts {
39584
40240
  /** `GET /v1/prompts/stream` — live `prompt` events (keepalive comments are skipped). Closed by the server after 6 h. */
39585
40241
  stream(opts?: CallOpts$10): AsyncGenerator<PromptStreamEvent, void, undefined>;
39586
40242
  }
39587
- //#endregion
39588
- //#region src/resources/schedules.d.ts
39589
40243
  export type Schedule = Schema<'Schedule'>;
39590
40244
  export type ScheduleInput = Mutable<Schema<'ScheduleInput'>>;
39591
40245
  export type ScheduleRun = Schema<'ScheduleRun'>;
@@ -39695,8 +40349,6 @@ export declare class Schedules {
39695
40349
  /** `GET /v1/schedules/stream` — live `schedule` events (keepalives skipped). */
39696
40350
  stream(opts?: CallOpts$9): AsyncGenerator<ScheduleStreamEvent, void, undefined>;
39697
40351
  }
39698
- //#endregion
39699
- //#region src/resources/lists.d.ts
39700
40352
  export type List = Schema<'List'>;
39701
40353
  export type ListItem = Schema<'ListItem'>;
39702
40354
  export type ListCreateInput = Mutable<Schema<'ListCreateInput'>>;
@@ -39757,8 +40409,6 @@ export declare class Lists {
39757
40409
  /** `POST /v1/share` — share-sheet entry point (`list_id`, `preset`, or auto → Inbox + suggestion). */
39758
40410
  share(body: ShareRequest, opts?: CallOpts$8): Promise<ShareResponse>;
39759
40411
  }
39760
- //#endregion
39761
- //#region src/resources/memory.d.ts
39762
40412
  export type MemoryItem = Schema<'MemoryItem'>;
39763
40413
  export type MemoryHit = Schema<'MemoryHit'>;
39764
40414
  export type MemoryTier = MemoryItem['tier'];
@@ -39791,8 +40441,6 @@ export declare class Memory {
39791
40441
  */
39792
40442
  deleteAll(opts?: CallOpts$7): Promise<MemoryDeletedAll>;
39793
40443
  }
39794
- //#endregion
39795
- //#region src/resources/sandboxes.d.ts
39796
40444
  export type Sandbox = Schema<'Sandbox'>;
39797
40445
  export type SandboxEgress = Mutable<Schema<'SandboxEgress'>>;
39798
40446
  export type SandboxCreateInput = Mutable<Schema<'SandboxCreate'>>;
@@ -39918,8 +40566,6 @@ export declare class Sandboxes {
39918
40566
  */
39919
40567
  run(input: SandboxRunInput, opts?: IdemOpts): Promise<SandboxExecResult>;
39920
40568
  }
39921
- //#endregion
39922
- //#region src/resources/transcripts.d.ts
39923
40569
  export type Transcript = Schema<'Transcript'>;
39924
40570
  export type TranscriptDetail = Schema<'TranscriptDetail'>;
39925
40571
  export type TranscriptStatus = Schema<'TranscriptStatus'>;
@@ -40112,8 +40758,6 @@ export declare class Transcripts {
40112
40758
  */
40113
40759
  uploadAudio(data: Uint8Array | ArrayBuffer | Blob, opts?: UploadAudioOptions): Promise<string>;
40114
40760
  }
40115
- //#endregion
40116
- //#region src/resources/tokens.d.ts
40117
40761
  /** `live` = realtime + audio in one token (a live co-host's speech-to-text and text-to-speech). */
40118
40762
  export type EphemeralScope = 'realtime' | 'audio' | 'embeddings' | 'live';
40119
40763
  export type EphemeralTokenResponse = Reply<'createEphemeralToken'>;
@@ -40135,8 +40779,6 @@ export declare class Tokens {
40135
40779
  signal?: AbortSignal;
40136
40780
  }): Promise<EphemeralToken>;
40137
40781
  }
40138
- //#endregion
40139
- //#region src/resources/tools.d.ts
40140
40782
  export type ToolSearchRequest = Mutable<Body<'toolsSearch'>>;
40141
40783
  export type ToolSearchResponse = Reply<'toolsSearch'>;
40142
40784
  export type ToolFetchRequest = Mutable<Body<'toolsFetch'>>;
@@ -40165,8 +40807,6 @@ export declare class Tools {
40165
40807
  */
40166
40808
  ground(body: ToolGroundRequest, opts?: CallOpts$4): Promise<ToolGroundResponse>;
40167
40809
  }
40168
- //#endregion
40169
- //#region src/resources/research.d.ts
40170
40810
  export type ResearchRequest = Mutable<Body<'createResearch'>>;
40171
40811
  export type ResearchJob = Schema<'ResearchJob'>;
40172
40812
  export type ResearchSource = Schema<'ResearchSource'>;
@@ -40205,8 +40845,6 @@ export declare class Research {
40205
40845
  /** `create` then `wait` until the job finishes. */
40206
40846
  run(body: ResearchRequest, opts?: ResearchCreateOptions & Omit<ResearchWaitOptions, keyof CallOpts$3>): Promise<ResearchJob>;
40207
40847
  }
40208
- //#endregion
40209
- //#region src/resources/usage-keys.d.ts
40210
40848
  export type UsageReport = Schema<'UsageReport'>;
40211
40849
  export type UsageRow = Schema<'UsageRow'>;
40212
40850
  export type UsageGroupBy = UsageReport['group_by'];
@@ -40237,8 +40875,6 @@ export declare class Keys {
40237
40875
  /** `PATCH /v1/keys/{id}` — replace the key's tags (≤ 16, each ≤ 32 chars; `[]` clears). */
40238
40876
  setTags(id: string, tags: string[], opts?: CallOpts$2): Promise<ApiKeyTags>;
40239
40877
  }
40240
- //#endregion
40241
- //#region src/resources/verify.d.ts
40242
40878
  export type EnvironmentTaskOutputSignature = Schema<'EnvironmentTaskOutputSignature'>;
40243
40879
  export type AgentOutputKey = Reply<'getAgentOutputKey'>;
40244
40880
  export type AgentOutputVerifyBody = Mutable<Body<'verifyAgentOutput'>>;
@@ -40254,8 +40890,6 @@ export declare class Verify {
40254
40890
  /** `POST /v1/verify/agent-output` — 503 `signing_disabled` when signing is off. */
40255
40891
  agentOutput(body: AgentOutputVerifyBody, opts?: CallOpts$1): Promise<AgentOutputVerifyResult>;
40256
40892
  }
40257
- //#endregion
40258
- //#region src/operations.d.ts
40259
40893
  /**
40260
40894
  * Single source of truth for OpenAPI parity: every `operationId` in
40261
40895
  * `apps/docs/openapi/en/gateway.yaml` maps to exactly one dotted method path
@@ -40272,8 +40906,6 @@ export declare const STREAMING_OPERATIONS: ReadonlySet<string>;
40272
40906
  * checked by `operations.resolve.test.ts`.
40273
40907
  */
40274
40908
  export declare const RESOLVE_OPERATION_METHODS: Record<string, string>;
40275
- //#endregion
40276
- //#region src/resources/apps.d.ts
40277
40909
  export interface CodaiAppsOptions {
40278
40910
  /** App connection token (`codai_app_…`). Required for everything except `validateKey`. */
40279
40911
  appToken?: string;
@@ -40545,8 +41177,6 @@ export declare class CodaiApps {
40545
41177
  /** @internal Perform an app-token call and unwrap `{ ok, data }`. */
40546
41178
  call<T>(path: string, init?: RequestOptions): Promise<T>;
40547
41179
  }
40548
- //#endregion
40549
- //#region src/index.d.ts
40550
41180
  export interface CodaiClientOptions {
40551
41181
  apiKey: string;
40552
41182
  /** Defaults to https://ai.codai.ro */
@@ -40631,6 +41261,11 @@ export declare class Codai {
40631
41261
  readonly templates: Templates;
40632
41262
  /** codai Studio productions (`productions.run({ brief, language: 'ro' })` → a finished promo video + editable creative). */
40633
41263
  readonly productions: Productions;
41264
+ /**
41265
+ * codai Studio namespace. `studio.musicRoom.create({ brief, language: 'ro' })` → a team of role agents makes a song;
41266
+ * answer its gates with `studio.musicRoom.choose(id, …)`, poll with `studio.musicRoom.wait(id, { untilGate: true })`.
41267
+ */
41268
+ readonly studio: Studio;
40634
41269
  /** codai Studio media operations (`mediaOps.run('audio.separate_stems', { assetIds })` → job; `mediaOps.wait(id)`). */
40635
41270
  readonly mediaOps: MediaOps;
40636
41271
  /** codai Studio lyrics (`lyrics.write({ brief, language: 'ro' })`, `lyrics.align({ creative_id, clip_id, lyrics_text })`). */
@@ -40645,6 +41280,8 @@ export declare class Codai {
40645
41280
  readonly shares: Shares;
40646
41281
  /** Public takedown tickets for voices cloned in codai Studio (`voiceRevocations.create({ email, … })`; no key needed). */
40647
41282
  readonly voiceRevocations: VoiceRevocations;
41283
+ /** codai Studio custom voices: the voice passport singing consent (`voices.addSingingConsent(id, { session_id })`). */
41284
+ readonly voices: Voices;
40648
41285
  /** Zero-knowledge credentials vault (`vault.items()`, `vault.use({ handle, mode, action })`, `vault.decide(id, …)`). */
40649
41286
  readonly vault: Vault;
40650
41287
  /** Public abuse reports about codai Studio share / review links (`abuseReports.create({ share_token, … })`; no key needed). */
@@ -40719,5 +41356,4 @@ export declare class Codai {
40719
41356
  private legacyBody;
40720
41357
  private legacyExt;
40721
41358
  }
40722
- //#endregion
40723
41359
  export { Codai as default, type CodaiRequestExtensions, type ErrorCode, type RequestOptions, type components as ResolveComponents, type operations as ResolveOperations, type paths as ResolvePaths, type SseFrame, type components$1 as components, type operations$1 as operations, type paths$1 as paths };