Learn how to process documents with the VLM Run Node.js SDK
document
// Upload a document const file = await client.files.upload({ filePath: "path/to/invoice.pdf", }); // Process a document using file ID const response = await client.document.generate({ fileId: file.id, model: "vlm-1", domain: "document.invoice", }); console.log(response); // Process a document using URL const documentUrl = "https://storage.googleapis.com/vlm-data-public-prod/hub/examples/document.invoice/google_invoice.pdf"; const urlResponse = await client.document.generate({ url: documentUrl, model: "vlm-1", domain: "document.invoice", }); console.log(urlResponse);
import { z } from "zod"; const schema = z.object({ invoice_id: z.string(), total: z.number(), sub_total: z.number(), tax: z.number(), items: z.array( z.object({ name: z.string(), quantity: z.number(), price: z.number(), total: z.number(), }) ), }); const apiResponse = await client.document.generate({ url: documentUrl, domain: "document.invoice", config: { responseModel: schema }, }); const response = apiResponse.response as z.infer<typeof schema>; console.log(response);
const usage = response.usage; console.log(usage);
interface FilePredictionParams extends PredictionGenerateParams { batch?: boolean; fileId?: string; url?: string; } interface CreditUsage { elements_processed?: number; element_type?: "image" | "page" | "video" | "audio"; credits_used?: number; }
try { const response = await client.document.generate({ url: "invalid-url", model: "vlm-1", }); } catch (error) { if (error instanceof ApiError) { console.error("API Error:", error.message); // Handle API-specific errors } else { console.error("File system error:", error); // Handle local file system errors } }