@modellink/data 0.1.1 → 0.1.3

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/schema.json ADDED
@@ -0,0 +1,2332 @@
1
+ {
2
+ "$schema": "http://json-schema.org/draft-07/schema#",
3
+ "$id": "https://goroutined.github.io/modellink/schema.json",
4
+ "title": "ModelLink Public Data Schema",
5
+ "description": "Public JSON contract for ModelLink catalog, provider, model and package manifest data.",
6
+ "x-modellink-schema-version": 1,
7
+ "$ref": "#/definitions/Catalog",
8
+ "definitions": {
9
+ "JsonValue": {
10
+ "anyOf": [
11
+ {
12
+ "type": "string"
13
+ },
14
+ {
15
+ "type": "number"
16
+ },
17
+ {
18
+ "type": "boolean"
19
+ },
20
+ {
21
+ "type": "null"
22
+ },
23
+ {
24
+ "type": "array",
25
+ "items": {
26
+ "$ref": "#/definitions/JsonValue"
27
+ }
28
+ },
29
+ {
30
+ "type": "object",
31
+ "additionalProperties": {
32
+ "$ref": "#/definitions/JsonValue"
33
+ }
34
+ }
35
+ ]
36
+ },
37
+ "ModelMetadata": {
38
+ "type": "object",
39
+ "properties": {
40
+ "id": {
41
+ "type": "string"
42
+ },
43
+ "name": {
44
+ "type": "string",
45
+ "minLength": 1
46
+ },
47
+ "description": {
48
+ "type": "string",
49
+ "minLength": 1
50
+ },
51
+ "family": {
52
+ "type": "string",
53
+ "enum": [
54
+ "trinity",
55
+ "trinity-mini",
56
+ "gpt",
57
+ "gpt-codex",
58
+ "gpt-codex-spark",
59
+ "gpt-codex-mini",
60
+ "gpt-pro",
61
+ "gpt-mini",
62
+ "gpt-nano",
63
+ "gpt-sol",
64
+ "gpt-terra",
65
+ "gpt-luna",
66
+ "gpt-oss",
67
+ "gpt-image",
68
+ "o",
69
+ "o-mini",
70
+ "o-pro",
71
+ "claude",
72
+ "claude-haiku",
73
+ "claude-sonnet",
74
+ "claude-opus",
75
+ "claude-fable",
76
+ "gemini",
77
+ "gemini-pro",
78
+ "gemini-flash",
79
+ "gemini-flash-lite",
80
+ "gemini-embedding",
81
+ "glm",
82
+ "glmv",
83
+ "glm-air",
84
+ "glm-flash",
85
+ "glm-free",
86
+ "glm-z",
87
+ "llama",
88
+ "muse",
89
+ "qwen",
90
+ "qwen3.5",
91
+ "qwen3.6",
92
+ "qwen3.7-plus",
93
+ "qwen3.7-max",
94
+ "qwen3.7-flash",
95
+ "qwen3.8-max",
96
+ "qwen-free",
97
+ "ornith",
98
+ "deepseek",
99
+ "deepseek-thinking",
100
+ "deepseek-flash",
101
+ "deepseek-flash-free",
102
+ "deepseek-flash-think",
103
+ "doubao-seed",
104
+ "phi",
105
+ "kimi",
106
+ "kimi-k2",
107
+ "kimi-k3",
108
+ "kimi-free",
109
+ "kimi-thinking",
110
+ "laguna",
111
+ "laguna-s",
112
+ "mistral",
113
+ "mistral-large",
114
+ "mistral-medium",
115
+ "mistral-small",
116
+ "mistral-nemo",
117
+ "ministral",
118
+ "codestral",
119
+ "devstral",
120
+ "pixtral",
121
+ "mixtral",
122
+ "grok",
123
+ "grok-build",
124
+ "grok-vision",
125
+ "grok-beta",
126
+ "gemma",
127
+ "nova",
128
+ "nova-pro",
129
+ "nova-lite",
130
+ "nova-micro",
131
+ "command",
132
+ "command-r",
133
+ "command-a",
134
+ "command-light",
135
+ "north",
136
+ "north-free",
137
+ "jamba",
138
+ "nemotron",
139
+ "nemotron-free",
140
+ "titan",
141
+ "titan-embed",
142
+ "minimax",
143
+ "minimax-m2",
144
+ "minimax-m2.1",
145
+ "minimax-m2.5",
146
+ "minimax-m2.7",
147
+ "minimax-m3",
148
+ "minimax-m3-free",
149
+ "minimax-free",
150
+ "hunyuan",
151
+ "Hy",
152
+ "ernie",
153
+ "baichuan",
154
+ "sensenova",
155
+ "yi",
156
+ "granite",
157
+ "reka",
158
+ "sonar",
159
+ "sonar-pro",
160
+ "sonar-reasoning",
161
+ "sonar-deep-research",
162
+ "solar",
163
+ "solar-mini",
164
+ "solar-pro",
165
+ "step",
166
+ "spark-x2",
167
+ "openpangu",
168
+ "text-embedding",
169
+ "cohere-embed",
170
+ "voyage",
171
+ "mistral-embed",
172
+ "bge",
173
+ "plamo",
174
+ "codestral-embed",
175
+ "dall-e",
176
+ "flux",
177
+ "imagen",
178
+ "recraft",
179
+ "stable-diffusion",
180
+ "ideogram",
181
+ "dreamshaper",
182
+ "sora",
183
+ "veo",
184
+ "runway",
185
+ "dream-machine",
186
+ "whisper",
187
+ "elevenlabs",
188
+ "lyria",
189
+ "melotts",
190
+ "hermes",
191
+ "zephyr",
192
+ "openchat",
193
+ "starling",
194
+ "qvq",
195
+ "sherlock",
196
+ "pony",
197
+ "mercury",
198
+ "cogito",
199
+ "mimo",
200
+ "mimo-pro",
201
+ "mimo-omni",
202
+ "mimo-v2-pro",
203
+ "mimo-v2-omni",
204
+ "mimo-v2.5-pro",
205
+ "mimo-v2.5",
206
+ "mimo-v2.5-free",
207
+ "mimo-pro-free",
208
+ "mimo-omni-free",
209
+ "mimo-flash-free",
210
+ "mm-poly",
211
+ "longcat",
212
+ "nex-n2",
213
+ "intern-s",
214
+ "internvl",
215
+ "joyai",
216
+ "magistral",
217
+ "magistral-small",
218
+ "magistral-medium",
219
+ "phoenix",
220
+ "lucid",
221
+ "agi",
222
+ "intellect",
223
+ "aura",
224
+ "jais",
225
+ "sarvam",
226
+ "falcon",
227
+ "skywork",
228
+ "bart",
229
+ "distilbert",
230
+ "resnet",
231
+ "m2m",
232
+ "indictrans",
233
+ "llava",
234
+ "seed",
235
+ "ray",
236
+ "tstars",
237
+ "rnj",
238
+ "hy3",
239
+ "hy3-free",
240
+ "ling",
241
+ "ling-flash-free",
242
+ "ring",
243
+ "ring-1t-free",
244
+ "kat-coder",
245
+ "sqlcoder",
246
+ "discolm",
247
+ "osmosis",
248
+ "parakeet",
249
+ "nemoretriever",
250
+ "nano-banana",
251
+ "una-cybertron",
252
+ "morph",
253
+ "voxtral",
254
+ "venice",
255
+ "auto",
256
+ "model-router",
257
+ "fugu",
258
+ "v0",
259
+ "tako",
260
+ "mai",
261
+ "rednote",
262
+ "smart-turn",
263
+ "qwerky",
264
+ "big-pickle",
265
+ "chutesai",
266
+ "opengvlab",
267
+ "tngtech",
268
+ "topazlabs",
269
+ "unsloth",
270
+ "nousresearch",
271
+ "alpha",
272
+ "oswe",
273
+ "neural-chat",
274
+ "pangu",
275
+ "liquid",
276
+ "sourceful",
277
+ "allenai",
278
+ "palmyra",
279
+ "allam",
280
+ "canopylabs",
281
+ "groq",
282
+ "elephant"
283
+ ]
284
+ },
285
+ "series": {
286
+ "type": "string",
287
+ "minLength": 1
288
+ },
289
+ "attachment": {
290
+ "type": "boolean",
291
+ "description": "Whether attachments are supported. Missing on optional metadata means unknown."
292
+ },
293
+ "reasoning": {
294
+ "type": "boolean",
295
+ "description": "Whether reasoning is supported. Missing means unknown; false means explicitly unsupported."
296
+ },
297
+ "tool_call": {
298
+ "type": "boolean",
299
+ "description": "Whether tool calling is supported. Missing means unknown; false means explicitly unsupported."
300
+ },
301
+ "structured_output": {
302
+ "type": "boolean",
303
+ "description": "Whether structured output is supported. Missing means unknown; false means explicitly unsupported."
304
+ },
305
+ "temperature": {
306
+ "type": "boolean",
307
+ "description": "Whether temperature is explicitly adjustable. Missing means unknown; false means fixed or unsupported."
308
+ },
309
+ "knowledge": {
310
+ "type": "string",
311
+ "pattern": "^\\d{4}-\\d{2}(-\\d{2})?$"
312
+ },
313
+ "release_date": {
314
+ "type": "string",
315
+ "pattern": "^\\d{4}-\\d{2}(-\\d{2})?$"
316
+ },
317
+ "last_updated": {
318
+ "type": "string",
319
+ "pattern": "^\\d{4}-\\d{2}(-\\d{2})?$"
320
+ },
321
+ "modalities": {
322
+ "type": "object",
323
+ "properties": {
324
+ "input": {
325
+ "type": "array",
326
+ "items": {
327
+ "type": "string",
328
+ "enum": [
329
+ "text",
330
+ "audio",
331
+ "image",
332
+ "video",
333
+ "pdf"
334
+ ]
335
+ },
336
+ "description": "Input modalities accepted by the model."
337
+ },
338
+ "output": {
339
+ "type": "array",
340
+ "items": {
341
+ "type": "string",
342
+ "enum": [
343
+ "text",
344
+ "audio",
345
+ "image",
346
+ "video",
347
+ "pdf"
348
+ ]
349
+ },
350
+ "description": "Output modalities produced by the model."
351
+ }
352
+ },
353
+ "required": [
354
+ "input",
355
+ "output"
356
+ ],
357
+ "additionalProperties": false,
358
+ "description": "Input and output modalities exposed by this model endpoint."
359
+ },
360
+ "open_weights": {
361
+ "type": "boolean"
362
+ },
363
+ "limit": {
364
+ "type": "object",
365
+ "properties": {
366
+ "context": {
367
+ "type": "integer",
368
+ "minimum": 0,
369
+ "description": "Maximum context window in tokens."
370
+ },
371
+ "input": {
372
+ "type": "integer",
373
+ "minimum": 0,
374
+ "description": "Maximum input length in tokens when separately documented."
375
+ },
376
+ "output": {
377
+ "type": "integer",
378
+ "minimum": 0,
379
+ "description": "Maximum output length in tokens when documented."
380
+ }
381
+ },
382
+ "required": [
383
+ "context"
384
+ ],
385
+ "additionalProperties": false,
386
+ "description": "Token limits published for the base model."
387
+ },
388
+ "license": {
389
+ "type": "string",
390
+ "minLength": 1
391
+ },
392
+ "links": {
393
+ "type": "array",
394
+ "items": {
395
+ "type": "object",
396
+ "properties": {
397
+ "label": {
398
+ "type": "string",
399
+ "minLength": 1
400
+ },
401
+ "url": {
402
+ "type": "string",
403
+ "format": "uri"
404
+ },
405
+ "type": {
406
+ "type": "string",
407
+ "enum": [
408
+ "announcement",
409
+ "blog",
410
+ "docs",
411
+ "license",
412
+ "model_card",
413
+ "paper",
414
+ "weights",
415
+ "other"
416
+ ]
417
+ }
418
+ },
419
+ "required": [
420
+ "url"
421
+ ],
422
+ "additionalProperties": false
423
+ }
424
+ },
425
+ "weights": {
426
+ "type": "array",
427
+ "items": {
428
+ "type": "object",
429
+ "properties": {
430
+ "label": {
431
+ "type": "string",
432
+ "minLength": 1
433
+ },
434
+ "url": {
435
+ "type": "string",
436
+ "format": "uri"
437
+ },
438
+ "format": {
439
+ "type": "string",
440
+ "minLength": 1
441
+ },
442
+ "quantization": {
443
+ "type": "string",
444
+ "minLength": 1
445
+ }
446
+ },
447
+ "required": [
448
+ "url"
449
+ ],
450
+ "additionalProperties": false
451
+ }
452
+ },
453
+ "benchmarks": {
454
+ "type": "array",
455
+ "items": {
456
+ "type": "object",
457
+ "properties": {
458
+ "name": {
459
+ "type": "string",
460
+ "minLength": 1
461
+ },
462
+ "score": {
463
+ "anyOf": [
464
+ {
465
+ "type": "number"
466
+ },
467
+ {
468
+ "type": "string",
469
+ "minLength": 1
470
+ }
471
+ ]
472
+ },
473
+ "metric": {
474
+ "type": "string",
475
+ "minLength": 1
476
+ },
477
+ "harness": {
478
+ "type": "string",
479
+ "minLength": 1
480
+ },
481
+ "variant": {
482
+ "type": "string",
483
+ "minLength": 1
484
+ },
485
+ "dataset": {
486
+ "type": "string",
487
+ "minLength": 1
488
+ },
489
+ "version": {
490
+ "type": "string",
491
+ "minLength": 1
492
+ },
493
+ "source": {
494
+ "type": "string",
495
+ "format": "uri"
496
+ },
497
+ "date": {
498
+ "type": "string",
499
+ "pattern": "^\\d{4}-\\d{2}(-\\d{2})?$"
500
+ }
501
+ },
502
+ "required": [
503
+ "name",
504
+ "score"
505
+ ],
506
+ "additionalProperties": false
507
+ }
508
+ }
509
+ },
510
+ "required": [
511
+ "id",
512
+ "name",
513
+ "description"
514
+ ],
515
+ "additionalProperties": false
516
+ },
517
+ "Protocol": {
518
+ "type": "string",
519
+ "enum": [
520
+ "openai-compatible",
521
+ "anthropic-compatible",
522
+ "openai-responses"
523
+ ],
524
+ "description": "Protocol used to call a provider endpoint."
525
+ },
526
+ "ProviderEndpoint": {
527
+ "type": "object",
528
+ "properties": {
529
+ "id": {
530
+ "type": "string",
531
+ "pattern": "^[a-z][a-z0-9-]*$",
532
+ "description": "Stable endpoint ID referenced by provider models."
533
+ },
534
+ "protocol": {
535
+ "$ref": "#/definitions/Protocol"
536
+ },
537
+ "api": {
538
+ "type": "string",
539
+ "format": "uri",
540
+ "description": "Base API URL for this endpoint."
541
+ },
542
+ "default": {
543
+ "type": "boolean",
544
+ "const": true,
545
+ "description": "Marks the endpoint represented by the provider-level protocol and API fields."
546
+ }
547
+ },
548
+ "required": [
549
+ "id",
550
+ "protocol",
551
+ "api"
552
+ ],
553
+ "additionalProperties": false,
554
+ "description": "A protocol-specific API endpoint exposed by a provider."
555
+ },
556
+ "ReasoningOption": {
557
+ "anyOf": [
558
+ {
559
+ "type": "object",
560
+ "properties": {
561
+ "type": {
562
+ "type": "string",
563
+ "const": "toggle"
564
+ },
565
+ "field": {
566
+ "type": "string",
567
+ "minLength": 1,
568
+ "description": "Request body field used by this reasoning control."
569
+ },
570
+ "endpoints": {
571
+ "type": "array",
572
+ "items": {
573
+ "type": "string",
574
+ "pattern": "^[a-z][a-z0-9-]*$"
575
+ },
576
+ "minItems": 1,
577
+ "description": "Provider endpoint IDs where this reasoning control applies."
578
+ }
579
+ },
580
+ "required": [
581
+ "type"
582
+ ],
583
+ "additionalProperties": false
584
+ },
585
+ {
586
+ "type": "object",
587
+ "properties": {
588
+ "type": {
589
+ "type": "string",
590
+ "const": "effort"
591
+ },
592
+ "values": {
593
+ "type": "array",
594
+ "items": {
595
+ "anyOf": [
596
+ {
597
+ "type": "null"
598
+ },
599
+ {
600
+ "type": "string",
601
+ "enum": [
602
+ "none",
603
+ "minimal",
604
+ "low",
605
+ "medium",
606
+ "high",
607
+ "xhigh",
608
+ "max"
609
+ ]
610
+ }
611
+ ]
612
+ },
613
+ "minItems": 1,
614
+ "description": "Supported reasoning effort values; JSON null disables reasoning when supported."
615
+ },
616
+ "default": {
617
+ "anyOf": [
618
+ {
619
+ "type": "null"
620
+ },
621
+ {
622
+ "type": "string",
623
+ "enum": [
624
+ "none",
625
+ "minimal",
626
+ "low",
627
+ "medium",
628
+ "high",
629
+ "xhigh",
630
+ "max"
631
+ ]
632
+ }
633
+ ],
634
+ "description": "Default reasoning effort when the provider documents one."
635
+ },
636
+ "field": {
637
+ "type": "string",
638
+ "minLength": 1,
639
+ "description": "Request body field used by this reasoning control."
640
+ },
641
+ "endpoints": {
642
+ "type": "array",
643
+ "items": {
644
+ "type": "string",
645
+ "pattern": "^[a-z][a-z0-9-]*$"
646
+ },
647
+ "minItems": 1,
648
+ "description": "Provider endpoint IDs where this reasoning control applies."
649
+ }
650
+ },
651
+ "required": [
652
+ "type",
653
+ "values"
654
+ ],
655
+ "additionalProperties": false
656
+ },
657
+ {
658
+ "type": "object",
659
+ "properties": {
660
+ "type": {
661
+ "type": "string",
662
+ "const": "budget_tokens"
663
+ },
664
+ "min": {
665
+ "type": "integer",
666
+ "minimum": -1,
667
+ "description": "Minimum reasoning token budget; -1 may represent automatic allocation."
668
+ },
669
+ "max": {
670
+ "type": "integer",
671
+ "minimum": 0,
672
+ "description": "Maximum reasoning token budget."
673
+ },
674
+ "field": {
675
+ "type": "string",
676
+ "minLength": 1,
677
+ "description": "Request body field used by this reasoning control."
678
+ },
679
+ "endpoints": {
680
+ "type": "array",
681
+ "items": {
682
+ "type": "string",
683
+ "pattern": "^[a-z][a-z0-9-]*$"
684
+ },
685
+ "minItems": 1,
686
+ "description": "Provider endpoint IDs where this reasoning control applies."
687
+ }
688
+ },
689
+ "required": [
690
+ "type"
691
+ ],
692
+ "additionalProperties": false
693
+ }
694
+ ],
695
+ "description": "Provider-specific reasoning control; type discriminates toggle, effort and token-budget forms."
696
+ },
697
+ "ProviderModel": {
698
+ "type": "object",
699
+ "properties": {
700
+ "id": {
701
+ "type": "string"
702
+ },
703
+ "name": {
704
+ "type": "string",
705
+ "minLength": 1
706
+ },
707
+ "description": {
708
+ "type": "string",
709
+ "minLength": 1
710
+ },
711
+ "family": {
712
+ "type": "string",
713
+ "enum": [
714
+ "trinity",
715
+ "trinity-mini",
716
+ "gpt",
717
+ "gpt-codex",
718
+ "gpt-codex-spark",
719
+ "gpt-codex-mini",
720
+ "gpt-pro",
721
+ "gpt-mini",
722
+ "gpt-nano",
723
+ "gpt-sol",
724
+ "gpt-terra",
725
+ "gpt-luna",
726
+ "gpt-oss",
727
+ "gpt-image",
728
+ "o",
729
+ "o-mini",
730
+ "o-pro",
731
+ "claude",
732
+ "claude-haiku",
733
+ "claude-sonnet",
734
+ "claude-opus",
735
+ "claude-fable",
736
+ "gemini",
737
+ "gemini-pro",
738
+ "gemini-flash",
739
+ "gemini-flash-lite",
740
+ "gemini-embedding",
741
+ "glm",
742
+ "glmv",
743
+ "glm-air",
744
+ "glm-flash",
745
+ "glm-free",
746
+ "glm-z",
747
+ "llama",
748
+ "muse",
749
+ "qwen",
750
+ "qwen3.5",
751
+ "qwen3.6",
752
+ "qwen3.7-plus",
753
+ "qwen3.7-max",
754
+ "qwen3.7-flash",
755
+ "qwen3.8-max",
756
+ "qwen-free",
757
+ "ornith",
758
+ "deepseek",
759
+ "deepseek-thinking",
760
+ "deepseek-flash",
761
+ "deepseek-flash-free",
762
+ "deepseek-flash-think",
763
+ "doubao-seed",
764
+ "phi",
765
+ "kimi",
766
+ "kimi-k2",
767
+ "kimi-k3",
768
+ "kimi-free",
769
+ "kimi-thinking",
770
+ "laguna",
771
+ "laguna-s",
772
+ "mistral",
773
+ "mistral-large",
774
+ "mistral-medium",
775
+ "mistral-small",
776
+ "mistral-nemo",
777
+ "ministral",
778
+ "codestral",
779
+ "devstral",
780
+ "pixtral",
781
+ "mixtral",
782
+ "grok",
783
+ "grok-build",
784
+ "grok-vision",
785
+ "grok-beta",
786
+ "gemma",
787
+ "nova",
788
+ "nova-pro",
789
+ "nova-lite",
790
+ "nova-micro",
791
+ "command",
792
+ "command-r",
793
+ "command-a",
794
+ "command-light",
795
+ "north",
796
+ "north-free",
797
+ "jamba",
798
+ "nemotron",
799
+ "nemotron-free",
800
+ "titan",
801
+ "titan-embed",
802
+ "minimax",
803
+ "minimax-m2",
804
+ "minimax-m2.1",
805
+ "minimax-m2.5",
806
+ "minimax-m2.7",
807
+ "minimax-m3",
808
+ "minimax-m3-free",
809
+ "minimax-free",
810
+ "hunyuan",
811
+ "Hy",
812
+ "ernie",
813
+ "baichuan",
814
+ "sensenova",
815
+ "yi",
816
+ "granite",
817
+ "reka",
818
+ "sonar",
819
+ "sonar-pro",
820
+ "sonar-reasoning",
821
+ "sonar-deep-research",
822
+ "solar",
823
+ "solar-mini",
824
+ "solar-pro",
825
+ "step",
826
+ "spark-x2",
827
+ "openpangu",
828
+ "text-embedding",
829
+ "cohere-embed",
830
+ "voyage",
831
+ "mistral-embed",
832
+ "bge",
833
+ "plamo",
834
+ "codestral-embed",
835
+ "dall-e",
836
+ "flux",
837
+ "imagen",
838
+ "recraft",
839
+ "stable-diffusion",
840
+ "ideogram",
841
+ "dreamshaper",
842
+ "sora",
843
+ "veo",
844
+ "runway",
845
+ "dream-machine",
846
+ "whisper",
847
+ "elevenlabs",
848
+ "lyria",
849
+ "melotts",
850
+ "hermes",
851
+ "zephyr",
852
+ "openchat",
853
+ "starling",
854
+ "qvq",
855
+ "sherlock",
856
+ "pony",
857
+ "mercury",
858
+ "cogito",
859
+ "mimo",
860
+ "mimo-pro",
861
+ "mimo-omni",
862
+ "mimo-v2-pro",
863
+ "mimo-v2-omni",
864
+ "mimo-v2.5-pro",
865
+ "mimo-v2.5",
866
+ "mimo-v2.5-free",
867
+ "mimo-pro-free",
868
+ "mimo-omni-free",
869
+ "mimo-flash-free",
870
+ "mm-poly",
871
+ "longcat",
872
+ "nex-n2",
873
+ "intern-s",
874
+ "internvl",
875
+ "joyai",
876
+ "magistral",
877
+ "magistral-small",
878
+ "magistral-medium",
879
+ "phoenix",
880
+ "lucid",
881
+ "agi",
882
+ "intellect",
883
+ "aura",
884
+ "jais",
885
+ "sarvam",
886
+ "falcon",
887
+ "skywork",
888
+ "bart",
889
+ "distilbert",
890
+ "resnet",
891
+ "m2m",
892
+ "indictrans",
893
+ "llava",
894
+ "seed",
895
+ "ray",
896
+ "tstars",
897
+ "rnj",
898
+ "hy3",
899
+ "hy3-free",
900
+ "ling",
901
+ "ling-flash-free",
902
+ "ring",
903
+ "ring-1t-free",
904
+ "kat-coder",
905
+ "sqlcoder",
906
+ "discolm",
907
+ "osmosis",
908
+ "parakeet",
909
+ "nemoretriever",
910
+ "nano-banana",
911
+ "una-cybertron",
912
+ "morph",
913
+ "voxtral",
914
+ "venice",
915
+ "auto",
916
+ "model-router",
917
+ "fugu",
918
+ "v0",
919
+ "tako",
920
+ "mai",
921
+ "rednote",
922
+ "smart-turn",
923
+ "qwerky",
924
+ "big-pickle",
925
+ "chutesai",
926
+ "opengvlab",
927
+ "tngtech",
928
+ "topazlabs",
929
+ "unsloth",
930
+ "nousresearch",
931
+ "alpha",
932
+ "oswe",
933
+ "neural-chat",
934
+ "pangu",
935
+ "liquid",
936
+ "sourceful",
937
+ "allenai",
938
+ "palmyra",
939
+ "allam",
940
+ "canopylabs",
941
+ "groq",
942
+ "elephant"
943
+ ]
944
+ },
945
+ "series": {
946
+ "type": "string",
947
+ "minLength": 1
948
+ },
949
+ "attachment": {
950
+ "type": "boolean",
951
+ "description": "Whether attachments are supported. Missing on optional metadata means unknown."
952
+ },
953
+ "reasoning": {
954
+ "type": "boolean",
955
+ "description": "Whether reasoning is supported. Missing means unknown; false means explicitly unsupported."
956
+ },
957
+ "reasoning_options": {
958
+ "type": "array",
959
+ "items": {
960
+ "$ref": "#/definitions/ReasoningOption"
961
+ },
962
+ "description": "Provider-specific controls for enabling or configuring reasoning."
963
+ },
964
+ "tool_call": {
965
+ "type": "boolean",
966
+ "description": "Whether tool calling is supported. Missing means unknown; false means explicitly unsupported."
967
+ },
968
+ "interleaved": {
969
+ "anyOf": [
970
+ {
971
+ "type": "boolean",
972
+ "const": true
973
+ },
974
+ {
975
+ "type": "object",
976
+ "properties": {
977
+ "field": {
978
+ "type": "string",
979
+ "enum": [
980
+ "reasoning_content",
981
+ "reasoning_details"
982
+ ]
983
+ }
984
+ },
985
+ "required": [
986
+ "field"
987
+ ],
988
+ "additionalProperties": false
989
+ }
990
+ ],
991
+ "description": "Whether reasoning content is returned alongside output, optionally naming its response field."
992
+ },
993
+ "structured_output": {
994
+ "type": "boolean",
995
+ "description": "Whether structured output is supported. Missing means unknown; false means explicitly unsupported."
996
+ },
997
+ "temperature": {
998
+ "type": "boolean",
999
+ "description": "Whether temperature is explicitly adjustable. Missing means unknown; false means fixed or unsupported."
1000
+ },
1001
+ "knowledge": {
1002
+ "type": "string",
1003
+ "pattern": "^\\d{4}-\\d{2}(-\\d{2})?$"
1004
+ },
1005
+ "release_date": {
1006
+ "type": "string",
1007
+ "pattern": "^\\d{4}-\\d{2}(-\\d{2})?$"
1008
+ },
1009
+ "last_updated": {
1010
+ "type": "string",
1011
+ "pattern": "^\\d{4}-\\d{2}(-\\d{2})?$"
1012
+ },
1013
+ "modalities": {
1014
+ "type": "object",
1015
+ "properties": {
1016
+ "input": {
1017
+ "type": "array",
1018
+ "items": {
1019
+ "type": "string",
1020
+ "enum": [
1021
+ "text",
1022
+ "audio",
1023
+ "image",
1024
+ "video",
1025
+ "pdf"
1026
+ ]
1027
+ },
1028
+ "description": "Input modalities accepted by the model."
1029
+ },
1030
+ "output": {
1031
+ "type": "array",
1032
+ "items": {
1033
+ "type": "string",
1034
+ "enum": [
1035
+ "text",
1036
+ "audio",
1037
+ "image",
1038
+ "video",
1039
+ "pdf"
1040
+ ]
1041
+ },
1042
+ "description": "Output modalities produced by the model."
1043
+ }
1044
+ },
1045
+ "required": [
1046
+ "input",
1047
+ "output"
1048
+ ],
1049
+ "additionalProperties": false,
1050
+ "description": "Input and output modalities exposed by this model endpoint."
1051
+ },
1052
+ "open_weights": {
1053
+ "type": "boolean"
1054
+ },
1055
+ "limit": {
1056
+ "type": "object",
1057
+ "properties": {
1058
+ "context": {
1059
+ "type": "integer",
1060
+ "minimum": 0,
1061
+ "description": "Maximum context window in tokens."
1062
+ },
1063
+ "input": {
1064
+ "type": "integer",
1065
+ "minimum": 0,
1066
+ "description": "Maximum input length in tokens when separately documented."
1067
+ },
1068
+ "output": {
1069
+ "type": "integer",
1070
+ "minimum": 0,
1071
+ "description": "Maximum output length in tokens when documented."
1072
+ }
1073
+ },
1074
+ "required": [
1075
+ "context"
1076
+ ],
1077
+ "additionalProperties": false,
1078
+ "description": "Token limits exposed by this provider model endpoint."
1079
+ },
1080
+ "doc": {
1081
+ "type": "string",
1082
+ "format": "uri"
1083
+ },
1084
+ "endpoints": {
1085
+ "type": "array",
1086
+ "items": {
1087
+ "type": "string",
1088
+ "pattern": "^[a-z][a-z0-9-]*$"
1089
+ },
1090
+ "minItems": 1,
1091
+ "description": "Provider endpoint IDs enabled for this model; missing means the provider default endpoint."
1092
+ },
1093
+ "cost_points": {
1094
+ "type": "object",
1095
+ "properties": {
1096
+ "input": {
1097
+ "type": "number",
1098
+ "minimum": 0
1099
+ },
1100
+ "output": {
1101
+ "type": "number",
1102
+ "minimum": 0
1103
+ },
1104
+ "cache_read": {
1105
+ "type": "number",
1106
+ "minimum": 0
1107
+ },
1108
+ "per_tokens": {
1109
+ "type": "integer",
1110
+ "exclusiveMinimum": 0
1111
+ },
1112
+ "tiers": {
1113
+ "type": "array",
1114
+ "items": {
1115
+ "type": "object",
1116
+ "properties": {
1117
+ "input": {
1118
+ "type": "number",
1119
+ "minimum": 0
1120
+ },
1121
+ "output": {
1122
+ "type": "number",
1123
+ "minimum": 0
1124
+ },
1125
+ "cache_read": {
1126
+ "type": "number",
1127
+ "minimum": 0
1128
+ },
1129
+ "tier": {
1130
+ "anyOf": [
1131
+ {
1132
+ "type": "object",
1133
+ "properties": {
1134
+ "type": {
1135
+ "type": "string",
1136
+ "const": "context"
1137
+ },
1138
+ "size": {
1139
+ "type": "integer",
1140
+ "minimum": 0
1141
+ }
1142
+ },
1143
+ "required": [
1144
+ "type",
1145
+ "size"
1146
+ ],
1147
+ "additionalProperties": false
1148
+ },
1149
+ {
1150
+ "type": "object",
1151
+ "properties": {
1152
+ "type": {
1153
+ "type": "string",
1154
+ "const": "conditional"
1155
+ },
1156
+ "input": {
1157
+ "type": "object",
1158
+ "properties": {
1159
+ "gte": {
1160
+ "type": "integer",
1161
+ "minimum": 0
1162
+ },
1163
+ "gt": {
1164
+ "type": "integer",
1165
+ "minimum": 0
1166
+ },
1167
+ "lt": {
1168
+ "type": "integer",
1169
+ "minimum": 0
1170
+ },
1171
+ "lte": {
1172
+ "type": "integer",
1173
+ "minimum": 0
1174
+ }
1175
+ },
1176
+ "additionalProperties": false
1177
+ },
1178
+ "output": {
1179
+ "type": "object",
1180
+ "properties": {
1181
+ "gte": {
1182
+ "type": "integer",
1183
+ "minimum": 0
1184
+ },
1185
+ "gt": {
1186
+ "type": "integer",
1187
+ "minimum": 0
1188
+ },
1189
+ "lt": {
1190
+ "type": "integer",
1191
+ "minimum": 0
1192
+ },
1193
+ "lte": {
1194
+ "type": "integer",
1195
+ "minimum": 0
1196
+ }
1197
+ },
1198
+ "additionalProperties": false
1199
+ },
1200
+ "time": {
1201
+ "type": "object",
1202
+ "properties": {
1203
+ "timezone": {
1204
+ "type": "string",
1205
+ "minLength": 1
1206
+ },
1207
+ "windows": {
1208
+ "type": "array",
1209
+ "items": {
1210
+ "type": "object",
1211
+ "properties": {
1212
+ "days": {
1213
+ "type": "array",
1214
+ "items": {
1215
+ "type": "string",
1216
+ "enum": [
1217
+ "monday",
1218
+ "tuesday",
1219
+ "wednesday",
1220
+ "thursday",
1221
+ "friday",
1222
+ "saturday",
1223
+ "sunday"
1224
+ ]
1225
+ },
1226
+ "minItems": 1
1227
+ },
1228
+ "start": {
1229
+ "type": "string",
1230
+ "pattern": "^([01]\\d|2[0-3]):[0-5]\\d$"
1231
+ },
1232
+ "end": {
1233
+ "type": "string",
1234
+ "pattern": "^(([01]\\d|2[0-3]):[0-5]\\d|24:00)$"
1235
+ }
1236
+ },
1237
+ "required": [
1238
+ "start",
1239
+ "end"
1240
+ ],
1241
+ "additionalProperties": false
1242
+ },
1243
+ "minItems": 1
1244
+ }
1245
+ },
1246
+ "required": [
1247
+ "timezone",
1248
+ "windows"
1249
+ ],
1250
+ "additionalProperties": false
1251
+ },
1252
+ "label": {
1253
+ "type": "string",
1254
+ "minLength": 1
1255
+ }
1256
+ },
1257
+ "required": [
1258
+ "type"
1259
+ ],
1260
+ "additionalProperties": false
1261
+ }
1262
+ ]
1263
+ }
1264
+ },
1265
+ "required": [
1266
+ "input",
1267
+ "output",
1268
+ "tier"
1269
+ ],
1270
+ "additionalProperties": false
1271
+ }
1272
+ },
1273
+ "off_peak_multiplier": {
1274
+ "type": "number",
1275
+ "exclusiveMinimum": 0,
1276
+ "maximum": 1
1277
+ },
1278
+ "peak_window": {
1279
+ "type": "object",
1280
+ "properties": {
1281
+ "days": {
1282
+ "type": "array",
1283
+ "items": {
1284
+ "type": "string",
1285
+ "enum": [
1286
+ "monday",
1287
+ "tuesday",
1288
+ "wednesday",
1289
+ "thursday",
1290
+ "friday",
1291
+ "saturday",
1292
+ "sunday"
1293
+ ]
1294
+ },
1295
+ "minItems": 1
1296
+ },
1297
+ "start": {
1298
+ "type": "string",
1299
+ "pattern": "^([01]\\d|2[0-3]):[0-5]\\d$"
1300
+ },
1301
+ "end": {
1302
+ "type": "string",
1303
+ "pattern": "^([01]\\d|2[0-3]):[0-5]\\d$"
1304
+ },
1305
+ "timezone": {
1306
+ "type": "string",
1307
+ "minLength": 1
1308
+ }
1309
+ },
1310
+ "required": [
1311
+ "days",
1312
+ "start",
1313
+ "end",
1314
+ "timezone"
1315
+ ],
1316
+ "additionalProperties": false
1317
+ }
1318
+ },
1319
+ "required": [
1320
+ "input",
1321
+ "output",
1322
+ "per_tokens"
1323
+ ],
1324
+ "additionalProperties": false,
1325
+ "description": "Plan point consumption per the number of tokens declared by per_tokens."
1326
+ },
1327
+ "status": {
1328
+ "type": "string",
1329
+ "enum": [
1330
+ "alpha",
1331
+ "beta",
1332
+ "deprecated"
1333
+ ]
1334
+ },
1335
+ "experimental": {
1336
+ "type": "object",
1337
+ "properties": {
1338
+ "modes": {
1339
+ "type": "object",
1340
+ "additionalProperties": {
1341
+ "type": "object",
1342
+ "properties": {
1343
+ "cost": {
1344
+ "type": "object",
1345
+ "properties": {
1346
+ "input": {
1347
+ "type": "number",
1348
+ "minimum": 0
1349
+ },
1350
+ "output": {
1351
+ "type": "number",
1352
+ "minimum": 0
1353
+ },
1354
+ "reasoning": {
1355
+ "type": "number",
1356
+ "minimum": 0
1357
+ },
1358
+ "cache_read": {
1359
+ "type": "number",
1360
+ "minimum": 0
1361
+ },
1362
+ "cache_write": {
1363
+ "type": "number",
1364
+ "minimum": 0
1365
+ },
1366
+ "input_audio": {
1367
+ "type": "number",
1368
+ "minimum": 0
1369
+ },
1370
+ "output_audio": {
1371
+ "type": "number",
1372
+ "minimum": 0
1373
+ }
1374
+ },
1375
+ "required": [
1376
+ "input",
1377
+ "output"
1378
+ ],
1379
+ "additionalProperties": false
1380
+ },
1381
+ "cost_cn": {
1382
+ "type": "object",
1383
+ "properties": {
1384
+ "input": {
1385
+ "type": "number",
1386
+ "minimum": 0
1387
+ },
1388
+ "output": {
1389
+ "type": "number",
1390
+ "minimum": 0
1391
+ },
1392
+ "reasoning": {
1393
+ "type": "number",
1394
+ "minimum": 0
1395
+ },
1396
+ "cache_read": {
1397
+ "type": "number",
1398
+ "minimum": 0
1399
+ },
1400
+ "cache_write": {
1401
+ "type": "number",
1402
+ "minimum": 0
1403
+ },
1404
+ "input_audio": {
1405
+ "type": "number",
1406
+ "minimum": 0
1407
+ },
1408
+ "output_audio": {
1409
+ "type": "number",
1410
+ "minimum": 0
1411
+ }
1412
+ },
1413
+ "required": [
1414
+ "input",
1415
+ "output"
1416
+ ],
1417
+ "additionalProperties": false
1418
+ },
1419
+ "provider": {
1420
+ "type": "object",
1421
+ "properties": {
1422
+ "body": {
1423
+ "type": "object",
1424
+ "additionalProperties": {
1425
+ "$ref": "#/definitions/JsonValue"
1426
+ }
1427
+ },
1428
+ "headers": {
1429
+ "type": "object",
1430
+ "additionalProperties": {
1431
+ "type": "string"
1432
+ }
1433
+ }
1434
+ },
1435
+ "additionalProperties": false
1436
+ }
1437
+ },
1438
+ "additionalProperties": false
1439
+ }
1440
+ }
1441
+ },
1442
+ "additionalProperties": false
1443
+ },
1444
+ "provider": {
1445
+ "type": "object",
1446
+ "properties": {
1447
+ "npm": {
1448
+ "type": "string"
1449
+ },
1450
+ "api": {
1451
+ "type": "string"
1452
+ },
1453
+ "shape": {
1454
+ "type": "string",
1455
+ "enum": [
1456
+ "responses",
1457
+ "completions"
1458
+ ]
1459
+ },
1460
+ "body": {
1461
+ "type": "object",
1462
+ "additionalProperties": {
1463
+ "$ref": "#/definitions/JsonValue"
1464
+ }
1465
+ },
1466
+ "headers": {
1467
+ "type": "object",
1468
+ "additionalProperties": {
1469
+ "type": "string"
1470
+ }
1471
+ }
1472
+ },
1473
+ "additionalProperties": false
1474
+ },
1475
+ "cost": {
1476
+ "type": "object",
1477
+ "properties": {
1478
+ "input": {
1479
+ "type": "number",
1480
+ "minimum": 0
1481
+ },
1482
+ "output": {
1483
+ "type": "number",
1484
+ "minimum": 0
1485
+ },
1486
+ "reasoning": {
1487
+ "type": "number",
1488
+ "minimum": 0
1489
+ },
1490
+ "cache_read": {
1491
+ "type": "number",
1492
+ "minimum": 0
1493
+ },
1494
+ "cache_write": {
1495
+ "type": "number",
1496
+ "minimum": 0
1497
+ },
1498
+ "input_audio": {
1499
+ "type": "number",
1500
+ "minimum": 0
1501
+ },
1502
+ "output_audio": {
1503
+ "type": "number",
1504
+ "minimum": 0
1505
+ },
1506
+ "context_over_200k": {
1507
+ "type": "object",
1508
+ "properties": {
1509
+ "input": {
1510
+ "type": "number",
1511
+ "minimum": 0
1512
+ },
1513
+ "output": {
1514
+ "type": "number",
1515
+ "minimum": 0
1516
+ },
1517
+ "reasoning": {
1518
+ "type": "number",
1519
+ "minimum": 0
1520
+ },
1521
+ "cache_read": {
1522
+ "type": "number",
1523
+ "minimum": 0
1524
+ },
1525
+ "cache_write": {
1526
+ "type": "number",
1527
+ "minimum": 0
1528
+ },
1529
+ "input_audio": {
1530
+ "type": "number",
1531
+ "minimum": 0
1532
+ },
1533
+ "output_audio": {
1534
+ "type": "number",
1535
+ "minimum": 0
1536
+ }
1537
+ },
1538
+ "required": [
1539
+ "input",
1540
+ "output"
1541
+ ],
1542
+ "additionalProperties": false
1543
+ },
1544
+ "tiers": {
1545
+ "type": "array",
1546
+ "items": {
1547
+ "type": "object",
1548
+ "properties": {
1549
+ "input": {
1550
+ "type": "number",
1551
+ "minimum": 0
1552
+ },
1553
+ "output": {
1554
+ "type": "number",
1555
+ "minimum": 0
1556
+ },
1557
+ "reasoning": {
1558
+ "type": "number",
1559
+ "minimum": 0
1560
+ },
1561
+ "cache_read": {
1562
+ "type": "number",
1563
+ "minimum": 0
1564
+ },
1565
+ "cache_write": {
1566
+ "type": "number",
1567
+ "minimum": 0
1568
+ },
1569
+ "input_audio": {
1570
+ "type": "number",
1571
+ "minimum": 0
1572
+ },
1573
+ "output_audio": {
1574
+ "type": "number",
1575
+ "minimum": 0
1576
+ },
1577
+ "tier": {
1578
+ "anyOf": [
1579
+ {
1580
+ "type": "object",
1581
+ "properties": {
1582
+ "type": {
1583
+ "type": "string",
1584
+ "const": "context"
1585
+ },
1586
+ "size": {
1587
+ "type": "integer",
1588
+ "minimum": 0
1589
+ }
1590
+ },
1591
+ "required": [
1592
+ "type",
1593
+ "size"
1594
+ ],
1595
+ "additionalProperties": false
1596
+ },
1597
+ {
1598
+ "type": "object",
1599
+ "properties": {
1600
+ "type": {
1601
+ "type": "string",
1602
+ "const": "conditional"
1603
+ },
1604
+ "input": {
1605
+ "type": "object",
1606
+ "properties": {
1607
+ "gte": {
1608
+ "type": "integer",
1609
+ "minimum": 0
1610
+ },
1611
+ "gt": {
1612
+ "type": "integer",
1613
+ "minimum": 0
1614
+ },
1615
+ "lt": {
1616
+ "type": "integer",
1617
+ "minimum": 0
1618
+ },
1619
+ "lte": {
1620
+ "type": "integer",
1621
+ "minimum": 0
1622
+ }
1623
+ },
1624
+ "additionalProperties": false
1625
+ },
1626
+ "output": {
1627
+ "type": "object",
1628
+ "properties": {
1629
+ "gte": {
1630
+ "type": "integer",
1631
+ "minimum": 0
1632
+ },
1633
+ "gt": {
1634
+ "type": "integer",
1635
+ "minimum": 0
1636
+ },
1637
+ "lt": {
1638
+ "type": "integer",
1639
+ "minimum": 0
1640
+ },
1641
+ "lte": {
1642
+ "type": "integer",
1643
+ "minimum": 0
1644
+ }
1645
+ },
1646
+ "additionalProperties": false
1647
+ },
1648
+ "time": {
1649
+ "type": "object",
1650
+ "properties": {
1651
+ "timezone": {
1652
+ "type": "string",
1653
+ "minLength": 1
1654
+ },
1655
+ "windows": {
1656
+ "type": "array",
1657
+ "items": {
1658
+ "type": "object",
1659
+ "properties": {
1660
+ "days": {
1661
+ "type": "array",
1662
+ "items": {
1663
+ "type": "string",
1664
+ "enum": [
1665
+ "monday",
1666
+ "tuesday",
1667
+ "wednesday",
1668
+ "thursday",
1669
+ "friday",
1670
+ "saturday",
1671
+ "sunday"
1672
+ ]
1673
+ },
1674
+ "minItems": 1
1675
+ },
1676
+ "start": {
1677
+ "type": "string",
1678
+ "pattern": "^([01]\\d|2[0-3]):[0-5]\\d$"
1679
+ },
1680
+ "end": {
1681
+ "type": "string",
1682
+ "pattern": "^(([01]\\d|2[0-3]):[0-5]\\d|24:00)$"
1683
+ }
1684
+ },
1685
+ "required": [
1686
+ "start",
1687
+ "end"
1688
+ ],
1689
+ "additionalProperties": false
1690
+ },
1691
+ "minItems": 1
1692
+ }
1693
+ },
1694
+ "required": [
1695
+ "timezone",
1696
+ "windows"
1697
+ ],
1698
+ "additionalProperties": false
1699
+ },
1700
+ "label": {
1701
+ "type": "string",
1702
+ "minLength": 1
1703
+ }
1704
+ },
1705
+ "required": [
1706
+ "type"
1707
+ ],
1708
+ "additionalProperties": false
1709
+ }
1710
+ ]
1711
+ }
1712
+ },
1713
+ "required": [
1714
+ "input",
1715
+ "output",
1716
+ "tier"
1717
+ ],
1718
+ "additionalProperties": false
1719
+ }
1720
+ }
1721
+ },
1722
+ "required": [
1723
+ "input",
1724
+ "output"
1725
+ ],
1726
+ "additionalProperties": false,
1727
+ "description": "Prices in USD per million tokens."
1728
+ },
1729
+ "cost_cn": {
1730
+ "type": "object",
1731
+ "properties": {
1732
+ "input": {
1733
+ "type": "number",
1734
+ "minimum": 0
1735
+ },
1736
+ "output": {
1737
+ "type": "number",
1738
+ "minimum": 0
1739
+ },
1740
+ "reasoning": {
1741
+ "type": "number",
1742
+ "minimum": 0
1743
+ },
1744
+ "cache_read": {
1745
+ "type": "number",
1746
+ "minimum": 0
1747
+ },
1748
+ "cache_write": {
1749
+ "type": "number",
1750
+ "minimum": 0
1751
+ },
1752
+ "input_audio": {
1753
+ "type": "number",
1754
+ "minimum": 0
1755
+ },
1756
+ "output_audio": {
1757
+ "type": "number",
1758
+ "minimum": 0
1759
+ },
1760
+ "thinking": {
1761
+ "type": "object",
1762
+ "properties": {
1763
+ "input": {
1764
+ "type": "number",
1765
+ "minimum": 0
1766
+ },
1767
+ "output": {
1768
+ "type": "number",
1769
+ "minimum": 0
1770
+ },
1771
+ "cache_read": {
1772
+ "type": "number",
1773
+ "minimum": 0
1774
+ },
1775
+ "cache_write": {
1776
+ "type": "number",
1777
+ "minimum": 0
1778
+ },
1779
+ "input_audio": {
1780
+ "type": "number",
1781
+ "minimum": 0
1782
+ },
1783
+ "output_audio": {
1784
+ "type": "number",
1785
+ "minimum": 0
1786
+ }
1787
+ },
1788
+ "required": [
1789
+ "input",
1790
+ "output"
1791
+ ],
1792
+ "additionalProperties": false
1793
+ },
1794
+ "context_over_200k": {
1795
+ "type": "object",
1796
+ "properties": {
1797
+ "input": {
1798
+ "type": "number",
1799
+ "minimum": 0
1800
+ },
1801
+ "output": {
1802
+ "type": "number",
1803
+ "minimum": 0
1804
+ },
1805
+ "reasoning": {
1806
+ "type": "number",
1807
+ "minimum": 0
1808
+ },
1809
+ "cache_read": {
1810
+ "type": "number",
1811
+ "minimum": 0
1812
+ },
1813
+ "cache_write": {
1814
+ "type": "number",
1815
+ "minimum": 0
1816
+ },
1817
+ "input_audio": {
1818
+ "type": "number",
1819
+ "minimum": 0
1820
+ },
1821
+ "output_audio": {
1822
+ "type": "number",
1823
+ "minimum": 0
1824
+ },
1825
+ "thinking": {
1826
+ "type": "object",
1827
+ "properties": {
1828
+ "input": {
1829
+ "type": "number",
1830
+ "minimum": 0
1831
+ },
1832
+ "output": {
1833
+ "type": "number",
1834
+ "minimum": 0
1835
+ },
1836
+ "cache_read": {
1837
+ "type": "number",
1838
+ "minimum": 0
1839
+ },
1840
+ "cache_write": {
1841
+ "type": "number",
1842
+ "minimum": 0
1843
+ },
1844
+ "input_audio": {
1845
+ "type": "number",
1846
+ "minimum": 0
1847
+ },
1848
+ "output_audio": {
1849
+ "type": "number",
1850
+ "minimum": 0
1851
+ }
1852
+ },
1853
+ "required": [
1854
+ "input",
1855
+ "output"
1856
+ ],
1857
+ "additionalProperties": false
1858
+ }
1859
+ },
1860
+ "required": [
1861
+ "input",
1862
+ "output"
1863
+ ],
1864
+ "additionalProperties": false
1865
+ },
1866
+ "tiers": {
1867
+ "type": "array",
1868
+ "items": {
1869
+ "type": "object",
1870
+ "properties": {
1871
+ "input": {
1872
+ "type": "number",
1873
+ "minimum": 0
1874
+ },
1875
+ "output": {
1876
+ "type": "number",
1877
+ "minimum": 0
1878
+ },
1879
+ "reasoning": {
1880
+ "type": "number",
1881
+ "minimum": 0
1882
+ },
1883
+ "cache_read": {
1884
+ "type": "number",
1885
+ "minimum": 0
1886
+ },
1887
+ "cache_write": {
1888
+ "type": "number",
1889
+ "minimum": 0
1890
+ },
1891
+ "input_audio": {
1892
+ "type": "number",
1893
+ "minimum": 0
1894
+ },
1895
+ "output_audio": {
1896
+ "type": "number",
1897
+ "minimum": 0
1898
+ },
1899
+ "thinking": {
1900
+ "type": "object",
1901
+ "properties": {
1902
+ "input": {
1903
+ "type": "number",
1904
+ "minimum": 0
1905
+ },
1906
+ "output": {
1907
+ "type": "number",
1908
+ "minimum": 0
1909
+ },
1910
+ "cache_read": {
1911
+ "type": "number",
1912
+ "minimum": 0
1913
+ },
1914
+ "cache_write": {
1915
+ "type": "number",
1916
+ "minimum": 0
1917
+ },
1918
+ "input_audio": {
1919
+ "type": "number",
1920
+ "minimum": 0
1921
+ },
1922
+ "output_audio": {
1923
+ "type": "number",
1924
+ "minimum": 0
1925
+ }
1926
+ },
1927
+ "required": [
1928
+ "input",
1929
+ "output"
1930
+ ],
1931
+ "additionalProperties": false
1932
+ },
1933
+ "tier": {
1934
+ "anyOf": [
1935
+ {
1936
+ "type": "object",
1937
+ "properties": {
1938
+ "type": {
1939
+ "type": "string",
1940
+ "const": "context"
1941
+ },
1942
+ "size": {
1943
+ "type": "integer",
1944
+ "minimum": 0
1945
+ }
1946
+ },
1947
+ "required": [
1948
+ "type",
1949
+ "size"
1950
+ ],
1951
+ "additionalProperties": false
1952
+ },
1953
+ {
1954
+ "type": "object",
1955
+ "properties": {
1956
+ "type": {
1957
+ "type": "string",
1958
+ "const": "conditional"
1959
+ },
1960
+ "input": {
1961
+ "type": "object",
1962
+ "properties": {
1963
+ "gte": {
1964
+ "type": "integer",
1965
+ "minimum": 0
1966
+ },
1967
+ "gt": {
1968
+ "type": "integer",
1969
+ "minimum": 0
1970
+ },
1971
+ "lt": {
1972
+ "type": "integer",
1973
+ "minimum": 0
1974
+ },
1975
+ "lte": {
1976
+ "type": "integer",
1977
+ "minimum": 0
1978
+ }
1979
+ },
1980
+ "additionalProperties": false
1981
+ },
1982
+ "output": {
1983
+ "type": "object",
1984
+ "properties": {
1985
+ "gte": {
1986
+ "type": "integer",
1987
+ "minimum": 0
1988
+ },
1989
+ "gt": {
1990
+ "type": "integer",
1991
+ "minimum": 0
1992
+ },
1993
+ "lt": {
1994
+ "type": "integer",
1995
+ "minimum": 0
1996
+ },
1997
+ "lte": {
1998
+ "type": "integer",
1999
+ "minimum": 0
2000
+ }
2001
+ },
2002
+ "additionalProperties": false
2003
+ },
2004
+ "time": {
2005
+ "type": "object",
2006
+ "properties": {
2007
+ "timezone": {
2008
+ "type": "string",
2009
+ "minLength": 1
2010
+ },
2011
+ "windows": {
2012
+ "type": "array",
2013
+ "items": {
2014
+ "type": "object",
2015
+ "properties": {
2016
+ "days": {
2017
+ "type": "array",
2018
+ "items": {
2019
+ "type": "string",
2020
+ "enum": [
2021
+ "monday",
2022
+ "tuesday",
2023
+ "wednesday",
2024
+ "thursday",
2025
+ "friday",
2026
+ "saturday",
2027
+ "sunday"
2028
+ ]
2029
+ },
2030
+ "minItems": 1
2031
+ },
2032
+ "start": {
2033
+ "type": "string",
2034
+ "pattern": "^([01]\\d|2[0-3]):[0-5]\\d$"
2035
+ },
2036
+ "end": {
2037
+ "type": "string",
2038
+ "pattern": "^(([01]\\d|2[0-3]):[0-5]\\d|24:00)$"
2039
+ }
2040
+ },
2041
+ "required": [
2042
+ "start",
2043
+ "end"
2044
+ ],
2045
+ "additionalProperties": false
2046
+ },
2047
+ "minItems": 1
2048
+ }
2049
+ },
2050
+ "required": [
2051
+ "timezone",
2052
+ "windows"
2053
+ ],
2054
+ "additionalProperties": false
2055
+ },
2056
+ "label": {
2057
+ "type": "string",
2058
+ "minLength": 1
2059
+ }
2060
+ },
2061
+ "required": [
2062
+ "type"
2063
+ ],
2064
+ "additionalProperties": false
2065
+ }
2066
+ ]
2067
+ }
2068
+ },
2069
+ "required": [
2070
+ "input",
2071
+ "output",
2072
+ "tier"
2073
+ ],
2074
+ "additionalProperties": false
2075
+ }
2076
+ }
2077
+ },
2078
+ "required": [
2079
+ "input",
2080
+ "output"
2081
+ ],
2082
+ "additionalProperties": false,
2083
+ "description": "Prices in CNY per million tokens."
2084
+ }
2085
+ },
2086
+ "required": [
2087
+ "id",
2088
+ "name",
2089
+ "description",
2090
+ "attachment",
2091
+ "release_date",
2092
+ "last_updated",
2093
+ "modalities",
2094
+ "open_weights",
2095
+ "limit"
2096
+ ],
2097
+ "additionalProperties": false
2098
+ },
2099
+ "Provider": {
2100
+ "type": "object",
2101
+ "properties": {
2102
+ "id": {
2103
+ "type": "string"
2104
+ },
2105
+ "env": {
2106
+ "type": "array",
2107
+ "items": {
2108
+ "type": "string"
2109
+ },
2110
+ "minItems": 1
2111
+ },
2112
+ "npm": {
2113
+ "type": "string",
2114
+ "minLength": 1
2115
+ },
2116
+ "protocol": {
2117
+ "type": "string",
2118
+ "enum": [
2119
+ "openai-compatible",
2120
+ "anthropic-compatible",
2121
+ "openai-responses"
2122
+ ],
2123
+ "description": "Default protocol used by this provider."
2124
+ },
2125
+ "api": {
2126
+ "type": "string",
2127
+ "description": "Base API URL for the default endpoint."
2128
+ },
2129
+ "endpoints": {
2130
+ "type": "array",
2131
+ "items": {
2132
+ "$ref": "#/definitions/ProviderEndpoint"
2133
+ },
2134
+ "minItems": 1,
2135
+ "description": "All protocol-specific endpoints exposed by this provider."
2136
+ },
2137
+ "name": {
2138
+ "type": "string",
2139
+ "minLength": 1
2140
+ },
2141
+ "plans_cn": {
2142
+ "type": "array",
2143
+ "items": {
2144
+ "type": "object",
2145
+ "properties": {
2146
+ "name": {
2147
+ "type": "string",
2148
+ "minLength": 1
2149
+ },
2150
+ "price_month": {
2151
+ "type": "number",
2152
+ "minimum": 0
2153
+ },
2154
+ "usage": {
2155
+ "type": "string",
2156
+ "minLength": 1
2157
+ },
2158
+ "quota_windows": {
2159
+ "type": "array",
2160
+ "items": {
2161
+ "type": "string",
2162
+ "minLength": 1
2163
+ }
2164
+ }
2165
+ },
2166
+ "required": [
2167
+ "name",
2168
+ "price_month"
2169
+ ],
2170
+ "additionalProperties": false
2171
+ },
2172
+ "description": "Subscription plans published for users in China."
2173
+ },
2174
+ "credits_cn": {
2175
+ "type": "object",
2176
+ "properties": {
2177
+ "points": {
2178
+ "type": "integer",
2179
+ "exclusiveMinimum": 0
2180
+ },
2181
+ "cny": {
2182
+ "type": "number",
2183
+ "exclusiveMinimum": 0
2184
+ },
2185
+ "valid_days": {
2186
+ "type": "integer",
2187
+ "exclusiveMinimum": 0
2188
+ }
2189
+ },
2190
+ "required": [
2191
+ "points",
2192
+ "cny"
2193
+ ],
2194
+ "additionalProperties": false
2195
+ },
2196
+ "doc": {
2197
+ "type": "string",
2198
+ "minLength": 1
2199
+ },
2200
+ "models": {
2201
+ "type": "object",
2202
+ "additionalProperties": {
2203
+ "$ref": "#/definitions/ProviderModel"
2204
+ }
2205
+ }
2206
+ },
2207
+ "required": [
2208
+ "id",
2209
+ "env",
2210
+ "npm",
2211
+ "protocol",
2212
+ "name",
2213
+ "doc",
2214
+ "models"
2215
+ ],
2216
+ "additionalProperties": false
2217
+ },
2218
+ "Models": {
2219
+ "type": "object",
2220
+ "additionalProperties": {
2221
+ "$ref": "#/definitions/ModelMetadata"
2222
+ }
2223
+ },
2224
+ "Providers": {
2225
+ "type": "object",
2226
+ "additionalProperties": {
2227
+ "$ref": "#/definitions/Provider"
2228
+ }
2229
+ },
2230
+ "ManifestFile": {
2231
+ "type": "object",
2232
+ "properties": {
2233
+ "sha256": {
2234
+ "type": "string",
2235
+ "pattern": "^[0-9a-f]{64}$"
2236
+ },
2237
+ "size": {
2238
+ "type": "integer",
2239
+ "minimum": 0
2240
+ }
2241
+ },
2242
+ "required": [
2243
+ "sha256",
2244
+ "size"
2245
+ ],
2246
+ "additionalProperties": false
2247
+ },
2248
+ "Manifest": {
2249
+ "type": "object",
2250
+ "properties": {
2251
+ "version": {
2252
+ "type": "string",
2253
+ "pattern": "^\\d+\\.\\d+\\.\\d+(?:-[0-9A-Za-z.-]+)?(?:\\+[0-9A-Za-z.-]+)?$"
2254
+ },
2255
+ "schema_version": {
2256
+ "type": "number",
2257
+ "const": 1
2258
+ },
2259
+ "generated_at": {
2260
+ "type": "string",
2261
+ "format": "date-time"
2262
+ },
2263
+ "source": {
2264
+ "type": "object",
2265
+ "properties": {
2266
+ "repository": {
2267
+ "type": "string",
2268
+ "format": "uri"
2269
+ },
2270
+ "revision": {
2271
+ "type": "string",
2272
+ "minLength": 1
2273
+ }
2274
+ },
2275
+ "required": [
2276
+ "repository",
2277
+ "revision"
2278
+ ],
2279
+ "additionalProperties": false
2280
+ },
2281
+ "files": {
2282
+ "type": "object",
2283
+ "properties": {
2284
+ "api.json": {
2285
+ "$ref": "#/definitions/ManifestFile"
2286
+ },
2287
+ "models.json": {
2288
+ "$ref": "#/definitions/ManifestFile"
2289
+ },
2290
+ "catalog.json": {
2291
+ "$ref": "#/definitions/ManifestFile"
2292
+ },
2293
+ "schema.json": {
2294
+ "$ref": "#/definitions/ManifestFile"
2295
+ }
2296
+ },
2297
+ "required": [
2298
+ "api.json",
2299
+ "models.json",
2300
+ "catalog.json",
2301
+ "schema.json"
2302
+ ],
2303
+ "additionalProperties": false
2304
+ }
2305
+ },
2306
+ "required": [
2307
+ "version",
2308
+ "schema_version",
2309
+ "generated_at",
2310
+ "source",
2311
+ "files"
2312
+ ],
2313
+ "additionalProperties": false
2314
+ },
2315
+ "Catalog": {
2316
+ "type": "object",
2317
+ "properties": {
2318
+ "models": {
2319
+ "$ref": "#/definitions/Models"
2320
+ },
2321
+ "providers": {
2322
+ "$ref": "#/definitions/Providers"
2323
+ }
2324
+ },
2325
+ "required": [
2326
+ "models",
2327
+ "providers"
2328
+ ],
2329
+ "additionalProperties": false
2330
+ }
2331
+ }
2332
+ }