Skip to main content

Documentation Index

Fetch the complete documentation index at: https://docs.docex.dev/llms.txt

Use this file to discover all available pages before exploring further.

Next.js App Router

Scaffold a server-side vision analysis endpoint in a Next.js App Router application.

Prerequisites

  • Next.js 13+ with App Router
  • docexdev installed
  • DOCEX_API_KEY and DOCEX_BASE_URL configured

Route handler

Create app/api/analyze/route.js:
import { createDocex } from "docexdev";
import { NextResponse } from "next/server";

const docex = createDocex({
  apiKey: process.env.DOCEX_API_KEY,
  baseUrl: process.env.DOCEX_BASE_URL,
});

export async function POST(request) {
  const formData = await request.formData();
  const file = formData.get("file");
  const prompt = formData.get("prompt");

  if (!file || !prompt) {
    return NextResponse.json(
      { error: "file and prompt are required" },
      { status: 400 }
    );
  }

  const bytes = await file.arrayBuffer();

  const result = await docex.run({
    file: { fileName: file.name, data: new Uint8Array(bytes) },
    prompt,
  });

  return NextResponse.json(result);
}

Client component

"use client";

import { useState } from "react";

export default function AnalyzePage() {
  const [result, setResult] = useState(null);

  async function handleSubmit(e) {
    e.preventDefault();
    const formData = new FormData(e.target);

    const res = await fetch("/api/analyze", {
      method: "POST",
      body: formData,
    });

    const data = await res.json();
    setResult(data);
  }

  return (
    <form onSubmit={handleSubmit}>
      <input type="file" name="file" accept=".jpg,.jpeg,.png,.heic,.pdf" />
      <input type="text" name="prompt" placeholder="company name, number, expiry" />
      <button type="submit">Analyze</button>
      {result && <pre>{JSON.stringify(result, null, 2)}</pre>}
    </form>
  );
}

Environment variables

DOCEX_API_KEY=dx_live_...
DOCEX_BASE_URL=https://api.docex.dev
Never expose DOCEX_API_KEY to the browser. Always call Docex from server-side code.