Skip to main content

Working with BLOBs

BLOB (Binary Large Object) properties store binary data like file uploads. Use them for images, documents, or any file type.

Requirements

To upload a BLOB:

  • The item must already exist
  • The target field must be defined as a BLOB type in your schema
  • Use POST with Content-Type: multipart/form-data
  • The form field must be named file

URL Format

https://<region>.restapi.com/<api-name>/<collection>/<item-id>/<blob-field>

Example:

https://eu.restapi.com/my-api/products/abc-123/image

For hosted web apps:

https://my-app.restapi.cloud/api/products/abc-123/image

Upload Examples

Using fetch

const formData = new FormData();
formData.append('file', fileInput.files[0]);

const response = await fetch(
'https://eu.restapi.com/my-api/products/abc-123/image',
{
method: 'POST',
headers: {
'Authorization': `Bearer ${token}`,
},
body: formData,
}
);

Using axios

const formData = new FormData();
formData.append('file', file);

await axios.post(
'https://eu.restapi.com/my-api/products/abc-123/image',
formData,
{
headers: {
'Authorization': `Bearer ${token}`,
'Content-Type': 'multipart/form-data',
},
}
);

Using curl

curl -X POST \
-H "Authorization: Bearer $TOKEN" \
-F "file=@/path/to/image.png" \
https://eu.restapi.com/my-api/products/abc-123/image

Using an HTML Form

<form action="https://eu.restapi.com/my-api/products/abc-123/image"
method="POST"
enctype="multipart/form-data">
<input type="file" name="file" />
<button type="submit">Upload</button>
</form>

Response Codes

CodeDescription
200 OKUpload successful
400 Bad RequestInvalid request or field is not a BLOB type
404 Not FoundItem doesn't exist

Retrieving BLOBs

BLOB data is returned when you GET the item. The response includes the binary data or a URL to access it, depending on your API configuration.

Best Practices

  • Validate file types on the client before uploading
  • Set size limits appropriate for your use case
  • Use appropriate BLOB fields — don't store large files in regular string fields
  • Consider CDN caching for frequently accessed files