{
  "openapi": "3.1.1",
  "info": {
    "title": "Youform Public Template Catalog API",
    "version": "1.0.0",
    "description": "Unauthenticated, read-only marketing catalog. This is not the account developer API or MCP. To create or edit forms and read private responses, use the authorized MCP connection at https://app.youform.com/mcp. Unknown /api/* paths return RFC 9457 JSON 404 errors; unsupported methods on known paths return JSON 405 errors. /api/ and /api/v1/ are aliases of their slashless index paths. Developer quickstarts: https://youform.com/developers/. Versioning and deprecation policy: https://youform.com/developers/api-policy/."
  },
  "servers": [
    {
      "url": "https://youform.com",
      "description": "Production"
    }
  ],
  "security": [],
  "externalDocs": {
    "url": "https://youform.com/developers/",
    "description": "Youform API quickstarts, MCP authentication, and agent instructions"
  },
  "paths": {
    "/api": {
      "get": {
        "operationId": "discoverCatalog",
        "summary": "Discover the public catalog and account MCP connection",
        "description": "Public, read-only build-time marketing data. No account access. Query parameters must occur at most once; unknown parameters return 400. Empty matches return 200. Template order is stable within a release.",
        "responses": {
          "200": {
            "description": "Successful read.",
            "headers": {
              "Access-Control-Allow-Origin": {
                "schema": {
                  "type": "string",
                  "const": "*"
                }
              },
              "Link": {
                "schema": {
                  "type": "string"
                },
                "description": "API catalog, OpenAPI service-desc, developer service-doc, and llms.txt describedby discovery links."
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Discovery",
                  "type": "object",
                  "description": "Public API discovery links and the separate account MCP connection."
                }
              }
            }
          },
          "400": {
            "description": "RFC 9457 problem details, with machine-readable code and recovery hint.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            }
          },
          "404": {
            "description": "RFC 9457 problem details, with machine-readable code and recovery hint.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            }
          },
          "405": {
            "description": "RFC 9457 problem details, with machine-readable code and recovery hint.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            },
            "headers": {
              "Allow": {
                "schema": {
                  "type": "string"
                },
                "description": "GET, HEAD, OPTIONS"
              }
            }
          },
          "500": {
            "description": "RFC 9457 problem details, with machine-readable code and recovery hint.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            }
          }
        },
        "parameters": []
      },
      "head": {
        "operationId": "discoverCatalogHead",
        "summary": "Read status and headers without a response body",
        "parameters": [],
        "responses": {
          "200": {
            "description": "Successful read.",
            "headers": {
              "Access-Control-Allow-Origin": {
                "schema": {
                  "type": "string",
                  "const": "*"
                }
              },
              "Link": {
                "schema": {
                  "type": "string"
                },
                "description": "API catalog, OpenAPI service-desc, developer service-doc, and llms.txt describedby discovery links."
              }
            }
          },
          "400": {
            "description": "RFC 9457 problem details, with machine-readable code and recovery hint."
          },
          "404": {
            "description": "RFC 9457 problem details, with machine-readable code and recovery hint."
          },
          "405": {
            "description": "RFC 9457 problem details, with machine-readable code and recovery hint.",
            "headers": {
              "Allow": {
                "schema": {
                  "type": "string"
                },
                "description": "GET, HEAD, OPTIONS"
              }
            }
          },
          "500": {
            "description": "RFC 9457 problem details, with machine-readable code and recovery hint."
          }
        },
        "description": "Return the GET response headers with no body."
      },
      "options": {
        "operationId": "discoverCatalogOptions",
        "summary": "CORS preflight and supported methods",
        "responses": {
          "204": {
            "description": "No body. GET, HEAD, OPTIONS are allowed.",
            "headers": {
              "Access-Control-Allow-Origin": {
                "schema": {
                  "type": "string",
                  "const": "*"
                }
              },
              "Link": {
                "schema": {
                  "type": "string"
                },
                "description": "API catalog, OpenAPI service-desc, developer service-doc, and llms.txt describedby discovery links."
              },
              "Allow": {
                "schema": {
                  "type": "string"
                }
              },
              "Access-Control-Allow-Methods": {
                "schema": {
                  "type": "string"
                }
              },
              "Access-Control-Allow-Headers": {
                "schema": {
                  "type": "string"
                }
              }
            }
          }
        },
        "description": "Return public CORS preflight information; this does not grant account access."
      }
    },
    "/api/v1": {
      "get": {
        "operationId": "discoverCatalogV1",
        "summary": "Discover the public catalog and account MCP connection",
        "description": "Public, read-only build-time marketing data. No account access. Query parameters must occur at most once; unknown parameters return 400. Empty matches return 200. Template order is stable within a release.",
        "responses": {
          "200": {
            "description": "Successful read.",
            "headers": {
              "Access-Control-Allow-Origin": {
                "schema": {
                  "type": "string",
                  "const": "*"
                }
              },
              "Link": {
                "schema": {
                  "type": "string"
                },
                "description": "API catalog, OpenAPI service-desc, developer service-doc, and llms.txt describedby discovery links."
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Discovery",
                  "type": "object",
                  "description": "Public API discovery links and the separate account MCP connection."
                }
              }
            }
          },
          "400": {
            "description": "RFC 9457 problem details, with machine-readable code and recovery hint.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            }
          },
          "404": {
            "description": "RFC 9457 problem details, with machine-readable code and recovery hint.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            }
          },
          "405": {
            "description": "RFC 9457 problem details, with machine-readable code and recovery hint.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            },
            "headers": {
              "Allow": {
                "schema": {
                  "type": "string"
                },
                "description": "GET, HEAD, OPTIONS"
              }
            }
          },
          "500": {
            "description": "RFC 9457 problem details, with machine-readable code and recovery hint.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            }
          }
        },
        "parameters": []
      },
      "head": {
        "operationId": "discoverCatalogV1Head",
        "summary": "Read status and headers without a response body",
        "parameters": [],
        "responses": {
          "200": {
            "description": "Successful read.",
            "headers": {
              "Access-Control-Allow-Origin": {
                "schema": {
                  "type": "string",
                  "const": "*"
                }
              },
              "Link": {
                "schema": {
                  "type": "string"
                },
                "description": "API catalog, OpenAPI service-desc, developer service-doc, and llms.txt describedby discovery links."
              }
            }
          },
          "400": {
            "description": "RFC 9457 problem details, with machine-readable code and recovery hint."
          },
          "404": {
            "description": "RFC 9457 problem details, with machine-readable code and recovery hint."
          },
          "405": {
            "description": "RFC 9457 problem details, with machine-readable code and recovery hint.",
            "headers": {
              "Allow": {
                "schema": {
                  "type": "string"
                },
                "description": "GET, HEAD, OPTIONS"
              }
            }
          },
          "500": {
            "description": "RFC 9457 problem details, with machine-readable code and recovery hint."
          }
        },
        "description": "Return the GET response headers with no body."
      },
      "options": {
        "operationId": "discoverCatalogV1Options",
        "summary": "CORS preflight and supported methods",
        "responses": {
          "204": {
            "description": "No body. GET, HEAD, OPTIONS are allowed.",
            "headers": {
              "Access-Control-Allow-Origin": {
                "schema": {
                  "type": "string",
                  "const": "*"
                }
              },
              "Link": {
                "schema": {
                  "type": "string"
                },
                "description": "API catalog, OpenAPI service-desc, developer service-doc, and llms.txt describedby discovery links."
              },
              "Allow": {
                "schema": {
                  "type": "string"
                }
              },
              "Access-Control-Allow-Methods": {
                "schema": {
                  "type": "string"
                }
              },
              "Access-Control-Allow-Headers": {
                "schema": {
                  "type": "string"
                }
              }
            }
          }
        },
        "description": "Return public CORS preflight information; this does not grant account access."
      }
    },
    "/api/v1/templates": {
      "get": {
        "operationId": "listTemplates",
        "summary": "Search and page through public templates",
        "description": "Public, read-only build-time marketing data. No account access. Query parameters must occur at most once; unknown parameters return 400. Empty matches return 200. Template order is stable within a release.",
        "responses": {
          "200": {
            "description": "Successful read.",
            "headers": {
              "Access-Control-Allow-Origin": {
                "schema": {
                  "type": "string",
                  "const": "*"
                }
              },
              "Link": {
                "schema": {
                  "type": "string"
                },
                "description": "API catalog, OpenAPI service-desc, developer service-doc, and llms.txt describedby discovery links."
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TemplateList",
                  "type": "object",
                  "description": "Public template search results with pagination."
                }
              }
            }
          },
          "400": {
            "description": "RFC 9457 problem details, with machine-readable code and recovery hint.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            }
          },
          "404": {
            "description": "RFC 9457 problem details, with machine-readable code and recovery hint.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            }
          },
          "405": {
            "description": "RFC 9457 problem details, with machine-readable code and recovery hint.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            },
            "headers": {
              "Allow": {
                "schema": {
                  "type": "string"
                },
                "description": "GET, HEAD, OPTIONS"
              }
            }
          },
          "500": {
            "description": "RFC 9457 problem details, with machine-readable code and recovery hint.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "q",
            "in": "query",
            "required": false,
            "description": "Case-insensitive substring of name, description, or categories; whitespace trimmed.",
            "schema": {
              "type": "string",
              "maxLength": 200
            }
          },
          {
            "name": "type",
            "in": "query",
            "required": false,
            "description": "Template type.",
            "schema": {
              "type": "string",
              "enum": [
                "form",
                "survey",
                "quiz"
              ]
            }
          },
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "description": "Maximum items per page; canonical decimal integer without leading zeros.",
            "schema": {
              "type": "integer",
              "minimum": 1,
              "maximum": 100,
              "default": 20
            }
          },
          {
            "name": "offset",
            "in": "query",
            "required": false,
            "description": "Zero-based offset; canonical decimal integer without leading zeros.",
            "schema": {
              "type": "integer",
              "minimum": 0,
              "maximum": 9007199254740991,
              "default": 0
            }
          }
        ]
      },
      "head": {
        "operationId": "listTemplatesHead",
        "summary": "Read status and headers without a response body",
        "parameters": [
          {
            "name": "q",
            "in": "query",
            "required": false,
            "description": "Case-insensitive substring of name, description, or categories; whitespace trimmed.",
            "schema": {
              "type": "string",
              "maxLength": 200
            }
          },
          {
            "name": "type",
            "in": "query",
            "required": false,
            "description": "Template type.",
            "schema": {
              "type": "string",
              "enum": [
                "form",
                "survey",
                "quiz"
              ]
            }
          },
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "description": "Maximum items per page; canonical decimal integer without leading zeros.",
            "schema": {
              "type": "integer",
              "minimum": 1,
              "maximum": 100,
              "default": 20
            }
          },
          {
            "name": "offset",
            "in": "query",
            "required": false,
            "description": "Zero-based offset; canonical decimal integer without leading zeros.",
            "schema": {
              "type": "integer",
              "minimum": 0,
              "maximum": 9007199254740991,
              "default": 0
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful read.",
            "headers": {
              "Access-Control-Allow-Origin": {
                "schema": {
                  "type": "string",
                  "const": "*"
                }
              },
              "Link": {
                "schema": {
                  "type": "string"
                },
                "description": "API catalog, OpenAPI service-desc, developer service-doc, and llms.txt describedby discovery links."
              }
            }
          },
          "400": {
            "description": "RFC 9457 problem details, with machine-readable code and recovery hint."
          },
          "404": {
            "description": "RFC 9457 problem details, with machine-readable code and recovery hint."
          },
          "405": {
            "description": "RFC 9457 problem details, with machine-readable code and recovery hint.",
            "headers": {
              "Allow": {
                "schema": {
                  "type": "string"
                },
                "description": "GET, HEAD, OPTIONS"
              }
            }
          },
          "500": {
            "description": "RFC 9457 problem details, with machine-readable code and recovery hint."
          }
        },
        "description": "Return the GET response headers with no body."
      },
      "options": {
        "operationId": "listTemplatesOptions",
        "summary": "CORS preflight and supported methods",
        "responses": {
          "204": {
            "description": "No body. GET, HEAD, OPTIONS are allowed.",
            "headers": {
              "Access-Control-Allow-Origin": {
                "schema": {
                  "type": "string",
                  "const": "*"
                }
              },
              "Link": {
                "schema": {
                  "type": "string"
                },
                "description": "API catalog, OpenAPI service-desc, developer service-doc, and llms.txt describedby discovery links."
              },
              "Allow": {
                "schema": {
                  "type": "string"
                }
              },
              "Access-Control-Allow-Methods": {
                "schema": {
                  "type": "string"
                }
              },
              "Access-Control-Allow-Headers": {
                "schema": {
                  "type": "string"
                }
              }
            }
          }
        },
        "description": "Return public CORS preflight information; this does not grant account access."
      }
    }
  },
  "components": {
    "schemas": {
      "Discovery": {
        "type": "object",
        "required": [
          "name",
          "version",
          "description",
          "openapi",
          "templates",
          "instructions",
          "mcp",
          "mcpSetup"
        ],
        "properties": {
          "name": {
            "type": "string"
          },
          "version": {
            "type": "string"
          },
          "description": {
            "type": "string"
          },
          "openapi": {
            "type": "string",
            "format": "uri"
          },
          "templates": {
            "type": "string",
            "format": "uri"
          },
          "instructions": {
            "type": "string",
            "format": "uri"
          },
          "mcp": {
            "type": "string",
            "format": "uri"
          },
          "mcpSetup": {
            "type": "string",
            "format": "uri"
          }
        },
        "additionalProperties": false
      },
      "Template": {
        "type": "object",
        "required": [
          "slug",
          "name",
          "description",
          "type",
          "url",
          "categories"
        ],
        "properties": {
          "slug": {
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "description": {
            "type": "string"
          },
          "type": {
            "type": "string",
            "enum": [
              "form",
              "survey",
              "quiz"
            ]
          },
          "url": {
            "type": "string",
            "format": "uri"
          },
          "categories": {
            "type": "array",
            "items": {
              "type": "string"
            }
          }
        },
        "additionalProperties": false
      },
      "TemplateList": {
        "type": "object",
        "required": [
          "total",
          "limit",
          "offset",
          "nextOffset",
          "items"
        ],
        "properties": {
          "total": {
            "type": "integer",
            "minimum": 0
          },
          "limit": {
            "type": "integer",
            "minimum": 1,
            "maximum": 100
          },
          "offset": {
            "type": "integer",
            "minimum": 0,
            "maximum": 9007199254740991
          },
          "nextOffset": {
            "type": [
              "integer",
              "null"
            ],
            "minimum": 0
          },
          "items": {
            "type": "array",
            "maxItems": 100,
            "items": {
              "$ref": "#/components/schemas/Template"
            }
          }
        },
        "additionalProperties": false
      },
      "Problem": {
        "type": "object",
        "required": [
          "type",
          "title",
          "status",
          "detail",
          "instance",
          "code",
          "hint"
        ],
        "properties": {
          "type": {
            "type": "string",
            "const": "about:blank"
          },
          "title": {
            "type": "string"
          },
          "status": {
            "type": "integer",
            "enum": [
              400,
              404,
              405,
              500
            ]
          },
          "detail": {
            "type": "string"
          },
          "instance": {
            "type": "string",
            "format": "uri-reference"
          },
          "code": {
            "type": "string",
            "enum": [
              "invalid_parameter",
              "endpoint_not_found",
              "method_not_allowed",
              "internal_error"
            ]
          },
          "hint": {
            "type": "string"
          }
        },
        "additionalProperties": true
      }
    }
  },
  "x-api-lifecycle": {
    "status": "active",
    "majorVersion": 1,
    "versioning": "URL path",
    "policy": "https://youform.com/developers/api-policy/",
    "deprecationDate": null,
    "sunsetDate": null
  }
}
