Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
"main": "dist/client.js",
"author": "Tanmay Patil <Tanmay@modelslab.com>",
"license": "MIT",
"version": "1.3.0",
"version": "1.4.0",
"repository": {
"type": "git",
"url": "git+https://github.com/ModelsLab/modelslab-js.git"
Expand Down
1 change: 1 addition & 0 deletions src/apis/base.ts
Original file line number Diff line number Diff line change
Expand Up @@ -34,6 +34,7 @@ export class BaseAPI {
headers: {
Authorization: `Bearer ${this.key}`,
"Content-Type": "application/json",
"X-Requested-With": "modelslab-js",
},
});
return response.data;
Expand Down
12 changes: 12 additions & 0 deletions src/apis/community.ts
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,8 @@ import {
Inpainting,
ControlNet,
QwenText2Image,
ZImageTurbo,
Flux2Dev,
} from "../schemas/community";

export class Community extends BaseAPI {
Expand Down Expand Up @@ -41,4 +43,14 @@ export class Community extends BaseAPI {
}
return this.post("https://modelslab.com/api/v1/enterprise/qwen/text2img", schema);
}

async zImageTurbo(schema: ZImageTurbo) {
const data = { ...schema, model_id: "z-image-turbo" };
return this.post(this.baseUrl + "text2img", data);
}

async flux2Dev(schema: Flux2Dev) {
const data = { ...schema, model_id: "flux-2-dev" };
return this.post(this.baseUrl + "text2img", data);
}
}
3 changes: 3 additions & 0 deletions src/client.ts
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,9 @@ export { Audio } from "./apis/audio";
export { ImageEditing } from "./apis/image_editing";
export { Video } from "./apis/video";

// Export providers
export * from "./providers";

// Export schemas
export * from "./schemas/base";
export * from "./schemas/community";
Expand Down
44 changes: 44 additions & 0 deletions src/providers/alibaba/api.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,44 @@
import { BaseAPI } from "../../apis/base";
import { Client } from "../../client";
import { Wan25I2VSchema, Wan25T2VSchema } from "./schemas";

export class AlibabaProvider extends BaseAPI {
static readonly MODEL_WAN25_I2V = "wan2.5-i2v";
static readonly MODEL_WAN25_T2V = "wan2.5-t2v";

constructor(client: Client) {
super({
key: client.key,
baseUrl: client.baseUrl,
fetchRetry: client.fetchRetry,
fetchTimeout: client.fetchTimeout,
});
}

static getModelIds() {
return {
wan25_i2v: AlibabaProvider.MODEL_WAN25_I2V,
wan25_t2v: AlibabaProvider.MODEL_WAN25_T2V,
};
}

async wan25I2V(schema: Wan25I2VSchema) {
const endpoint = this.baseUrl + "v7/video-fusion/image-to-video";
const data = {
key: this.key,
model_id: schema.model_id || AlibabaProvider.MODEL_WAN25_I2V,
...schema,
};
return this.post(endpoint, data);
}

async wan25T2V(schema: Wan25T2VSchema) {
const endpoint = this.baseUrl + "v7/video-fusion/text-to-video";
const data = {
key: this.key,
model_id: schema.model_id || AlibabaProvider.MODEL_WAN25_T2V,
...schema,
};
return this.post(endpoint, data);
}
}
2 changes: 2 additions & 0 deletions src/providers/alibaba/index.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
export * from "./api";
export * from "./schemas";
14 changes: 14 additions & 0 deletions src/providers/alibaba/schemas.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
export interface Wan25I2VSchema {
model_id?: string;
init_image: string;
init_audio: string;
prompt: string;
}

export interface Wan25T2VSchema {
model_id?: string;
prompt: string;
init_audio: string;
enhance_prompt?: boolean;
generate_audio?: boolean;
}
97 changes: 97 additions & 0 deletions src/providers/bfl/api.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,97 @@
import { BaseAPI } from "../../apis/base";
import { Client } from "../../client";
import {
FluxPro1752000026Schema,
FluxPro11Schema,
FluxPro11UltraSchema,
FluxKontextProSchema,
Flux2ProSchema,
Flux2ProImageEditingSchema,
} from "./schemas";

