Fusion SDK Overview

oomol-fusion-sdk is the SDK for calling Fusion API.

It is integrated into OOMOL Studio by default. In most cases, you use it inside Studio to turn OOMOL-hosted capabilities into reusable blocks. You can also call the same SDK directly from your own Node.js or Python services.

When To Use It​

Use the Context API when your code needs to:

  • read block inputs
  • write outputs to downstream blocks
  • report progress
  • render preview data in Studio

Use the Fusion SDK when your code needs to:

  • call Fusion-hosted model and media capabilities
  • reuse Fusion task APIs such as submit -> state/result
  • call Fusion action APIs such as /action/{name}

The Main Path: Use It Inside Studio Blocks​

If you are building a Scriptlet Block or Task Block in Studio, this is the preferred pattern:

  1. Use the built-in Fusion SDK that comes with Studio.
  2. Read the OOMOL token from context.
  3. Read the Fusion base URL from context.
  4. Create a FusionClient and call the service shortcut you need.

TypeScript:

import type { Context } from "@oomol/types/oocana";
import { FusionClient } from "oomol-fusion-sdk";

type Inputs = { pdf_url: string };
type Outputs = { markdown: string };

export default async function (
params: Inputs,
context: Context<Inputs, Outputs>
): Promise<Outputs> {
const client = new FusionClient({
token: await context.getOomolToken(),
baseUrl: context.fusionApiUrl,
});

const markdown = await client.pdfTransformMarkdown.runData({
pdfURL: params.pdf_url,
});

return { markdown };
}

Python:

from oocana import Context
from oomol_fusion_sdk import FusionClient

async def main(params: dict, context: Context) -> dict:
client = FusionClient(
token=await context.oomol_token(),
base_url=context.fusion_api_url,
)

markdown = client.pdf_transform_markdown.run_data(
{
"pdfURL": params["pdf_url"],
}
)

return {"markdown": markdown}

This keeps auth on the OOMOL token flow and avoids asking end users for an extra third-party API key when Fusion already covers the capability.

In other words, for normal block authoring inside Studio, you usually do not need to install oomol-fusion-sdk manually first.

Direct SDK Usage Outside Studio​

You can also use the same SDK directly in your own app, backend, or script.

  • Node.js / TypeScript: initialize FusionClient({ apiKey }) or FusionClient({ token })
  • Python: initialize FusionClient(api_key=...) or FusionClient(token=...)

This mode is suitable when you are not running inside Studio and do not have a runtime context object. In this case, install the SDK as a normal dependency in your own project.

Two API Shapes​

Fusion SDK is designed around two stable interface shapes in Fusion API:

  • Task APIs: submit, state, result, wait, run, waitData, runData
  • Action APIs: grouped shortcuts such as client.jinaReader.read(...), or raw calls such as client.action("jina-reader/search", ...)

In most cases:

  • prefer runData() / run_data() for task APIs
  • prefer grouped action shortcuts for action APIs
  • use request(...) only when the backend already added a new endpoint but the SDK shortcut is not available yet