> ## Documentation Index
> Fetch the complete documentation index at: https://docs.markpdf.tech/llms.txt
> Use this file to discover all available pages before exploring further.

# Referencia

> Proveedor, ganchos y tipos @markpdf/react.

\#Referencia

## `<MarkpdfProvider>`

```tsx theme={null}
import { MarkpdfProvider } from "@markpdf/react";

<MarkpdfProvider apiKey="YOUR_API_KEY" baseUrl="https://api.markpdf.tech">
  {children}
</MarkpdfProvider>
```

<ParamField body="apiKey" type="string" required>
  Tu tecla API. Se pasa tal cual a `new MarkpdfClient()`.
</ParamField>

<ParamField body="baseUrl" type="string" default="https://api.markpdf.tech">
  URL base de API.
</ParamField>

<ParamField body="children" type="ReactNode" required>
  Árbol de componentes con acceso al cliente mediante `useMarkpdf()`/`useConvertFile()`.
</ParamField>

El cliente se memoriza con `useMemo` según `apiKey`/`baseUrl`, por lo que no se recrea en cada renderizado.

## `useMarkpdf()`

```ts theme={null}
function useMarkpdf(): MarkpdfClient
```

Devuelve el recurso compartido `MarkpdfClient` creado por `MarkpdfProvider`. Lanza un `Error` si se llama fuera de un `<MarkpdfProvider>`. Expone todos los métodos documentados en la [referencia de Node.js/TypeScript SDK](/docs/public/es/sdks/nodejs/reference): `convertFile`, `convertFromUrl`, `convertStream`, `pdfIndex`, `getJob`.

## `useConvertFile()`

```ts theme={null}
function useConvertFile(): {
  convert: (file: File, options?: ConvertOptions) => Promise<ConvertResult | undefined>;
  reset: () => void;
  status: "idle" | "uploading" | "converting" | "success" | "error";
  progress: number;      // 0-100, solo vávavalid durante "uploading"
  markdown: string | null;
  json: JsonResult | null;
  error: MarkpdfError | null;
}
```

Enganche para cargar un `File`/`Blob` con progreso, respaldado por `XMLHttpRequest` contra `POST /convert` (multiparte). Debe usarse dentro de `<MarkpdfProvider>`.

### `convert(file, options)`

<ParamField body="file" type="File" required>
  Archivo seleccionado por el usuario (de `<input type=\"file\">`, arrastrar y soltar, etc.).
</ParamField>

<ParamField body="options" type="ConvertOptions" />

Devuelve una promesa que se resuelve en Markdown (`string`) o el objeto `JsonResult` (si `responseFormat: "json"`).

### `status` máquina de estado

| Estado         | SIGNIFICADO                                               |
| -------------- | --------------------------------------------------------- |
| `"idle"`       | No hay conversión en curso.                               |
| `"uploading"`  | Subiendo el archivo; `progress` está actualizado.         |
| `"converting"` | Carga completa (100%), el servidor está procesando.       |
| `"success"`    | Conversión completa; `markdown` o `json` están completos. |
| `"error"`      | Fallido; `error` está lleno.                              |

### `reset()`

Devuelve el estado a `"idle"` y borra `markdown`, `json` y `error`. Útil para permitir una nueva carga sin desmontar el componente.

## Tipos

`@markpdf/react` reexporta los tipos relevantes de `@markpdf/sdk`:

```ts theme={null}
import type { ConvertOptions, ConvertResult, JsonResult } from "@markpdf/sdk";
import type { UseConvertFileResult, UseConvertFileState, ConvertStatus } from "@markpdf/react";
```

Consulte [tipos base SDK completos](/docs/public/es/sdks/nodejs/reference#tipos) para `JsonResult` y `JobStatus`.
