ApplyToVolunteer Public API
The Public API from ApplyToVolunteer — 2 operation(s) for public.
The Public API from ApplyToVolunteer — 2 operation(s) for public.
Every API here is available over the APIs.io API and to AI agents over MCP.
One button, every client — Claude, Cursor, VS Code and the rest.
https://apis.io/mcp
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.curl "https://apis.io/api/v1/apis/applytovolunteer-com:applytovolunteer-com-public-api"
curl "https://apis.io/api/v1/apis?limit=25"
Discovery needs no key. Ratings and market analysis are Pro.
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: 3.2.0
info:
title: Apply2Volunteer Public API
version: 1.0.0
description: 'Convert volunteer PDFs into progressive online forms. Organization owners and admins create API keys in the dashboard. Send a key as Authorization: Bearer a2v_... The token starts with a2v_. This API does not implement OAuth. Public submit and anonymous grade or convert do not accept the key in place of a Turnstile token. Keyless agents use /mcp and POST /a2a for anonymous grade and preview.'
license:
name: Proprietary
url: https://applytovolunteer.com/terms
servers:
- url: https://applytovolunteer.com
security:
- orgApiKey: []
tags:
- name: Public
paths:
/public/forms/{org}/{form}/submit:
post:
operationId: submitPublicForm
summary: Submit stage 1 of a public form
description: Public stage-1 submit. No org API key. Anonymous calls need a Turnstile token in production. A failed check is 400 with error turnstile. A missing Turnstile configuration is 503. Dev and test skip verification. Keyless agents should use /mcp or POST /a2a instead of calling this route without a token. This route does not submit through /mcp or /a2a.
security: []
parameters:
- schema:
type: string
description: Organization slug.
required: true
description: Organization slug.
name: org
in: path
- schema:
type: string
description: Form slug.
required: true
description: Form slug.
name: form
in: path
requestBody:
required: true
description: JSON object. turnstileToken is required in production. An API key does not replace it.
content:
application/json:
schema:
type: object
properties:
answers:
type: array
items:
type: object
properties:
fieldId:
type: string
description: Field id on the published version.
value:
anyOf:
- type: string
- type: number
- type: boolean
- type: array
items:
type: string
- type: object
additionalProperties: {}
- type: 'null'
description: String, number, boolean, array of strings, object, or null.
required:
- fieldId
- value
description: Answers for the stage. Omitted answers are treated as an empty list. Required fields on the stage still fail validation.
honeypot:
type: string
description: 'Omit this. A non-empty string returns { ok: true } and does not save the application.'
turnstileToken:
type: string
description: Cloudflare Turnstile token. Required in production. Dev and test (ENVIRONMENT exactly dev or test) skip verification. A failed check is 400 with error turnstile. A missing Turnstile configuration is 503 with error turnstile_misconfigured. This token is not an org API key.
applicantEmail:
type: string
description: Applicant email. Checked when the stage requires an email field or a value is present.
applicantName:
type: string
description: Applicant name. Checked when the stage requires a name field.
source:
type: string
description: Pass "embed" for an embedded form. Any other value is stored as hosted.
stageId:
type: string
description: Stage to submit. Omitted uses the first stage.
submissionId:
type: string
description: Optional idempotency key. A string of 8 to 64 letters, numbers, underscores, or hyphens is stored. Any other value is ignored and does not fail the request. 32 or more characters can rotate a continue link when the same submission is retried.
required:
- turnstileToken
description: JSON object. turnstileToken is required in production. An org API key is not accepted in place of that token.
responses:
'200':
description: Public stage-1 submit
'400':
description: The body, query, or input failed validation.
content:
application/json:
schema:
$ref: '#/components/schemas/ApiError'
'403':
description: The organization is still a demo, or the form is not published. Submissions stay off until the organization is claimed.
content:
application/json:
schema:
$ref: '#/components/schemas/ApiError'
'404':
description: The resource does not exist, or it is hidden from this caller. Several organization routes return 404 instead of 401 when the key is missing or the row is in another organization.
content:
application/json:
schema:
$ref: '#/components/schemas/ApiError'
'409':
description: The write conflicts with the current state.
content:
application/json:
schema:
$ref: '#/components/schemas/ApiError'
'413':
description: The body is larger than 256 KiB.
content:
application/json:
schema:
$ref: '#/components/schemas/ApiError'
'429':
description: Too many requests from this network or organization.
headers:
Retry-After:
description: Seconds until this form's submit window resets. Clamped to 1 through 3600.
schema:
type: integer
minimum: 1
maximum: 3600
content:
application/json:
schema:
$ref: '#/components/schemas/ApiError'
'503':
description: Turnstile is not configured, or a required parser is unavailable.
content:
application/json:
schema:
$ref: '#/components/schemas/ApiError'
tags:
- Public
/public/continue/{token}/submit:
post:
operationId: submitContinueStage
summary: Submit a continue-link stage
description: Continue-link stage submit. No org API key. Anonymous calls need a Turnstile token in production. A failed check is 400 with error turnstile. A missing Turnstile configuration is 503. Dev and test skip verification. Keyless agents should use /mcp or POST /a2a instead of calling this route without a token.
security: []
parameters:
- schema:
type: string
description: Continue-link token.
required: true
description: Continue-link token.
name: token
in: path
requestBody:
required: true
description: JSON object. This route reads answers, honeypot, and turnstileToken. Other fields are accepted and ignored. turnstileToken is required in production.
content:
application/json:
schema:
type: object
properties:
answers:
type: array
items:
type: object
properties:
fieldId:
type: string
description: Field id on the published version.
value:
anyOf:
- type: string
- type: number
- type: boolean
- type: array
items:
type: string
- type: object
additionalProperties: {}
- type: 'null'
description: String, number, boolean, array of strings, object, or null.
required:
- fieldId
- value
description: Answers for the stage. Omitted answers are treated as an empty list. Required fields on the stage still fail validation.
honeypot:
type: string
description: 'Omit this. A non-empty string returns { ok: true } and does not save the application.'
turnstileToken:
type: string
description: Cloudflare Turnstile token. Required in production. Dev and test (ENVIRONMENT exactly dev or test) skip verification. A failed check is 400 with error turnstile. A missing Turnstile configuration is 503 with error turnstile_misconfigured. This token is not an org API key.
applicantEmail:
type: string
description: Applicant email. Checked when the stage requires an email field or a value is present.
applicantName:
type: string
description: Applicant name. Checked when the stage requires a name field.
source:
type: string
description: Pass "embed" for an embedded form. Any other value is stored as hosted.
stageId:
type: string
description: Stage to submit. Omitted uses the first stage.
submissionId:
type: string
description: Optional idempotency key. A string of 8 to 64 letters, numbers, underscores, or hyphens is stored. Any other value is ignored and does not fail the request. 32 or more characters can rotate a continue link when the same submission is retried.
required:
- turnstileToken
description: JSON object. turnstileToken is required in production. An org API key is not accepted in place of that token.
responses:
'200':
description: Continue-link stage submit
'400':
description: The body, query, or input failed validation.
content:
application/json:
schema:
$ref: '#/components/schemas/ApiError'
'404':
description: The resource does not exist, or it is hidden from this caller. Several organization routes return 404 instead of 401 when the key is missing or the row is in another organization.
content:
application/json:
schema:
$ref: '#/components/schemas/ApiError'
'409':
description: The write conflicts with the current state.
content:
application/json:
schema:
$ref: '#/components/schemas/ApiError'
'410':
description: The continue link is expired.
content:
application/json:
schema:
$ref: '#/components/schemas/ApiError'
'413':
description: The body is larger than 256 KiB.
content:
application/json:
schema:
$ref: '#/components/schemas/ApiError'
'503':
description: Turnstile is not configured, or a required parser is unavailable.
content:
application/json:
schema:
$ref: '#/components/schemas/ApiError'
tags:
- Public
components:
schemas:
ApiError:
type: object
properties:
error:
type: string
description: Short error code or message.
message:
type: string
description: Human-readable detail when the handler sends one.
fields:
type: object
additionalProperties:
type: string
description: Field-level validation messages.
retryable:
type: boolean
description: Set on some public submit conflicts.
required:
- error
securitySchemes:
orgApiKey:
type: http
scheme: bearer
bearerFormat: a2v API key
description: Organization API key. REST reads Authorization and accepts only the exact prefix "Bearer " (capital B, one space) followed by a token that starts with a2v_. Put the a2v_ token in the bearer credential. Do not include the word Bearer in the token. Owners and admins create keys at /app/settings/api-keys. The secret is shown once. Revoked keys are rejected. This API does not implement OAuth. Scopes are forms:read, forms:write, applications:read, and applications:write. forms:write does not include forms:read. A new key defaults to forms:read and forms:write. applications:read and applications:write are opt-in. A browser session cookie is also accepted on organization routes. Agents send the bearer key.