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:
Get a real key from the dashboard, or try without signup using the anonymous sandbox.
Python¶
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¶
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¶
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¶
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¶
- Try a single file or batch on the home page with copy-paste snippets in every language.
- Browse the full API reference for every endpoint and response shape.