Managing Forms

A form moves through three statuses. Only an ACTIVE form accepts submissions.

DRAFT ──publish──▶ ACTIVE ──archive──▶ ARCHIVED
StatusAccepts submissionsAnswers retrievable
DRAFTnono
ACTIVEyesyes
ARCHIVEDnoyes

List forms

curl -X GET "https://app.penneo.com/collect/api/v1/forms?limit=10&offset=0" \
  -H "Authorization: Bearer YOUR_TOKEN"

Returns a paginated list. Query parameters: limit (default 10, max 100), offset (default 0), status (DRAFT, ACTIVE, or ARCHIVED), orderBy, and orderDir (ASC or DESC).

Create a form

curl -X POST https://app.penneo.com/collect/api/v1/forms \
  -H "Authorization: Bearer YOUR_TOKEN" \
  -H "Content-Type: application/json" \
  -d @your-form.json

Creates the form in DRAFT. See Forms for the body.

Publish a draft

curl -X POST https://app.penneo.com/collect/api/v1/forms/{externalId}/publish \
  -H "Authorization: Bearer YOUR_TOKEN"

Moves the form to ACTIVE.

Update a form

curl -X PUT https://app.penneo.com/collect/api/v1/forms/{externalId} \
  -H "Authorization: Bearer YOUR_TOKEN" \
  -H "Content-Type: application/json" \
  -d @updated-form.json

Updating an ACTIVE form creates a new DRAFT version. Add ?publish=true to publish the update immediately.

Archive a form

curl -X POST https://app.penneo.com/collect/api/v1/forms/{externalId}/archive \
  -H "Authorization: Bearer YOUR_TOKEN"

An archived form no longer accepts submissions, but its existing answers stay retrievable. See Submissions.