GoodInbound

Bookings and Forms

All routes here need a project API key: Authorization: Bearer gi_live_.... See Authentication.

Bookings#

Read bookings created by visitors and confirm, decline, or cancel them.

Method Path Description
GET /api/projects/:projectId/bookings List project bookings.
GET /api/projects/:projectId/bookings/:bookingId Get a booking.
PATCH /api/projects/:projectId/bookings/:bookingId/cancel Cancel a booking and optionally record a reason.
PATCH /api/projects/:projectId/bookings/:bookingId/confirm Confirm a pending booking.
PATCH /api/projects/:projectId/bookings/:bookingId/decline Decline a pending booking.
GET /api/projects/:projectId/bookings/:bookingId/form-response Get the intake form response attached to a booking.
  • Confirming and cancelling may update Google Calendar and send email.
  • Cancel accepts an optional reason. Decline accepts an optional reason and notify flag; confirm takes no body.
  • Creating bookings is covered in the Booking API.

Forms and responses#

Manage forms, their pages and fields, submitted responses, private response files, and the inbox.

Method Path Description
GET /api/projects/:projectId/forms List forms.
POST /api/projects/:projectId/forms Create a form.
GET /api/projects/:projectId/forms/:formId Get a form with its structure.
PUT /api/projects/:projectId/forms/:formId Update a form.
DELETE /api/projects/:projectId/forms/:formId Delete a form.
GET /api/projects/:projectId/forms/:formId/steps List form steps.
POST /api/projects/:projectId/forms/:formId/steps Create a form step.
PUT /api/projects/:projectId/forms/:formId/steps/:stepId Update a form step.
DELETE /api/projects/:projectId/forms/:formId/steps/:stepId Delete a form step.
PUT /api/projects/:projectId/forms/:formId/steps/reorder Reorder form steps.
GET /api/projects/:projectId/forms/:formId/fields List form fields.
POST /api/projects/:projectId/forms/:formId/fields Create a form field.
PUT /api/projects/:projectId/forms/:formId/fields/:fieldId Update a form field.
DELETE /api/projects/:projectId/forms/:formId/fields/:fieldId Delete a form field.
PUT /api/projects/:projectId/forms/:formId/fields/reorder Reorder form fields.
GET /api/projects/:projectId/forms/:formId/responses List a form's responses.
GET /api/projects/:projectId/forms/:formId/responses/:responseId Get a form response.
GET /api/projects/:projectId/forms/:formId/responses/:responseId/files/:valueId Download a private response file.
GET /api/v1/forms/:projectSlug/:formSlug/responses/:responseId/files/:valueId Download a private response file by project and form slug.
DELETE /api/projects/:projectId/form-responses/:responseId Delete a form response.
GET /api/projects/:projectId/responses List responses across every form, newest first, including unfinished ones.
GET /api/projects/:projectId/inbox List the inbox.
POST /api/projects/:projectId/inbox/:kind/:id/done Mark an inbox item handled.
PATCH /api/projects/:projectId/form-responses/:responseId/label Re-label a submission.
  • Reorder endpoints take the complete ordered list of IDs.
  • Each form step is one page. Keep settings.pageLayout on the step settings and settings.transition on the form settings.
  • Forms return name, slug, type, status, and settings. Steps contain display and visibility data. Fields contain type, label, settings, options, contact mapping, and visibility.
  • Deleting a response removes its stored values and its files.

All responses. GET /responses filters by formId and pages with limit and offset. It returns { responses, hasMore }, and each response includes formName and values.

Inbox. GET /inbox with view=review (the default) returns leads and booking requests nobody has handled yet; view=screened returns pitches and spam. Filter with formId. Each item has a kind (submission or booking) and booking details when present. Returns { items, counts: { review, screened } }. POST /inbox/:kind/:id/done removes an item from the review list; confirming or declining a booking does this automatically.

Re-labeling. PATCH /form-responses/:responseId/label sets the label to lead, review, spam, junk, or bot, and the submission leaves the review list. Marking it a lead creates the contact and runs workflows. Marking it spam, junk, or bot deletes the contact the submission created when nothing else is attached to it (notes, next action, tags, bookings, or other submissions); the response reports contactRemoved.