Jotform API
Use the Jotform API via direct curl calls to manage forms, submissions, questions, webhooks, and account data.
Official docs:
https://api.jotform.com/docs/
When to Use
Use this skill when you need to:
- List and retrieve forms from a Jotform account
- Manage form submissions (list, create, update, delete)
- Read and modify form questions and properties
- Set up webhooks for form submission notifications
- Access user account info including usage, settings, and folders
Prerequisites
- Log in to your Jotform account
- Navigate to Settings > API
- Click Create New Key
- Copy your API Key
export JOTFORM_TOKEN="your-api-key"
API Base URLs
| Region | URL |
|--------|-----|
| Standard | https://api.jotform.com |
| EU | https://eu-api.jotform.com |
| HIPAA | https://hipaa-api.jotform.com |
All examples below use https://api.jotform.com. Replace with the appropriate regional URL if needed.
How to Use
All examples below assume you have JOTFORM_TOKEN set. Authentication uses the APIKEY header.
1. Get User Account Info
Retrieve information about the authenticated user.
curl -s "https://api.jotform.com/user" --header "APIKEY: $(printenv JOTFORM_TOKEN)" | jq .
2. Get Account Usage
Check API usage limits and current consumption.
curl -s "https://api.jotform.com/user/usage" --header "APIKEY: $(printenv JOTFORM_TOKEN)" | jq .
3. List All Forms
Retrieve all forms in the account. Supports pagination with limit and offset.
curl -s "https://api.jotform.com/user/forms?limit=20&offset=0" --header "APIKEY: $(printenv JOTFORM_TOKEN)" | jq '.content[] | {id, title, status, created_at}'
Filter forms by status:
curl -s "https://api.jotform.com/user/forms?limit=20&filter=%7B%22status%3Ane%22%3A%22DELETED%22%7D" --header "APIKEY: $(printenv JOTFORM_TOKEN)" | jq '.content[] | {id, title, status}'
4. Get Form Details
Retrieve details for a specific form. Replace FORM_ID with the actual form ID.
curl -s "https://api.jotform.com/form/FORM_ID" --header "APIKEY: $(printenv JOTFORM_TOKEN)" | jq .
5. Get Form Questions
List all questions (fields) in a form.
curl -s "https://api.jotform.com/form/FORM_ID/questions" --header "APIKEY: $(printenv JOTFORM_TOKEN)" | jq '.content'
Get a specific question by ID:
curl -s "https://api.jotform.com/form/FORM_ID/question/QUESTION_ID" --header "APIKEY: $(printenv JOTFORM_TOKEN)" | jq '.content'
6. List Form Submissions
Get submissions for a specific form. Supports limit, offset, orderby, and filter.
curl -s "https://api.jotform.com/form/FORM_ID/submissions?limit=20&offset=0&orderby=created_at" --header "APIKEY: $(printenv JOTFORM_TOKEN)" | jq '.content[] | {id, created_at, status}'
7. Get a Single Submission
Retrieve details for a specific submission.
curl -s "https://api.jotform.com/submission/SUBMISSION_ID" --header "APIKEY: $(printenv JOTFORM_TOKEN)" | jq '.content'
8. Create a Submission
Submit new data to a form. Field keys follow the format submission[QUESTION_ID].
curl -s -X POST "https://api.jotform.com/form/FORM_ID/submissions" --header "APIKEY: $(printenv JOTFORM_TOKEN)" -d "submission[1]=John" -d "submission[2]=Doe" -d "submission[3]=john@example.com" | jq .
9. Update a Submission
Edit an existing submission.
curl -s -X POST "https://api.jotform.com/submission/SUBMISSION_ID" --header "APIKEY: $(printenv JOTFORM_TOKEN)" -d "submission[1]=Jane" -d "submission[2]=Smith" | jq .
10. Delete a Submission
Delete a submission by ID.
curl -s -X DELETE "https://api.jotform.com/submission/SUBMISSION_ID" --header "APIKEY: $(printenv JOTFORM_TOKEN)" | jq .
11. Get Form Properties
Retrieve all properties of a form (title, colors, fonts, etc.).
curl -s "https://api.jotform.com/form/FORM_ID/properties" --header "APIKEY: $(printenv JOTFORM_TOKEN)" | jq '.content'
Get a specific property:
curl -s "https://api.jotform.com/form/FORM_ID/properties/PROPERTY_KEY" --header "APIKEY: $(printenv JOTFORM_TOKEN)" | jq '.content'
12. List Form Webhooks
Get all webhooks configured for a form.
curl -s "https://api.jotform.com/form/FORM_ID/webhooks" --header "APIKEY: $(printenv JOTFORM_TOKEN)" | jq '.content'
13. Create a Webhook
Add a webhook URL to receive form submission notifications.
curl -s -X POST "https://api.jotform.com/form/FORM_ID/webhooks" --header "APIKEY: $(printenv JOTFORM_TOKEN)" -d "webhookURL=https://example.com/webhook" | jq .
14. Delete a Webhook
Remove a webhook from a form.
curl -s -X DELETE "https://api.jotform.com/form/FORM_ID/webhooks/WEBHOOK_ID" --header "APIKEY: $(printenv JOTFORM_TOKEN)" | jq .
15. List Form Files
Get all files uploaded through a form.
curl -s "https://api.jotform.com/form/FORM_ID/files" --header "APIKEY: $(printenv JOTFORM_TOKEN)" | jq '.content'
16. Clone a Form
Create a copy of an existing form.
curl -s -X POST "https://api.jotform.com/form/FORM_ID/clone" --header "APIKEY: $(printenv JOTFORM_TOKEN)" | jq .
17. Delete a Form
Delete a form by ID.
curl -s -X DELETE "https://api.jotform.com/form/FORM_ID" --header "APIKEY: $(printenv JOTFORM_TOKEN)" | jq .
18. List User Folders
Get all folders in the account.
curl -s "https://api.jotform.com/user/folders" --header "APIKEY: $(printenv JOTFORM_TOKEN)" | jq '.content'
19. Get All User Submissions
Retrieve all submissions across all forms.
curl -s "https://api.jotform.com/user/submissions?limit=20&offset=0" --header "APIKEY: $(printenv JOTFORM_TOKEN)" | jq '.content[] | {id, form_id, created_at, status}'
20. Get Form Reports
List all reports for a form.
curl -s "https://api.jotform.com/form/FORM_ID/reports" --header "APIKEY: $(printenv JOTFORM_TOKEN)" | jq '.content'
Guidelines
- Authentication: Use the
APIKEYheader for all requests. Do not pass the API key as a URL parameter in production - Pagination: Use
limitandoffsetquery parameters to paginate large result sets. Default limit varies by endpoint - Filtering: Use the
filterquery parameter with URL-encoded JSON for advanced filtering (e.g.,filter={"status:ne":"DELETED"}) - Regional URLs: Use
eu-api.jotform.comfor EU accounts orhipaa-api.jotform.comfor HIPAA-compliant accounts - Submission field keys: When creating or updating submissions, field keys use the format
submission[QUESTION_ID]where the question ID comes from the form questions endpoint - Response format: All responses return JSON with a
responseCode(200 for success) andcontentfield containing the data - Rate limits: Jotform enforces API rate limits based on your plan. Monitor the response headers for rate limit information
- Form IDs: Form IDs are numeric. You can find them in the form URL or by listing all forms