Submit check-in
Creates a person from a public check-in form.
POST /group-shoot
Creates a person from a public check-in form.
This endpoint is public and does not require an API key.
Email is required by the current check-in handler. If email is missing, the response is email_required.
If the selected package requires payment, the handler creates a payment reservation and returns a Stripe checkoutUrl instead of finalizing the person immediately.
Copied
{
"action": "submitCheckin",
"token": "iURWUkHo",
"name": "Max Mustermann",
"email": "max@example.com",
"employeeId": "EMP-001",
"shootingDayId": "day-abc123",
"selectedPackageId": "pkg-xyz456",
"termsAccepted": true,
"selfieBase64": "data:image/jpeg;base64,/9j/4AAQSkZJRgABAQ..."
}Copied
curl -X POST "https://api.exportlab.io/v1/group-shoot" \
-H "Content-Type: application/json" \
-H "X-Tenant-Slug: YOUR_TENANT" \
-d '{
"action": "submitCheckin",
"token": "iURWUkHo",
"name": "Max Mustermann",
"email": "max@example.com",
"employeeId": "EMP-001"
}'Copied
{
"ok": true,
"personId": "mZTZBszq",
"code": "LWR7",
"name": "Max Mustermann",
"requestId": "b4ad3a02-..."
}| Field | Type | Required | Description |
|---|---|---|---|
| action | string | Yes | Must be submitCheckin |
| token | string | Yes | Gallery token |
| name | string | Yes | Full name (1–200 chars) |
| string | Yes | Email address (max 200 chars) | |
| employeeId | string | No | HR system employee ID (max 100 chars) |
| phone | string | No | Phone number (max 50 chars) |
| department | string | No | Department or team (max 100 chars) |
| notes | string | No | Participant notes (max 1000 chars) |
| customFields | object | No | Values for enabled custom-* form fields |
| consentGiven | boolean | Conditional | Required when consent is enabled for the gallery |
| faceConsent | boolean | No | Granular face consent when enabled |
| notificationConsent | boolean | No | Granular notification consent when enabled |
| hrExportConsent | boolean | No | Granular HR export consent when enabled |
| shootingDayId | string | No | Selected shooting day ID |
| selectedPackageId | string | No | Selected package ID |
| orderNotes | string | No | Notes for the package order (max 1000 chars) |
| termsAccepted | boolean | Conditional | Required when the selected package requires payment |
| selfieBase64 | string | No | Base64-encoded JPEG. Accepts full data URI or raw base64 |
| Paid package response field | Type | Description |
|---|---|---|
| orderId | string | Payment reservation/order ID |
| checkoutUrl | string | Stripe Checkout URL. Redirect the participant here |
| statusToken | string | Opaque token used after successful checkout to poll status |
| retryToken | string | Opaque token used after a cancelled checkout to retry |
| packageName | string | Selected package name |