export class BFLProvider extends BaseAPI {
static readonly MODEL_FLUX_PRO_1752000026 = "flux-pro-1752000026";
static readonly MODEL_FLUX_PRO_11 = "flux-pro-1.1";
static readonly MODEL_FLUX_PRO_11_ULTRA = "flux-pro-1.1-ultra";
static readonly MODEL_FLUX_KONTEXT_PRO = "flux-kontext-pro";
static readonly MODEL_FLUX_2_PRO = "flux-2-pro";

constructor(client: Client) {
super({
key: client.key,
baseUrl: client.baseUrl,
fetchRetry: client.fetchRetry,
fetchTimeout: client.fetchTimeout,
});
}

static getModelIds() {
return {
flux_pro_1752000026: BFLProvider.MODEL_FLUX_PRO_1752000026,
flux_pro_11: BFLProvider.MODEL_FLUX_PRO_11,
flux_pro_11_ultra: BFLProvider.MODEL_FLUX_PRO_11_ULTRA,
flux_kontext_pro: BFLProvider.MODEL_FLUX_KONTEXT_PRO,
flux_2_pro: BFLProvider.MODEL_FLUX_2_PRO,
};
}

async fluxPro1752000026(schema: FluxPro1752000026Schema) {
const endpoint = this.baseUrl + "v6/images/text2img";
const data = {
key: this.key,
model_id: schema.model_id || BFLProvider.MODEL_FLUX_PRO_1752000026,
...schema,
};
return this.post(endpoint, data);
}

async fluxPro11(schema: FluxPro11Schema) {
const endpoint = this.baseUrl + "v6/images/text2img";
const data = {
key: this.key,
model_id: schema.model_id || BFLProvider.MODEL_FLUX_PRO_11,
...schema,
};
return this.post(endpoint, data);
}

async fluxPro11Ultra(schema: FluxPro11UltraSchema) {
const endpoint = this.baseUrl + "v6/images/text2img";
const data = {
key: this.key,
model_id: schema.model_id || BFLProvider.MODEL_FLUX_PRO_11_ULTRA,
...schema,
};
return this.post(endpoint, data);
}

async fluxKontextPro(schema: FluxKontextProSchema) {
const endpoint = this.baseUrl + "v7/images/image-to-image";
const data = {
key: this.key,
model_id: schema.model_id || BFLProvider.MODEL_FLUX_KONTEXT_PRO,
...schema,
};
return this.post(endpoint, data);
}

async flux2Pro(schema: Flux2ProSchema) {
const endpoint = this.baseUrl + "v7/images/text-to-image";
const data = {
key: this.key,
model_id: schema.model_id || BFLProvider.MODEL_FLUX_2_PRO,
...schema,
};
return this.post(endpoint, data);
}

async flux2ProImageEditing(schema: Flux2ProImageEditingSchema) {
const endpoint = this.baseUrl + "v7/images/image-to-image";
const data = {
key: this.key,
model_id: schema.model_id || BFLProvider.MODEL_FLUX_2_PRO,
...schema,
};
return this.post(endpoint, data);
}
}
2 changes: 2 additions & 0 deletions src/providers/bfl/index.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
export * from "./api";
export * from "./schemas";
51 changes: 51 additions & 0 deletions src/providers/bfl/schemas.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,51 @@
export interface FluxPro1752000026Schema {
model_id?: string;
prompt: string;
lora_model?: string;
width: number;
height: number;
negative_prompt?: string;
scheduler?: string;
guidance_scale?: number;
}

export interface FluxPro11Schema {
model_id?: string;
prompt: string;
width?: number;
height?: number;
samples?: number;
}

export interface FluxPro11UltraSchema {
model_id?: string;
prompt: string;
aspect_ratio?: string;
output_format?: string;
}

export interface FluxKontextProSchema {
model_id?: string;
prompt: string;
init_image: string;
aspect_ratio?: string;
output_format?: string;
}

export interface Flux2ProSchema {
model_id?: string;
prompt: string;
width?: number;
height?: number;
samples?: number;
guidance_scale?: number;
}

export interface Flux2ProImageEditingSchema {
model_id?: string;
prompt: string;
init_image: string;
width?: number;
height?: number;
guidance_scale?: number;
}
Loading