> ## 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.

# Supabase Storage

> Use signed Supabase URLs as input.

# Supabase Storage

Flujo recomendado:

1. The user uploads PDF to Supabase Storage.
2. Your backend creates a short signed URL.
3. Llamas a `/convert/from-url`.
4. Recibes Markdown.

```ts theme={null}
const { data, error } = await supabase.storage
  .from("documents")
  .createSignedUrl("user-123/report.pdf", 60);

if (error) throw error;

const md = await fetch("https://api.markpdf.tech/convert/from-url", {
  method: "POST",
  headers: {
    "x-api-key": process.env.FLASH_MD_API_KEY!,
    "content-type": "application/json"
  },
  body: JSON.stringify({
    url: data.signedUrl,
    filename: "report.pdf",
    mode: "fast"
  })
}).then((r) => r.text());
```

You don't need API to cache. Supabase acts as user storage.
