codai-sdk 0.69.0 → 0.71.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,268 @@ 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
+ /** @description What the critic heard on the master of the latest round (MR-11): measured listening features of codai-studio-media (spectral, dynamics, stereo width, a 16-point loudness timeline) with Meta Audiobox Aesthetics (CE content enjoyment, CU content usefulness, PC production complexity, PQ production quality, about 1-10), and a Gemini listener's verdict (0-10 impressions, timestamped notes, audible AI tells). null before the critic ran. Either half is null when that listener was unavailable; when both are, the song carries the `critic_text_only` warning. */
13803
+ readonly listening: components$1['schemas']['MusicRoomListening'] | null;
13804
+ /** @enum {string} */
13805
+ readonly object: 'studio.music_room';
13806
+ /**
13807
+ * @description plan → gate_plan → compose → lyrics → arrange → parts → render_demo → gate_demo → vocals → mix → master → critique → gate_final → ready | failed.
13808
+ * @enum {string}
13809
+ */
13810
+ readonly phase: 'plan' | 'gate_plan' | 'compose' | 'lyrics' | 'arrange' | 'parts' | 'render_demo' | 'gate_demo' | 'vocals' | 'mix' | 'master' | 'critique' | 'gate_final' | 'ready' | 'failed';
13811
+ readonly quota: {
13812
+ readonly included: number;
13813
+ readonly used: number;
13814
+ /** @description The song is covered by the monthly plan quota (free). */
13815
+ readonly within: boolean;
13816
+ };
13817
+ /** @description Symbolic AI-tell metric: 0 sounds human, 1 sounds robotic. */
13818
+ readonly robot_score: number | null;
13819
+ readonly spent_micro_usd: string;
13820
+ /**
13821
+ * @description `running` while the team works, `waiting` at a gate, then `succeeded` or `failed`.
13822
+ * @enum {string}
13823
+ */
13824
+ readonly status: 'running' | 'waiting' | 'succeeded' | 'failed';
13825
+ readonly stems_asset_ids: readonly string[];
13826
+ readonly team: readonly {
13827
+ readonly instrument_id?: string | null;
13828
+ readonly name: string;
13829
+ readonly rationale?: string | null;
13830
+ readonly role: components$1['schemas']['MusicRole'];
13831
+ /** @enum {string} */
13832
+ readonly status: 'done' | 'playing' | 'waiting';
13833
+ readonly track_id?: string | null;
13834
+ }[];
13835
+ readonly title: string | null;
13836
+ /** @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` (the critic could not listen to the master and judged from the score), `<step>_skipped: <reason>`. */
13837
+ readonly warnings: readonly string[];
13838
+ };
13839
+ /**
13840
+ * Music Room gate answer
13841
+ * @description The answer to the gate the song waits at.
13842
+ */
13843
+ readonly MusicRoomChoose: {
13844
+ /** @enum {string} */
13845
+ readonly gate: 'plan';
13846
+ /** @description Index of the chosen plan variant. */
13847
+ readonly variant: number;
13848
+ } | {
13849
+ /** @enum {boolean} */
13850
+ readonly approve: true;
13851
+ /** @enum {string} */
13852
+ readonly gate: 'demo';
13853
+ } | {
13854
+ /** @enum {boolean} */
13855
+ readonly approve: true;
13856
+ /** @enum {string} */
13857
+ readonly gate: 'final';
13858
+ };
13859
+ /** Music Room request */
13860
+ readonly MusicRoomCreate: {
13861
+ /**
13862
+ * @description Skip the three gates (plan variant 0, demo and final approved).
13863
+ * @default false
13864
+ */
13865
+ readonly auto?: boolean;
13866
+ /** @description What the song is for and how it should feel: occasion, mood, story, audience (10–2,000 characters; no artist names). */
13867
+ readonly brief: string;
13868
+ /**
13869
+ * @description Spending cap for one song beyond the plan quota, in micro-USD (default 10,000,000 = $10, max 20,000,000).
13870
+ * @default 10000000
13871
+ */
13872
+ readonly budget_micro_usd?: number;
13873
+ /** @description Target length in seconds (max 4 minutes). */
13874
+ readonly duration_seconds?: number;
13875
+ /** @description Genre pack id (`pop`, `jingle`, `rock`, `hiphop`, `cinematic`, `lofi`, `hora`, `sarba`, `doina`, `manele`, `pop_folk_ro`, `fanfara`, `cocek`…); default: the producer picks. */
13876
+ readonly genre?: string;
13877
+ /** @description Instrument ids the band must use (`drums.kit_rock`, `balkan.accordion`…). */
13878
+ readonly instruments?: readonly string[];
13879
+ /**
13880
+ * @description Language of the lyrics.
13881
+ * @default ro
13882
+ * @enum {string}
13883
+ */
13884
+ readonly language?: 'ro' | 'en';
13885
+ /** @description Vocal timbre id; default: chosen for the genre. */
13886
+ readonly timbre?: string;
13887
+ /** @description Song / creative title. */
13888
+ readonly title?: string;
13889
+ /**
13890
+ * @description Sung vocals; `false` for an instrumental.
13891
+ * @default true
13892
+ */
13893
+ readonly vocals?: boolean;
13894
+ /**
13895
+ * Format: uuid
13896
+ * @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.
13897
+ */
13898
+ readonly voice_passport_id?: string;
13899
+ };
13900
+ /** Music Room direction */
13901
+ readonly MusicRoomDirect: {
13902
+ /** @description What to change, e.g. "lay back on the chorus, fewer fills". */
13903
+ readonly direction: string;
13904
+ readonly role: components$1['schemas']['MusicRole'];
13905
+ /** @description Only this section (an id from the plan); default: the whole song. */
13906
+ readonly section_id?: string;
13907
+ };
13908
+ /** Music Room song list */
13909
+ readonly MusicRoomList: {
13910
+ readonly data: readonly components$1['schemas']['MusicRoom'][];
13911
+ readonly has_more?: boolean;
13912
+ /** @enum {string} */
13913
+ readonly object: 'list';
13914
+ };
13915
+ /** Music Room listening */
13916
+ readonly MusicRoomListening: {
13917
+ /** @description Measured listening features of the master (codai-studio-media). `null` when the measurement was unavailable. */
13918
+ readonly features: {
13919
+ /** @description Meta Audiobox Aesthetics, about 1-10: CE content enjoyment, CU content usefulness, PC production complexity, PQ production quality. `null` when unavailable. */
13920
+ readonly aesthetics?: {
13921
+ readonly CE: number;
13922
+ readonly CU: number;
13923
+ readonly PC: number;
13924
+ readonly PQ: number;
13925
+ } | null;
13926
+ /** @description Crest factor in dB (peak to RMS; low means heavily compressed). */
13927
+ readonly crest_factor_db?: number | null;
13928
+ /** @description Length of the master in seconds. */
13929
+ readonly duration_seconds?: number | null;
13930
+ /** @description Loudness range in LU. */
13931
+ readonly loudness_range_lu?: number | null;
13932
+ /** @description Integrated loudness in LUFS for each 1/16 of the song (16 points; `null` for a silent slice). */
13933
+ readonly loudness_timeline_lufs?: readonly (number | null)[];
13934
+ /** @description Coefficient of variation of the onset rate (how much the rhythmic density changes). */
13935
+ readonly onset_rate_cv?: number | null;
13936
+ /** @description Note onsets per second. */
13937
+ readonly onset_rate_per_s?: number | null;
13938
+ /** @description Mean spectral centroid (brightness) in Hz. */
13939
+ readonly spectral_centroid_hz?: number | null;
13940
+ /** @description Standard deviation of the spectral centroid in Hz. */
13941
+ readonly spectral_centroid_std_hz?: number | null;
13942
+ /** @description Mean spectral flatness (0 tonal, 1 noise-like). */
13943
+ readonly spectral_flatness?: number | null;
13944
+ /** @description Stereo width (0 mono, higher is wider). */
13945
+ readonly stereo_width?: number | null;
13946
+ } | null;
13947
+ /** @description The listener model. */
13948
+ readonly model: string | null;
13949
+ /** @description The Gemini listener's verdict. `null` when the listener was unavailable. */
13950
+ readonly verdict: {
13951
+ /** @description Up to 6 audible signs of AI or MIDI generation (empty if none). */
13952
+ readonly ai_tells: readonly string[];
13953
+ /** @description Impressions from 0 to 10 per aspect; `vocals` is `null` for an instrumental. */
13954
+ readonly impressions: {
13955
+ readonly genre_fit: number;
13956
+ readonly groove: number;
13957
+ readonly humanness: number;
13958
+ readonly melody: number;
13959
+ readonly mix: number;
13960
+ readonly vocals: number | null;
13961
+ };
13962
+ /** @description Up to 8 timestamped notes. */
13963
+ readonly notes: readonly {
13964
+ /** @description Position in the master, in seconds. */
13965
+ readonly at_seconds: number;
13966
+ readonly note: string;
13967
+ }[];
13968
+ /** @description One-paragraph summary of what the listener heard. */
13969
+ readonly summary: string;
13970
+ } | null;
13971
+ };
13972
+ /** Music Room plan variant */
13973
+ readonly MusicRoomPlanVariant: {
13974
+ readonly bpm: number;
13975
+ readonly genre_id: string;
13976
+ readonly instrumentation: readonly {
13977
+ readonly instrument_id: string;
13978
+ readonly role: components$1['schemas']['MusicRole'];
13979
+ }[];
13980
+ /** @description Time signature, e.g. `4/4` or `7/8`. */
13981
+ readonly meter: string;
13982
+ /** @description Scale / mode id, e.g. `major`, `minor`, `hijaz`. */
13983
+ readonly mode_id: string;
13984
+ readonly rationale: string;
13985
+ readonly sections: readonly {
13986
+ readonly bars: number;
13987
+ readonly id: string;
13988
+ readonly kind: string;
13989
+ }[];
13990
+ readonly title: string;
13991
+ };
13992
+ /** Music Room quota */
13993
+ readonly MusicRoomQuota: {
13994
+ /** @description Songs included this month. */
13995
+ readonly included: number;
13996
+ /**
13997
+ * Format: date-time
13998
+ * @description End of the current calendar month (UTC).
13999
+ */
14000
+ readonly period_end: string;
14001
+ /** @description Your plan (`free`, `pro`, `power`, `max`, `team`…). */
14002
+ readonly plan: string;
14003
+ readonly remaining: number;
14004
+ readonly used: number;
14005
+ };
13592
14006
  /**
13593
14007
  * Music track metadata
13594
14008
  * @description Extra fields on each `/v1/audio/music` item.
@@ -17224,6 +17638,21 @@ type components$1 = {
17224
17638
  /** @description Volume of a video scene's own audio (default 1, or 0 when the scene is narrated). */
17225
17639
  readonly video_volume?: number;
17226
17640
  };
17641
+ /** Custom voice */
17642
+ readonly StudioVoice: {
17643
+ /** Format: date-time */
17644
+ readonly created_at: string;
17645
+ readonly display_name: string;
17646
+ /** Format: uuid */
17647
+ readonly id: string;
17648
+ /** @enum {string} */
17649
+ readonly kind: 'ai_clone';
17650
+ readonly label: string;
17651
+ readonly locale: string;
17652
+ /** @enum {string} */
17653
+ readonly object: 'studio.voice';
17654
+ readonly singing: components$1['schemas']['StudioVoiceSinging'];
17655
+ };
17227
17656
  /** Voice takedown ticket */
