API Reference
Upload
Upload images to Cloudinary via the MakePhotos API.
Upload
Two endpoints for uploading images: signed upload (recommended, no size limit) and direct upload (convenience, < 4.5MB).
GET /api/v1/upload/signed
Returns Cloudinary signed upload parameters. Use these to upload directly to Cloudinary from your server — no file size limit.
Request
curl "https://makephotos.ai/api/v1/upload/signed?key=mk_live_..."Response
{
"signature": "a1b2c3d4e5f6...",
"timestamp": 1710700000,
"api_key": "123456789",
"cloud_name": "dy2queuww",
"folder": "makephotos/inputs/user-uuid-here"
}Upload to Cloudinary
Use the returned params to upload directly:
curl -X POST "https://api.cloudinary.com/v1_1/dy2queuww/image/upload" \
-F "file=@./product.jpg" \
-F "api_key=123456789" \
-F "timestamp=1710700000" \
-F "signature=a1b2c3d4e5f6..." \
-F "folder=makephotos/inputs/user-uuid-here"The response contains a secure_url field — use this as the image_url in subsequent API calls.
POST /api/v1/upload
Convenience endpoint for small files (under 4.5MB due to Vercel serverless limits).
Request
curl -X POST "https://makephotos.ai/api/v1/upload?key=mk_live_..." \
-F "file=@./small-product.jpg"Response
{
"image_url": "https://res.cloudinary.com/.../makephotos/inputs/.../small-product.jpg"
}Which to use?
| Method | Size limit | Complexity | Recommended |
|---|---|---|---|
GET /upload/signed + Cloudinary POST | None | Two requests | Yes (the SDK uses this) |
POST /upload | ~4.5MB | One request | Only for small files |
No credits consumed
Uploading does not cost any credits.
Errors
| Status | Code | Description |
|---|---|---|
| 400 | invalid_params | Missing file field |
| 401 | invalid_api_key | Invalid or missing API key |
| 403 | no_active_subscription | No active subscription |