Work with this as data
Every API here is available over the APIs.io API and to AI agents over MCP.
MCP server
One button, every client — Claude, Cursor, VS Code and the rest.
https://apis.io/mcp
Tools for apis
7 MCP tools reach this
find_apisBrowse and filter every API in the catalog.get_api_artifactsOne API's artifacts, grouped by type.get_openapiThe primary OpenAPI for this API.find_similar_apisAPIs that look like this one.apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.resolveTurn a domain, URL or GitHub org into the provider it belongs to.find_cohortsEvery scored population of providers in the catalog.
Call it yourself
curl for this page
This API
curl "https://apis.io/api/v1/apis/planradar-forms-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"
Discovery needs no key. Ratings and market analysis are Pro.
Get an API key
Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.
A second provider on the same verified email joins the account you already have.
OpenAPI Specification
openapi: 3.2.0
info:
title: PlanRadar's API Documentation Forms API
version: '2.0'
description: Welcome to PlanRadar's API documentation, here you can find all the details about our APIs as well as test them online.
servers:
- url: /
tags:
- name: Forms
description: Get your PlanRadar forms
paths:
/api/v1/{customer_id}/ticket_types/{ticket_type_id}:
get:
summary: Returns specific ticket type
tags:
- Forms
description: This API returns a specific ticket type based on its id.
parameters:
- name: customer_id
in: path
required: true
schema:
type: string
- name: ticket_type_id
in: path
required: true
schema:
type: string
responses:
'404':
description: Ticket Type Not found
operationId: getApiV1ByCustomerIdTicketTypesByTicketTypeId
x-operation-id-source: derived
put:
summary: Updates specific ticket type
tags:
- Forms
description: This API is used for updating a specific ticket type based on its id.
security:
- apiKey: []
parameters:
- name: customer_id
in: path
required: true
schema:
type: string
- name: ticket_type_id
in: path
required: true
schema:
type: string
responses:
'404':
description: Ticket Type Not Found
requestBody:
content:
application/json:
schema:
type: object
properties:
data:
type: object
properties:
attributes:
$ref: '#/components/schemas/TicketType'
required:
- title
- content
operationId: putApiV1ByCustomerIdTicketTypesByTicketTypeId
x-operation-id-source: derived
delete:
summary: Deletes specific ticket type
tags:
- Forms
description: This API is used for deleting a specific ticket type based on its id.
security:
- apiKey: []
parameters:
- name: customer_id
in: path
required: true
schema:
type: string
- name: ticket_type_id
in: path
required: true
schema:
type: string
responses:
'404':
description: Ticket Type Not Found
operationId: deleteApiV1ByCustomerIdTicketTypesByTicketTypeId
x-operation-id-source: derived
/api/v1/{customer_id}/ticket_types:
post:
summary: Creates ticket type
tags:
- Forms
description: 'This API is used for creating a ticket type.
Example:
{
"data": {
"attributes": {
"name": "tickettypeone",
"capabilities": {
"has-media": true,
"has-plan-position": true,
"store-geolocation-data": false,
"has-comments": false,
"has-due-date-extension": true,
"has-recurring-reminders": false,
"has-signature": true,
"has-locking": true,
"has_sign_as_someone_else": true
},
"typed-fields": {
"bda0b598-ddbf-48c8-8da5-60d2c5983e89": {
"name": "fieldname",
"type": "CustomFields::IntegerType",
"order": 1,
"visible-to": ["xmy","yen","lwm","lm","yn"],
"editable-by": ["xmy","yen","lwm","lm"]
}
},
"static-fields": {
"progress": {
"order": 1,
"visible-to": ["xmy","yen","lwm","lm","yn"],
"editable-by": ["xmy","yen","lwm","lm","yn"]
}
},
"form-decorators":{
"b6cd699b-668f-4360-b6ac-5de4404a094b":{
"name":"seperator",
"visible-to":[
762, "lm"
],
"order":2,
"type":"FormDecorators::Separator",
"description": "",
"check-all-roles": false,
"default_value": "",
"required": false
},"b6cd699b-668f-4360-b6ac-5de4404a095b":{
"name":"group",
"order":3,
"type":"FormDecorators::Group",
"description": "",
"visible_to": [],
"check_all_roles": true,
"fields":[
"cc376c7d-054a-4901-98bb-4069d4e4aa74",
"cc376c0d-054a-4901-98bb-4069d4e4aa74",
"parent-id"
]
}
}
}
}
}
CheckListType Field Example:
The CheckListType field provides a checklist with configurable response options, attachments, and notes.
Configuration Options:
response-label: Display labels for responses. Valid values: 1 (Yes/No/N/A), 2 (True/False/N/A), 3 (Pass/Fail/N/A). Default: 1
response-color: Color scheme for responses. Valid values: 1 (Green/Red/Blue), 2 (Red/Green/Blue), 3 (Blue for all). Default: 1
enable-attachments: Enable attachment support. Default: true
max-attachments: Maximum attachments per item (requires enable-attachments: true). Default: 1
required-attachments-for: Require attachments for specific answers (requires enable-attachments: true AND max-attachments set). Valid values: [1, 2, 3]
enable-notes: Enable notes for checklist items. Default: true
required-notes-for: Require notes for specific answers (requires enable-notes: true). Valid values: [1, 2, 3]
Answer Values:
1: First response option (Yes/True/Pass depending on response-label)
2: Second response option (No/False/Fail depending on response-label)
3: Third response option (N/A for all response-labels)
conditional-config for CheckListType:
answered: Field has any response (no values required)
not_answered: Field has no response (no values required)
includes_any: Response matches any of the specified values (values required: [1, 2, 3])
includes_all: Response matches all specified values (values required: [1, 2, 3])
Full CheckListType Example:
{
"data": {
"attributes": {
"name": "Safety Inspection Form",
"capabilities": {
"has-media": true,
"has-plan-position": true
},
"typed-fields": {
"checklist-field-uuid": {
"name": "Safety Checklist",
"type": "CustomFields::CheckListType",
"order": 1,
"visible-to": ["lm", "yn"],
"editable-by": ["lm"],
"response-label": 1,
"response-color": 1,
"enable-attachments": true,
"max-attachments": 3,
"required-attachments-for": [1, 2],
"enable-notes": true,
"required-notes-for": [2, 3]
},
"conditional-text-field-uuid": {
"name": "Additional Notes",
"type": "CustomFields::ShortTextType",
"order": 2,
"visible-to": ["lm"],
"editable-by": ["lm"],
"conditional-config": {
"condition-type": "any",
"conditions": {
"checklist-field-uuid": {
"predicate": "includes_any",
"values": [1, 2]
}
}
}
}
}
}
}
}
Minimal CheckListType (uses defaults):
{
"typed-fields": {
"checklist-field-uuid": {
"name": "Quick Checklist",
"type": "CustomFields::CheckListType",
"order": 1,
"visible-to": ["lm"],
"editable-by": ["lm"]
}
}
}'
security:
- apiKey: []
parameters:
- name: customer_id
in: path
required: true
schema:
type: string
responses:
'404':
description: Ticket Type Not Created
requestBody:
content:
application/json:
schema:
type: object
properties:
data:
type: object
properties:
attributes:
$ref: '#/components/schemas/TicketType'
operationId: postApiV1ByCustomerIdTicketTypes
x-operation-id-source: derived
get:
summary: Returns all ticket types
tags:
- Forms
description: This API returns all ticket types of the logged in customer.
parameters:
- name: customer_id
in: path
required: true
schema:
type: string
- name: last_sync_date
in: query
description: is a Unix Timestamp. If it is set, only ticket types that were created after that timestamp will be returned
schema:
type: string
- name: page
in: query
description: sets the number of pages for the returned ticket types
schema:
type: integer
- name: pagesize
in: query
description: sets the number of ticket types that should be returned per page <br/>Maximum is 500, default is 100
schema:
type: integer
- name: apply_form_display_permission
in: query
required: false
description: (KFT-338) when <code>true</code>, filters to forms the caller's role(s) can see via <code>capabilities.visible_to</code>. Watchers bypass. Default <code>false</code>.
schema:
type: boolean
- name: apply_form_edit_permission
in: query
required: false
description: (KFT-338) when <code>true</code>, filters to forms the caller's role(s) can edit via <code>capabilities.editable_by</code>. Watchers bypass. Default <code>false</code>.
schema:
type: boolean
responses:
'406':
description: Unsupported Accept Header
operationId: getApiV1ByCustomerIdTicketTypes
x-operation-id-source: derived
components:
schemas:
TicketType:
type: object
properties:
name:
type: string
example: tickettypeone
description: sets the name of the ticket type
capabilities:
type: object
properties:
has-media:
type: boolean
example: true
has-plan-position:
type: boolean
example: true
store-geolocation-data:
type: boolean
example: false
has-comments:
type: boolean
example: false
has-due-date-extension:
type: boolean
example: true
has-recurring-reminders:
type: boolean
example: false
has-signature:
type: boolean
example: false
has-locking:
type: boolean
example: false
has-sign-as-someone-else:
type: boolean
example: false
has-form-sequence:
type: boolean
example: false
has-form-sequence-prefix:
type: string
example: RFI
description: sets the prefix of the form sequence - is optional if has-form-sequence is set to true
has-form-sequence-number:
type: number
example: 1
description: sets the number of the form sequence - is required if has-form-sequence is set to true and it must be greater than 1
description: 'sets whether or not media, plan position, comments, due date extensions, reminder repetitions and store geolocations are displayed in the ticket '
typed-fields:
type: object
properties:
field_key:
type: object
properties:
name:
type: string
example: fieldname
description: name of the ticket type
type:
type: string
example: CustomFields::IntegerType
description: 'sets the type of the field - allowed values: CustomFields::FloatType, CustomFields::DateType, CustomFields::IntegerType, CustomFields::LongTextType, CustomFields::ShortTextType, CustomFields::ListType, CustomFields::SubscriptionType, CustomFields::CheckListType'
order:
type: integer
description: sets the order of the field e.g 1 = first typed field
visible-to:
type: array
items:
type: string
description: sets to which roles this field is visible - array that takes the ids of the roles
editable-by:
type: array
items:
type: string
description: sets who has the permission to edit this field - array that takes the ids of the roles
multiple:
type: boolean
example: true
description: sets whether user field can have multiple assignments
response-label:
type: integer
example: 1
description: 'Display labels for responses. Valid values: 1 (Yes/No/N/A), 2 (True/False/N/A), 3 (Pass/Fail/N/A). Only for CheckListType.'
response-color:
type: integer
example: 1
description: 'Color scheme for responses. Valid values: 1 (Green/Red/Blue), 2 (Red/Green/Blue), 3 (Blue for all). Only for CheckListType.'
enable-attachments:
type: boolean
example: true
description: Enable attachment support for checklist items. Only for CheckListType.
enable-notes:
type: boolean
example: true
description: Enable notes for checklist items. Only for CheckListType.
max-attachments:
type: integer
example: 3
description: 'Maximum attachments per checklist item (requires enable-attachments: true). Only for CheckListType.'
required-attachments-for:
type: array
items:
type: integer
description: Require attachments for specific answers (e.g. [1, 2]). Only for CheckListType.
required-notes-for:
type: array
items:
type: integer
description: Require notes for specific answers (e.g. [1, 2]). Only for CheckListType.
description: typed-fields are the customer's custom created fields
static-fields:
type: object
properties:
field_key:
type: object
properties:
order:
type: integer
description: sets the order of the field e.g 1 = first static field
visible-to:
type: array
items:
type: string
description: sets to which roles this field is visible - array that takes the ids of the roles
editable-by:
type: array
items:
type: string
description: sets who has the permission to edit this field - array that takes the ids of the roles
securitySchemes:
apiKey:
type: apiKey
name: X-PlanRadar-API-Key
in: header
externalDocs:
description: Find out more about our development portal
url: https://www.planradar.com/knowledge-base-overview/