Get a presigned upload URL for an opt-in proof screenshot
Mint a short-lived (5 minute) presigned S3 PUT URL for one opt-in proof image. Accepts image/png, image/jpeg, or image/webp, up to 5 MB.
The image is served only through signed CloudFront URLs, never a public one — store the returned key (in TfvBusinessProfile.optIn.images, as { kind: "upload", key }), not a URL. previewUrl is a 1-hour signed URL for showing the just-uploaded image as a thumbnail; submission itself signs its own 90-day URL from the key at submit/resubmit time. See the PR that added this endpoint for why: Bandwidth's review can run for weeks, longer than any URL signed with the service's own short-lived credentials should stay valid, so a fixed key plus signing on demand is what keeps both the security posture and the review window intact.
Authorization
bearerAuth A Tandem bearer token. Requests are scoped to the organization the token belongs to; no organization header is required.
In: header
Request Body
application/json
TypeScript Definitions
Use the request body type in TypeScript.
Response Body
application/json
application/json
application/json
curl -X POST "https://example.com/v1/sms-registration/opt-in-images" \ -H "Content-Type: application/json" \ -d '{ "contentType": "image/png", "contentLength": 5242880 }'{ "url": "string", "key": "string", "previewUrl": "string"}{ "error": { "code": "string", "message": "string" }}{ "error": { "code": "string", "message": "string" }}