Sign Agreement
Record a signature taken on a connected device β a counter tablet, a kiosk, your own app. The signature image is stored, the priced snapshot is frozen, and the signed PDF is generated and kept on the booking.
POST /v1/bookings/{id}/agreement/sign
Authenticationβ
Requires a valid API key with agreements:write scope.
Path Parametersβ
| Parameter | Type | Description |
|---|---|---|
id | integer | Booking ID |
Request Bodyβ
| Field | Type | Required | Description |
|---|---|---|---|
signed_name | string | Yes | Full name of the person signing, max 190 characters |
signature | string | Yes | The signature image as a data:image/png;base64,β¦ URI (PNG, JPG, GIF or WEBP; max ~2 MB encoded) |
Request Exampleβ
curl -X POST "https://app.equipdash.com/api/v1/bookings/4821/agreement/sign" \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"signed_name": "Jane Doe",
"signature": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgβ¦"
}'
Responseβ
Returns 200 OK with the agreement resource β status is signed, and signed_via is api. The requesting IP is recorded as part of the signing log printed on the PDF.
{
"data": {
"booking_id": 4821,
"status": "signed",
"status_label": "Signed",
"signing_url": null,
"signed_at": "2026-08-14T09:20:11+00:00",
"signed_name": "Jane Doe",
"signed_ip": "203.0.113.10",
"signed_via": "api",
"...": "..."
},
"meta": {
"request_id": "req_abc123",
"timestamp": "2026-08-14T09:20:11+00:00"
}
}
Errorsβ
| Status | Code | When |
|---|---|---|
403 | agreements_disabled | The business has rental agreements switched off |
409 | agreement_not_applicable | The booking has no rental items, so it has no agreement |
404 | resource_not_found | No booking with that ID belongs to this API key's business |
422 | validation_error | signed_name or signature missing |
422 | agreement_sign_failed | Already signed, the name was blank, or the signature payload wasn't a usable image |
Signing is final
An agreement can only be signed once. Send the request twice and the second call returns 422 β the first signature stands.