jotform
$
npx mdskill add vm0-ai/vm0-skills/jotformManage JotForm accounts, forms, and submissions via API.
- Retrieves user data, usage stats, and form lists instantly.
- Depends on JotForm API with APIKEY authentication.
- Executes requests based on user intent keywords.
- Returns structured JSON data for programmatic access.
SKILL.md
.github/skills/jotformView on GitHub ↗
---
name: jotform
description: JotForm API for form management. Use when user mentions "JotForm", "forms",
"submissions", or asks about form data.
---
## Troubleshooting
If requests fail, run `zero doctor check-connector --env-name JOTFORM_TOKEN` or `zero doctor check-connector --url https://api.jotform.com/user --method GET`
## 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.
```bash
curl -s "https://api.jotform.com/user" --header "APIKEY: $JOTFORM_TOKEN" | jq .
```
### 2. Get Account Usage
Check API usage limits and current consumption.
```bash
curl -s "https://api.jotform.com/user/usage" --header "APIKEY: $JOTFORM_TOKEN" | jq .
```
### 3. List All Forms
Retrieve all forms in the account. Supports pagination with `limit` and `offset`.
```bash
curl -s "https://api.jotform.com/user/forms?limit=20&offset=0" --header "APIKEY: $JOTFORM_TOKEN" | jq '.content[] | {id, title, status, created_at}'
```
Filter forms by status:
```bash
curl -s "https://api.jotform.com/user/forms?limit=20&filter=%7B%22status%3Ane%22%3A%22DELETED%22%7D" --header "APIKEY: $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.
```bash
curl -s "https://api.jotform.com/form/FORM_ID" --header "APIKEY: $JOTFORM_TOKEN" | jq .
```
### 5. Get Form Questions
List all questions (fields) in a form.
```bash
curl -s "https://api.jotform.com/form/FORM_ID/questions" --header "APIKEY: $JOTFORM_TOKEN" | jq '.content'
```
Get a specific question by ID:
```bash
curl -s "https://api.jotform.com/form/FORM_ID/question/QUESTION_ID" --header "APIKEY: $JOTFORM_TOKEN" | jq '.content'
```
### 6. List Form Submissions
Get submissions for a specific form. Supports `limit`, `offset`, `orderby`, and `filter`.
```bash
curl -s "https://api.jotform.com/form/FORM_ID/submissions?limit=20&offset=0&orderby=created_at" --header "APIKEY: $JOTFORM_TOKEN" | jq '.content[] | {id, created_at, status}'
```
### 7. Get a Single Submission
Retrieve details for a specific submission.
```bash
curl -s "https://api.jotform.com/submission/SUBMISSION_ID" --header "APIKEY: $JOTFORM_TOKEN" | jq '.content'
```
### 8. Create a Submission
Submit new data to a form. Field keys follow the format `submission[QUESTION_ID]`.
```bash
curl -s -X POST "https://api.jotform.com/form/FORM_ID/submissions" --header "APIKEY: $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.
```bash
curl -s -X POST "https://api.jotform.com/submission/SUBMISSION_ID" --header "APIKEY: $JOTFORM_TOKEN" -d "submission[1]=Jane" -d "submission[2]=Smith" | jq .
```
### 10. Delete a Submission
Delete a submission by ID.
```bash
curl -s -X DELETE "https://api.jotform.com/submission/SUBMISSION_ID" --header "APIKEY: $JOTFORM_TOKEN" | jq .
```
### 11. Get Form Properties
Retrieve all properties of a form (title, colors, fonts, etc.).
```bash
curl -s "https://api.jotform.com/form/FORM_ID/properties" --header "APIKEY: $JOTFORM_TOKEN" | jq '.content'
```
Get a specific property:
```bash
curl -s "https://api.jotform.com/form/FORM_ID/properties/PROPERTY_KEY" --header "APIKEY: $JOTFORM_TOKEN" | jq '.content'
```
### 12. List Form Webhooks
Get all webhooks configured for a form.
```bash
curl -s "https://api.jotform.com/form/FORM_ID/webhooks" --header "APIKEY: $JOTFORM_TOKEN" | jq '.content'
```
### 13. Create a Webhook
Add a webhook URL to receive form submission notifications.
```bash
curl -s -X POST "https://api.jotform.com/form/FORM_ID/webhooks" --header "APIKEY: $JOTFORM_TOKEN" -d "webhookURL=https://example.com/webhook" | jq .
```
### 14. Delete a Webhook
Remove a webhook from a form.
```bash
curl -s -X DELETE "https://api.jotform.com/form/FORM_ID/webhooks/WEBHOOK_ID" --header "APIKEY: $JOTFORM_TOKEN" | jq .
```
### 15. List Form Files
Get all files uploaded through a form.
```bash
curl -s "https://api.jotform.com/form/FORM_ID/files" --header "APIKEY: $JOTFORM_TOKEN" | jq '.content'
```
### 16. Clone a Form
Create a copy of an existing form.
```bash
curl -s -X POST "https://api.jotform.com/form/FORM_ID/clone" --header "APIKEY: $JOTFORM_TOKEN" | jq .
```
### 17. Delete a Form
Delete a form by ID.
```bash
curl -s -X DELETE "https://api.jotform.com/form/FORM_ID" --header "APIKEY: $JOTFORM_TOKEN" | jq .
```
### 18. List User Folders
Get all folders in the account.
```bash
curl -s "https://api.jotform.com/user/folders" --header "APIKEY: $JOTFORM_TOKEN" | jq '.content'
```
### 19. Get All User Submissions
Retrieve all submissions across all forms.
```bash
curl -s "https://api.jotform.com/user/submissions?limit=20&offset=0" --header "APIKEY: $JOTFORM_TOKEN" | jq '.content[] | {id, form_id, created_at, status}'
```
### 20. Get Form Reports
List all reports for a form.
```bash
curl -s "https://api.jotform.com/form/FORM_ID/reports" --header "APIKEY: $JOTFORM_TOKEN" | jq '.content'
```
## Guidelines
1. **Authentication**: Use the `APIKEY` header for all requests. Do not pass the API key as a URL parameter in production
2. **Pagination**: Use `limit` and `offset` query parameters to paginate large result sets. Default limit varies by endpoint
3. **Filtering**: Use the `filter` query parameter with URL-encoded JSON for advanced filtering (e.g., `filter={"status:ne":"DELETED"}`)
4. **Regional URLs**: Use `eu-api.jotform.com` for EU accounts or `hipaa-api.jotform.com` for HIPAA-compliant accounts
5. **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
6. **Response format**: All responses return JSON with a `responseCode` (200 for success) and `content` field containing the data
7. **Rate limits**: Jotform enforces API rate limits based on your plan. Monitor the response headers for rate limit information
8. **Form IDs**: Form IDs are numeric. You can find them in the form URL or by listing all forms