17228
17657
  readonly StudioVoiceRevocation: {
17229
17658
  /** Format: uuid */
@@ -17250,6 +17679,30 @@ type components$1 = {
17250
17679
  /** @description Name of the person whose voice is concerned. */
17251
17680
  readonly voice_owner_name: string;
17252
17681
  };
17682
+ /** Singing consent (beta) */
17683
+ readonly StudioVoiceSinging: {
17684
+ /** Format: date-time */
17685
+ readonly consented_at: string | null;
17686
+ /**
17687
+ * @description Always `beta`: the singing approximates your timbre.
17688
+ * @enum {string}
17689
+ */
17690
+ readonly quality: 'beta';
17691
+ /** Format: date-time */
17692
+ readonly revoked_at: string | null;
17693
+ /**
17694
+ * @description `none` (never given), `active`, `revoked` (by you, or the voice ended).
17695
+ * @enum {string}
17696
+ */
17697
+ readonly status: 'none' | 'active' | 'revoked';
17698
+ };
17699
+ readonly StudioVoiceSingingConsentRequest: {
17700
+ /**
17701
+ * Format: uuid
17702
+ * @description Id of the singing recording session (both clips recorded).
17703
+ */
17704
+ readonly session_id: string;
17705
+ };
17253
17706
  readonly SystemOneAnswer: {
17254
17707
  readonly choice?: string;
17255
17708
  readonly confidence?: number;
@@ -30973,6 +31426,210 @@ interface operations$1 {
30973
31426
  readonly 404: components$1['responses']['NotFound'];
30974
31427
  };
30975
31428
  };
31429
+ readonly listStudioMusicRooms: {
31430
+ readonly parameters: {
31431
+ readonly query?: {
31432
+ /** @description Only songs created before this instant (ISO 8601). */
31433
+ readonly before?: string;
31434
+ /** @description Page size (1–100, default 20). */
31435
+ readonly limit?: number;
31436
+ };
31437
+ readonly header?: never;
31438
+ readonly path?: never;
31439
+ readonly cookie?: never;
31440
+ };
31441
+ readonly requestBody?: never;
31442
+ readonly responses: {
31443
+ /** @description A page of songs. */
31444
+ readonly 200: {
31445
+ headers: {
31446
+ readonly [name: string]: unknown;
31447
+ };
31448
+ content: {
31449
+ readonly 'application/json': components$1['schemas']['MusicRoomList'];
31450
+ };
31451
+ };
31452
+ readonly 400: components$1['responses']['BadRequest'];
31453
+ readonly 401: components$1['responses']['Unauthorized'];
31454
+ };
31455
+ };
31456
+ readonly createStudioMusicRoom: {
31457
+ readonly parameters: {
31458
+ readonly query?: never;
31459
+ readonly header?: {
31460
+ /** @description Replays the stored response of an earlier request with the same key for 24 h instead of running it again. */
31461
+ readonly 'Idempotency-Key'?: components$1['parameters']['IdempotencyKey'];
31462
+ };
31463
+ readonly path?: never;
31464
+ readonly cookie?: never;
31465
+ };
31466
+ readonly requestBody: {
31467
+ readonly content: {
31468
+ readonly 'application/json': components$1['schemas']['MusicRoomCreate'];
31469
+ };
31470
+ };
31471
+ readonly responses: {
31472
+ /** @description The song started; the producer is planning (or already waits at the plan gate). */
31473
+ readonly 202: {
31474
+ headers: {
31475
+ readonly [name: string]: unknown;
31476
+ };
31477
+ content: {
31478
+ readonly 'application/json': components$1['schemas']['MusicRoom'];
31479
+ };
31480
+ };
31481
+ readonly 400: components$1['responses']['BadRequest'];
31482
+ readonly 401: components$1['responses']['Unauthorized'];
31483
+ readonly 402: components$1['responses']['InsufficientFunds'];
31484
+ readonly 429: components$1['responses']['RateLimited'];
31485
+ /** @description The music renderer is not configured on this gateway (code `media_ops_unavailable`). */
31486
+ readonly 503: {
31487
+ headers: {
31488
+ readonly [name: string]: unknown;
31489
+ };
31490
+ content: {
31491
+ readonly 'application/json': components$1['schemas']['Error'];
31492
+ };
31493
+ };
31494
+ };
31495
+ };
31496
+ readonly getStudioMusicRoom: {
31497
+ readonly parameters: {
31498
+ readonly query?: never;
31499
+ readonly header?: never;
31500
+ readonly path: {
31501
+ /** @description Music Room song UUID. */
31502
+ readonly id: string;
31503
+ };
31504
+ readonly cookie?: never;
31505
+ };
31506
+ readonly requestBody?: never;
31507
+ readonly responses: {
31508
+ /** @description The song. */
31509
+ readonly 200: {
31510
+ headers: {
31511
+ readonly [name: string]: unknown;
31512
+ };
31513
+ content: {
31514
+ readonly 'application/json': components$1['schemas']['MusicRoom'];
31515
+ };
31516
+ };
31517
+ readonly 401: components$1['responses']['Unauthorized'];
31518
+ readonly 404: components$1['responses']['NotFound'];
31519
+ };
31520
+ };
31521
+ readonly chooseStudioMusicRoom: {
31522
+ readonly parameters: {
31523
+ readonly query?: never;
31524
+ readonly header?: never;
31525
+ readonly path: {
31526
+ /** @description Music Room song UUID. */
31527
+ readonly id: string;
31528
+ };
31529
+ readonly cookie?: never;
31530
+ };
31531
+ readonly requestBody: {
31532
+ readonly content: {
31533
+ readonly 'application/json': components$1['schemas']['MusicRoomChoose'];
31534
+ };
31535
+ };
31536
+ readonly responses: {
31537
+ /** @description The song after the answer. */
31538
+ readonly 200: {
31539
+ headers: {
31540
+ readonly [name: string]: unknown;
31541
+ };
31542
+ content: {
31543
+ readonly 'application/json': components$1['schemas']['MusicRoom'];
31544
+ };
31545
+ };
31546
+ readonly 400: components$1['responses']['BadRequest'];
31547
+ readonly 401: components$1['responses']['Unauthorized'];
31548
+ readonly 404: components$1['responses']['NotFound'];
31549
+ /** @description The song is not waiting at that gate (code `not_at_gate`). */
31550
+ readonly 409: {
31551
+ headers: {
31552
+ readonly [name: string]: unknown;
31553
+ };
31554
+ content: {
31555
+ readonly 'application/json': components$1['schemas']['Error'];
31556
+ };
31557
+ };
31558
+ };
31559
+ };
31560
+ readonly directStudioMusicRoom: {
31561
+ readonly parameters: {
31562
+ readonly query?: never;
31563
+ readonly header?: {
31564
+ /** @description Replays the stored response of an earlier request with the same key for 24 h instead of running it again. */
31565
+ readonly 'Idempotency-Key'?: components$1['parameters']['IdempotencyKey'];
31566
+ };
31567
+ readonly path: {
31568
+ /** @description Music Room song UUID. */
31569
+ readonly id: string;
31570
+ };
31571
+ readonly cookie?: never;
31572
+ };
31573
+ readonly requestBody: {
31574
+ readonly content: {
31575
+ readonly 'application/json': components$1['schemas']['MusicRoomDirect'];
31576
+ };
31577
+ };
31578
+ readonly responses: {
31579
+ /** @description The player is re-playing the part. */
31580
+ readonly 202: {
31581
+ headers: {
31582
+ readonly [name: string]: unknown;
31583
+ };
31584
+ content: {
31585
+ readonly 'application/json': components$1['schemas']['MusicRoom'];
31586
+ };
31587
+ };
31588
+ readonly 400: components$1['responses']['BadRequest'];
31589
+ readonly 401: components$1['responses']['Unauthorized'];
31590
+ readonly 402: components$1['responses']['InsufficientFunds'];
31591
+ readonly 404: components$1['responses']['NotFound'];
31592
+ /** @description The song is not waiting at the demo or final gate (code `not_at_gate`). */
31593
+ readonly 409: {
31594
+ headers: {
31595
+ readonly [name: string]: unknown;
31596
+ };
31597
+ content: {
31598
+ readonly 'application/json': components$1['schemas']['Error'];
31599
+ };
31600
+ };
31601
+ /** @description The music renderer is not configured on this gateway (code `media_ops_unavailable`). */
31602
+ readonly 503: {
31603
+ headers: {
31604
+ readonly [name: string]: unknown;
31605
+ };
31606
+ content: {
31607
+ readonly 'application/json': components$1['schemas']['Error'];
31608
+ };
31609
+ };
31610
+ };
31611
+ };
31612
+ readonly getStudioMusicRoomQuota: {
31613
+ readonly parameters: {
31614
+ readonly query?: never;
31615
+ readonly header?: never;
31616
+ readonly path?: never;
31617
+ readonly cookie?: never;
31618
+ };
31619
+ readonly requestBody?: never;
31620
+ readonly responses: {
31621
+ /** @description The monthly quota. */
31622
+ readonly 200: {
31623
+ headers: {
31624
+ readonly [name: string]: unknown;
31625
+ };
31626
+ content: {
31627
+ readonly 'application/json': components$1['schemas']['MusicRoomQuota'];
31628
+ };
31629
+ };
31630
+ readonly 401: components$1['responses']['Unauthorized'];
31631
+ };
31632
+ };
30976
31633
  readonly retrievePreview: {
30977
31634
  readonly parameters: {
30978
31635
  readonly query?: never;
@@ -31619,6 +32276,76 @@ interface operations$1 {
31619
32276
  readonly 429: components$1['responses']['RateLimited'];
31620
32277
  };
31621
32278
  };
32279
+ readonly addStudioVoiceSingingConsent: {
32280
+ readonly parameters: {
32281
+ readonly query?: never;
32282
+ readonly header?: never;
32283
+ readonly path: {
32284
+ readonly id: string;
32285
+ };
32286
+ readonly cookie?: never;
32287
+ };
32288
+ /** @description A finished `purpose: singing` recording session for this voice. */
32289
+ readonly requestBody: {
32290
+ readonly content: {
32291
+ readonly 'application/json': components$1['schemas']['StudioVoiceSingingConsentRequest'];
32292
+ };
32293
+ };
32294
+ readonly responses: {
32295
+ /** @description The voice, with `singing.status: active`. */
32296
+ readonly 200: {
32297
+ headers: {
32298
+ readonly [name: string]: unknown;
32299
+ };
32300
+ content: {
32301
+ readonly 'application/json': components$1['schemas']['StudioVoice'];
32302
+ };
32303
+ };
32304
+ /** @description Wrong session (`session_purpose_mismatch`), missing clips (`consent_missing`, `reference_missing`), outdated consent text (`singing_text_version_mismatch`) or no 18+ attestation. */
32305
+ readonly 400: {
32306
+ headers: {
32307
+ readonly [name: string]: unknown;
32308
+ };
32309
+ content: {
32310
+ readonly 'application/json': components$1['schemas']['Error'];
32311
+ };
32312
+ };
32313
+ readonly 401: components$1['responses']['Unauthorized'];
32314
+ readonly 403: components$1['responses']['Forbidden'];
32315
+ readonly 404: components$1['responses']['NotFound'];
32316
+ /** @description The 5-minute recording session expired (`session_expired`). */
32317
+ readonly 410: {
32318
+ headers: {
32319
+ readonly [name: string]: unknown;
32320
+ };
32321
+ content: {
32322
+ readonly 'application/json': components$1['schemas']['Error'];
32323
+ };
32324
+ };
32325
+ };
32326
+ };
32327
+ readonly revokeStudioVoiceSingingConsent: {
32328
+ readonly parameters: {
32329
+ readonly query?: never;
32330
+ readonly header?: never;
32331
+ readonly path: {
32332
+ readonly id: string;
32333
+ };
32334
+ readonly cookie?: never;
32335
+ };
32336
+ readonly requestBody?: never;
32337
+ readonly responses: {
32338
+ /** @description Singing consent revoked. */
32339
+ readonly 204: {
32340
+ headers: {
32341
+ readonly [name: string]: unknown;
32342
+ };
32343
+ content?: never;
32344
+ };
32345
+ readonly 401: components$1['responses']['Unauthorized'];
32346
+ readonly 404: components$1['responses']['NotFound'];
32347
+ };
32348
+ };
31622
32349
  readonly createSystemOne: {
31623
32350
  readonly parameters: {
31624
32351
  readonly query?: never;
@@ -34967,8 +35694,6 @@ interface operations$1 {
34967
35694
  };
34968
35695
  };
34969
35696
  }
34970
- //#endregion
34971
- //#region src/http.d.ts
34972
35697
  type ErrorEnvelope = components$1['schemas']['Error'];
34973
35698
  type ErrorCode = ErrorEnvelope['error']['code'];
34974
35699
  export declare class CodaiError extends Error {
@@ -35147,8 +35872,6 @@ interface SseFrame {
35147
35872
  export declare function readSse(res: Response, signal?: AbortSignal): AsyncGenerator<SseFrame>;
35148
35873
  /** Parse a frame's data as JSON, returning `null` for `[DONE]` / non-JSON. */
35149
35874
  export declare function frameJson<T = unknown>(frame: SseFrame): T | null;
35150
- //#endregion
35151
- //#region src/resources/_shared.d.ts
35152
35875
  type Schemas = components$1['schemas'];
35153
35876
  type Schema<K extends keyof Schemas> = Schemas[K];
35154
35877
  /** JSON request body of an operation. */
@@ -35174,8 +35897,6 @@ type QueryOf<Op extends keyof operations$1> = operations$1[Op]['parameters'] ext
35174
35897
  * build request bodies with plain mutable objects.
35175
35898
  */
35176
35899
  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
35900
  export type AccountView = Reply<'getAccount'>;
35180
35901
  export type AccountPatchRequest = Mutable<Body<'patchAccount'>>;
35181
35902
  export type AccountPatchResponse = Reply<'patchAccount'>;
@@ -35183,7 +35904,7 @@ export type Receipt = Reply<'getReceipt'>;
35183
35904
  export type FeedbackRequest = Mutable<Body<'submitFeedback'>>;
35184
35905
  export type FeedbackResponse = Reply<'submitFeedback'>;
35185
35906
  export type PhoneModel = Schema<'AccountPhoneModel'>;
35186
- type CallOpts$38 = {
35907
+ type CallOpts$40 = {
35187
35908
  ext?: CodaiRequestExtensions;
35188
35909
  signal?: AbortSignal;
35189
35910
  };
@@ -35191,9 +35912,9 @@ export declare class Account {
35191
35912
  private readonly http;
35192
35913
  constructor(http: HttpClient);
35193
35914
  /** `GET /v1/account` — the full account card. */
35194
- get(opts?: CallOpts$38): Promise<AccountView>;
35915
+ get(opts?: CallOpts$40): Promise<AccountView>;
35195
35916
  /** `PATCH /v1/account` — consents, username, referral (at least one field). */
35196
- update(body: AccountPatchRequest, opts?: CallOpts$38): Promise<AccountPatchResponse>;
35917
+ update(body: AccountPatchRequest, opts?: CallOpts$40): Promise<AccountPatchResponse>;
35197
35918
  }
35198
35919
  export declare class Receipts {
35199
35920
  private readonly http;
@@ -35205,7 +35926,7 @@ export declare class Receipts {
35205
35926
  get(query?: {
35206
35927
  sessionId?: string;
35207
35928
  since?: string | Date;
35208
- }, opts?: CallOpts$38): Promise<Receipt>;
35929
+ }, opts?: CallOpts$40): Promise<Receipt>;
35209
35930
  }
35210
35931
  export declare class Feedback {
35211
35932
  private readonly http;
@@ -35214,16 +35935,14 @@ export declare class Feedback {
35214
35935
  * `POST /v1/feedback` — rate one turn. Exactly one of `event_id`,
35215
35936
  * `session_id`, `client_request_id` must be present.
35216
35937
  */
35217
- submit(body: FeedbackRequest, opts?: CallOpts$38): Promise<FeedbackResponse>;
35938
+ submit(body: FeedbackRequest, opts?: CallOpts$40): Promise<FeedbackResponse>;
35218
35939
  }
35219
35940
  export declare class PhoneModels {
35220
35941
  private readonly http;
35221
35942
  constructor(http: HttpClient);
35222
35943
  /** `GET /v1/phone/models` — on-device model catalog with signed URLs. */
35223
- list(opts?: CallOpts$38): Promise<PhoneModel[]>;
35944
+ list(opts?: CallOpts$40): Promise<PhoneModel[]>;
35224
35945
  }
35225
- //#endregion
35226
- //#region src/resources/agents.d.ts
35227
35946
  export type AgentRunRequest = Mutable<Body<'runAgentSync'>>;
35228
35947
  export type AgentRunCreateRequest = Mutable<Body<'createAgentRun'>>;
35229
35948
  export type AgentSyncResult = Reply<'runAgentSync'>;
@@ -35232,7 +35951,7 @@ export type AgentRun = Reply<'getAgentRun'>;
35232
35951
  export type AgentRunStep = Schema<'AgentRunStep'>;
35233
35952
  export type AgentRunStats = Reply<'getAgentRunStats'>;
35234
35953
  export type AgentRunStatus = Schema<'AgentRunStatus'>;
35235
- type CallOpts$37 = {
35954
+ type CallOpts$39 = {
35236
35955
  ext?: CodaiRequestExtensions;
35237
35956
  signal?: AbortSignal;
35238
35957
  };
@@ -35269,31 +35988,29 @@ export declare class AgentRuns {
35269
35988
  private readonly http;
35270
35989
  constructor(http: HttpClient);
35271
35990
  /** `POST /v1/agents/runs` — returns 202 with the run id. */
35272
- create(body: AgentRunCreateRequest, opts?: CallOpts$37): Promise<AgentRunAccepted>;
35991
+ create(body: AgentRunCreateRequest, opts?: CallOpts$39): Promise<AgentRunAccepted>;
35273
35992
  /** `GET /v1/agents/runs/{id}` */
35274
- get(id: string, opts?: CallOpts$37): Promise<AgentRun>;
35993
+ get(id: string, opts?: CallOpts$39): Promise<AgentRun>;
35275
35994
  /** `GET /v1/agents/runs/{id}/steps` — newest first. */
35276
- steps(id: string, opts?: CallOpts$37): Promise<AgentRunStep[]>;
35995
+ steps(id: string, opts?: CallOpts$39): Promise<AgentRunStep[]>;
35277
35996
  /** `GET /v1/agents/runs/stats?days=` */
35278
- stats(days?: number, opts?: CallOpts$37): Promise<AgentRunStats>;
35997
+ stats(days?: number, opts?: CallOpts$39): Promise<AgentRunStats>;
35279
35998
  /** `POST /v1/agents/runs/{id}/cancel` */
35280
- cancel(id: string, opts?: CallOpts$37): Promise<Reply<'cancelAgentRun'>>;
35999
+ cancel(id: string, opts?: CallOpts$39): Promise<Reply<'cancelAgentRun'>>;
35281
36000
  /**
35282
36001
  * `GET /v1/agents/runs/{id}/stream` — async iterator over `step` / `done` /
35283
36002
  * `timeout` events. The iterator ends after `done`; on `timeout` (30 min)
35284
36003
  * it also ends and you may reconnect (full replay from seq 0).
35285
36004
  */
35286
- stream(id: string, opts?: CallOpts$37): AsyncGenerator<AgentRunStreamEvent, void, undefined>;
36005
+ stream(id: string, opts?: CallOpts$39): AsyncGenerator<AgentRunStreamEvent, void, undefined>;
35287
36006
  }
35288
36007
  export declare class Agents {
35289
36008
  private readonly http;
35290
36009
  readonly runs: AgentRuns;
35291
36010
  constructor(http: HttpClient);
35292
36011
  /** `POST /v1/agents/run` — blocks until the agent loop finishes. */
35293
- run(body: AgentRunRequest, opts?: CallOpts$37): Promise<AgentRunResult>;
36012
+ run(body: AgentRunRequest, opts?: CallOpts$39): Promise<AgentRunResult>;
35294
36013
  }
35295
- //#endregion
35296
- //#region src/resources/audio.d.ts
35297
36014
  export type TranscriptionResponse = Reply<'createTranscription'>;
35298
36015
  export type SpeechRequest = Mutable<Body<'createSpeech'>>;
35299
36016
  export type SpeechStreamRequest = Mutable<Body<'createSpeechStream'>>;
@@ -35432,8 +36149,6 @@ export declare class Audio {
35432
36149
  signal?: AbortSignal;
35433
36150
  }): AsyncGenerator<SpeechStreamEvent, void, undefined>;
35434
36151
  }
35435
- //#endregion
35436
- //#region src/resources/billing.d.ts
35437
36152
  export type BillingOverview = Reply<'getBilling'>;
35438
36153
  export type BillingPlan = Schema<'BillingPlan'>;
35439
36154
  export type BillingWallet = Schema<'BillingWallet'>;
@@ -35455,7 +36170,7 @@ export interface StudioQuoteQuery {
35455
36170
  model?: string;
35456
36171
  n?: number;
35457
36172
  }
35458
- type CallOpts$36 = {
36173
+ type CallOpts$38 = {
35459
36174
  ext?: CodaiRequestExtensions;
35460
36175
  signal?: AbortSignal;
35461
36176
  };
@@ -35479,16 +36194,16 @@ export declare class Billing {
35479
36194
  private readonly http;
35480
36195
  constructor(http: HttpClient);
35481
36196
  /** `GET /v1/billing` — plan, wallet, auto top-up, cards and pay links (read-only). */
35482
- get(opts?: CallOpts$36): Promise<BillingOverview>;
36197
+ get(opts?: CallOpts$38): Promise<BillingOverview>;
35483
36198
  /** `GET /v1/billing/invoices` — fiscal invoices and credit notes, newest first. */
35484
36199
  invoices(query?: {
35485
36200
  limit?: number;
35486
- }, opts?: CallOpts$36): Promise<BillingInvoice[]>;
36201
+ }, opts?: CallOpts$38): Promise<BillingInvoice[]>;
35487
36202
  /**
35488
36203
  * `GET /v1/studio/quote` — what a Studio action costs (USD and wallet EUR micros) and your spendable balance,
35489
36204
  * before you run it. Paid Studio calls answer 402 `insufficient_funds` when `sufficient` is false. Free.
35490
36205
  */
35491
- studioQuote(query: StudioQuoteQuery, opts?: CallOpts$36): Promise<StudioQuote>;
36206
+ studioQuote(query: StudioQuoteQuery, opts?: CallOpts$38): Promise<StudioQuote>;
35492
36207
  /**
35493
36208
  * Poll `get()` every `intervalMs` and call `onLow` once each time the wallet
35494
36209
  * balance crosses below `thresholdEur`. Read-only: never creates a checkout.
@@ -35496,8 +36211,6 @@ export declare class Billing {
35496
36211
  */
35497
36212
  watchBalance(opts: WatchBalanceOptions): () => void;
35498
36213
  }
35499
- //#endregion
35500
- //#region src/resources/cards.d.ts
35501
36214
  /** `{ block, provenance }` (+ `results` for geocode) as returned by every JSON card endpoint. */
35502
36215
  export type CardDataResponse = Schema<'CardDataResponse'>;
35503
36216
  export type CardsWeatherParams = QueryOf<'cardsWeather'>;
@@ -35533,7 +36246,7 @@ export interface CardsRendered {
35533
36246
  width: number | null;
35534
36247
  height: number | null;
35535
36248
  }
35536
- type CallOpts$35 = {
36249
+ type CallOpts$37 = {
35537
36250
  ext?: CodaiRequestExtensions;
35538
36251
  signal?: AbortSignal;
35539
36252
  };
@@ -35542,62 +36255,60 @@ export declare class Cards {
35542
36255
  constructor(http: HttpClient);
35543
36256
  private get;
35544
36257
  /** `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>;
36258
+ weather(params: CardsWeatherParams, opts?: CallOpts$37): Promise<CardsWeatherResponse>;
35546
36259
  /**
35547
36260
  * `GET /v1/cards/places` — `places` block from Google Places: Text Search with `q` (biased to `lat`/`lng`/`radius`),
35548
36261
  * Nearby Search without it. Billed per call; `block` is null when nothing matched.
35549
36262
  */
35550
- places(params: CardsPlacesParams, opts?: CallOpts$35): Promise<CardsPlacesResponse>;
36263
+ places(params: CardsPlacesParams, opts?: CallOpts$37): Promise<CardsPlacesResponse>;
35551
36264
  /** `GET /v1/cards/geocode` — `map` block (≤ 5 markers) plus raw `results` (Google Geocoding, billed). */
35552
- geocode(params: CardsGeocodeParams, opts?: CallOpts$35): Promise<CardsGeocodeResponse>;
36265
+ geocode(params: CardsGeocodeParams, opts?: CallOpts$37): Promise<CardsGeocodeResponse>;
35553
36266
  /**
35554
36267
  * `GET /v1/cards/static-map` — PNG from Google Maps Static proxied through the gateway (no maps key on the client).
35555
36268
  * Needs `center` or `markers` (`lat,lng[,L]` joined by `|`); ≤ 640×400 points. Billed per call.
35556
36269
  */
35557
- staticMap(params: CardsStaticMapParams, opts?: CallOpts$35): Promise<CardsStaticMap>;
36270
+ staticMap(params: CardsStaticMapParams, opts?: CallOpts$37): Promise<CardsStaticMap>;
35558
36271
  /**
35559
36272
  * `GET /v1/cards/fx` — BNR (default) or ECB reference rates: a `metric` block with `from`+`to`, otherwise a `table`
35560
36273
  * block against `quote`, optionally limited to `symbols` (comma-separated). Free.
35561
36274
  */
35562
- fx(params?: CardsFxParams, opts?: CallOpts$35): Promise<CardsFxResponse>;
36275
+ fx(params?: CardsFxParams, opts?: CallOpts$37): Promise<CardsFxResponse>;
35563
36276
  /**
35564
36277
  * `GET /v1/cards/route` — travel time from Google Routes: `route` { mode, durationS, staticDurationS, distanceM,
35565
36278
  * polyline } and a `map` block. `origin`/`destination` as "lat,lng" or `from`/`to` as addresses; `mode` drive
35566
36279
  * (traffic-aware, default), walk, bicycle, transit, two_wheeler. Billed per call; both null when no route exists.
35567
36280
  */
35568
- route(params: CardsRouteParams, opts?: CallOpts$35): Promise<CardsRouteResponse>;
36281
+ route(params: CardsRouteParams, opts?: CallOpts$37): Promise<CardsRouteResponse>;
35569
36282
  /**
35570
36283
  * `GET /v1/cards/track` — parcel history as a `timeline` block plus `result` (carrier, configured, found,
35571
36284
  * delivered, events, trackingUrl). `carrier` (sameday | fan | cargus | dpd) is guessed from the AWB when omitted;
35572
36285
  * carriers without gateway credentials answer `configured: false` with only the tracking link. Free.
35573
36286
  */
35574
- track(params: CardsTrackParams, opts?: CallOpts$35): Promise<CardsTrackResponse>;
36287
+ track(params: CardsTrackParams, opts?: CallOpts$37): Promise<CardsTrackResponse>;
35575
36288
  /**
35576
36289
  * `GET /v1/cards/efactura` — your fiscal documents issued through Brivio with their ANAF e-Factura status
35577
36290
  * (`documents[]` + a `table` block, null when there are none). Free.
35578
36291
  */
35579
- efactura(params?: CardsEfacturaParams, opts?: CallOpts$35): Promise<CardsEfacturaResponse>;
36292
+ efactura(params?: CardsEfacturaParams, opts?: CallOpts$37): Promise<CardsEfacturaResponse>;
35580
36293
  /**
35581
36294
  * `POST /v1/cards/unfurl` — `links` block (variant `preview`) for a public https page; SSRF-guarded, cached 24 h.
35582
36295
  * Private targets throw 400 `unfurl_blocked`, non-https pages 422 `unfurl_not_https`.
35583
36296
  */
35584
- unfurl(url: string, opts?: CallOpts$35): Promise<CardsUnfurlResponse>;
36297
+ unfurl(url: string, opts?: CallOpts$37): Promise<CardsUnfurlResponse>;
35585
36298
  /**
35586
36299
  * `POST /v1/cards/product` — `products` block with one item from a public https product page's schema.org
35587
36300
  * `Product` JSON-LD (or OpenGraph product tags): name, image, price + currency (lowest offer), old price, rating
35588
36301
  * (0–5), reviews, seller, availability badge in `lang` (en default). Only what the page states; never sponsored.
35589
36302
  * SSRF-guarded like `unfurl`, cached 6 h. No product data throws 422 `product_not_found`.
35590
36303
  */
35591
- product(url: string, lang?: 'en' | 'ro', opts?: CallOpts$35): Promise<CardsProductResponse>;
36304
+ product(url: string, lang?: 'en' | 'ro', opts?: CallOpts$37): Promise<CardsProductResponse>;
35592
36305
  /**
35593
36306
  * `POST /v1/cards/render` — renders a `chart` or `qr` block to `format` (`png` default, or `svg`) at
35594
36307
  * `width` x `height` CSS px (64–1200, defaults 480 x 300; QR is square) times `scale` (1–3, PNG only).
35595
36308
  * Other block types (Mermaid `diagram`, `math`, …) throw 422 `render_unsupported`. Free; 2000 renders per day.
35596
36309
  */
35597
- render(body: CardsRenderBody, opts?: CallOpts$35): Promise<CardsRendered>;
36310
+ render(body: CardsRenderBody, opts?: CallOpts$37): Promise<CardsRendered>;
35598
36311
  }
35599
- //#endregion
35600
- //#region src/resources/chat.d.ts
35601
36312
  export type ChatCompletionRequest = Mutable<Body<'createChatCompletion'>>;
35602
36313
  /** Request body as accepted by the SDK: `stream` is set by the method and `model` defaults to `codai`. */
35603
36314
  export type ChatCompletionInput = Omit<ChatCompletionRequest, 'stream' | 'model'> & {
@@ -35704,13 +36415,11 @@ export declare class Chat {
35704
36415
  readonly completions: ChatCompletions;
35705
36416
  constructor(http: HttpClient);
35706
36417
  }
35707
- //#endregion
35708
- //#region src/resources/devices.d.ts
35709
36418
  export type Device = Schema<'DeviceListItem'>;
35710
36419
  export type DevicePatch = Mutable<Body<'updateDevice'>>;
35711
36420
  export type DevicePatched = Reply<'updateDevice'>;
35712
36421
  export type DispatchInbox = Reply<'getMyDispatchInbox'>;
35713
- type CallOpts$34 = {
36422
+ type CallOpts$36 = {
35714
36423
  ext?: CodaiRequestExtensions;
35715
36424
  signal?: AbortSignal;
35716
36425
  };
@@ -35718,26 +36427,24 @@ export declare class Devices {
35718
36427
  private readonly http;
35719
36428
  constructor(http: HttpClient);
35720
36429
  /** `GET /v1/devices` — most recently seen first. */
35721
- list(opts?: CallOpts$34): Promise<Device[]>;
36430
+ list(opts?: CallOpts$36): Promise<Device[]>;
35722
36431
  /** `PATCH /v1/devices/{id}` — push token and/or capabilities. */
35723
- update(id: string, body: DevicePatch, opts?: CallOpts$34): Promise<DevicePatched>;
36432
+ update(id: string, body: DevicePatch, opts?: CallOpts$36): Promise<DevicePatched>;
35724
36433
  /** `DELETE /v1/devices/{id}` */
35725
- delete(id: string, opts?: CallOpts$34): Promise<Reply<'deleteDevice'>>;
36434
+ delete(id: string, opts?: CallOpts$36): Promise<Reply<'deleteDevice'>>;
35726
36435
  /**
35727
36436
  * `POST /v1/keys/self/revoke` — the API key this client uses revokes ITSELF (sign out).
35728
36437
  * Every later call with it fails with 401.
35729
36438
  */
35730
- revokeSelfKey(opts?: CallOpts$34): Promise<Reply<'revokeSelfKey'>>;
36439
+ revokeSelfKey(opts?: CallOpts$36): Promise<Reply<'revokeSelfKey'>>;
35731
36440
  /**
35732
36441
  * `GET /v1/devices/me/dispatch?limit=` — pending controls dispatched at the
35733
36442
  * calling device (`x-codai-device` required) across all owned sessions.
35734
36443
  */
35735
36444
  dispatchInbox(query?: {
35736
36445
  limit?: number;
35737
- }, opts?: CallOpts$34): Promise<DispatchInbox>;
36446
+ }, opts?: CallOpts$36): Promise<DispatchInbox>;
35738
36447
  }
35739
- //#endregion
35740
- //#region src/resources/embeddings.d.ts
35741
36448
  export type EmbeddingsRequest = Mutable<Body<'createEmbeddings'>>;
35742
36449
  export type EmbeddingsResponse = Reply<'createEmbeddings'>;
35743
36450
  export interface EmbeddingsResult {
@@ -35760,8 +36467,6 @@ export declare class Embeddings {
35760
36467
  signal?: AbortSignal;
35761
36468
  }): Promise<EmbeddingsResult>;
35762
36469
  }
35763
- //#endregion
35764
- //#region src/resources/environments.d.ts
35765
36470
  export type Environment = Schema<'Environment'>;
35766
36471
  export type EnvironmentDetail = Schema<'EnvironmentDetail'>;
35767
36472
  export type EnvironmentState = Schema<'EnvironmentState'>;
@@ -35797,7 +36502,7 @@ export type EnvironmentJobStartBody = Mutable<Body<'startEnvironmentJob'>>;
35797
36502
  export type EnvironmentJobStarted = Schema<'EnvironmentJobStarted'>;
35798
36503
  export type EnvironmentJob = Schema<'EnvironmentJob'>;
35799
36504
  export type GetEnvironmentJobQuery = Mutable<QueryOf<'getEnvironmentJob'>>;
35800
- type CallOpts$33 = {
36505
+ type CallOpts$35 = {
35801
36506
  ext?: CodaiRequestExtensions;
35802
36507
  signal?: AbortSignal;
35803
36508
  };
@@ -35805,70 +36510,70 @@ export declare class EnvironmentMembers {
35805
36510
  private readonly http;
35806
36511
  constructor(http: HttpClient);
35807
36512
  /** `GET /v1/environments/{id}/members` — any role. */
35808
- list(envId: string, opts?: CallOpts$33): Promise<EnvironmentMember[]>;
36513
+ list(envId: string, opts?: CallOpts$35): Promise<EnvironmentMember[]>;
35809
36514
  /** `POST /v1/environments/{id}/members` — exactly one of `user_id` / `email`. */
35810
- add(envId: string, body: EnvironmentAddMemberBody, opts?: CallOpts$33): Promise<EnvironmentMemberCreated>;
36515
+ add(envId: string, body: EnvironmentAddMemberBody, opts?: CallOpts$35): Promise<EnvironmentMemberCreated>;
35811
36516
  /** `PUT /v1/environments/{id}/members/me/ssh-key` — one `authorized_keys` line. */
35812
- setSshKey(envId: string, publicKey: string, opts?: CallOpts$33): Promise<Reply<'setMyEnvironmentSshKey'>>;
36517
+ setSshKey(envId: string, publicKey: string, opts?: CallOpts$35): Promise<Reply<'setMyEnvironmentSshKey'>>;
35813
36518
  /** `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']>;
36519
+ setRole(envId: string, userId: string, role: EnvironmentRole, opts?: CallOpts$35): Promise<Reply<'setEnvironmentMemberRole'>['member']>;
35815
36520
  /** `DELETE /v1/environments/{id}/members/{userId}` — pass your own id to leave. */
35816
- remove(envId: string, userId: string, opts?: CallOpts$33): Promise<Reply<'removeEnvironmentMember'>>;
36521
+ remove(envId: string, userId: string, opts?: CallOpts$35): Promise<Reply<'removeEnvironmentMember'>>;
35817
36522
  /** `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>;
36523
+ sshCert(envId: string, body: EnvironmentSshCertBody, opts?: CallOpts$35): Promise<EnvironmentSshCert>;
35819
36524
  }
35820
36525
  /** `/v1/environments/{id}/tasks` — fire-and-forget agent tasks run in the environment. */
35821
36526
  export declare class EnvironmentTasks {
35822
36527
  private readonly http;
35823
36528
  constructor(http: HttpClient);
35824
36529
  /** `GET /v1/environments/{id}/tasks` */
35825
- list(envId: string, opts?: CallOpts$33): Promise<EnvironmentTaskList>;
36530
+ list(envId: string, opts?: CallOpts$35): Promise<EnvironmentTaskList>;
35826
36531
  /** `POST /v1/environments/{id}/tasks` — queued; you get a notification when it finishes. */
35827
- create(envId: string, body: EnvironmentTaskCreateBody, opts?: CallOpts$33): Promise<EnvironmentTaskCreated>;
36532
+ create(envId: string, body: EnvironmentTaskCreateBody, opts?: CallOpts$35): Promise<EnvironmentTaskCreated>;
35828
36533
  /** `GET /v1/environments/{id}/tasks/{taskId}` */
35829
- get(envId: string, taskId: string, opts?: CallOpts$33): Promise<EnvironmentTaskDetail>;
36534
+ get(envId: string, taskId: string, opts?: CallOpts$35): Promise<EnvironmentTaskDetail>;
35830
36535
  }
35831
36536
  /** `/v1/environments/{id}/files` — read/write/list over the relay (developer role or higher). */
35832
36537
  export declare class EnvironmentFiles {
35833
36538
  private readonly http;
35834
36539
  constructor(http: HttpClient);
35835
36540
  /** `GET /v1/environments/{id}/files?path=` — directory entries; no path → your workspace. */
35836
- list(envId: string, path?: string, opts?: CallOpts$33): Promise<EnvironmentFileList>;
36541
+ list(envId: string, path?: string, opts?: CallOpts$35): Promise<EnvironmentFileList>;
35837
36542
  /** `GET /v1/environments/{id}/files/{path}` — UTF-8 text (64 KB default, `maxBytes` ≤ 512 KB). */
35838
36543
  get(envId: string, path: string, options?: {
35839
36544
  maxBytes?: number;
35840
- } & CallOpts$33): Promise<EnvironmentFile>;
36545
+ } & CallOpts$35): Promise<EnvironmentFile>;
35841
36546
  /** `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>;
36547
+ put(envId: string, path: string, content: string, opts?: CallOpts$35): Promise<EnvironmentFileWritten>;
35843
36548
  }
35844
36549
  /** `/v1/environments/{id}/jobs` — background jobs on the environment daemon. */
35845
36550
  export declare class EnvironmentJobs {
35846
36551
  private readonly http;
35847
36552
  constructor(http: HttpClient);
35848
36553
  /** `POST /v1/environments/{id}/jobs` — returns at once with `job_id`. */
35849
- start(envId: string, body: EnvironmentJobStartBody, opts?: CallOpts$33): Promise<EnvironmentJobStarted>;
36554
+ start(envId: string, body: EnvironmentJobStartBody, opts?: CallOpts$35): Promise<EnvironmentJobStarted>;
35850
36555
  /** `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>;
36556
+ get(envId: string, jobId: string | number, query?: GetEnvironmentJobQuery, opts?: CallOpts$35): Promise<EnvironmentJob>;
35852
36557
  }
35853
36558
  export declare class EnvironmentPorts {
35854
36559
  private readonly http;
35855
36560
  constructor(http: HttpClient);
35856
36561
  /** `GET /v1/environments/{id}/ports` — published (forwarded) ports. */
35857
- list(envId: string, opts?: CallOpts$33): Promise<EnvironmentPort[]>;
36562
+ list(envId: string, opts?: CallOpts$35): Promise<EnvironmentPort[]>;
35858
36563
  /** `PUT /v1/environments/{id}/ports/{port}` — publish or change visibility (upsert). */
35859
- set(envId: string, port: number, body: EnvironmentPortBody, opts?: CallOpts$33): Promise<EnvironmentPort>;
36564
+ set(envId: string, port: number, body: EnvironmentPortBody, opts?: CallOpts$35): Promise<EnvironmentPort>;
35860
36565
  /** `DELETE /v1/environments/{id}/ports/{port}` — unpublish. */
35861
- remove(envId: string, port: number, opts?: CallOpts$33): Promise<Reply<'removeEnvironmentPort'>>;
36566
+ remove(envId: string, port: number, opts?: CallOpts$35): Promise<Reply<'removeEnvironmentPort'>>;
35862
36567
  }
35863
36568
  export declare class EnvironmentSecrets {
35864
36569
  private readonly http;
35865
36570
  constructor(http: HttpClient);
35866
36571
  /** `GET /v1/environments/{id}/secrets` — names and timestamps only, never values. */
35867
- list(envId: string, opts?: CallOpts$33): Promise<EnvironmentSecret[]>;
36572
+ list(envId: string, opts?: CallOpts$35): Promise<EnvironmentSecret[]>;
35868
36573
  /** `PUT /v1/environments/{id}/secrets/{name}` — upsert; `name` is `ENV_STYLE`. */
35869
- set(envId: string, name: string, value: string, opts?: CallOpts$33): Promise<EnvironmentSecretSet>;
36574
+ set(envId: string, name: string, value: string, opts?: CallOpts$35): Promise<EnvironmentSecretSet>;
35870
36575
  /** `DELETE /v1/environments/{id}/secrets/{name}` */
35871
- remove(envId: string, name: string, opts?: CallOpts$33): Promise<Reply<'removeEnvironmentSecret'>>;
36576
+ remove(envId: string, name: string, opts?: CallOpts$35): Promise<Reply<'removeEnvironmentSecret'>>;
35872
36577
  }
35873
36578
  export declare class Environments {
35874
36579
  private readonly http;
@@ -35883,45 +36588,43 @@ export declare class Environments {
35883
36588
  * `POST /v1/environments/{id}/exec` — run one relay op and wait (developer+). `op` defaults to
35884
36589
  * `shell` with `command`; 409 `environment_offline`, 504 `host_timeout`.
35885
36590
  */
35886
- exec(envId: string, body: EnvironmentExecBody, opts?: CallOpts$33): Promise<EnvironmentExecResult>;
36591
+ exec(envId: string, body: EnvironmentExecBody, opts?: CallOpts$35): Promise<EnvironmentExecResult>;
35887
36592
  /** `GET /v1/environments/{id}/ssh-ca` — CA public keys to trust (`@cert-authority` lines). */
35888
- sshCa(envId: string, opts?: CallOpts$33): Promise<EnvironmentSshCa>;
36593
+ sshCa(envId: string, opts?: CallOpts$35): Promise<EnvironmentSshCa>;
35889
36594
  /** `GET /v1/environments?project_id=&for_user_id=me` — newest first, every state. */
35890
- list(query?: ListEnvironmentsQuery, opts?: CallOpts$33): Promise<Environment[]>;
36595
+ list(query?: ListEnvironmentsQuery, opts?: CallOpts$35): Promise<Environment[]>;
35891
36596
  /**
35892
36597
  * `POST /v1/environments` — `byo` starts `pending`; managed providers start
35893
36598
  * `creating`. 409 `already_has_env` in a `vm_per_dev` project (the error
35894
36599
  * body carries the `environment_id` to reuse).
35895
36600
  */
35896
- create(body: EnvironmentCreateBody, opts?: CallOpts$33): Promise<Environment>;
36601
+ create(body: EnvironmentCreateBody, opts?: CallOpts$35): Promise<Environment>;
35897
36602
  /**
35898
36603
  * `POST /v1/environments/enroll` — daemon side. The one-time `codai_env_…`
35899
36604
  * token in the body is the only credential; the client's API key header is
35900
36605
  * ignored by this route. Managed environments additionally receive a
35901
36606
  * freshly minted `api_key`, returned exactly once.
35902
36607
  */
35903
- enroll(body: EnvironmentEnrollBody, opts?: CallOpts$33): Promise<EnvironmentEnrolled>;
36608
+ enroll(body: EnvironmentEnrollBody, opts?: CallOpts$35): Promise<EnvironmentEnrolled>;
35904
36609
  /** `GET /v1/environments/{id}` — environment, your role, members, ports, recent events. */
35905
- get(envId: string, opts?: CallOpts$33): Promise<EnvironmentDetail>;
36610
+ get(envId: string, opts?: CallOpts$35): Promise<EnvironmentDetail>;
35906
36611
  /** `PATCH /v1/environments/{id}` — `name` and/or `idle_timeout_minutes` (5..1440). */
35907
- update(envId: string, body: EnvironmentPatchBody, opts?: CallOpts$33): Promise<Environment>;
36612
+ update(envId: string, body: EnvironmentPatchBody, opts?: CallOpts$35): Promise<Environment>;
35908
36613
  /** `POST /v1/environments/{id}/start` — managed providers only (`stopped` → `starting`). */
35909
- start(envId: string, opts?: CallOpts$33): Promise<EnvironmentTransition>;
36614
+ start(envId: string, opts?: CallOpts$35): Promise<EnvironmentTransition>;
35910
36615
  /** `POST /v1/environments/{id}/stop` — managed providers only (`running` → `stopping`). */
35911
- stop(envId: string, opts?: CallOpts$33): Promise<EnvironmentTransition>;
36616
+ stop(envId: string, opts?: CallOpts$35): Promise<EnvironmentTransition>;
35912
36617
  /** `POST /v1/environments/{id}/archive` — keeps history, releases the machine. */
35913
- archive(envId: string, opts?: CallOpts$33): Promise<EnvironmentTransition>;
36618
+ archive(envId: string, opts?: CallOpts$35): Promise<EnvironmentTransition>;
35914
36619
  /** `POST /v1/environments/{id}/destroy` — owner only; terminal. */
35915
- destroy(envId: string, opts?: CallOpts$33): Promise<EnvironmentTransition>;
36620
+ destroy(envId: string, opts?: CallOpts$35): Promise<EnvironmentTransition>;
35916
36621
  /**
35917
36622
  * `POST /v1/environments/{id}/enroll-token` — `byo` only; a 30-minute
35918
36623
  * one-time token for `enroll()`. Minting again replaces the previous one.
35919
36624
  */
35920
- enrollToken(envId: string, opts?: CallOpts$33): Promise<EnvironmentEnrollToken>;
36625
+ enrollToken(envId: string, opts?: CallOpts$35): Promise<EnvironmentEnrollToken>;
35921
36626
  private transition;
35922
36627
  }
35923
- //#endregion
35924
- //#region src/resources/health.d.ts
35925
36628
  export type HealthResponse = Reply<'getHealth'>;
35926
36629
  export type HealthReadyResponse = Reply<'getHealthReady'>;
35927
36630
  export type StatusResponse = Reply<'getStatus'>;
@@ -35946,15 +36649,13 @@ export declare class Health {
35946
36649
  signal?: AbortSignal;
35947
36650
  }): Promise<StatusResponse>;
35948
36651
  }
35949
- //#endregion
35950
- //#region src/resources/hosts.d.ts
35951
36652
  export type HostPresence = Schema<'HostPresence'>;
35952
36653
  export type HostOp = Schema<'HostOp'>;
35953
36654
  export type HostExecBody = Mutable<Body<'execOnHost'>>;
35954
36655
  export type HostExecResponse = Reply<'execOnHost'>;
35955
36656
  export type HostExecRequest = Schema<'HostExecRequest'>;
35956
36657
  export type HostExecResultBody = Mutable<Body<'postHostExecResult'>>;
35957
- type CallOpts$32 = {
36658
+ type CallOpts$34 = {
35958
36659
  ext?: CodaiRequestExtensions;
35959
36660
  signal?: AbortSignal;
35960
36661
  };
@@ -35981,7 +36682,7 @@ export declare class Hosts {
35981
36682
  private readonly http;
35982
36683
  constructor(http: HttpClient);
35983
36684
  /** `GET /v1/hosts` — your devices currently connected as hosts. */
35984
- list(opts?: CallOpts$32): Promise<HostPresence[]>;
36685
+ list(opts?: CallOpts$34): Promise<HostPresence[]>;
35985
36686
  /**
35986
36687
  * `POST /v1/hosts/{deviceId}/exec` — run one op on a connected host and
35987
36688
  * block until it answers (or `timeout_ms`, default 60 s).
@@ -35989,9 +36690,9 @@ export declare class Hosts {
35989
36690
  exec(deviceId: string, op: HostOp, args?: Record<string, unknown>, extra?: {
35990
36691
  timeoutMs?: number;
35991
36692
  label?: string;
35992
- } & CallOpts$32): Promise<HostExecResponse>;
36693
+ } & CallOpts$34): Promise<HostExecResponse>;
35993
36694
  /** `POST /v1/hosts/exec/{reqId}/result` — host side: deliver an exec result. */
35994
- postResult(reqId: string, body: HostExecResultBody, opts?: CallOpts$32): Promise<Reply<'postHostExecResult'>>;
36695
+ postResult(reqId: string, body: HostExecResultBody, opts?: CallOpts$34): Promise<Reply<'postHostExecResult'>>;
35995
36696
  /**
35996
36697
  * `GET /v1/hosts/stream?os=&hostname=&roots=` — host side: announce this
35997
36698
  * device and receive `hello` / `ping` / `exec` events. Closed by the server
@@ -36001,10 +36702,8 @@ export declare class Hosts {
36001
36702
  os?: string;
36002
36703
  hostname?: string;
36003
36704
  roots?: string[];
36004
- }, opts?: CallOpts$32): AsyncGenerator<HostStreamEvent, void, undefined>;
36705
+ }, opts?: CallOpts$34): AsyncGenerator<HostStreamEvent, void, undefined>;
36005
36706
  }
36006
- //#endregion
36007
- //#region src/resources/assets.d.ts
36008
36707
  /** A stored asset (`GET /v1/assets/{id}`; `data` items with `response_format: 'url'`). */
36009
36708
  export type AssetDto = Schema<'AssetDto'>;
36010
36709
  export type AssetKind = Schema<'AssetKind'>;
@@ -36013,7 +36712,7 @@ export type AssetDeleted = Reply<'deleteAsset'>;
36013
36712
  export type AssetListQuery = QueryOf<'listAssets'>;
36014
36713
  /** `b64_json` (default, inline bytes) or `url` (stored asset + 1 h signed URL; 503 `assets_unavailable` without storage). */
36015
36714
  export type MediaResponseFormat = Schema<'MediaResponseFormat'>;
36016
- type CallOpts$31 = {
36715
+ type CallOpts$33 = {
36017
36716
  ext?: CodaiRequestExtensions;
36018
36717
  signal?: AbortSignal;
36019
36718
  };
@@ -36023,28 +36722,26 @@ export declare class Assets {
36023
36722
  private readonly http;
36024
36723
  constructor(http: HttpClient);
36025
36724
  /** `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>;
36725
+ list(query?: AssetListQuery, opts?: CallOpts$33): Promise<AssetList>;
36027
36726
  /** Iterate every asset across pages (`list` with `before` = previous `next_before`). */
36028
- iterate(query?: Omit<AssetListQuery, 'before'>, opts?: CallOpts$31): AsyncGenerator<AssetDto, void, undefined>;
36727
+ iterate(query?: Omit<AssetListQuery, 'before'>, opts?: CallOpts$33): AsyncGenerator<AssetDto, void, undefined>;
36029
36728
  /** `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>;
36729
+ retrieve(id: string, opts?: CallOpts$33): Promise<AssetDto>;
36031
36730
  /**
36032
36731
  * A fresh signed URL of the asset's bytes (valid 1 h), from `GET /v1/assets/{id}`. Throws when the asset has no
36033
36732
  * content yet. Use it in `<audio>`/`<video>`/`fetch` — it needs no Authorization header.
36034
36733
  */
36035
- contentUrl(id: string, opts?: CallOpts$31): Promise<string>;
36734
+ contentUrl(id: string, opts?: CallOpts$33): Promise<string>;
36036
36735
  /**
36037
36736
  * The authenticated redirect endpoint `GET /v1/assets/{id}/content` (302 to the signed URL). Useful for tools that
36038
36737
  * follow redirects with the API key (`curl -L -H 'Authorization: Bearer …'`); browsers should use `contentUrl()`.
36039
36738
  */
36040
36739
  contentPath(id: string): string;
36041
36740
  /** Download the asset's bytes (fetches the signed URL, no API key sent to storage). */
36042
- content(id: string, opts?: CallOpts$31): Promise<Uint8Array>;
36741
+ content(id: string, opts?: CallOpts$33): Promise<Uint8Array>;
36043
36742
  /** `DELETE /v1/assets/{id}` — deletes the object; signed URLs already handed out stop working. */
36044
- delete(id: string, opts?: CallOpts$31): Promise<AssetDeleted>;
36743
+ delete(id: string, opts?: CallOpts$33): Promise<AssetDeleted>;
36045
36744
  }
36046
- //#endregion
36047
- //#region src/resources/images.d.ts
36048
36745
  export type ImagesRequest = Mutable<Body<'createImage'>>;
36049
36746
  export type ImagesResponse = Reply<'createImage'>;
36050
36747
  export type ImageEditRequest = Mutable<Body<'editImage'>>;
@@ -36089,8 +36786,6 @@ export declare class Images {
36089
36786
  }): Promise<ImagesResult>;
36090
36787
  private post;
36091
36788
  }
36092
- //#endregion
36093
- //#region src/resources/media.d.ts
36094
36789
  export interface MusicRequest {
36095
36790
  /** `codai-music` (default, Lyria 3 Clip), `codai-music-pro` (Lyria 3 Pro) or `codai-music-legacy` (Lyria 2). */
36096
36791
  model?: 'codai-music' | 'codai-music-pro' | 'codai-music-legacy' | (string & {});
@@ -36534,8 +37229,6 @@ export declare class Renders {
36534
37229
  ext?: CodaiRequestExtensions;
36535
37230
  }): Promise<RenderResult>;
36536
37231
  }
36537
- //#endregion
36538
- //#region src/resources/documents.d.ts
36539
37232
  export type DocumentType = 'deck' | 'doc' | 'sheet';
36540
37233
  export type DocumentTheme = Schema<'DocumentTheme'>;
36541
37234
  export type DeckSpec = Mutable<Schema<'DeckSpec'>>;
@@ -36550,11 +37243,11 @@ export type DocumentPreview = Reply<'retrievePreview'>;
36550
37243
  export type DocumentPreviewStatus = DocumentPreview['status'];
36551
37244
  export type DocumentVideoRequest = Mutable<Body<'createDocumentVideo'>>;
36552
37245
  export type DocumentVideoAccepted = Reply<'createDocumentVideo', 202>;
36553
- type CallOpts$30 = {
37246
+ type CallOpts$32 = {
36554
37247
  ext?: CodaiRequestExtensions;
36555
37248
  signal?: AbortSignal;
36556
37249
  };
36557
- export interface DocumentPollOptions extends CallOpts$30 {
37250
+ export interface DocumentPollOptions extends CallOpts$32 {
36558
37251
  /** Delay between polls (default 3000 ms for previews, 5000 ms for videos). */
36559
37252
  pollIntervalMs?: number;
36560
37253
  /** Give up after this long (default 300 000 ms for previews, 900 000 ms for videos). */
@@ -36569,21 +37262,21 @@ export declare class Documents {
36569
37262
  * `sheet` -> `SheetSpec`); invalid specs are 400 `invalid_spec`. Files are free. `based_on` creates the next version
36570
37263
  * of one of your documents; `preview: true` also queues a (billed) preview, returned as `preview`.
36571
37264
  */
36572
- create(body: DocumentCreateRequest, opts?: CallOpts$30): Promise<StudioDocument>;
37265
+ create(body: DocumentCreateRequest, opts?: CallOpts$32): Promise<StudioDocument>;
36573
37266
  /** `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>;
37267
+ retrieve(id: string, opts?: CallOpts$32): Promise<StudioDocument>;
36575
37268
  /**
36576
37269
  * Queue a preview (`POST /v1/studio/documents/{id}/previews`, HTTP 202): tagged PDF, page PNGs (1280 px) and a
36577
37270
  * contact sheet. Billed once on the first poll that sees the result; at most 3 active previews per user (429).
36578
37271
  */
36579
- preview(id: string, body?: DocumentPreviewRequest, opts?: CallOpts$30): Promise<DocumentPreviewAccepted>;
37272
+ preview(id: string, body?: DocumentPreviewRequest, opts?: CallOpts$32): Promise<DocumentPreviewAccepted>;
36580
37273
  /** Poll a preview (`GET /v1/studio/previews/{id}`): `queued` | `rendering` | `succeeded` | `failed`. */
36581
- retrievePreview(previewId: string, opts?: CallOpts$30): Promise<DocumentPreview>;
37274
+ retrievePreview(previewId: string, opts?: CallOpts$32): Promise<DocumentPreview>;
36582
37275
  /**
36583
37276
  * Turn a deck into an MP4 (`POST /v1/studio/documents/{id}/video`, HTTP 202). Returns a render: poll it with
36584
37277
  * `renders.retrieve(id)` or use `videoAndWait`. Narration (`narrate`) is synthesized and billed now.
36585
37278
  */
36586
- video(id: string, body?: DocumentVideoRequest, opts?: CallOpts$30): Promise<DocumentVideoAccepted>;
37279
+ video(id: string, body?: DocumentVideoRequest, opts?: CallOpts$32): Promise<DocumentVideoAccepted>;
36587
37280
  /** Queue a preview and poll until it succeeds. Throws on `failed` or timeout. */
36588
37281
  createPreviewAndWait(id: string, opts?: DocumentPollOptions & {
36589
37282
  body?: DocumentPreviewRequest;
@@ -36593,8 +37286,6 @@ export declare class Documents {
36593
37286
  accepted: DocumentVideoAccepted;
36594
37287
  }>;
36595
37288
  }
36596
- //#endregion
36597
- //#region src/resources/exports.d.ts
36598
37289
  export type StudioExport = Schema<'StudioExport'>;
36599
37290
  export type ExportFcpxmlQuery = QueryOf<'exportCreativeFcpxml'>;
36600
37291
  /** `creatives.exportLottie` / `downloadLottie` options (`download` is chosen by the method). */
@@ -36605,11 +37296,11 @@ export interface LottieDownload {
36605
37296
  filename: string | null;
36606
37297
  contentType: string | null;
36607
37298
  }
36608
- type CallOpts$29 = {
37299
+ type CallOpts$31 = {
36609
37300
  ext?: CodaiRequestExtensions;
36610
37301
  signal?: AbortSignal;
36611
37302
  };
36612
- export interface ExportWaitOptions extends CallOpts$29 {
37303
+ export interface ExportWaitOptions extends CallOpts$31 {
36613
37304
  /** Delay between polls (default 3000 ms). */
36614
37305
  intervalMs?: number;
36615
37306
  /** Give up after this long (default 900 000 ms = 15 min). */
@@ -36619,7 +37310,7 @@ export declare class Exports {
36619
37310
  private readonly http;
36620
37311
  constructor(http: HttpClient);
36621
37312
  /** The export: `queued` / `running`, then `succeeded` (signed `url`, valid 1 h) or `failed` (`error`). Free. */
36622
- retrieve(id: string, opts?: CallOpts$29): Promise<StudioExport>;
37313
+ retrieve(id: string, opts?: CallOpts$31): Promise<StudioExport>;
36623
37314
  /**
36624
37315
  * Poll `retrieve` every `intervalMs` (default 3 s) until the export is `succeeded` or `failed` and resolve with it
36625
37316
  * (a `failed` export resolves too — check `status` / `error`). Throws when it is not done within `timeoutMs`
@@ -36627,8 +37318,6 @@ export declare class Exports {
36627
37318
  */
36628
37319
  wait(id: string, opts?: ExportWaitOptions): Promise<StudioExport>;
36629
37320
  }
36630
- //#endregion
36631
- //#region src/resources/creatives.d.ts
36632
37321
  export type CreativeKind = Schema<'CreativeKind'>;
36633
37322
  export type CreativeDoc = Mutable<Schema<'CreativeDoc'>>;
36634
37323
  export type CreativeOp = Mutable<Schema<'CreativeOp'>>;
@@ -36775,7 +37464,7 @@ export interface CreativeEditRequest {
36775
37464
  /** Bypass locked nodes and variables. */
36776
37465
  force?: boolean;
36777
37466
  }
36778
- type CallOpts$28 = {
37467
+ type CallOpts$30 = {
36779
37468
  ext?: CodaiRequestExtensions;
36780
37469
  signal?: AbortSignal;
36781
37470
  };
@@ -36783,49 +37472,49 @@ export declare class Creatives {
36783
37472
  private readonly http;
36784
37473
  constructor(http: HttpClient);
36785
37474
  /** List your creatives, most recently updated first (`next_before` pages). */
36786
- list(query?: CreativeListQuery, opts?: CallOpts$28): Promise<CreativeList>;
37475
+ list(query?: CreativeListQuery, opts?: CallOpts$30): Promise<CreativeList>;
36787
37476
  /**
36788
37477
  * Create a creative (`kind` + optional `title` / `doc`); without `doc` you get an empty document for the kind.
36789
37478
  * `brand_kit_id` applies one of your brand kits (`brandKits`) to version 1: `brand = { kitId, tokens }` + its logo.
36790
37479
  * `template` (+ `vars`, values by var key) starts from one of your templates (`templates`) instead of `doc`.
36791
37480
  */
36792
- create(body: CreativeCreateRequest, opts?: CallOpts$28): Promise<Creative>;
37481
+ create(body: CreativeCreateRequest, opts?: CallOpts$30): Promise<Creative>;
36793
37482
  /** The document at the head (or `seq`) with signed `assets` (1 h URLs). */
36794
37483
  retrieve(id: string, query?: {
36795
37484
  seq?: number;
36796
- }, opts?: CallOpts$28): Promise<CreativeDetail>;
37485
+ }, opts?: CallOpts$30): Promise<CreativeDetail>;
36797
37486
  /** Compact text outline (+ formats and vars) — the cheapest structure for a prompt. */
36798
- outline(id: string, opts?: CallOpts$28): Promise<CreativeOutline>;
37487
+ outline(id: string, opts?: CallOpts$30): Promise<CreativeOutline>;
36799
37488
  /** 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>;
37489
+ find(id: string, query: CreativeFindRequest['query'], opts?: CallOpts$30): Promise<CreativeFindResult>;
36801
37490
  /** Full JSON of `ids` (scene ids return whole scenes) or of one `sceneId`. */
36802
- subtree(id: string, body: CreativeSubtreeRequest, opts?: CallOpts$28): Promise<CreativeSubtree>;
37491
+ subtree(id: string, body: CreativeSubtreeRequest, opts?: CallOpts$30): Promise<CreativeSubtree>;
36803
37492
  /**
36804
37493
  * Apply an op batch (all or nothing) authored against `baseSeq`. A stale base is rebased when the touched
36805
37494
  * targets did not change meanwhile; otherwise the call throws `CodaiError` 409 `stale` (reload and retry). Rejected
36806
37495
  * ops throw 400 with `code` (`invalid`, `not_found`, `locked`, `duplicate_id`).
36807
37496
  */
36808
- edit(id: string, body: CreativeEditRequest, opts?: CallOpts$28): Promise<CreativeOpsResult>;
37497
+ edit(id: string, body: CreativeEditRequest, opts?: CallOpts$30): Promise<CreativeOpsResult>;
36809
37498
  /** Version history, newest first (`beforeSeq` pages). */
36810
37499
  versions(id: string, query?: {
36811
37500
  beforeSeq?: number;
36812
37501
  limit?: number;
36813
- }, opts?: CallOpts$28): Promise<CreativeVersionList>;
37502
+ }, opts?: CallOpts$30): Promise<CreativeVersionList>;
36814
37503
  /** New head whose document is version `seq`'s (undo / redo). */
36815
- revert(id: string, seq: number, opts?: CallOpts$28): Promise<CreativeRevertResult>;
37504
+ revert(id: string, seq: number, opts?: CallOpts$30): Promise<CreativeRevertResult>;
36816
37505
  /** New creative from version `seq` (default the head). */
36817
- fork(id: string, body?: CreativeForkRequest, opts?: CallOpts$28): Promise<Creative>;
37506
+ fork(id: string, body?: CreativeForkRequest, opts?: CallOpts$30): Promise<Creative>;
36818
37507
  /** Soft-delete the creative. */
36819
- delete(id: string, opts?: CallOpts$28): Promise<CreativeDeleted>;
37508
+ delete(id: string, opts?: CallOpts$30): Promise<CreativeDeleted>;
36820
37509
  /**
36821
37510
  * Contrast, safe area, empty text, missing assets, brand colours, platform safe zones and text floors, alt text,
36822
37511
  * missing captions, reading speed, flashing, missing / stale translations. Issues carry `format` / `fixable` /
36823
37512
  * `locale`; `fixable` counts them (`lintFix`). `locale` lints the translated document (adds
36824
37513
  * `text_overflow_locale`); 404 `Locale not found.` for an unknown locale.
36825
37514
  */
36826
- lint(id: string, body?: CreativeLintRequest, opts?: CallOpts$28): Promise<CreativeLintResult>;
37515
+ lint(id: string, body?: CreativeLintRequest, opts?: CallOpts$30): Promise<CreativeLintResult>;
36827
37516
  /** Preview HTML (signed asset URLs) for `format` / one `scene` / a translation (`locale`). */
36828
- compiled(id: string, query?: CreativeCompiledQuery, opts?: CallOpts$28): Promise<CreativeCompiled>;
37517
+ compiled(id: string, query?: CreativeCompiledQuery, opts?: CallOpts$30): Promise<CreativeCompiled>;
36829
37518
  /**
36830
37519
  * Queue an MP4 render of the head (`codai-render`, HTTP 202, `cached: false`); poll `renders.retrieve(render_id)`.
36831
37520
  * When the same render already exists for this version / format / quality / fps you get it back at once
@@ -36834,7 +37523,7 @@ export declare class Creatives {
36834
37523
  * `ai_label` (`none` | `corner` | `end_card`, EU AI Act art. 50(4)) burns a visible AI label into the video; omitted =
36835
37524
  * `corner` when the creative uses TTS narration or AI images, else `none` (`none` with narration: 400 `ai_label_required`).
36836
37525
  */
36837
- render(id: string, body?: CreativeRenderRequest, opts?: CallOpts$28): Promise<CreativeRenderResult>;
37526
+ render(id: string, body?: CreativeRenderRequest, opts?: CallOpts$30): Promise<CreativeRenderResult>;
36838
37527
  /**
36839
37528
  * Mixdown + mastering + exports of an `audio` creative (MU-05; same `POST …/render` route, HTTP 202). `formats`
36840
37529
  * (default `['wav', 'mp3']`), `stems: true` adds one WAV per audible track (+50 %), `lrc` exports the timed lyrics
@@ -36843,7 +37532,7 @@ export declare class Creatives {
36843
37532
  * (`output: mix | stem | lrc`). $0.001 per output second, minimum $0.01; held up front, billed on the measured length.
36844
37533
  * 400 `empty_audio` / `too_long` (20 min) / `no_lyrics`; video creatives use `render`.
36845
37534
  */
36846
- renderAudio(id: string, body?: CreativeAudioRenderRequest, opts?: CallOpts$28 & {
37535
+ renderAudio(id: string, body?: CreativeAudioRenderRequest, opts?: CallOpts$30 & {
36847
37536
  idempotencyKey?: string;
36848
37537
  }): Promise<CreativeAudioRenderAccepted>;
36849
37538
  /**
@@ -36852,41 +37541,41 @@ export declare class Creatives {
36852
37541
  * running job (`status: 'running'`) to poll with `frameJob(id, frame_job_id)`. Cached frames are free; 60 frame
36853
37542
  * jobs per UTC day are free, then billed (`billed_micro_usd`).
36854
37543
  */
36855
- frame(id: string, body: CreativeFrameRequest, opts?: CallOpts$28): Promise<CreativeFrameResult>;
37544
+ frame(id: string, body: CreativeFrameRequest, opts?: CallOpts$30): Promise<CreativeFrameResult>;
36856
37545
  /**
36857
37546
  * Turn a comment pinned on a frame (`t_ms`, optional `node_id` / `scene_id`) into an edit: one bounded `codai`
36858
37547
  * model turn proposes ops, applied like `edit` against `base_seq` (rebased when possible, 409 `stale` else).
36859
37548
  * 422 `no_edit` when the model made no edit (its answer in `error.text`); `apply: false` only proposes the ops.
36860
37549
  * Token-metered like any `codai` text call.
36861
37550
  */
36862
- comment(id: string, body: CreativeCommentRequest, opts?: CallOpts$28): Promise<CreativeCommentResult>;
37551
+ comment(id: string, body: CreativeCommentRequest, opts?: CallOpts$30): Promise<CreativeCommentResult>;
36863
37552
  /**
36864
37553
  * Generate A/B variants: one bounded `codai` model turn proposes `count` (default 3) variants changing only
36865
37554
  * `focus` (default hook / title / cta); each becomes a fork of the creative at `base_seq` with the ops applied, plus
36866
37555
  * a queued draft render (`render: false` to skip; poll `renders.retrieve(render_id)`). The original is unchanged
36867
37556
  * until `pickVariant`. 422 `no_edit` when no valid variant came back, 504 `timeout` after 90 s. Token-metered.
36868
37557
  */
36869
- variants(id: string, body: CreativeVariantsRequest, opts?: CallOpts$28): Promise<CreativeVariantsResult>;
37558
+ variants(id: string, body: CreativeVariantsRequest, opts?: CallOpts$30): Promise<CreativeVariantsResult>;
36870
37559
  /** 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>;
37560
+ listVariants(id: string, opts?: CallOpts$30): Promise<CreativeVariantList>;
36872
37561
  /**
36873
37562
  * Pick the winner: its ops are applied to the original against `base_seq` (rebased when possible, 409 `stale`
36874
37563
  * else); the winner is marked `winner`, the rest of its group `rejected`.
36875
37564
  */
36876
- pickVariant(id: string, variantId: string, body: CreativeVariantPickRequest, opts?: CallOpts$28): Promise<CreativeVariantPickResult>;
37565
+ pickVariant(id: string, variantId: string, body: CreativeVariantPickRequest, opts?: CallOpts$30): Promise<CreativeVariantPickResult>;
36877
37566
  /**
36878
37567
  * Save the creative (at `seq`, default the head) as a private template: each `vars` entry turns a text node's text
36879
37568
  * (`prop: 'text'`) or an image node's asset (`prop: 'image'`) into a variable whose default is the current value.
36880
37569
  * 400 `node_not_found` / `invalid_pick` / `duplicate_key`. Free.
36881
37570
  */
36882
- saveTemplate(id: string, body: SaveTemplateRequest, opts?: CallOpts$28): Promise<CreativeTemplate>;
37571
+ saveTemplate(id: string, body: SaveTemplateRequest, opts?: CallOpts$30): Promise<CreativeTemplate>;
36883
37572
  /**
36884
37573
  * Queue an FCPXML export of a video creative (`seq`, default the head; `format`, default the first 1920×1080 /
36885
37574
  * 1080×1920 / 1080×1080 format): a zip with `project.fcpxml` + per-scene MP4 segments + audio, for Final Cut Pro,
36886
37575
  * DaVinci Resolve or Premiere. Resolves to the queued export; poll it with `exports.wait(e.id)`. Only newly
36887
37576
  * rendered seconds are billed (final render price). 400 `unsupported_kind` / `unsupported_format` / `too_long`.
36888
37577
  */
36889
- exportFcpxml(id: string, query?: ExportFcpxmlQuery, opts?: CallOpts$28): Promise<StudioExport>;
37578
+ exportFcpxml(id: string, query?: ExportFcpxmlQuery, opts?: CallOpts$30): Promise<StudioExport>;
36890
37579
  /**
36891
37580
  * Export a video creative as a Lottie animation (`seq`, default the head; `format`, default the document's default
36892
37581
  * format, or `formats: 'all'`; `container: 'json'` (default, Bodymovin JSON with embedded images) or `'dotlottie'`).
@@ -36894,19 +37583,19 @@ export declare class Creatives {
36894
37583
  * fidelity report in `warnings` (video, chart, HTML block, table, cell grid and audio nodes are not exported).
36895
37584
  * 400 `unsupported_kind` / `invalid_request`, 413 `too_large` (over 20 MB).
36896
37585
  */
36897
- exportLottie(id: string, query?: ExportLottieQuery, opts?: CallOpts$28): Promise<StudioExport>;
37586
+ exportLottie(id: string, query?: ExportLottieQuery, opts?: CallOpts$30): Promise<StudioExport>;
36898
37587
  /**
36899
37588
  * The Lottie file itself (`download=1`, nothing stored): `application/json` for one Bodymovin JSON, `application/zip`
36900
37589
  * for a dotLottie archive or a zip of JSON files (`formats: 'all'`). Same options and errors as `exportLottie`. Free.
36901
37590
  */
36902
- downloadLottie(id: string, query?: ExportLottieQuery, opts?: CallOpts$28): Promise<LottieDownload>;
37591
+ downloadLottie(id: string, query?: ExportLottieQuery, opts?: CallOpts$30): Promise<LottieDownload>;
36903
37592
  /**
36904
37593
  * Turn one of your Studio documents (deck, doc, sheet) into an editable creative — slides become scenes with a
36905
37594
  * `layout` and speaker `notes`, doc pages a `flow` group, sheets a `cell_grid`; nodes carry semantic `role`s.
36906
37595
  * Idempotent: a document that already has a creative resolves to it (`existing: true`). Free. 404 unknown document,
36907
37596
  * 409 `document_spec_missing`, 400 `invalid_spec`, 413 `too_large`.
36908
37597
  */
36909
- fromDocument(documentId: string, opts?: CallOpts$28): Promise<StudioCreativeFromDocument>;
37598
+ fromDocument(documentId: string, opts?: CallOpts$30): Promise<StudioCreativeFromDocument>;
36910
37599
  /**
36911
37600
  * Build a deck / doc / sheet creative (at `seq`, default the head) into a PPTX / DOCX / XLSX — a new version of its
36912
37601
  * Studio document (`document`, exactly the `POST /v1/studio/documents` body). Converter notes come back in
@@ -36918,7 +37607,7 @@ export declare class Creatives {
36918
37607
  * `quote_micro_usd` is held). Tell the two apart with `isPagedBuild`, poll with `exports.wait(r.export.id)` or use
36919
37608
  * `buildAndWait`.
36920
37609
  */
36921
- build(id: string, body?: CreativeBuildRequest | CreativePagedBuildRequest, opts?: CallOpts$28): Promise<CreativeBuildResult>;
37610
+ build(id: string, body?: CreativeBuildRequest | CreativePagedBuildRequest, opts?: CallOpts$30): Promise<CreativeBuildResult>;
36922
37611
  /**
36923
37612
  * `build`, then — for a carousel / print creative — poll the export job until it has `succeeded` or `failed`
36924
37613
  * (`exports.wait`). Resolves to the 200 build for deck / doc / sheet, or to the finished `StudioExport`.
@@ -36931,7 +37620,7 @@ export declare class Creatives {
36931
37620
  * the creative. Token-metered (`cost_micro_usd`) under a small wallet hold (402 `insufficient_funds`); 400
36932
37621
  * `not_supported_for_kind`, 422 `no_post_copy`, 504 `timeout`. `idempotencyKey` replays a retry (24 h).
36933
37622
  */
36934
- postCopy(id: string, body?: StudioPostCopyRequest, opts?: CallOpts$28 & {
37623
+ postCopy(id: string, body?: StudioPostCopyRequest, opts?: CallOpts$30 & {
36935
37624
  idempotencyKey?: string;
36936
37625
  }): Promise<StudioPostCopy>;
36937
37626
  /**
@@ -36940,7 +37629,7 @@ export declare class Creatives {
36940
37629
  * one new version (`base_seq` rebased like `edit`, locks honoured unless `force`). Free. 409 `captions_required`
36941
37630
  * (run `captions` on that clip first) or `stale`; video creatives only.
36942
37631
  */
36943
- transcriptCut(id: string, body: CreativeTranscriptCutRequest, opts?: CallOpts$28): Promise<CreativeTranscriptCutResult>;
37632
+ transcriptCut(id: string, body: CreativeTranscriptCutRequest, opts?: CallOpts$30): Promise<CreativeTranscriptCutResult>;
36944
37633
  /**
36945
37634
  * Generate a new picture for an `image` node (`prompt`, optional `model`, `aspect_ratio` — default the closest
36946
37635
  * 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 +37637,7 @@ export declare class Creatives {
36948
37637
  * like `images.generate` (402 `insufficient_funds`); 400 `content_filtered` charges nothing. `idempotencyKey`
36949
37638
  * replays a retry (24 h).
36950
37639
  */
36951
- regenerateNode(id: string, nodeId: string, body: CreativeRegenerateNodeRequest, opts?: CallOpts$28 & {
37640
+ regenerateNode(id: string, nodeId: string, body: CreativeRegenerateNodeRequest, opts?: CallOpts$30 & {
36952
37641
  idempotencyKey?: string;
36953
37642
  }): Promise<CreativeRegenerateNodeResult>;
36954
37643
  /**
@@ -36957,7 +37646,7 @@ export declare class Creatives {
36957
37646
  * `fonts` (default true) sets heading / body font refs by role, locked nodes are skipped unless `force`. The kit
36958
37647
  * logo is registered too. `base_seq` defaults to the head (rebased like `edit`, 409 `stale` else). Free.
36959
37648
  */
36960
- restyle(id: string, body: CreativeRestyleRequest, opts?: CallOpts$28): Promise<CreativeRestyleResult>;
37649
+ restyle(id: string, body: CreativeRestyleRequest, opts?: CallOpts$30): Promise<CreativeRestyleResult>;
36961
37650
  /**
36962
37651
  * Auto-captions: transcribe a voice clip (`clip_id`, default the first voice clip) word by word and add or update a
36963
37652
  * captions node (`preset`, default `bold-pill`) as one new version. Words are cached on the asset (free next time
@@ -36965,86 +37654,84 @@ export declare class Creatives {
36965
37654
  * transcription is billed at the speech-to-text rate (`cost_micro_usd`). Video creatives only (400
36966
37655
  * `unsupported_kind`); 403 `residency_unavailable`, 503 `transcription_unavailable`.
36967
37656
  */
36968
- captions(id: string, body?: CreativeCaptionsRequest, opts?: CallOpts$28): Promise<CreativeCaptionsResult>;
37657
+ captions(id: string, body?: CreativeCaptionsRequest, opts?: CallOpts$30): Promise<CreativeCaptionsResult>;
36969
37658
  /** 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>;
37659
+ captionsSrt(id: string, query?: CreativeCaptionsQuery, opts?: CallOpts$30): Promise<string>;
36971
37660
  /** 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>;
37661
+ captionsVtt(id: string, query?: CreativeCaptionsQuery, opts?: CallOpts$30): Promise<string>;
36973
37662
  /**
36974
37663
  * Adapt to platforms (`tiktok`, `reels`, `shorts`, `feed-square`, `feed-portrait`, `youtube`): one format per
36975
37664
  * platform in one new version, text kept inside each platform's safe zone and above its legible size.
36976
37665
  * `focal: 'vision'` (token-metered) finds the focal point of full-bleed images; it fails open. Free otherwise.
36977
37666
  */
36978
- adapt(id: string, body: CreativeAdaptRequest, opts?: CallOpts$28): Promise<CreativeAdaptResult>;
37667
+ adapt(id: string, body: CreativeAdaptRequest, opts?: CallOpts$30): Promise<CreativeAdaptResult>;
36979
37668
  /**
36980
37669
  * Fix lint issues as one new version: deterministic fixes (free) for `off_brand_color`, `text_too_small`,
36981
37670
  * `outside_platform_safe_zone` and `flashing` (`codes` limits them); `agent: true` (token-metered) gives the rest
36982
37671
  * to one `codai` turn. Nothing to fix: the current `seq`, empty `fixed`, no new version.
36983
37672
  */
36984
- lintFix(id: string, body?: CreativeLintFixRequest, opts?: CallOpts$28): Promise<CreativeLintFixResult>;
37673
+ lintFix(id: string, body?: CreativeLintFixRequest, opts?: CallOpts$30): Promise<CreativeLintFixResult>;
36985
37674
  /**
36986
37675
  * The tweak panel model: one control per variable (stored `meta.controls` entry or derived from the type). Change
36987
37676
  * values with a `setVar` op and controls with a `setControl` op (`edit`). Free.
36988
37677
  */
36989
- controls(id: string, opts?: CallOpts$28): Promise<CreativeControls>;
37678
+ controls(id: string, opts?: CallOpts$30): Promise<CreativeControls>;
36990
37679
  /**
36991
37680
  * Localisation state: source locale, glossary, unit count and per locale translated / missing / stale / voice.
36992
37681
  * With `locale` (+ `units`, default 1) also the units of that locale (paged with `offset` / `limit` ≤ 500). Free.
36993
37682
  */
36994
- locales(id: string, query?: CreativeLocalesQuery, opts?: CallOpts$28): Promise<CreativeLocaleStatus>;
37683
+ locales(id: string, query?: CreativeLocalesQuery, opts?: CallOpts$30): Promise<CreativeLocaleStatus>;
36995
37684
  /**
36996
37685
  * Translate every text into up to 10 BCP-47 `locales` as per-locale overrides (one new version, author `agent`).
36997
37686
  * Token-metered `codai` turns; `glossary` terms and the brand kit name stay verbatim, `tone` picks the address,
36998
37687
  * `only_missing` (default true) skips fresh translations, `voice: true` (video, billed) narrates voice clips again.
36999
37688
  * 400 `nothing_to_translate`; 503 `localize_unavailable` when every locale failed.
37000
37689
  */
37001
- localize(id: string, body: CreativeLocalizeRequest, opts?: CallOpts$28): Promise<CreativeLocalizeResult>;
37690
+ localize(id: string, body: CreativeLocalizeRequest, opts?: CallOpts$30): Promise<CreativeLocalizeResult>;
37002
37691
  /**
37003
37692
  * Save `locale` as a new standalone creative (translations applied, overrides dropped, `fork_of` recorded; default
37004
37693
  * title `<title> (<locale>)`). 404 `Locale not found.`. Free (HTTP 201).
37005
37694
  */
37006
- forkLocale(id: string, locale: string, body?: CreativeLocaleForkRequest, opts?: CallOpts$28): Promise<CreativeLocaleForkResult>;
37695
+ forkLocale(id: string, locale: string, body?: CreativeLocaleForkRequest, opts?: CallOpts$30): Promise<CreativeLocaleForkResult>;
37007
37696
  /**
37008
37697
  * Create a public link: `view` (read-only preview of version `seq` or the head; `allow_remix` default false) or
37009
37698
  * `review` (comments by name, no account; `can_approve` lets the holder approve). The `token` and `url` are shown
37010
37699
  * only in this answer (HTTP 201). 400 `unknown_seq`; 409 `too_many_shares` (20 active links). Free.
37011
37700
  */
37012
- createShare(id: string, body: StudioShareCreateRequest, opts?: CallOpts$28): Promise<StudioShareCreated>;
37701
+ createShare(id: string, body: StudioShareCreateRequest, opts?: CallOpts$30): Promise<StudioShareCreated>;
37013
37702
  /** The active links (not revoked, not expired), newest first; `url` is always null. Free. */
37014
- listShares(id: string, opts?: CallOpts$28): Promise<StudioShareList>;
37703
+ listShares(id: string, opts?: CallOpts$30): Promise<StudioShareList>;
37015
37704
  /** 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>;
37705
+ revokeShare(id: string, shareId: string, opts?: CallOpts$30): Promise<void>;
37017
37706
  /**
37018
37707
  * The review state: `status` (`draft` → `in_review` → `approved` | `changes_requested`), requested / approved
37019
37708
  * version (`approved_is_head` false once the creative changed), decider and thread counts. Free.
37020
37709
  */
37021
- review(id: string, opts?: CallOpts$28): Promise<StudioReview>;
37710
+ review(id: string, opts?: CallOpts$30): Promise<StudioReview>;
37022
37711
  /** 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>;
37712
+ requestReview(id: string, opts?: CallOpts$30): Promise<StudioReview>;
37024
37713
  /** Back to `draft` (decision cleared, comments kept). Free. */
37025
- resetReview(id: string, opts?: CallOpts$28): Promise<StudioReview>;
37714
+ resetReview(id: string, opts?: CallOpts$30): Promise<StudioReview>;
37026
37715
  /** Comment threads, newest first (≤ 200), replies oldest first; `status` `open` | `resolved` | `all`. Free. */
37027
- reviewThreads(id: string, query?: StudioReviewThreadsQuery, opts?: CallOpts$28): Promise<StudioReviewThreadList>;
37716
+ reviewThreads(id: string, query?: StudioReviewThreadsQuery, opts?: CallOpts$30): Promise<StudioReviewThreadList>;
37028
37717
  /**
37029
37718
  * Start a thread as the owner, optionally anchored to `node_id` / `scene_id` / `t_ms` (checked against the head:
37030
37719
  * 400 `unknown_node` / `unknown_scene`; HTTP 201). 409 `too_many_comments`. Free.
37031
37720
  */
37032
- createReviewThread(id: string, body: StudioReviewThreadCreateRequest, opts?: CallOpts$28): Promise<StudioReviewThread>;
37721
+ createReviewThread(id: string, body: StudioReviewThreadCreateRequest, opts?: CallOpts$30): Promise<StudioReviewThread>;
37033
37722
  /** Reply in a thread as the owner (HTTP 201) — returns the whole thread. Free. */
37034
37723
  replyReviewThread(id: string, threadId: string, body: {
37035
37724
  body: string;
37036
- }, opts?: CallOpts$28): Promise<StudioReviewThread>;
37725
+ }, opts?: CallOpts$30): Promise<StudioReviewThread>;
37037
37726
  /** Resolve a thread. Free. */
37038
- resolveReviewThread(id: string, threadId: string, opts?: CallOpts$28): Promise<StudioReviewThread>;
37727
+ resolveReviewThread(id: string, threadId: string, opts?: CallOpts$30): Promise<StudioReviewThread>;
37039
37728
  /** Reopen a resolved thread. Free. */
37040
- reopenReviewThread(id: string, threadId: string, opts?: CallOpts$28): Promise<StudioReviewThread>;
37729
+ reopenReviewThread(id: string, threadId: string, opts?: CallOpts$30): Promise<StudioReviewThread>;
37041
37730
  /** 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>;
37731
+ deleteReviewComment(id: string, commentId: string, opts?: CallOpts$30): Promise<void>;
37043
37732
  /** 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>;
37733
+ frameJob(id: string, jobId: string, opts?: CallOpts$30): Promise<CreativeFrameResult>;
37045
37734
  }
37046
- //#endregion
37047
- //#region src/resources/brand-kits.d.ts
37048
37735
  export type BrandKit = Schema<'BrandKit'>;
37049
37736
  export type BrandKitTokens = Schema<'BrandKitTokens'>;
37050
37737
  export type BrandKitDtcg = Mutable<Schema<'BrandKitDtcg'>>;
@@ -37057,7 +37744,7 @@ export type BrandKitCreateRequest = Mutable<Body<'createBrandKit'>>;
37057
37744
  export type BrandKitUpdateRequest = Mutable<Body<'updateBrandKit'>>;
37058
37745
  export type BrandKitList = Reply<'listBrandKits'>;
37059
37746
  export type BrandKitDeleted = Reply<'deleteBrandKit'>;
37060
- type CallOpts$27 = {
37747
+ type CallOpts$29 = {
37061
37748
  ext?: CodaiRequestExtensions;
37062
37749
  signal?: AbortSignal;
37063
37750
  };
@@ -37069,37 +37756,35 @@ export declare class BrandKits {
37069
37756
  * (import) — exactly one. 400 `invalid_tokens` (with `details.issues`) for an invalid DTCG document, 404 when
37070
37757
  * `logo_asset_id` is not one of your ready image assets. Free.
37071
37758
  */
37072
- create(body: BrandKitCreateRequest, opts?: CallOpts$27): Promise<BrandKit>;
37759
+ create(body: BrandKitCreateRequest, opts?: CallOpts$29): Promise<BrandKit>;
37073
37760
  /**
37074
37761
  * Edit a kit: `tokens` is merged onto the current kit, `dtcg` replaces the whole document (not both),
37075
37762
  * `logo_asset_id: null` removes the logo. Creatives keep their tokens until `creatives.restyle`. Free.
37076
37763
  */
37077
- update(id: string, body: BrandKitUpdateRequest, opts?: CallOpts$27): Promise<BrandKit>;
37764
+ update(id: string, body: BrandKitUpdateRequest, opts?: CallOpts$29): Promise<BrandKit>;
37078
37765
  /** 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>;
37766
+ exportDtcg(id: string, opts?: CallOpts$29): Promise<BrandKitDtcg>;
37080
37767
  /**
37081
37768
  * Extract a brand kit from a public `https` page (`{ url }`) or from one of your logo images
37082
37769
  * (`{ logo_asset_id }`, PNG / JPEG / WebP up to 5 MB; it becomes the kit logo): palette (primary, secondary, accent,
37083
37770
  * background, text) and heading / body fonts. One bounded `codai` model call (token-metered); 400 `url_blocked` for
37084
37771
  * private hosts, 400 `unsupported_media` for a bad logo, 422 `fetch_failed` / `extract_failed`, 504 `timeout`.
37085
37772
  */
37086
- extract(body: BrandKitExtractRequest, opts?: CallOpts$27): Promise<BrandKit>;
37773
+ extract(body: BrandKitExtractRequest, opts?: CallOpts$29): Promise<BrandKit>;
37087
37774
  /** Your brand kits, newest first (`limit` 1–100, default 50). Free. */
37088
37775
  list(query?: {
37089
37776
  limit?: number;
37090
- }, opts?: CallOpts$27): Promise<BrandKitList>;
37777
+ }, opts?: CallOpts$29): Promise<BrandKitList>;
37091
37778
  /** 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>;
37779
+ retrieve(id: string, opts?: CallOpts$29): Promise<BrandKit>;
37093
37780
  /** Delete a kit (creatives keep their tokens; the logo asset stays). Free. */
37094
- delete(id: string, opts?: CallOpts$27): Promise<BrandKitDeleted>;
37781
+ delete(id: string, opts?: CallOpts$29): Promise<BrandKitDeleted>;
37095
37782
  }
37096
- //#endregion
37097
- //#region src/resources/templates.d.ts
37098
37783
  export type CreativeTemplateVar = Schema<'CreativeTemplateVar'>;
37099
37784
  export type CreativeTemplateList = Reply<'listCreativeTemplates'>;
37100
37785
  export type CreativeTemplateListQuery = QueryOf<'listCreativeTemplates'>;
37101
37786
  export type CreativeTemplateDeleted = Reply<'deleteCreativeTemplate'>;
37102
- type CallOpts$26 = {
37787
+ type CallOpts$28 = {
37103
37788
  ext?: CodaiRequestExtensions;
37104
37789
  signal?: AbortSignal;
37105
37790
  };
@@ -37112,25 +37797,23 @@ export declare class Templates {
37112
37797
  * (default). `kind` filters both. Without `doc`. Free. A starter id works anywhere a template id does
37113
37798
  * (`retrieve`, `creatives.create({ template })`, batches); starters cannot be deleted.
37114
37799
  */
37115
- list(query?: CreativeTemplateListQuery, opts?: CallOpts$26): Promise<CreativeTemplateList>;
37800
+ list(query?: CreativeTemplateListQuery, opts?: CallOpts$28): Promise<CreativeTemplateList>;
37116
37801
  /** One template with its variables and `doc`. Free. */
37117
- retrieve(id: string, opts?: CallOpts$26): Promise<Schema<'CreativeTemplate'>>;
37802
+ retrieve(id: string, opts?: CallOpts$28): Promise<Schema<'CreativeTemplate'>>;
37118
37803
  /** Delete a template (creatives made from it are not affected). Free. */
37119
- delete(id: string, opts?: CallOpts$26): Promise<CreativeTemplateDeleted>;
37804
+ delete(id: string, opts?: CallOpts$28): Promise<CreativeTemplateDeleted>;
37120
37805
  }
37121
- //#endregion
37122
- //#region src/resources/productions.d.ts
37123
37806
  export type StudioProductionCreate = Mutable<Body<'createStudioProduction'>>;
37124
37807
  export type StudioProduction = Schema<'StudioProduction'>;
37125
- type CallOpts$25 = {
37808
+ type CallOpts$27 = {
37126
37809
  ext?: CodaiRequestExtensions;
37127
37810
  signal?: AbortSignal;
37128
37811
  };
37129
- export interface ProductionCreateOptions extends CallOpts$25 {
37812
+ export interface ProductionCreateOptions extends CallOpts$27 {
37130
37813
  /** `Idempotency-Key`: a retry with the same key replays the first production instead of starting another one. */
37131
37814
  idempotencyKey?: string;
37132
37815
  }
37133
- export interface ProductionWaitOptions extends CallOpts$25 {
37816
+ export interface ProductionWaitOptions extends CallOpts$27 {
37134
37817
  /** Delay between polls (default 5000 ms). */
37135
37818
  intervalMs?: number;
37136
37819
  /** Give up after this long (default 600 000 ms = 10 min). */
@@ -37143,7 +37826,7 @@ export declare class Productions {
37143
37826
  /** `POST /v1/studio/productions` — brief → storyboard → assets → creative → queued draft render (202). */
37144
37827
  create(body: StudioProductionCreate, opts?: ProductionCreateOptions): Promise<StudioProduction>;
37145
37828
  /** `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>;
37829
+ retrieve(id: string, opts?: CallOpts$27): Promise<StudioProduction>;
37147
37830
  /**
37148
37831
  * Poll `retrieve` every `intervalMs` (default 5 s) until the production `succeeded` or `failed` (a failed one
37149
37832
  * resolves too — check `status` / `error`). Throws after `timeoutMs` (default 10 min) or when `signal` aborts.
@@ -37152,8 +37835,66 @@ export declare class Productions {
37152
37835
  /** `create` + `wait`. */
37153
37836
  run(body: StudioProductionCreate, opts?: ProductionCreateOptions & ProductionWaitOptions): Promise<StudioProduction>;
37154
37837
  }
37155
- //#endregion
37156
- //#region src/resources/media-ops.d.ts
37838
+ export type MusicRoomCreate = Mutable<Body<'createStudioMusicRoom'>>;
37839
+ export type MusicRoomChoose = Mutable<Schema<'MusicRoomChoose'>>;
37840
+ export type MusicRoomDirect = Mutable<Body<'directStudioMusicRoom'>>;
37841
+ export type MusicRoomDto = Schema<'MusicRoom'>;
37842
+ export type MusicRoomList = Schema<'MusicRoomList'>;
37843
+ export type MusicRoomQuota = Schema<'MusicRoomQuota'>;
37844
+ export type MusicRole = Schema<'MusicRole'>;
37845
+ export type MusicRoomPlanVariant = Schema<'MusicRoomPlanVariant'>;
37846
+ export type MusicRoomListQuery = QueryOf<'listStudioMusicRooms'>;
37847
+ type CallOpts$26 = {
37848
+ ext?: CodaiRequestExtensions;
37849
+ signal?: AbortSignal;
37850
+ };
37851
+ export interface MusicRoomWriteOptions extends CallOpts$26 {
37852
+ /** `Idempotency-Key`: a retry with the same key replays the first answer instead of starting the work again. */
37853
+ idempotencyKey?: string;
37854
+ }
37855
+ export interface MusicRoomWaitOptions extends CallOpts$26 {
37856
+ /** Also return when the song waits at a gate (`status: 'waiting'`). Default false. */
37857
+ untilGate?: boolean;
37858
+ /** Delay between polls (default 10 000 ms). */
37859
+ intervalMs?: number;
37860
+ /** Give up after this long (default 1 800 000 ms = 30 min). */
37861
+ timeoutMs?: number;
37862
+ }
37863
+ /** The song reached a terminal state (`succeeded` or `failed`). */
37864
+ export declare const isMusicRoomFinished: (r: Pick<MusicRoomDto, "status">) => boolean;
37865
+ export declare class MusicRoom {
37866
+ private readonly http;
37867
+ constructor(http: HttpClient);
37868
+ /** `POST /v1/studio/music-room` — start a song (202; the producer plans it, then it waits at the plan gate). */
37869
+ create(body: MusicRoomCreate, opts?: MusicRoomWriteOptions): Promise<MusicRoomDto>;
37870
+ /** `GET /v1/studio/music-room/{id}` — advances the workflow and returns the song (another account's id is a 404). */
37871
+ get(id: string, opts?: CallOpts$26): Promise<MusicRoomDto>;
37872
+ /** `GET /v1/studio/music-room` — your songs, newest first; page with `before` while `has_more`. */
37873
+ list(query?: MusicRoomListQuery, opts?: CallOpts$26): Promise<MusicRoomList>;
37874
+ /**
37875
+ * `POST /v1/studio/music-room/{id}/choose` — answer the open gate: `{ gate: 'plan', variant }`,
37876
+ * `{ gate: 'demo', approve: true }` or `{ gate: 'final', approve: true }` (409 `not_at_gate` otherwise).
37877
+ */
37878
+ choose(id: string, answer: MusicRoomChoose, opts?: CallOpts$26): Promise<MusicRoomDto>;
37879
+ /**
37880
+ * `POST /v1/studio/music-room/{id}/direct` — one player re-plays its part following `direction` and the demo is
37881
+ * re-rendered (202; only at the demo or final gate).
37882
+ */
37883
+ direct(id: string, body: MusicRoomDirect, opts?: MusicRoomWriteOptions): Promise<MusicRoomDto>;
37884
+ /** `GET /v1/studio/music-room/quota` — `{ plan, included, used, remaining, period_end }` for this calendar month. */
37885
+ quota(opts?: CallOpts$26): Promise<MusicRoomQuota>;
37886
+ /**
37887
+ * Poll `get` every `intervalMs` (default 10 s) until the song `succeeded` or `failed` (a failed one resolves too —
37888
+ * check `status` / `error`), or with `untilGate: true` until it waits at a gate. Throws after `timeoutMs`
37889
+ * (default 30 min) or when `signal` aborts.
37890
+ */
37891
+ wait(id: string, opts?: MusicRoomWaitOptions): Promise<MusicRoomDto>;
37892
+ }
37893
+ /** codai Studio namespace (`client.studio.musicRoom`). */
37894
+ export interface Studio {
37895
+ /** Music Room: a team of role agents makes a song with three approval gates. */
37896
+ readonly musicRoom: MusicRoom;
37897
+ }
37157
37898
  export type MediaOpId = Schema<'MediaOpId'>;
37158
37899
  export type MediaOp = Schema<'MediaOp'>;
37159
37900
  export type MediaOpList = Reply<'listStudioMediaOps'>;
@@ -37161,7 +37902,7 @@ export type MediaOpRequest = Mutable<Schema<'MediaOpRequest'>>;
37161
37902
  export type MediaOpQuote = Schema<'MediaOpQuote'>;
37162
37903
  export type MediaOpResult = Schema<'MediaOpResult'>;
37163
37904
  export type MediaOpJob = Schema<'MediaOpJob'>;
37164
- type CallOpts$24 = {
37905
+ type CallOpts$25 = {
37165
37906
  ext?: CodaiRequestExtensions;
37166
37907
  signal?: AbortSignal;
37167
37908
  };
@@ -37177,11 +37918,11 @@ export interface MediaOpInput {
37177
37918
  */
37178
37919
  maskPngB64?: string;
37179
37920
  }
37180
- export interface MediaOpRunOptions extends CallOpts$24 {
37921
+ export interface MediaOpRunOptions extends CallOpts$25 {
37181
37922
  /** `Idempotency-Key`: a retry with the same key replays the first answer instead of running (and billing) again. */
37182
37923
  idempotencyKey?: string;
37183
37924
  }
37184
- export interface MediaOpWaitOptions extends CallOpts$24 {
37925
+ export interface MediaOpWaitOptions extends CallOpts$25 {
37185
37926
  /** Delay between polls (default 3000 ms). */
37186
37927
  intervalMs?: number;
37187
37928
  /** Give up after this long (default 1 200 000 ms = 20 min, the server-side job timeout). */
@@ -37194,16 +37935,16 @@ export declare class MediaOps {
37194
37935
  private readonly http;
37195
37936
  constructor(http: HttpClient);
37196
37937
  /** `GET /v1/studio/media-ops` — every op with engine, mode, inputs, `available` and a list quote (free). */
37197
- list(opts?: CallOpts$24): Promise<MediaOpList>;
37938
+ list(opts?: CallOpts$25): Promise<MediaOpList>;
37198
37939
  /** `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>;
37940
+ quote(op: MediaOpId | string, input?: MediaOpInput, opts?: CallOpts$25): Promise<MediaOpQuote>;
37200
37941
  /**
37201
37942
  * `POST /v1/studio/media-ops/{op}` — sync ops resolve to a `media_op.result` with the outputs, async ops to a
37202
37943
  * `media_op.job` (`status: pending`; poll with `job` / `wait`). Use `isMediaOpJob` to tell them apart.
37203
37944
  */
37204
37945
  run(op: MediaOpId | string, input?: MediaOpInput, opts?: MediaOpRunOptions): Promise<MediaOpResult | MediaOpJob>;
37205
37946
  /** `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>;
37947
+ job(id: string, opts?: CallOpts$25): Promise<MediaOpJob>;
37207
37948
  /**
37208
37949
  * Poll `job` every `intervalMs` (default 3 s) until it is `ready` or `failed` (a failed job resolves too — check
37209
37950
  * `status` / `error`). Throws after `timeoutMs` (default 20 min) or when `signal` aborts.
@@ -37212,8 +37953,6 @@ export declare class MediaOps {
37212
37953
  /** `run`, then `wait` when the op is async. */
37213
37954
  runAndWait(op: MediaOpId | string, input?: MediaOpInput, opts?: MediaOpRunOptions & MediaOpWaitOptions): Promise<MediaOpResult | MediaOpJob>;
37214
37955
  }
37215
- //#endregion
37216
- //#region src/resources/lyrics.d.ts
37217
37956
  export type LyricsRequest = Mutable<Schema<'StudioLyricsRequest'>>;
37218
37957
  export type LyricsSectionKind = Schema<'StudioLyricsSectionKind'>;
37219
37958
  export type LyricsLine = Schema<'StudioLyricsLine'>;
@@ -37243,8 +37982,6 @@ export declare class LyricsResource {
37243
37982
  */
37244
37983
  align(body: LyricsAlignRequest, opts?: LyricsCallOptions): Promise<LyricsAlignment>;
37245
37984
  }
37246
- //#endregion
37247
- //#region src/resources/realtime.d.ts
37248
37985
  /**
37249
37986
  * `wss://…/v1/realtime` — dependency-free realtime client (live transcription and the OpenAI
37250
37987
  * Realtime protocol lanes). Not an OpenAPI operation (OpenAPI cannot describe WebSockets), so it is
@@ -37383,8 +38120,6 @@ export declare class Realtime {
37383
38120
  /** Open a realtime session. Returns immediately; `await session.ready` to wait for the socket. */
37384
38121
  connect(opts?: RealtimeConnectOptions): RealtimeSession;
37385
38122
  }
37386
- //#endregion
37387
- //#region src/resources/jam.d.ts
37388
38123
  export declare const JAM_SUBPROTOCOL = "codai-jam";
37389
38124
  /** WebSocket close codes of `/v1/studio/jam`. */
37390
38125
  export declare const JAM_CLOSE_CODES: {
@@ -37496,8 +38231,6 @@ export declare class Jam {
37496
38231
  /** Open a live jam. Returns immediately; `await session.ready` to wait for the socket. */
37497
38232
  connect(opts?: JamConnectOptions): JamSession;
37498
38233
  }
37499
- //#endregion
37500
- //#region src/resources/batches.d.ts
37501
38234
  export type StudioBatchStatus = Schema<'StudioBatchStatus'>;
37502
38235
  export type StudioBatchRowStatus = Schema<'StudioBatchRowStatus'>;
37503
38236
  export type StudioBatch = Schema<'StudioBatch'>;
@@ -37514,11 +38247,11 @@ export type StudioBatchDryRun = Schema<'StudioBatchDryRun'>;
37514
38247
  export type StudioBatchCreateRequest = Mutable<Schema<'StudioBatchCreateRequest'>>;
37515
38248
  export type StudioBatchListQuery = QueryOf<'listStudioBatches'>;
37516
38249
  export type StudioBatchGetQuery = QueryOf<'getStudioBatch'>;
37517
- type CallOpts$23 = {
38250
+ type CallOpts$24 = {
37518
38251
  ext?: CodaiRequestExtensions;
37519
38252
  signal?: AbortSignal;
37520
38253
  };
37521
- export interface BatchWaitOptions extends CallOpts$23 {
38254
+ export interface BatchWaitOptions extends CallOpts$24 {
37522
38255
  /** Delay between polls (default 3000 ms). */
37523
38256
  intervalMs?: number;
37524
38257
  /** Give up after this long (default 600 000 ms = 10 min). */
@@ -37531,32 +38264,30 @@ export declare class Batches {
37531
38264
  * Create a batch: rows are validated (invalid rows are stored as `failed`) and run in the background; poll `get`
37532
38265
  * or `wait`. 400 `invalid_rows` when every row is invalid. Free (translations and renders are billed as usual).
37533
38266
  */
37534
- create(body: StudioBatchCreateRequest, opts?: CallOpts$23): Promise<StudioBatchDetail>;
38267
+ create(body: StudioBatchCreateRequest, opts?: CallOpts$24): Promise<StudioBatchDetail>;
37535
38268
  /** 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>;
38269
+ dryRun(body: StudioBatchCreateRequest, opts?: CallOpts$24): Promise<StudioBatchDryRun>;
37537
38270
  /** Your batches, newest first (`limit` 1–50, `before` = the previous `next_before`). Free. */
37538
- list(query?: StudioBatchListQuery, opts?: CallOpts$23): Promise<StudioBatchList>;
38271
+ list(query?: StudioBatchListQuery, opts?: CallOpts$24): Promise<StudioBatchList>;
37539
38272
  /** 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>;
38273
+ get(id: string, query?: StudioBatchGetQuery, opts?: CallOpts$24): Promise<StudioBatchDetail>;
37541
38274
  /** Stop the batch; rows not started become `skipped`. 409 `not_cancellable` when already finished. Free. */
37542
- cancel(id: string, opts?: CallOpts$23): Promise<StudioBatch>;
38275
+ cancel(id: string, opts?: CallOpts$24): Promise<StudioBatch>;
37543
38276
  /** Queue the failed rows again (≤ 3 attempts each). 409 `nothing_to_retry`. Free. */
37544
- retry(id: string, opts?: CallOpts$23): Promise<StudioBatch>;
38277
+ retry(id: string, opts?: CallOpts$24): Promise<StudioBatch>;
37545
38278
  /** The original CSV plus `creative_id`, `status`, `error`, `render_url` per row (formula-safe). Free. */
37546
- exportCsv(id: string, opts?: CallOpts$23): Promise<string>;
38279
+ exportCsv(id: string, opts?: CallOpts$24): Promise<string>;
37547
38280
  /**
37548
38281
  * Start building a ZIP of the finished renders (202, `zip.status: 'building'`; unchanged when already building or
37549
38282
  * ready). Poll `get` until `zip.status` is `ready` (signed `zip.url`). 409 `no_renders`. Free.
37550
38283
  */
37551
- zip(id: string, opts?: CallOpts$23): Promise<StudioBatch>;
38284
+ zip(id: string, opts?: CallOpts$24): Promise<StudioBatch>;
37552
38285
  /**
37553
38286
  * Poll `get` every `intervalMs` (default 3 s) until the batch is `completed`, `failed` or `cancelled` and resolve
37554
38287
  * with it. Throws when it is not done within `timeoutMs` (default 10 min) or when `signal` aborts.
37555
38288
  */
37556
38289
  wait(id: string, opts?: BatchWaitOptions): Promise<StudioBatch>;
37557
38290
  }
37558
- //#endregion
37559
- //#region src/resources/shares.d.ts
37560
38291
  export type StudioShareKind = Schema<'StudioShareKind'>;
37561
38292
  export type StudioPublicShare = Schema<'StudioPublicShare'>;
37562
38293
  export type StudioPublicReview = Schema<'StudioPublicReview'>;
@@ -37576,7 +38307,7 @@ export type StudioPublicShareQuery = {
37576
38307
  format?: string;
37577
38308
  locale?: string;
37578
38309
  };
37579
- type CallOpts$22 = {
38310
+ type CallOpts$23 = {
37580
38311
  ext?: CodaiRequestExtensions;
37581
38312
  signal?: AbortSignal;
37582
38313
  };
@@ -37593,28 +38324,26 @@ export declare class Shares {
37593
38324
  * `locale` (null for images); review links add the review state and every thread. 404 for unknown, revoked or
37594
38325
  * expired links. No key needed.
37595
38326
  */
37596
- get(tokenOrUrl: string, query?: StudioPublicShareQuery, opts?: CallOpts$22): Promise<StudioPublicShare>;
38327
+ get(tokenOrUrl: string, query?: StudioPublicShareQuery, opts?: CallOpts$23): Promise<StudioPublicShare>;
37597
38328
  /**
37598
38329
  * Copy the version a `view` link shows into a new creative of yours (the owner's ready assets are copied, the
37599
38330
  * foreign brand kit dropped; HTTP 201). 404 for review links or links without remix; 413 `remix_too_large`. Free.
37600
38331
  */
37601
- remix(tokenOrUrl: string, body?: StudioRemixRequest, opts?: CallOpts$22): Promise<StudioRemixResult>;
38332
+ remix(tokenOrUrl: string, body?: StudioRemixRequest, opts?: CallOpts$23): Promise<StudioRemixResult>;
37602
38333
  /** 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>;
38334
+ comment(tokenOrUrl: string, body: StudioPublicThreadCreateRequest, opts?: CallOpts$23): Promise<StudioReviewThread>;
37604
38335
  /** 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>;
38336
+ reply(tokenOrUrl: string, threadId: string, body: StudioPublicReplyRequest, opts?: CallOpts$23): Promise<StudioReviewThread>;
37606
38337
  /** Resolve a thread through a review link (`resolved_by` = `name`). */
37607
- resolve(tokenOrUrl: string, threadId: string, body: StudioPublicNameRequest, opts?: CallOpts$22): Promise<StudioReviewThread>;
38338
+ resolve(tokenOrUrl: string, threadId: string, body: StudioPublicNameRequest, opts?: CallOpts$23): Promise<StudioReviewThread>;
37608
38339
  /** Reopen a resolved thread through a review link. */
37609
- reopen(tokenOrUrl: string, threadId: string, body: StudioPublicNameRequest, opts?: CallOpts$22): Promise<StudioReviewThread>;
38340
+ reopen(tokenOrUrl: string, threadId: string, body: StudioPublicNameRequest, opts?: CallOpts$23): Promise<StudioReviewThread>;
37610
38341
  /**
37611
38342
  * Approve or request changes (approver review links only). 403 `not_an_approver`, 409 `review_not_open`, 409
37612
38343
  * `stale` (with `head_seq`) when `seq` is not the head. Returns the new review state.
37613
38344
  */
37614
- decide(tokenOrUrl: string, body: StudioPublicDecisionRequest, opts?: CallOpts$22): Promise<StudioPublicReview>;
38345
+ decide(tokenOrUrl: string, body: StudioPublicDecisionRequest, opts?: CallOpts$23): Promise<StudioPublicReview>;
37615
38346
  }
37616
- //#endregion
37617
- //#region src/resources/voice-revocations.d.ts
37618
38347
  /** `email`, `voice_owner_name`, `details`, optional `evidence_url`. */
37619
38348
  export type StudioVoiceRevocationRequest = Mutable<Schema<'StudioVoiceRevocationRequest'>>;
37620
38349
  /** `{ id, object: 'studio.voice_revocation', status: 'open' }`. */
@@ -37628,8 +38357,30 @@ export declare class VoiceRevocations {
37628
38357
  signal?: AbortSignal;
37629
38358
  }): Promise<StudioVoiceRevocation>;
37630
38359
  }
37631
- //#endregion
37632
- //#region src/resources/vault.d.ts
38360
+ /** `{ session_id }` of a finished `purpose: singing` recording session for this voice. */
38361
+ export type StudioVoiceSingingConsentRequest = Mutable<Schema<'StudioVoiceSingingConsentRequest'>>;
38362
+ /** A custom voice (never the cloning key or any recording). */
38363
+ export type StudioVoice = Schema<'StudioVoice'>;
38364
+ /** `{ status: 'none' | 'active' | 'revoked', consented_at, revoked_at, quality: 'beta' }`. */
38365
+ export type StudioVoiceSinging = Schema<'StudioVoiceSinging'>;
38366
+ type CallOpts$22 = {
38367
+ ext?: CodaiRequestExtensions;
38368
+ signal?: AbortSignal;
38369
+ };
38370
+ export declare class Voices {
38371
+ private readonly http;
38372
+ constructor(http: HttpClient);
38373
+ /**
38374
+ * `POST /v1/studio/voices/{id}/singing-consent` — add the singing purpose from a finished singing recording session
38375
+ * (liveness-checked statement + sung sample). Returns the voice with `singing.status: 'active'`. Never retried.
38376
+ */
38377
+ addSingingConsent(id: string, body: StudioVoiceSingingConsentRequest, opts?: CallOpts$22): Promise<StudioVoice>;
38378
+ /**
38379
+ * `DELETE /v1/studio/voices/{id}/singing-consent` — revoke ONLY the singing purpose (204). The sung sample is deleted
38380
+ * at once; the voice keeps working for narration. Idempotent.
38381
+ */
38382
+ revokeSingingConsent(id: string, opts?: CallOpts$22): Promise<void>;
38383
+ }
37633
38384
  export type VaultAccount = Schema<'VaultAccount'>;
37634
38385
  export type VaultItemEnvelope = Mutable<Schema<'VaultItemEnvelope'>>;
37635
38386
  export type VaultUseDecision = Schema<'VaultUseDecision'>;
@@ -37764,8 +38515,6 @@ export declare class Vault {
37764
38515
  /** `POST /v1/vault/resolve` — codai local brokers only (cloud fallback of `codaid vault run`); 202 = approval. */
37765
38516
  resolve(body: VaultResolveRequest, opts?: CallOpts$21): Promise<VaultObject>;
37766
38517
  }
37767
- //#endregion
37768
- //#region src/resources/abuse-reports.d.ts
37769
38518
  /** `share_token`, `surface`, `category`, `explanation`, `reporter_name`, `reporter_email`, `good_faith: true`. */
37770
38519
  export type StudioAbuseReportRequest = Mutable<Schema<'StudioAbuseReportRequest'>>;
37771
38520
  /** `{ id, object: 'studio.abuse_report', status: 'open' }`. */
@@ -37779,8 +38528,6 @@ export declare class AbuseReports {
37779
38528
  signal?: AbortSignal;
37780
38529
  }): Promise<StudioAbuseReport>;
37781
38530
  }
37782
- //#endregion
37783
- //#region src/resources/provenance.d.ts
37784
38531
  /** `{ media_type, findings, codai_generated, synthid_checked: false, signature_verified: false }`. */
37785
38532
  export type ProvenanceCheckResult = Schema<'ProvenanceCheckResult'>;
37786
38533
  /** One mark: `{ kind, present, ai_marked, codai, details }`. */
@@ -37800,8 +38547,6 @@ export declare class Provenance {
37800
38547
  signal?: AbortSignal;
37801
38548
  }): Promise<ProvenanceCheckResult>;
37802
38549
  }
37803
- //#endregion
37804
- //#region src/resources/messages.d.ts
37805
38550
  export type MessageRequest = Mutable<Body<'createMessage'>>;
37806
38551
  export type MessageResponse = Reply<'createMessage'>;
37807
38552
  /** Request body as accepted by the SDK: `stream` is set by the method and `model` defaults to `codai`. */
@@ -37850,8 +38595,6 @@ export declare class Messages {
37850
38595
  create(body: MessageInput, opts?: MessageCallOptions): Promise<MessageResult>;
37851
38596
  stream(body: MessageInput, opts?: MessageCallOptions): MessageStream;
37852
38597
  }
37853
- //#endregion
37854
- //#region src/resources/models.d.ts
37855
38598
  export type Model = Schema<'CoreModel'>;
37856
38599
  export type ModelList = Reply<'listModels'>;
37857
38600
  export declare class Models {
@@ -37863,8 +38606,6 @@ export declare class Models {
37863
38606
  signal?: AbortSignal;
37864
38607
  }): Promise<Model[]>;
37865
38608
  }
37866
- //#endregion
37867
- //#region src/resources/orgs.d.ts
37868
38609
  export type Org = Schema<'OrgWithRole'>;
37869
38610
  export type OrgMember = Schema<'OrgMember'>;
37870
38611
  export type OrgRole = Schema<'OrgRole'>;
@@ -37892,8 +38633,6 @@ export declare class Orgs {
37892
38633
  /** `GET /v1/orgs` */
37893
38634
  list(opts?: CallOpts$20): Promise<Org[]>;
37894
38635
  }
37895
- //#endregion
37896
- //#region src/resources/projects.d.ts
37897
38636
  export type Project = Schema<'Project'>;
37898
38637
  export type ProjectIsolation = Schema<'ProjectIsolation'>;
37899
38638
  export type ProjectCreateBody = Mutable<Body<'createProject'>>;
@@ -37917,8 +38656,6 @@ export declare class Projects {
37917
38656
  /** `DELETE /v1/projects/{id}` — 409 `project_has_environments` until all are destroyed. */
37918
38657
  delete(projectId: string, opts?: CallOpts$19): Promise<Reply<'deleteProject'>>;
37919
38658
  }
37920
- //#endregion
37921
- //#region src/resources/referrals.d.ts
37922
38659
  export type ReferralsView = Reply<'getReferrals'>;
37923
38660
  export type ReferralRow = Schema<'ReferralRow'>;
37924
38661
  export type ReferralStats = Schema<'AccountReferral'>;
@@ -37941,8 +38678,6 @@ export declare class Referrals {
37941
38678
  setConsent(consent: boolean, opts?: CallOpts$18): Promise<AccountPatchResponse>;
37942
38679
  private patch;
37943
38680
  }
37944
- //#endregion
37945
- //#region src/generated/resolve.d.ts
37946
38681
  /**
37947
38682
  * This file was auto-generated by openapi-typescript.
37948
38683
  * Do not make direct changes to the file.
@@ -38879,8 +39614,6 @@ interface operations {
38879
39614
  };
38880
39615
  };
38881
39616
  }
38882
- //#endregion
38883
- //#region src/resources/resolve.d.ts
38884
39617
  type ResolveSchemas = components['schemas'];
38885
39618
  export type ResolveIntake = Mutable<ResolveSchemas['ResolveIntake']>;
38886
39619
  export type ResolveQuote = ResolveSchemas['ResolveQuote'];
@@ -39055,8 +39788,6 @@ export declare class Resolve {
39055
39788
  waitFor(id: string, opts?: ResolveWaitOptions): Promise<ResolveJob>;
39056
39789
  private call;
39057
39790
  }
39058
- //#endregion
39059
- //#region src/resources/responses.d.ts
39060
39791
  export type ResponsesRequest = Mutable<Body<'createResponse'>>;
39061
39792
  export type ResponsesResponse = Reply<'createResponse'>;
39062
39793
  /** Request body as accepted by the SDK: `stream` is set by the method and `model` defaults to `codai`. */
@@ -39100,8 +39831,6 @@ export declare class Responses {
39100
39831
  create(body: ResponsesInput, opts?: ResponsesCallOptions): Promise<ResponsesResult>;
39101
39832
  stream(body: ResponsesInput, opts?: ResponsesCallOptions): ResponsesStream;
39102
39833
  }
39103
- //#endregion
39104
- //#region src/resources/sessions.d.ts
39105
39834
  export type Session = Schema<'Session'>;
39106
39835
  export type SessionListItem = Schema<'SessionListItem'>;
39107
39836
  export type SessionDetail = Reply<'getSession'>;
@@ -39264,8 +39993,6 @@ export declare class Sessions {
39264
39993
  share?: string;
39265
39994
  }, opts?: CallOpts$16): AsyncGenerator<SessionStreamEvent, void, undefined>;
39266
39995
  }
39267
- //#endregion
39268
- //#region src/resources/settings.d.ts
39269
39996
  export type SettingsResponse = Reply<'getSettings'>;
39270
39997
  export type UserSettings = Schema<'UserSettings'>;
39271
39998
  export type TranscriptsSettings = Schema<'TranscriptsSettings'>;
@@ -39294,8 +40021,6 @@ export declare class Settings {
39294
40021
  */
39295
40022
  update(partial: SettingsPatch, opts?: UpdateOpts): Promise<SettingsResponse>;
39296
40023
  }
39297
- //#endregion
39298
- //#region src/resources/os-gate.d.ts
39299
40024
  export type PolicyResponse = Reply<'getPolicy'>;
39300
40025
  export type OsGateEvent = Schema<'OsGateEvent'>;
39301
40026
  export type OsGateCheckId = OsGateEvent['checks'][number];
@@ -39316,8 +40041,6 @@ export declare class OsGate {
39316
40041
  */
39317
40042
  recordEvent(event: OsGateEvent, opts?: CallOpts$14): Promise<OsGateEventAccepted>;
39318
40043
  }
39319
- //#endregion
39320
- //#region src/resources/sfx.d.ts
39321
40044
  /** One sound (always `license: 'CC0-1.0'`). */
39322
40045
  export type SfxDto = Schema<'SfxDto'>;
39323
40046
  export type SfxCategory = Schema<'SfxCategory'>;
@@ -39345,8 +40068,6 @@ export declare class Sfx {
39345
40068
  */
39346
40069
  import(sfxId: string, opts?: CallOpts$13): Promise<AssetDto>;
39347
40070
  }
39348
- //#endregion
39349
- //#region src/resources/system-one.d.ts
39350
40071
  export type SystemOneRequest = Mutable<Body<'createSystemOne'>>;
39351
40072
  export type SystemOneResponse = Reply<'createSystemOne'>;
39352
40073
  type SystemOneState = NonNullable<SystemOneRequest['state']>;
@@ -39398,8 +40119,6 @@ export declare class SystemOne {
39398
40119
  signal?: AbortSignal;
39399
40120
  }): Promise<SystemOneBatchResponse>;
39400
40121
  }
39401
- //#endregion
39402
- //#region src/resources/tasks.d.ts
39403
40122
  export type Task = Schema<'Task'>;
39404
40123
  export type TaskOutcome = Schema<'TaskOutcome'>;
39405
40124
  export type TaskStats = Reply<'getTaskStats'>;
@@ -39425,8 +40144,6 @@ export declare class Tasks {
39425
40144
  /** `POST /v1/tasks/{id}/confirm` — answer "Did codai solve it?". */
39426
40145
  confirm(id: string, body: TaskConfirmRequest, opts?: CallOpts$12): Promise<TaskConfirmResponse>;
39427
40146
  }
39428
- //#endregion
39429
- //#region src/resources/triggers.d.ts
39430
40147
  export type TriggerList = Reply<'listTriggers'>;
39431
40148
  export type TriggerCreateRequest = Mutable<Body<'createTrigger'>>;
39432
40149
  export type TriggerCreated = Reply<'createTrigger'>;
@@ -39498,8 +40215,6 @@ export declare class Notifications {
39498
40215
  /** `POST /v1/notifications/delete` — 1..200 ids; ids of other users are skipped. */
39499
40216
  deleteMany(ids: number[], opts?: CallOpts$11): Promise<NotificationsDeleted>;
39500
40217
  }
39501
- //#endregion
39502
- //#region src/resources/prompts.d.ts
39503
40218
  /** PR-07 recurrence: repeat every day/week/month (at HH:MM UTC), or reopen when the run session ends. */
39504
40219
  export type PromptRecurrence = Mutable<Schema<'PromptRecurrence'>>;
39505
40220
  /** PR-07 launch preset applied when the prompt is started. */
@@ -39584,8 +40299,6 @@ export declare class Prompts {
39584
40299
  /** `GET /v1/prompts/stream` — live `prompt` events (keepalive comments are skipped). Closed by the server after 6 h. */
39585
40300
  stream(opts?: CallOpts$10): AsyncGenerator<PromptStreamEvent, void, undefined>;
39586
40301
  }
39587
- //#endregion
39588
- //#region src/resources/schedules.d.ts
39589
40302
  export type Schedule = Schema<'Schedule'>;
39590
40303
  export type ScheduleInput = Mutable<Schema<'ScheduleInput'>>;
39591
40304
  export type ScheduleRun = Schema<'ScheduleRun'>;
@@ -39695,8 +40408,6 @@ export declare class Schedules {
39695
40408
  /** `GET /v1/schedules/stream` — live `schedule` events (keepalives skipped). */
39696
40409
  stream(opts?: CallOpts$9): AsyncGenerator<ScheduleStreamEvent, void, undefined>;
39697
40410
  }
39698
- //#endregion
39699
- //#region src/resources/lists.d.ts
39700
40411
  export type List = Schema<'List'>;
39701
40412
  export type ListItem = Schema<'ListItem'>;
39702
40413
  export type ListCreateInput = Mutable<Schema<'ListCreateInput'>>;
@@ -39757,8 +40468,6 @@ export declare class Lists {
39757
40468
  /** `POST /v1/share` — share-sheet entry point (`list_id`, `preset`, or auto → Inbox + suggestion). */
39758
40469
  share(body: ShareRequest, opts?: CallOpts$8): Promise<ShareResponse>;
39759
40470
  }
39760
- //#endregion
39761
- //#region src/resources/memory.d.ts
39762
40471
  export type MemoryItem = Schema<'MemoryItem'>;
39763
40472
  export type MemoryHit = Schema<'MemoryHit'>;
39764
40473
  export type MemoryTier = MemoryItem['tier'];
@@ -39791,8 +40500,6 @@ export declare class Memory {
39791
40500
  */
39792
40501
  deleteAll(opts?: CallOpts$7): Promise<MemoryDeletedAll>;
39793
40502
  }
39794
- //#endregion
39795
- //#region src/resources/sandboxes.d.ts
39796
40503
  export type Sandbox = Schema<'Sandbox'>;
39797
40504
  export type SandboxEgress = Mutable<Schema<'SandboxEgress'>>;
39798
40505
  export type SandboxCreateInput = Mutable<Schema<'SandboxCreate'>>;
@@ -39918,8 +40625,6 @@ export declare class Sandboxes {
39918
40625
  */
39919
40626
  run(input: SandboxRunInput, opts?: IdemOpts): Promise<SandboxExecResult>;
39920
40627
  }
39921
- //#endregion
39922
- //#region src/resources/transcripts.d.ts
39923
40628
  export type Transcript = Schema<'Transcript'>;
39924
40629
  export type TranscriptDetail = Schema<'TranscriptDetail'>;
39925
40630
  export type TranscriptStatus = Schema<'TranscriptStatus'>;
@@ -40112,8 +40817,6 @@ export declare class Transcripts {
40112
40817
  */
40113
40818
  uploadAudio(data: Uint8Array | ArrayBuffer | Blob, opts?: UploadAudioOptions): Promise<string>;
40114
40819
  }
40115
- //#endregion
40116
- //#region src/resources/tokens.d.ts
40117
40820
  /** `live` = realtime + audio in one token (a live co-host's speech-to-text and text-to-speech). */
40118
40821
  export type EphemeralScope = 'realtime' | 'audio' | 'embeddings' | 'live';
40119
40822
  export type EphemeralTokenResponse = Reply<'createEphemeralToken'>;
@@ -40135,8 +40838,6 @@ export declare class Tokens {
40135
40838
  signal?: AbortSignal;
40136
40839
  }): Promise<EphemeralToken>;
40137
40840
  }
40138
- //#endregion
40139
- //#region src/resources/tools.d.ts
40140
40841
  export type ToolSearchRequest = Mutable<Body<'toolsSearch'>>;
40141
40842
  export type ToolSearchResponse = Reply<'toolsSearch'>;
40142
40843
  export type ToolFetchRequest = Mutable<Body<'toolsFetch'>>;
@@ -40165,8 +40866,6 @@ export declare class Tools {
40165
40866
  */
40166
40867
  ground(body: ToolGroundRequest, opts?: CallOpts$4): Promise<ToolGroundResponse>;
40167
40868
  }
40168
- //#endregion
40169
- //#region src/resources/research.d.ts
40170
40869
  export type ResearchRequest = Mutable<Body<'createResearch'>>;
40171
40870
  export type ResearchJob = Schema<'ResearchJob'>;
40172
40871
  export type ResearchSource = Schema<'ResearchSource'>;
@@ -40205,8 +40904,6 @@ export declare class Research {
40205
40904
  /** `create` then `wait` until the job finishes. */
40206
40905
  run(body: ResearchRequest, opts?: ResearchCreateOptions & Omit<ResearchWaitOptions, keyof CallOpts$3>): Promise<ResearchJob>;
40207
40906
  }
40208
- //#endregion
40209
- //#region src/resources/usage-keys.d.ts
40210
40907
  export type UsageReport = Schema<'UsageReport'>;
40211
40908
  export type UsageRow = Schema<'UsageRow'>;
40212
40909
  export type UsageGroupBy = UsageReport['group_by'];
@@ -40237,8 +40934,6 @@ export declare class Keys {
40237
40934
  /** `PATCH /v1/keys/{id}` — replace the key's tags (≤ 16, each ≤ 32 chars; `[]` clears). */
40238
40935
  setTags(id: string, tags: string[], opts?: CallOpts$2): Promise<ApiKeyTags>;
40239
40936
  }
40240
- //#endregion
40241
- //#region src/resources/verify.d.ts
40242
40937
  export type EnvironmentTaskOutputSignature = Schema<'EnvironmentTaskOutputSignature'>;
40243
40938
  export type AgentOutputKey = Reply<'getAgentOutputKey'>;
40244
40939
  export type AgentOutputVerifyBody = Mutable<Body<'verifyAgentOutput'>>;
@@ -40254,8 +40949,6 @@ export declare class Verify {
40254
40949
  /** `POST /v1/verify/agent-output` — 503 `signing_disabled` when signing is off. */
40255
40950
  agentOutput(body: AgentOutputVerifyBody, opts?: CallOpts$1): Promise<AgentOutputVerifyResult>;
40256
40951
  }
40257
- //#endregion
40258
- //#region src/operations.d.ts
40259
40952
  /**
40260
40953
  * Single source of truth for OpenAPI parity: every `operationId` in
40261
40954
  * `apps/docs/openapi/en/gateway.yaml` maps to exactly one dotted method path
@@ -40272,8 +40965,6 @@ export declare const STREAMING_OPERATIONS: ReadonlySet<string>;
40272
40965
  * checked by `operations.resolve.test.ts`.
40273
40966
  */
40274
40967
  export declare const RESOLVE_OPERATION_METHODS: Record<string, string>;
40275
- //#endregion
40276
- //#region src/resources/apps.d.ts
40277
40968
  export interface CodaiAppsOptions {
40278
40969
  /** App connection token (`codai_app_…`). Required for everything except `validateKey`. */
40279
40970
  appToken?: string;
@@ -40545,8 +41236,6 @@ export declare class CodaiApps {
40545
41236
  /** @internal Perform an app-token call and unwrap `{ ok, data }`. */
40546
41237
  call<T>(path: string, init?: RequestOptions): Promise<T>;
40547
41238
  }
40548
- //#endregion
40549
- //#region src/index.d.ts
40550
41239
  export interface CodaiClientOptions {
40551
41240
  apiKey: string;
40552
41241
  /** Defaults to https://ai.codai.ro */
@@ -40631,6 +41320,11 @@ export declare class Codai {
40631
41320
  readonly templates: Templates;
40632
41321
  /** codai Studio productions (`productions.run({ brief, language: 'ro' })` → a finished promo video + editable creative). */
40633
41322
  readonly productions: Productions;
41323
+ /**
41324
+ * codai Studio namespace. `studio.musicRoom.create({ brief, language: 'ro' })` → a team of role agents makes a song;
41325
+ * answer its gates with `studio.musicRoom.choose(id, …)`, poll with `studio.musicRoom.wait(id, { untilGate: true })`.
41326
+ */
41327
+ readonly studio: Studio;
40634
41328
  /** codai Studio media operations (`mediaOps.run('audio.separate_stems', { assetIds })` → job; `mediaOps.wait(id)`). */
40635
41329
  readonly mediaOps: MediaOps;
40636
41330
  /** codai Studio lyrics (`lyrics.write({ brief, language: 'ro' })`, `lyrics.align({ creative_id, clip_id, lyrics_text })`). */
@@ -40645,6 +41339,8 @@ export declare class Codai {
40645
41339
  readonly shares: Shares;
40646
41340
  /** Public takedown tickets for voices cloned in codai Studio (`voiceRevocations.create({ email, … })`; no key needed). */
40647
41341
  readonly voiceRevocations: VoiceRevocations;
41342
+ /** codai Studio custom voices: the voice passport singing consent (`voices.addSingingConsent(id, { session_id })`). */
41343
+ readonly voices: Voices;
40648
41344
  /** Zero-knowledge credentials vault (`vault.items()`, `vault.use({ handle, mode, action })`, `vault.decide(id, …)`). */
40649
41345
  readonly vault: Vault;
40650
41346
  /** Public abuse reports about codai Studio share / review links (`abuseReports.create({ share_token, … })`; no key needed). */
@@ -40719,5 +41415,4 @@ export declare class Codai {
40719
41415
  private legacyBody;
40720
41416
  private legacyExt;
40721
41417
  }
40722
- //#endregion
40723
41418
  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 };