Getting Started
This page walks through the full loop once: authenticate, create a form, publish it, share it, and read the answers back.
Authenticate
Every request needs a JWT passed in the Authorization header:
Authorization: Bearer <token>
See the Authentication Guide for how to obtain a token.
1. Create a form
Forms are created with POST /v1/forms and start in DRAFT status.
curl -X POST https://app.penneo.com/collect/api/v1/forms \
-H "Authorization: Bearer YOUR_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"name": "Contact Information",
"language": "EN",
"description": "Please provide your contact information",
"sections": [
{
"title": "Your Details",
"fields": [
{ "type": "TEXT", "label": "Full Name", "required": true, "mapTo": "primarySigner.name" },
{ "type": "EMAIL", "label": "Email Address", "required": true, "mapTo": "primarySigner.email" },
{ "type": "PHONE", "label": "Phone Number", "required": true, "countryCodes": ["DK", "NO", "SE"] }
]
}
]
}'The response includes the form's externalId. Keep it; you need it for every other operation on the form.
mapTo on the name and email fields tells Collect to use those answers to identify the person signing, so the respondent doesn't type their details twice. See Signers.
2. Publish it
A DRAFT form can't take submissions. Publish it to make it ACTIVE:
curl -X POST https://app.penneo.com/collect/api/v1/forms/{externalId}/publish \
-H "Authorization: Bearer YOUR_TOKEN"3. Share it
Send the respondent the form's public URL, or create a prefilled request so the form is already partially or fully filled in for them.
4. Retrieve the answers
List the form's submissions, then fetch the answers for one by its submissionId:
curl -X GET "https://app.penneo.com/collect/api/v1/forms/{externalId}/submissions" \
-H "Authorization: Bearer YOUR_TOKEN"
curl -X GET "https://app.penneo.com/collect/api/v1/forms/{externalId}/submissions/{submissionId}/answers" \
-H "Authorization: Bearer YOUR_TOKEN"See Submissions for every way to retrieve answers and the full response shape.
Next
- Learn what forms can contain: Forms.
- Manage the DRAFT → ACTIVE → ARCHIVED lifecycle: Managing Forms.
Updated 3 days ago
