REST API
Temporary uploads
Upload files safely with a presigned URL before attaching them to prompt workflows.
Verified against the implementation ·
Three-step upload flow
- 1
Create the upload
POST /uploads with scope, filename, contentType, and size. PrompTessor returns a temporary presigned upload target.
- 2
Send the bytes
Upload the exact file bytes and content type to the returned storage URL. Do not send the PrompTessor Authorization header to the storage host.
- 3
Complete the upload
POST /uploads/{id}/complete so PrompTessor verifies the object. Then pass the returned asset ID in attachmentIds or uploadId.
curl -X POST https://api.promptessor.com/v1/uploads \
-H "Authorization: Bearer pt_live_YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"scope": "analysis",
"filename": "brief.png",
"contentType": "image/png",
"size": 248012
}'Upload scopes and retention
| Scope | Accepted content types | Maximum size |
|---|---|---|
| analysis, refinement, feedback, generation | image/jpeg, image/png, image/webp, image/gif | 5 MB |
| reverse_image | image/jpeg, image/png, image/webp, image/gif | 5 MB |
| reverse_video | video/mp4, video/quicktime, video/webm | 100 MB |
- Valid upload scopes: analysis, refinement, feedback, generation, reverse_image, and reverse_video.
- The presigned upload URL expires after 15 minutes.
- Temporary assets are retained for 24 hours.
- PrompTessor verifies both object metadata and the media file signature before marking an upload ready.
- Prompt workflows accept at most five attachment IDs.
- Consumed uploads become durable history attachments and cannot be deleted through the temporary-upload endpoint.
- Reverse-image processing deletes the asset on a best-effort basis after use.
Plan upload allowances
Pro allows 10 active uploads and 50 MB, Pro+ allows 25 and 250 MB, and Max allows 50 and 1 GB. Pending, uploaded, and processing assets count toward the allowance.
Reverse video currently uses frames
POST /reverse-prompts currently accepts 1–30 data:image/ frame strings plus frameCount and videoDuration. It does not accept a reverse_video upload ID. Do not create a video upload for that endpoint.