Post-Processing
Breeze Booth supports a post-processing webhook that allows an external script or API endpoint to receive the captured photo and associated session data immediately after a photo is taken.
The endpoint can return a modified image and/or structured data back to Breeze Booth for further processing — such as applying overlays, triggering email delivery, or populating caption fields.
This enables deep integration with third-party systems without modifying Breeze Booth itself.
In this Guide
Common use cases
- Fetching attendee registration data from an event platform
- Custom Image Processing
- Applying custom AI-generated effects
- Logging session data to an external database or CRM
How It Works
When a photo session completes, Breeze Booth sends an HTTP POST request to the configured webhook URL.
- The request is sent as multipart/form-data
- It includes the captured image and session fields
Your endpoint must:
- Process the incoming request
- Return a multipart response containing:
- A JSON metadata block
- The image file (original or modified)
Request Format
Breeze Booth sends a standard HTTP POST request with:
Content-Type: multipart/form-data
Standard POST Fields
| Field | Type | Description |
| fileToUpload | file | Captured JPEG image |
| eventkitesessionid | string | Unique session ID |
| eventkitegalleryid | string | Gallery ID |
| status | string | Session status |
| model | string | Camera model |
| name | string | Profile display name |
| username | string | Profile username |
| user_id | string | Internal user ID |
| profile | string | Active profile name |
| time | string | Capture timestamp |
| hash | string | Session integrity hash |
| version | string | Breeze Booth version |
| id | string | Session record ID |
Survey and QR Code Fields
If survey or QR fields are configured, they are included as additional POST fields.
Example:
surveyN_type_id = “user-entered-value”
{qr1} = “scanned-qr-value”
{qr2} = “second-qr-field”
Required Response Format
Your endpoint must return a multipart/form-data response with exactly two parts:
- JSON metadata
- Image file
Response Structure
Content-Type: multipart/form-data; boundary=your_boundary
--your_boundary
Content-Type: application/json
{"status":"success","captions":{"field1":"value1"},"autoemail":"user@example.com
"}
--your_boundary
Content-Type: image/jpeg
Content-Disposition: file; name="image"; filename="photo.jpg"
[binary image data]
--your_boundary--
JSON Metadata Fields
| Field | Type | Description |
| status | string | Required. Must be “success” |
| captions | object | Optional key/value pairs for templates |
| autoemail | string | Optional email address |
|
Captions Object
The captions object allows your script to inject values into the Breeze Booth session.
These can be used in layouts and overlays as template variables.
Example:
"captions": {
"first_name": "Jane",
"last_name": "Smith",
"membership_tier": "Gold",
"distinct_email": "jane@example.com
"
}
Auto Email
The autoemail field triggers automatic email delivery. Ensure you have email configured, the sharing screen enabled with an active “Email” share touch screen action (even if hidden).
Example:
{
"status": "success",
"captions": { "member_name": "Jane Smith" },
"autoemail": "jane@example.com
"
}
Complete Response Example
HTTP/1.1 200 OK
Content-Type: multipart/form-data; boundary=breeze_boundary_1234567890
--breeze_boundary_1234567890
Content-Type: application/json
{
"status": "success",
"captions": {
"first_name": "Jane",
"event_tier": "VIP",
"reg_email": "jane@example.com
"
},
"autoemail": "jane@example.com
"
}
--breeze_boundary_1234567890
Content-Type: image/jpeg
Content-Disposition: file; name="image"; filename="jane_1234567890.jpg"
[binary JPEG data]
--breeze_boundary_1234567890--
Error Handling
Return a JSON response with a non-200 HTTP status code:
HTTP/1.1 400 Bad Request
Content-Type: application/json
{
"status": "error",
"message": "Missing required field: qr1"
}
Recommended HTTP Status Codes
| Code | Meaning | Description |
| 200 | Success | Valid multipart response |
| 400 | Bad Request | Missing/invalid input |
| 401 | Unauthorised | Authentication failure |
| 500 | Server Error | Unexpected failure |
Image Handling
Image is received via fileToUpload
You may:
- ** Return it unchanged
- ** Modify it (overlays, crops, AI effects etc.)
The returned image replaces the original.
Content-Type Header Warning
Do not include Content-Type: application/json on GET requests to external APIs.
Some gateways will reject the request with a 403 Forbidden.
Field Name Case Sensitivity
POST field names are case-sensitive. Match names exactly. Include braces where required (e.g. {qr1})
Example Script
This sample PHP script demonstrates a simple post-processing webhook for Breeze Booth. It receives the captured photo from Breeze Booth, saves it to the server, applies a basic watermark, and returns the processed image as part of a valid multipart response.
Alongside the image, the script also returns a JSON metadata block containing captions — in this example, values such as {mood} and {hair_color}. These caption values are passed back into Breeze Booth and can be used as template variables in print layouts, overlays, filenames, or sharing workflows.
This provides a simple end-to-end example of how to:
- Receive and process an image from Breeze Booth
- Return a modified image
- Inject dynamic data back into the session using captions


Post your comment on this topic.