Back to Supermemory

File Upload

apps/docs/add-memories/examples/file-upload.mdx

latest4.0 KB
Original Source

Upload files directly to Supermemory for automatic content extraction and processing.

Upload a PDF

Extract text from PDFs with OCR support.

<CodeGroup>
typescript
const file = fs.createReadStream('document.pdf');

const response = await client.documents.uploadFile({
  file: file,
  containerTags: 'documents'
});

console.log(response.id);
// Output: pdf_123
python
with open('document.pdf', 'rb') as file:
    response = client.documents.upload_file(
        file=file,
        container_tags='documents'
    )

print(response['id'])
# Output: pdf_123
bash
curl -X POST "https://api.supermemory.ai/v3/documents/file" \
  -H "Authorization: Bearer $SUPERMEMORY_API_KEY" \
  -F "[email protected]" \
  -F "containerTags=documents"

# Response: {"id": "pdf_123", "status": "processing"}
</CodeGroup>

Upload Images with OCR

Extract text from images.

<CodeGroup>
typescript
const image = fs.createReadStream('screenshot.png');

await client.documents.uploadFile({
  file: image,
  containerTags: 'images'
});
python
with open('screenshot.png', 'rb') as file:
    client.documents.upload_file(
        file=file,
        container_tags='images'
    )
bash
curl -X POST "https://api.supermemory.ai/v3/documents/file" \
  -H "Authorization: Bearer $SUPERMEMORY_API_KEY" \
  -F "[email protected]" \
  -F "containerTags=images"
</CodeGroup>

Browser File Upload

Handle browser file uploads.

<CodeGroup>
javascript
const formData = new FormData();
formData.append('file', fileInput.files[0]);
formData.append('containerTags', 'uploads');

const response = await fetch('https://api.supermemory.ai/v3/documents/file', {
  method: 'POST',
  headers: {
    'Authorization': `Bearer ${API_KEY}`
  },
  body: formData
});

const result = await response.json();
console.log(result.id);
typescript
function handleUpload(file: File) {
  const formData = new FormData();
  formData.append('file', file);
  formData.append('containerTags', 'uploads');

  return fetch('https://api.supermemory.ai/v3/documents/file', {
    method: 'POST',
    headers: { 'Authorization': `Bearer ${API_KEY}` },
    body: formData
  });
}
bash
# Browser uploads use FormData, same as file upload
curl -X POST "https://api.supermemory.ai/v3/documents/file" \
  -H "Authorization: Bearer $SUPERMEMORY_API_KEY" \
  -F "[email protected]" \
  -F "containerTags=uploads"
</CodeGroup>

Upload Multiple Files

Batch upload with rate limiting.

<CodeGroup>
typescript
for (const file of files) {
  const stream = fs.createReadStream(file);

  await client.documents.uploadFile({
    file: stream,
    containerTags: 'batch'
  });

  // Rate limit
  await new Promise(r => setTimeout(r, 1000));
}
python
import time

for file_path in files:
    with open(file_path, 'rb') as file:
        client.documents.upload_file(
            file=file,
            container_tags='batch'
        )

    time.sleep(1)  # Rate limit
bash
# Upload each file separately with delays
for file in *.pdf; do
  curl -X POST "https://api.supermemory.ai/v3/documents/file" \
    -H "Authorization: Bearer $SUPERMEMORY_API_KEY" \
    -F "file=@$file" \
    -F "containerTags=batch"

  sleep 1  # Rate limit
done
</CodeGroup>

Supported File Types

Documents

FormatExtensionsProcessing
PDF.pdfText extraction, OCR for scanned pages
Microsoft Word.doc, .docxFull text and formatting extraction
Plain Text.txt, .mdDirect text processing
CSV.csvStructured data extraction

Images

FormatExtensionsProcessing
JPEG.jpg, .jpegOCR text extraction
PNG.pngOCR text extraction
GIF.gifOCR for static images
WebP.webpOCR text extraction

Size Limits

  • Maximum file size: 50MB
  • Recommended size: < 10MB for optimal processing
  • Large files: May take longer to process