Skip to content

Storage API

Overview: The Storage API handles media file uploads, portfolio asset uploads, and social media image storage powered by Cloudflare R2 / Supabase Storage.


Key Capabilities

  • File Uploads: Upload images, portfolio screenshots, and document attachments up to 10MB.
  • Bucket Management: Automatically routing public assets (gig thumbnails, portfolio) and private user documents.
  • Presigned URLs: Secure public URL generation for immediate client rendering.

Authentication & Authorization

  • Authentication: Required via Bearer JWT token.
  • Quota / Limit Enforcement: Maximum 10MB per file payload. Allowed mime types: image/jpeg, image/png, image/webp, image/gif, application/pdf.

Endpoints

POST /api/storage/upload

Uploads a multipart form file or base64 image asset to object storage.

Authentication: Required

Request Format: multipart/form-data

Parameter Type Required Description
file binary Yes Target file payload
bucket string No Storage bucket (public-assets, media-library, portfolios). Default: media-library

Success Response (200 OK):

{
"success": true,
"data": {
"fileId": "98765432-abcd-ef01-2345-6789abcdef01",
"filename": "portfolio_thumbnail.png",
"url": "https://storage.gigpilot.ai/media-library/123e4567/portfolio_thumbnail.png",
"sizeBytes": 458200,
"mimeType": "image/png",
"created_at": "2026-07-30T02:14:00.000Z"
}
}

cURL Example:

Terminal window
curl -X POST https://api.gigpilot.ai/api/storage/upload \
-H "Authorization: Bearer YOUR_ACCESS_TOKEN" \
-F "file=@/path/to/image.png" \
-F "bucket=media-library"

Alias Routes (v1 API)

  • POST /api/v1/storage/upload