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. 1

    Create the upload

    POST /uploads with scope, filename, contentType, and size. PrompTessor returns a temporary presigned upload target.

  2. 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. 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

ScopeAccepted content typesMaximum size
analysis, refinement, feedback, generationimage/jpeg, image/png, image/webp, image/gif5 MB
reverse_imageimage/jpeg, image/png, image/webp, image/gif5 MB
reverse_videovideo/mp4, video/quicktime, video/webm100 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.