Skip to content

Install an SDK

Pick your language. Every SDK speaks the same OpenAPI 3.1 surface, so you can switch later without changing your backend integration.

SDK Package Min runtime Style
Python kreuzberg-cloud-sdk 3.10 sync + async
TypeScript @kreuzberg/cloud Node 22 async
Go github.com/kreuzberg-dev/kreuzberg-cloud-sdk/go/v1 Go 1.26 sync (context.Context)
Dart kreuzberg_cloud_sdk Dart 3.8 async

All SDKs read your API key from an explicit constructor argument. Set it once in the environment:

export KREUZBERG_API_KEY="kc_live_..."

Get a real key from the dashboard, or try without signup using the anonymous sandbox.


Python

pip install kreuzberg-cloud-sdk
import os
from pathlib import Path
from kreuzberg_cloud import KreuzbergCloud

with KreuzbergCloud(api_key=os.environ["KREUZBERG_API_KEY"]) as client:
    job = client.extract_and_wait(file=Path("invoice.pdf"))
    print(job.result.content)

Need async? Swap KreuzbergCloud for AsyncKreuzbergCloud and await every call. Both classes expose the same method names.

TypeScript

pnpm add @kreuzberg/cloud

Or with npm / yarn / bun — same package.

import { KreuzbergCloud } from "@kreuzberg/cloud";
import { readFile } from "node:fs/promises";

const client = new KreuzbergCloud({ apiKey: process.env.KREUZBERG_API_KEY! });
const data = await readFile("invoice.pdf");
const result = await client.extractAndWait({
  file: { name: "invoice.pdf", data, mimeType: "application/pdf" },
});
console.log(result.result?.content);

Works in Node 20+, Bun, Deno, and Cloudflare Workers (ESM only).

Go

go get github.com/kreuzberg-dev/kreuzberg-cloud-sdk/go/v1
package main

import (
    "context"
    "fmt"
    "log"
    "os"

    kreuzbergcloud "github.com/kreuzberg-dev/kreuzberg-cloud-sdk/go/v1"
)

func main() {
    ctx := context.Background()
    client, err := kreuzbergcloud.New(
        kreuzbergcloud.WithAPIKey(os.Getenv("KREUZBERG_API_KEY")),
    )
    if err != nil {
        log.Fatal(err)
    }
    file, err := os.Open("invoice.pdf")
    if err != nil {
        log.Fatal(err)
    }
    defer file.Close()

    result, err := client.ExtractAndWait(
        ctx,
        kreuzbergcloud.FileSource{Name: "invoice.pdf", Reader: file},
        nil,
    )
    if err != nil {
        log.Fatal(err)
    }
    fmt.Println(result.Content)
}

Dart

dart pub add kreuzberg_cloud_sdk

Works in pure Dart and Flutter — no plugin code.

import 'dart:io';
import 'package:dio/dio.dart';
import 'package:kreuzberg_cloud_sdk/kreuzberg_cloud_sdk.dart';

Future<void> main() async {
  final client = KreuzbergCloudClient(
    apiKey: Platform.environment['KREUZBERG_API_KEY']!,
  );

  final accepted = await client.extractMultipart(
    files: [await MultipartFile.fromFile('invoice.pdf')],
  );
  final finished = await client.waitForJob(accepted.jobIds.first);

  print(finished.result?.content);
  client.close();
}

What's next