@spicyapi/sdk 0.4.0 → 0.5.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/README.md +183 -92
- package/contracts/openapi.yaml +374 -15
- package/dist/src/docs/index.d.ts.map +1 -1
- package/dist/src/docs/index.js +15 -21
- package/dist/src/docs/index.js.map +1 -1
- package/dist/src/generated/openapi.d.ts +370 -14
- package/dist/src/generated/openapi.d.ts.map +1 -1
- package/dist/src/generated/package-version.d.ts +1 -1
- package/dist/src/generated/package-version.js +1 -1
- package/dist/src/sdk/base64.d.ts.map +1 -1
- package/dist/src/sdk/base64.js +5 -1
- package/dist/src/sdk/base64.js.map +1 -1
- package/dist/src/sdk/client.d.ts +22 -2
- package/dist/src/sdk/client.d.ts.map +1 -1
- package/dist/src/sdk/client.js +66 -7
- package/dist/src/sdk/client.js.map +1 -1
- package/dist/src/sdk/response-body.d.ts +1 -1
- package/dist/src/sdk/response-body.d.ts.map +1 -1
- package/dist/src/sdk/response-body.js +1 -1
- package/dist/src/sdk/response-body.js.map +1 -1
- package/dist/src/sdk/types.d.ts +37 -7
- package/dist/src/sdk/types.d.ts.map +1 -1
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/docs/index.ts"],"names":[],"mappings":"AAQA,MAAM,aAAa,GAAG,6BAA6B,CAAC;AAEpD,MAAM,WAAW,GAA2C;IAC1D;QACE,IAAI,EAAE,EAAE;QACR,KAAK,EAAE,YAAY;QACnB,OAAO,EAAE,gEAAgE;QACzE,QAAQ,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,YAAY,EAAE,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/docs/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -94,7 +94,7 @@ export interface paths {
|
|
|
94
94
|
* as a Server-Sent Events stream. Each event is a `data:` line carrying one
|
|
95
95
|
* JSON chunk; the stream ends with `data: [DONE]`.
|
|
96
96
|
*
|
|
97
|
-
* The hold is settled when the stream completes. If
|
|
97
|
+
* The hold is settled when the stream completes. If generation fails
|
|
98
98
|
* before the first event, the response is a normal JSON error and the hold is
|
|
99
99
|
* released. If it fails mid-stream the connection is terminated with an
|
|
100
100
|
* `error` event and the hold is still released — a truncated answer is never
|
|
@@ -123,7 +123,7 @@ export interface paths {
|
|
|
123
123
|
/**
|
|
124
124
|
* Create a new task from a failed or expired task
|
|
125
125
|
* @description The source terminal task is never modified. Current model schema,
|
|
126
|
-
* pricing, permissions, balance, and
|
|
126
|
+
* pricing, permissions, balance, and availability are evaluated again. An
|
|
127
127
|
* optional Idempotency-Key is scoped to the source task and retry action.
|
|
128
128
|
* The source task must have been created by the same API key; unknown,
|
|
129
129
|
* cross-account, and same-account cross-key task IDs all return 404.
|
|
@@ -135,6 +135,48 @@ export interface paths {
|
|
|
135
135
|
patch?: never;
|
|
136
136
|
trace?: never;
|
|
137
137
|
};
|
|
138
|
+
"/api/v1/jobs/purge": {
|
|
139
|
+
parameters: {
|
|
140
|
+
query?: never;
|
|
141
|
+
header?: never;
|
|
142
|
+
path?: never;
|
|
143
|
+
cookie?: never;
|
|
144
|
+
};
|
|
145
|
+
get?: never;
|
|
146
|
+
put?: never;
|
|
147
|
+
/**
|
|
148
|
+
* Destroy the stored content of a finished task
|
|
149
|
+
* @description Removes the task's generated media objects, its result payload, and the
|
|
150
|
+
* stored request text including the prompt.
|
|
151
|
+
*
|
|
152
|
+
* **Billing evidence is never touched.** The ledger, the charged amount,
|
|
153
|
+
* the model identifier, the state, the timestamps and the request_id all
|
|
154
|
+
* remain, so the task stays fully auditable in billing. What is destroyed
|
|
155
|
+
* is the content, not the spend record; the response repeats this as
|
|
156
|
+
* `billingRetained`.
|
|
157
|
+
*
|
|
158
|
+
* Only a finished task can be destroyed; a task that is still queued or
|
|
159
|
+
* running returns 400. Its outputs have not landed yet, and removing half
|
|
160
|
+
* of them is worse than removing none. An accepted generation task cannot
|
|
161
|
+
* be stopped, so the only thing to do is wait for it to reach a terminal
|
|
162
|
+
* state and call this endpoint then.
|
|
163
|
+
*
|
|
164
|
+
* The call is idempotent by `taskId`: destroying an already destroyed task
|
|
165
|
+
* returns 200 with the original `purgedAt`, so a client may safely retry
|
|
166
|
+
* after a timeout. No `Idempotency-Key` is needed.
|
|
167
|
+
*
|
|
168
|
+
* Media objects are removed by a background sweep within about a minute,
|
|
169
|
+
* so `mediaDeletionPending` can be true while `contentState` is already
|
|
170
|
+
* `purged`. Deleting them inline would let one undeletable object block the
|
|
171
|
+
* whole request.
|
|
172
|
+
*/
|
|
173
|
+
post: operations["purgeTask"];
|
|
174
|
+
delete?: never;
|
|
175
|
+
options?: never;
|
|
176
|
+
head?: never;
|
|
177
|
+
patch?: never;
|
|
178
|
+
trace?: never;
|
|
179
|
+
};
|
|
138
180
|
"/api/v1/models": {
|
|
139
181
|
parameters: {
|
|
140
182
|
query?: never;
|
|
@@ -191,7 +233,7 @@ export interface paths {
|
|
|
191
233
|
* @description Returns only visible tasks created by this API key and its account,
|
|
192
234
|
* newest first by createdAt and taskId. The list contains metadata only;
|
|
193
235
|
* use recordInfo for a selected task's result. No input, output, signed
|
|
194
|
-
* media URL, or
|
|
236
|
+
* media URL, or internal processing detail is included.
|
|
195
237
|
* Dates form a UTC half-open interval [from,to), up to 92 days.
|
|
196
238
|
* Default to is tomorrow in UTC; omitted from is seven days before to.
|
|
197
239
|
* Keep all filters, including explicit from/to dates, unchanged while
|
|
@@ -272,7 +314,7 @@ export interface paths {
|
|
|
272
314
|
* @description The server generates the object key. Upload the exact declared number of
|
|
273
315
|
* bytes with PUT and copy every returned header. Supported media types are
|
|
274
316
|
* JPEG, PNG, WebP and GIF images (10 MiB), or MP4/WebM video and
|
|
275
|
-
* MP3/WAV audio (
|
|
317
|
+
* MP3/WAV audio (90 MiB, at most 600 seconds). Audio/video commit verifies
|
|
276
318
|
* format and measurable duration; it does not inspect adult content. After PUT,
|
|
277
319
|
* call the file commit endpoint and use its spicy:// URI in task input.
|
|
278
320
|
*/
|
|
@@ -340,8 +382,8 @@ export interface paths {
|
|
|
340
382
|
* List callable models in the OpenAI `model` list shape
|
|
341
383
|
* @description Returns every model that can be called right now. `id` is the SpicyAPI
|
|
342
384
|
* model identifier accepted by every `/v1` and `/api/v1` operation;
|
|
343
|
-
* `owned_by` is the model publisher (for example a research lab)
|
|
344
|
-
*
|
|
385
|
+
* `owned_by` is the model publisher (for example a research lab).
|
|
386
|
+
* Pricing is not included; use `/api/v1/models`.
|
|
345
387
|
*/
|
|
346
388
|
get: operations["listOpenAIModels"];
|
|
347
389
|
put?: never;
|
|
@@ -443,6 +485,61 @@ export interface paths {
|
|
|
443
485
|
patch?: never;
|
|
444
486
|
trace?: never;
|
|
445
487
|
};
|
|
488
|
+
"/v1beta/models/{model}:generateContent": {
|
|
489
|
+
parameters: {
|
|
490
|
+
query?: never;
|
|
491
|
+
header?: never;
|
|
492
|
+
path?: never;
|
|
493
|
+
cookie?: never;
|
|
494
|
+
};
|
|
495
|
+
get?: never;
|
|
496
|
+
put?: never;
|
|
497
|
+
/**
|
|
498
|
+
* Google Gemini generateContent on a SpicyAPI text model
|
|
499
|
+
* @description Accepts a Google Gemini `generateContent` request (`contents` with
|
|
500
|
+
* text / inlineData / functionCall / functionResponse parts,
|
|
501
|
+
* `systemInstruction`, `tools.functionDeclarations`, `toolConfig`,
|
|
502
|
+
* `generationConfig` such as `temperature`, `topP`, `maxOutputTokens`,
|
|
503
|
+
* `stopSequences`, `responseMimeType`, `responseSchema`,
|
|
504
|
+
* `thinkingConfig`). `{model}` is a SpicyAPI text model identifier from
|
|
505
|
+
* `/v1/models` and may contain a slash (for example
|
|
506
|
+
* `google/gemini-3-flash-preview`). Validation, pricing and availability are
|
|
507
|
+
* identical to `/v1/chat/completions`. The response is one
|
|
508
|
+
* `GenerateContentResponse`. Errors use the Google
|
|
509
|
+
* `{error:{code,message,status}}` shape.
|
|
510
|
+
*/
|
|
511
|
+
post: operations["geminiGenerateContent"];
|
|
512
|
+
delete?: never;
|
|
513
|
+
options?: never;
|
|
514
|
+
head?: never;
|
|
515
|
+
patch?: never;
|
|
516
|
+
trace?: never;
|
|
517
|
+
};
|
|
518
|
+
"/v1beta/models/{model}:streamGenerateContent": {
|
|
519
|
+
parameters: {
|
|
520
|
+
query?: never;
|
|
521
|
+
header?: never;
|
|
522
|
+
path?: never;
|
|
523
|
+
cookie?: never;
|
|
524
|
+
};
|
|
525
|
+
get?: never;
|
|
526
|
+
put?: never;
|
|
527
|
+
/**
|
|
528
|
+
* Google Gemini streamGenerateContent on a SpicyAPI text model
|
|
529
|
+
* @description Same request as `generateContent`. With `?alt=sse` (what the Google
|
|
530
|
+
* GenAI SDKs send) the response is a server-sent event stream where each
|
|
531
|
+
* `data:` line is one `GenerateContentResponse`; the final one carries
|
|
532
|
+
* `finishReason` and `usageMetadata`. There is no `[DONE]` sentinel.
|
|
533
|
+
* Without `alt=sse` the response is a JSON array of
|
|
534
|
+
* `GenerateContentResponse` objects written progressively.
|
|
535
|
+
*/
|
|
536
|
+
post: operations["geminiStreamGenerateContent"];
|
|
537
|
+
delete?: never;
|
|
538
|
+
options?: never;
|
|
539
|
+
head?: never;
|
|
540
|
+
patch?: never;
|
|
541
|
+
trace?: never;
|
|
542
|
+
};
|
|
446
543
|
"/v1/videos": {
|
|
447
544
|
parameters: {
|
|
448
545
|
query?: never;
|
|
@@ -577,6 +674,7 @@ export interface components {
|
|
|
577
674
|
ErrorEnvelope: components["schemas"]["EnvelopeBase"] & {
|
|
578
675
|
/** @enum {integer} */
|
|
579
676
|
code?: 400 | 401 | 40201 | 40202 | 403 | 40301 | 40302 | 40303 | 404 | 409 | 40901 | 413 | 429 | 500 | 50301;
|
|
677
|
+
/** @description Human-readable explanation, English unless `Accept-Language` or the account's API error language selects another supported language. Never parse it; branch on `code`. */
|
|
580
678
|
msg?: string;
|
|
581
679
|
};
|
|
582
680
|
CreateTaskRequest: {
|
|
@@ -641,6 +739,38 @@ export interface components {
|
|
|
641
739
|
msg?: "success";
|
|
642
740
|
data: components["schemas"]["RetryTaskResponse"];
|
|
643
741
|
};
|
|
742
|
+
TaskPurgeResponse: {
|
|
743
|
+
taskId: string;
|
|
744
|
+
/**
|
|
745
|
+
* @description `purged` after a successful destroy, and on any idempotent repeat. Still `present` means this call removed nothing and may be retried later; the reason is deliberately not disclosed.
|
|
746
|
+
* @enum {string}
|
|
747
|
+
*/
|
|
748
|
+
contentState: "present" | "expired" | "purged";
|
|
749
|
+
/**
|
|
750
|
+
* Format: date-time
|
|
751
|
+
* @description Time of the **first** destroy, not of this call.
|
|
752
|
+
*/
|
|
753
|
+
purgedAt?: string;
|
|
754
|
+
/**
|
|
755
|
+
* @description Omitted while `contentState` is `present`.
|
|
756
|
+
* @enum {string}
|
|
757
|
+
*/
|
|
758
|
+
contentRemovedBy?: "user" | "system";
|
|
759
|
+
/**
|
|
760
|
+
* @description Always true. Destroying content never changes the ledger, the charged amount, or any other billing fact. It is stated explicitly because it is the one thing a caller is likely to get wrong about an endpoint named "purge".
|
|
761
|
+
* @constant
|
|
762
|
+
*/
|
|
763
|
+
billingRetained: true;
|
|
764
|
+
/** @description True while the background sweep has not finished removing the stored media objects. */
|
|
765
|
+
mediaDeletionPending: boolean;
|
|
766
|
+
};
|
|
767
|
+
TaskPurgeEnvelope: components["schemas"]["EnvelopeBase"] & {
|
|
768
|
+
/** @constant */
|
|
769
|
+
code?: 200;
|
|
770
|
+
/** @constant */
|
|
771
|
+
msg?: "success";
|
|
772
|
+
data: components["schemas"]["TaskPurgeResponse"];
|
|
773
|
+
};
|
|
644
774
|
CreateTaskEnvelope: components["schemas"]["EnvelopeBase"] & {
|
|
645
775
|
/** @constant */
|
|
646
776
|
code?: 200;
|
|
@@ -693,9 +823,12 @@ export interface components {
|
|
|
693
823
|
[key: string]: unknown;
|
|
694
824
|
};
|
|
695
825
|
output?: components["schemas"]["TaskOutput"];
|
|
696
|
-
/**
|
|
697
|
-
|
|
698
|
-
|
|
826
|
+
/**
|
|
827
|
+
* @description Stable SpicyAPI failure identifier from a closed set; never an internal diagnostic code. The set is closed: any other value a client sees should be handled as `upstream_failed`.
|
|
828
|
+
* @enum {string}
|
|
829
|
+
*/
|
|
830
|
+
errorCode?: "invalid_request" | "unsupported_combination" | "content_rejected" | "rate_limited" | "upstream_unavailable" | "generation_failed" | "timeout" | "invalid_asset" | "upstream_failed";
|
|
831
|
+
/** @description Safe normalized explanation without internal service names, hosts, task IDs, or raw errors. Follows the same language selection as `msg`; `errorCode` never changes. */
|
|
699
832
|
errorMessage?: string;
|
|
700
833
|
cost: components["schemas"]["USDString"];
|
|
701
834
|
/** @description When false, `cost` is the held estimate. On success the final charge is capped at that hold; unused funds are released. Failed or expired tasks release the hold in full. */
|
|
@@ -709,6 +842,40 @@ export interface components {
|
|
|
709
842
|
deadlineAt?: string;
|
|
710
843
|
/** Format: date-time */
|
|
711
844
|
completedAt?: string;
|
|
845
|
+
/**
|
|
846
|
+
* @description Whether the task content is still stored, and why it is not. `expired` means the retention policy removed it; `purged` means the account owner destroyed it with `purgeTask`. The two are deliberately distinct: telling a customer their own deletion was an expiry reads as the platform losing their data.
|
|
847
|
+
* @enum {string}
|
|
848
|
+
*/
|
|
849
|
+
contentState?: "present" | "expired" | "purged";
|
|
850
|
+
/**
|
|
851
|
+
* @description Present only once content has been removed. Omitted while `contentState` is `present`.
|
|
852
|
+
* @enum {string}
|
|
853
|
+
*/
|
|
854
|
+
contentRemovedBy?: "user" | "system";
|
|
855
|
+
/**
|
|
856
|
+
* Format: date-time
|
|
857
|
+
* @description Present only for a task destroyed with `purgeTask`. Expiry does not set it.
|
|
858
|
+
*/
|
|
859
|
+
purgedAt?: string;
|
|
860
|
+
retention?: components["schemas"]["TaskRetention"];
|
|
861
|
+
};
|
|
862
|
+
/** @description When this task's content is scheduled to be removed, and which layer decided it. Omitted for tasks created before per-task retention existed; those follow the platform maximum. */
|
|
863
|
+
TaskRetention: {
|
|
864
|
+
/**
|
|
865
|
+
* Format: date-time
|
|
866
|
+
* @description When the generated media objects and the result payload are removed. Before the task finishes this is measured from acceptance; when the task reaches a terminal state it is re-based on the completion time using the same window, so it only ever moves later, never earlier.
|
|
867
|
+
*/
|
|
868
|
+
outputsExpireAt: string;
|
|
869
|
+
/**
|
|
870
|
+
* Format: date-time
|
|
871
|
+
* @description When the stored request text is erased. The task row, its state, amounts and request_id remain.
|
|
872
|
+
*/
|
|
873
|
+
promptsExpireAt: string;
|
|
874
|
+
/**
|
|
875
|
+
* @description Which layer actually constrained the value: the per-request `X-Spicy-Retention` header, the account setting, or the platform maximum. A request that sends the header and still sees `account` has an account setting that is already shorter than it asked for.
|
|
876
|
+
* @enum {string}
|
|
877
|
+
*/
|
|
878
|
+
source: "header" | "account" | "platform";
|
|
712
879
|
};
|
|
713
880
|
TaskRecordEnvelope: components["schemas"]["EnvelopeBase"] & {
|
|
714
881
|
/** @constant */
|
|
@@ -838,16 +1005,16 @@ export interface components {
|
|
|
838
1005
|
/** @description Stable product-family identifier; endpoint variants are listed in `tasks` and expressed by `inputSchema`. */
|
|
839
1006
|
family: string;
|
|
840
1007
|
displayName: string;
|
|
841
|
-
/** @description Model creator/author identifier
|
|
1008
|
+
/** @description Model creator/author identifier, such as the research lab that built the model. */
|
|
842
1009
|
provider: string;
|
|
843
1010
|
/** @enum {string} */
|
|
844
1011
|
modality: "image" | "video" | "audio" | "text";
|
|
845
1012
|
tasks: string[];
|
|
846
1013
|
async: boolean;
|
|
847
|
-
/** @description Informational model-creator capability metadata only. It does not participate in
|
|
1014
|
+
/** @description Informational model-creator capability metadata only. It does not participate in authorization, availability decisions, or request rejection. */
|
|
848
1015
|
mature: boolean;
|
|
849
1016
|
/**
|
|
850
|
-
* @description Informational model-creator policy metadata only. It does not participate in
|
|
1017
|
+
* @description Informational model-creator policy metadata only. It does not participate in authorization, availability decisions, or request rejection.
|
|
851
1018
|
* @enum {string}
|
|
852
1019
|
*/
|
|
853
1020
|
policyTier: "unrestricted" | "borderline" | "unspecified";
|
|
@@ -905,7 +1072,7 @@ export interface components {
|
|
|
905
1072
|
UploadURLRequest: {
|
|
906
1073
|
/** @enum {string} */
|
|
907
1074
|
contentType: "image/jpeg" | "image/png" | "image/webp" | "image/gif" | "video/mp4" | "video/webm" | "audio/mpeg" | "audio/wav";
|
|
908
|
-
/** @description Images are limited to 10 MiB; supported audio/video to
|
|
1075
|
+
/** @description Images are limited to 10 MiB; supported audio/video to 90 MiB. */
|
|
909
1076
|
bytes: number;
|
|
910
1077
|
};
|
|
911
1078
|
UploadURLResponse: {
|
|
@@ -1128,6 +1295,53 @@ export interface components {
|
|
|
1128
1295
|
total_tokens?: number;
|
|
1129
1296
|
};
|
|
1130
1297
|
};
|
|
1298
|
+
/** @description Google Gemini `generateContent` request. Which generation parameters a model accepts comes from that model's `inputSchema` in `/v1/models` and the catalog; unsupported parameters return 400. */
|
|
1299
|
+
GeminiGenerateContentRequest: {
|
|
1300
|
+
contents: {
|
|
1301
|
+
/** @enum {string} */
|
|
1302
|
+
role?: "user" | "model";
|
|
1303
|
+
parts?: Record<string, never>[];
|
|
1304
|
+
}[];
|
|
1305
|
+
systemInstruction?: Record<string, never>;
|
|
1306
|
+
tools?: Record<string, never>[];
|
|
1307
|
+
toolConfig?: Record<string, never>;
|
|
1308
|
+
generationConfig?: {
|
|
1309
|
+
temperature?: number;
|
|
1310
|
+
topP?: number;
|
|
1311
|
+
maxOutputTokens?: number;
|
|
1312
|
+
stopSequences?: string[];
|
|
1313
|
+
responseMimeType?: string;
|
|
1314
|
+
responseSchema?: Record<string, never>;
|
|
1315
|
+
thinkingConfig?: Record<string, never>;
|
|
1316
|
+
};
|
|
1317
|
+
};
|
|
1318
|
+
GeminiGenerateContentResponse: {
|
|
1319
|
+
candidates?: {
|
|
1320
|
+
index?: number;
|
|
1321
|
+
content?: {
|
|
1322
|
+
role?: string;
|
|
1323
|
+
parts?: Record<string, never>[];
|
|
1324
|
+
};
|
|
1325
|
+
finishReason?: string;
|
|
1326
|
+
}[];
|
|
1327
|
+
usageMetadata?: {
|
|
1328
|
+
promptTokenCount?: number;
|
|
1329
|
+
candidatesTokenCount?: number;
|
|
1330
|
+
totalTokenCount?: number;
|
|
1331
|
+
cachedContentTokenCount?: number;
|
|
1332
|
+
thoughtsTokenCount?: number;
|
|
1333
|
+
};
|
|
1334
|
+
/** @description The SpicyAPI model identifier. */
|
|
1335
|
+
modelVersion?: string;
|
|
1336
|
+
responseId?: string;
|
|
1337
|
+
};
|
|
1338
|
+
GeminiErrorBody: {
|
|
1339
|
+
error: {
|
|
1340
|
+
code: number;
|
|
1341
|
+
message: string;
|
|
1342
|
+
status: string;
|
|
1343
|
+
};
|
|
1344
|
+
};
|
|
1131
1345
|
AnthropicMessageRequest: {
|
|
1132
1346
|
model: string;
|
|
1133
1347
|
system?: string | Record<string, never>[];
|
|
@@ -1311,10 +1525,25 @@ export interface components {
|
|
|
1311
1525
|
"application/json": components["schemas"]["AnthropicErrorBody"];
|
|
1312
1526
|
};
|
|
1313
1527
|
};
|
|
1528
|
+
/** @description Error in the Google `{error:{code,message,status}}` shape. `status` is the google.rpc code name (for example `INVALID_ARGUMENT`, `UNAUTHENTICATED`, `RESOURCE_EXHAUSTED`). */
|
|
1529
|
+
GeminiError: {
|
|
1530
|
+
headers: {
|
|
1531
|
+
[name: string]: unknown;
|
|
1532
|
+
};
|
|
1533
|
+
content: {
|
|
1534
|
+
"application/json": components["schemas"]["GeminiErrorBody"];
|
|
1535
|
+
};
|
|
1536
|
+
};
|
|
1314
1537
|
};
|
|
1315
1538
|
parameters: {
|
|
1316
1539
|
/** @description Stable key for one logical task submission; retained for 24 hours per account and bound to both the submitting API key and normalized request fingerprint. A sibling key receives 409 without the original task ID. */
|
|
1317
1540
|
IdempotencyKey: string;
|
|
1541
|
+
/**
|
|
1542
|
+
* @description Retention for this one task, in whole seconds. It applies to both the generated outputs and the stored request text. The effective value is always `min(header, account setting, platform maximum)`: a request can only shorten retention, never extend it.
|
|
1543
|
+
* `0` is valid and means the outputs are removed as soon as the task reaches a terminal state. Values that cannot be applied never fail the request: a negative number is clamped to `0`, a value above the ceiling is clamped to the ceiling, and a value that is not a decimal integer is ignored so the account setting applies. The effective result is always reported back in `retention` on the task record.
|
|
1544
|
+
* Accepted by `createTask` and `stream`. `retry` inherits the source task's effective value and ignores this header, so one task family never ends up with two different expiry times. `quote` does not accept it because it does not create a task.
|
|
1545
|
+
*/
|
|
1546
|
+
SpicyRetention: string;
|
|
1318
1547
|
};
|
|
1319
1548
|
requestBodies: never;
|
|
1320
1549
|
headers: {
|
|
@@ -1367,6 +1596,12 @@ export interface operations {
|
|
|
1367
1596
|
header?: {
|
|
1368
1597
|
/** @description Stable key for one logical task submission; retained for 24 hours per account and bound to both the submitting API key and normalized request fingerprint. A sibling key receives 409 without the original task ID. */
|
|
1369
1598
|
"Idempotency-Key"?: components["parameters"]["IdempotencyKey"];
|
|
1599
|
+
/**
|
|
1600
|
+
* @description Retention for this one task, in whole seconds. It applies to both the generated outputs and the stored request text. The effective value is always `min(header, account setting, platform maximum)`: a request can only shorten retention, never extend it.
|
|
1601
|
+
* `0` is valid and means the outputs are removed as soon as the task reaches a terminal state. Values that cannot be applied never fail the request: a negative number is clamped to `0`, a value above the ceiling is clamped to the ceiling, and a value that is not a decimal integer is ignored so the account setting applies. The effective result is always reported back in `retention` on the task record.
|
|
1602
|
+
* Accepted by `createTask` and `stream`. `retry` inherits the source task's effective value and ignores this header, so one task family never ends up with two different expiry times. `quote` does not accept it because it does not create a task.
|
|
1603
|
+
*/
|
|
1604
|
+
"X-Spicy-Retention"?: components["parameters"]["SpicyRetention"];
|
|
1370
1605
|
};
|
|
1371
1606
|
path?: never;
|
|
1372
1607
|
cookie?: never;
|
|
@@ -1449,6 +1684,12 @@ export interface operations {
|
|
|
1449
1684
|
header?: {
|
|
1450
1685
|
/** @description Stable key for one logical task submission; retained for 24 hours per account and bound to both the submitting API key and normalized request fingerprint. A sibling key receives 409 without the original task ID. */
|
|
1451
1686
|
"Idempotency-Key"?: components["parameters"]["IdempotencyKey"];
|
|
1687
|
+
/**
|
|
1688
|
+
* @description Retention for this one task, in whole seconds. It applies to both the generated outputs and the stored request text. The effective value is always `min(header, account setting, platform maximum)`: a request can only shorten retention, never extend it.
|
|
1689
|
+
* `0` is valid and means the outputs are removed as soon as the task reaches a terminal state. Values that cannot be applied never fail the request: a negative number is clamped to `0`, a value above the ceiling is clamped to the ceiling, and a value that is not a decimal integer is ignored so the account setting applies. The effective result is always reported back in `retention` on the task record.
|
|
1690
|
+
* Accepted by `createTask` and `stream`. `retry` inherits the source task's effective value and ignores this header, so one task family never ends up with two different expiry times. `quote` does not accept it because it does not create a task.
|
|
1691
|
+
*/
|
|
1692
|
+
"X-Spicy-Retention"?: components["parameters"]["SpicyRetention"];
|
|
1452
1693
|
};
|
|
1453
1694
|
path?: never;
|
|
1454
1695
|
cookie?: never;
|
|
@@ -1516,11 +1757,45 @@ export interface operations {
|
|
|
1516
1757
|
503: components["responses"]["Unavailable"];
|
|
1517
1758
|
};
|
|
1518
1759
|
};
|
|
1760
|
+
purgeTask: {
|
|
1761
|
+
parameters: {
|
|
1762
|
+
query?: never;
|
|
1763
|
+
header?: {
|
|
1764
|
+
/** @description Stable key for one logical task submission; retained for 24 hours per account and bound to both the submitting API key and normalized request fingerprint. A sibling key receives 409 without the original task ID. */
|
|
1765
|
+
"Idempotency-Key"?: components["parameters"]["IdempotencyKey"];
|
|
1766
|
+
};
|
|
1767
|
+
path?: never;
|
|
1768
|
+
cookie?: never;
|
|
1769
|
+
};
|
|
1770
|
+
requestBody: {
|
|
1771
|
+
content: {
|
|
1772
|
+
"application/json": components["schemas"]["TaskActionRequest"];
|
|
1773
|
+
};
|
|
1774
|
+
};
|
|
1775
|
+
responses: {
|
|
1776
|
+
/** @description Content destroyed, or already destroyed by an earlier call. */
|
|
1777
|
+
200: {
|
|
1778
|
+
headers: {
|
|
1779
|
+
"Cache-Control"?: "no-store";
|
|
1780
|
+
[name: string]: unknown;
|
|
1781
|
+
};
|
|
1782
|
+
content: {
|
|
1783
|
+
"application/json": components["schemas"]["TaskPurgeEnvelope"];
|
|
1784
|
+
};
|
|
1785
|
+
};
|
|
1786
|
+
400: components["responses"]["BadRequest"];
|
|
1787
|
+
401: components["responses"]["Unauthorized"];
|
|
1788
|
+
403: components["responses"]["Forbidden"];
|
|
1789
|
+
404: components["responses"]["NotFound"];
|
|
1790
|
+
429: components["responses"]["RateLimited"];
|
|
1791
|
+
500: components["responses"]["ServerError"];
|
|
1792
|
+
};
|
|
1793
|
+
};
|
|
1519
1794
|
listModels: {
|
|
1520
1795
|
parameters: {
|
|
1521
1796
|
query?: {
|
|
1522
1797
|
modality?: "image" | "video" | "audio" | "text";
|
|
1523
|
-
/** @description Exact model creator/author identifier
|
|
1798
|
+
/** @description Exact model creator/author identifier, such as the research lab that built the model. */
|
|
1524
1799
|
provider?: string;
|
|
1525
1800
|
/** @description Exact supported task, for example `text-to-image`. */
|
|
1526
1801
|
task?: string;
|
|
@@ -1908,6 +2183,87 @@ export interface operations {
|
|
|
1908
2183
|
503: components["responses"]["AnthropicError"];
|
|
1909
2184
|
};
|
|
1910
2185
|
};
|
|
2186
|
+
geminiGenerateContent: {
|
|
2187
|
+
parameters: {
|
|
2188
|
+
query?: never;
|
|
2189
|
+
header?: {
|
|
2190
|
+
/** @description Stable key for one logical task submission; retained for 24 hours per account and bound to both the submitting API key and normalized request fingerprint. A sibling key receives 409 without the original task ID. */
|
|
2191
|
+
"Idempotency-Key"?: components["parameters"]["IdempotencyKey"];
|
|
2192
|
+
};
|
|
2193
|
+
path: {
|
|
2194
|
+
model: string;
|
|
2195
|
+
};
|
|
2196
|
+
cookie?: never;
|
|
2197
|
+
};
|
|
2198
|
+
requestBody: {
|
|
2199
|
+
content: {
|
|
2200
|
+
"application/json": components["schemas"]["GeminiGenerateContentRequest"];
|
|
2201
|
+
};
|
|
2202
|
+
};
|
|
2203
|
+
responses: {
|
|
2204
|
+
/** @description One `GenerateContentResponse`. */
|
|
2205
|
+
200: {
|
|
2206
|
+
headers: {
|
|
2207
|
+
[name: string]: unknown;
|
|
2208
|
+
};
|
|
2209
|
+
content: {
|
|
2210
|
+
"application/json": components["schemas"]["GeminiGenerateContentResponse"];
|
|
2211
|
+
};
|
|
2212
|
+
};
|
|
2213
|
+
400: components["responses"]["GeminiError"];
|
|
2214
|
+
401: components["responses"]["GeminiError"];
|
|
2215
|
+
402: components["responses"]["GeminiError"];
|
|
2216
|
+
403: components["responses"]["GeminiError"];
|
|
2217
|
+
404: components["responses"]["GeminiError"];
|
|
2218
|
+
409: components["responses"]["GeminiError"];
|
|
2219
|
+
413: components["responses"]["GeminiError"];
|
|
2220
|
+
429: components["responses"]["GeminiError"];
|
|
2221
|
+
500: components["responses"]["GeminiError"];
|
|
2222
|
+
503: components["responses"]["GeminiError"];
|
|
2223
|
+
};
|
|
2224
|
+
};
|
|
2225
|
+
geminiStreamGenerateContent: {
|
|
2226
|
+
parameters: {
|
|
2227
|
+
query?: {
|
|
2228
|
+
alt?: "sse";
|
|
2229
|
+
};
|
|
2230
|
+
header?: {
|
|
2231
|
+
/** @description Stable key for one logical task submission; retained for 24 hours per account and bound to both the submitting API key and normalized request fingerprint. A sibling key receives 409 without the original task ID. */
|
|
2232
|
+
"Idempotency-Key"?: components["parameters"]["IdempotencyKey"];
|
|
2233
|
+
};
|
|
2234
|
+
path: {
|
|
2235
|
+
model: string;
|
|
2236
|
+
};
|
|
2237
|
+
cookie?: never;
|
|
2238
|
+
};
|
|
2239
|
+
requestBody: {
|
|
2240
|
+
content: {
|
|
2241
|
+
"application/json": components["schemas"]["GeminiGenerateContentRequest"];
|
|
2242
|
+
};
|
|
2243
|
+
};
|
|
2244
|
+
responses: {
|
|
2245
|
+
/** @description An SSE stream (`alt=sse`) or a JSON array of `GenerateContentResponse`. */
|
|
2246
|
+
200: {
|
|
2247
|
+
headers: {
|
|
2248
|
+
[name: string]: unknown;
|
|
2249
|
+
};
|
|
2250
|
+
content: {
|
|
2251
|
+
"text/event-stream": string;
|
|
2252
|
+
"application/json": components["schemas"]["GeminiGenerateContentResponse"][];
|
|
2253
|
+
};
|
|
2254
|
+
};
|
|
2255
|
+
400: components["responses"]["GeminiError"];
|
|
2256
|
+
401: components["responses"]["GeminiError"];
|
|
2257
|
+
402: components["responses"]["GeminiError"];
|
|
2258
|
+
403: components["responses"]["GeminiError"];
|
|
2259
|
+
404: components["responses"]["GeminiError"];
|
|
2260
|
+
409: components["responses"]["GeminiError"];
|
|
2261
|
+
413: components["responses"]["GeminiError"];
|
|
2262
|
+
429: components["responses"]["GeminiError"];
|
|
2263
|
+
500: components["responses"]["GeminiError"];
|
|
2264
|
+
503: components["responses"]["GeminiError"];
|
|
2265
|
+
};
|
|
2266
|
+
};
|
|
1911
2267
|
createVideo: {
|
|
1912
2268
|
parameters: {
|
|
1913
2269
|
query?: never;
|