API docs

zpe-forms

mount /forms · base https://zpe.vc/forms · v6.1.0 · 12 operations · 5 write · 2 need no account · stable

archived: committed 2026-11-04, from 3244ebd8. Contract: https://zpe.vc/forms/_/api/v1/openapi.json

POST /_/api/v1/forms/{publicId}/submissions Write one submission to the form that owns this public id postFormsByIdSubmissions no account

Write one submission to the form that owns this public id

Parameters

nameinrequiredtypenotes
publicIdpathyesstringThe form's public id, the one its `/f/<publicId>` link carries.

Request body

None: this operation takes its arguments in the path and the query.

Responses

statusmeaningbody
200The answerobject
400The request could not be readobject
401The credential is missing or does not open this accountobject
403This account may not do thatobject
404Nothing is hereobject
429Too many requestsobject

Example

Write one submission to the form that owns this public id.

POST /_/api/v1/forms/{publicId}/submissions
curl -X POST 'https://zpe.vc/forms/_/api/v1/forms/string/submissions'
200 application/json
{}

The example is generated from the schema in the contract: the shape is the document's, the values are placeholders.

OPTIONS /_/api/v1/forms/{publicId}/submissions CORS preflight for the write path, answered before any credential optionsFormsByIdSubmissions no account

CORS preflight for the write path, answered before any credential

Parameters

nameinrequiredtypenotes
publicIdpathyesstringThe form's public id, the one its `/f/<publicId>` link carries.

Request body

None: this operation takes its arguments in the path and the query.

Responses

statusmeaningbody
200The answerobject
400The request could not be readobject
401The credential is missing or does not open this accountobject
403This account may not do thatobject
404Nothing is hereobject
429Too many requestsobject

Example

CORS preflight for the write path, answered before any credential.

OPTIONS /_/api/v1/forms/{publicId}/submissions
curl -X OPTIONS 'https://zpe.vc/forms/_/api/v1/forms/string/submissions'
200 application/json
{}

The example is generated from the schema in the contract: the shape is the document's, the values are placeholders.

GET /_/api/v1/submissions Read the 200 most recent submissions of every form this account owns getSubmissions

Read the 200 most recent submissions of every form this account owns

Parameters

No parameters.

Request body

None: this operation takes its arguments in the path and the query.

Responses

statusmeaningbody
200The answerobject
400The request could not be readobject
401The credential is missing or does not open this accountobject
403This account may not do thatobject
404Nothing is hereobject
429Too many requestsobject

Example

Read the 200 most recent submissions of every form this account owns, with a token from the door.

GET /_/api/v1/submissions
curl -X GET 'https://zpe.vc/forms/_/api/v1/submissions' \
  -H 'Authorization: Bearer $ZPE_TOKEN'
200 application/json
{}

The example is generated from the schema in the contract: the shape is the document's, the values are placeholders.

GET /_/api/v1/console/me Who the caller is, as the door names them getConsoleMe

Who the caller is, as the door names them

Parameters

No parameters.

Request body

None: this operation takes its arguments in the path and the query.

Responses

statusmeaningbody
200The answerobject
400The request could not be readobject
401The credential is missing or does not open this accountobject
403This account may not do thatobject
404Nothing is hereobject
429Too many requestsobject

Example

Who the caller is, as the door names them, with a token from the door.

GET /_/api/v1/console/me
curl -X GET 'https://zpe.vc/forms/_/api/v1/console/me' \
  -H 'Authorization: Bearer $ZPE_TOKEN'
200 application/json
{}

The example is generated from the schema in the contract: the shape is the document's, the values are placeholders.

GET /_/api/v1/console/forms List this account's forms, oldest first, with a submission count and the last one's time getConsoleForms

List this account's forms, oldest first, with a submission count and the last one's time

Parameters

No parameters.

Request body

None: this operation takes its arguments in the path and the query.

Responses

statusmeaningbody
200The answerobject
400The request could not be readobject
401The credential is missing or does not open this accountobject
403This account may not do thatobject
404Nothing is hereobject
429Too many requestsobject

Example

List this account's forms, oldest first, with a submission count and the last one's time, with a token from the door.

GET /_/api/v1/console/forms
curl -X GET 'https://zpe.vc/forms/_/api/v1/console/forms' \
  -H 'Authorization: Bearer $ZPE_TOKEN'
200 application/json
{}

The example is generated from the schema in the contract: the shape is the document's, the values are placeholders.

POST /_/api/v1/console/forms Create a form in this account; the slug comes from the name and the public id is minted here postConsoleForms

Create a form in this account; the slug comes from the name and the public id is minted here

Parameters

nameinrequiredtypenotes
Idempotency-KeyheadernostringA value that names this attempt. Send the same one when retrying and the answer is the form the first call wrote (`200`) instead of `a form named … already exists`; present and empty is refused.

Request body application/json · required

fieldtyperequirednotes
namestringyesThe form's name. Its slug is derived once, here, and never moves.

Responses

statusmeaningbody
200Nothing new was written: this `Idempotency-Key` already created a form in this account, and this is the row the first call wrote.object
201The form was created in this account. Its slug comes from the name.object
400The body names no form, its name has no letter or digit, the name is one of this app's own addresses, a form with that name already exists in this account, or `Idempotency-Key` was sent empty or over 200 characters.object
401The credential is missing or does not open this accountobject
403This account may not do thatobject
404Nothing is hereobject
429Too many requestsobject

Example

Create a form in this account; the slug comes from the name and the public id is minted here, with a token from the door.

POST /_/api/v1/console/forms
curl -X POST 'https://zpe.vc/forms/_/api/v1/console/forms' \
  -H 'Authorization: Bearer $ZPE_TOKEN' \
  -H 'content-type: application/json' \
  -d '{
  "name": "string"
}'
200 application/json
{
  "success": false,
  "form": {
    "id": "string",
    "name": "string",
    "public_id": "string",
    "created_at": 0,
    "updated_at": 0
  }
}

The example is generated from the schema in the contract: the shape is the document's, the values are placeholders.

GET /_/api/v1/console/forms/{id} One form of this account, with its submission stats and its last 30 days getConsoleFormsById

One form of this account, with its submission stats and its last 30 days

Parameters

nameinrequiredtypenotes
idpathyesstringThe form's slug, unique within this account.

Request body

None: this operation takes its arguments in the path and the query.

Responses

statusmeaningbody
200The answerobject
400The request could not be readobject
401The credential is missing or does not open this accountobject
403This account may not do thatobject
404Nothing is hereobject
429Too many requestsobject

Example

One form of this account, with its submission stats and its last 30 days, with a token from the door.

GET /_/api/v1/console/forms/{id}
curl -X GET 'https://zpe.vc/forms/_/api/v1/console/forms/string' \
  -H 'Authorization: Bearer $ZPE_TOKEN'
200 application/json
{}

The example is generated from the schema in the contract: the shape is the document's, the values are placeholders.

PATCH /_/api/v1/console/forms/{id} Rename a form or replace its question set; the slug and the public id do not move patchConsoleFormsById

Rename a form or replace its question set; the slug and the public id do not move

Parameters

nameinrequiredtypenotes
idpathyesstringThe form's slug, unique within this account.

Request body application/json · required

fieldtyperequirednotes
namestringnoThe new name. A form's address is fixed at creation.
fieldsarray | null of objectnoThe form's own questions, in the order the page asks them, or null to inherit the three defaults. Replaces the whole set.

Responses

statusmeaningbody
200The answerobject
400The request could not be readobject
401The credential is missing or does not open this accountobject
403This account may not do thatobject
404Nothing is hereobject
429Too many requestsobject

Example

Rename a form or replace its question set; the slug and the public id do not move, with a token from the door.

PATCH /_/api/v1/console/forms/{id}
curl -X PATCH 'https://zpe.vc/forms/_/api/v1/console/forms/string' \
  -H 'Authorization: Bearer $ZPE_TOKEN' \
  -H 'content-type: application/json' \
  -d '{
  "name": "string",
  "fields": null
}'
200 application/json
{}

The example is generated from the schema in the contract: the shape is the document's, the values are placeholders.

DELETE /_/api/v1/console/forms/{id} Delete a form and every submission it received deleteConsoleFormsById

Delete a form and every submission it received

Parameters

nameinrequiredtypenotes
idpathyesstringThe form's slug, unique within this account.

Request body

None: this operation takes its arguments in the path and the query.

Responses

statusmeaningbody
200The answerobject
400The request could not be readobject
401The credential is missing or does not open this accountobject
403This account may not do thatobject
404Nothing is hereobject
429Too many requestsobject

Example

Delete a form and every submission it received, with a token from the door.

DELETE /_/api/v1/console/forms/{id}
curl -X DELETE 'https://zpe.vc/forms/_/api/v1/console/forms/string' \
  -H 'Authorization: Bearer $ZPE_TOKEN'
200 application/json
{}

The example is generated from the schema in the contract: the shape is the document's, the values are placeholders.

GET /_/api/v1/console/forms/{id}/submissions This form's submissions, newest first getConsoleFormsByIdSubmissions

This form's submissions, newest first

Parameters

nameinrequiredtypenotes
idpathyesstringThe form's slug, unique within this account.
limitquerynostringHow many rows to return; the deployment caps it.

Request body

None: this operation takes its arguments in the path and the query.

Responses

statusmeaningbody
200The answerobject
400The request could not be readobject
401The credential is missing or does not open this accountobject
403This account may not do thatobject
404Nothing is hereobject
429Too many requestsobject

Example

This form's submissions, newest first, with a token from the door.

GET /_/api/v1/console/forms/{id}/submissions
curl -X GET 'https://zpe.vc/forms/_/api/v1/console/forms/string/submissions?limit=string' \
  -H 'Authorization: Bearer $ZPE_TOKEN'
200 application/json
{}

The example is generated from the schema in the contract: the shape is the document's, the values are placeholders.

DELETE /_/api/v1/console/forms/{id}/submissions/{submissionId} Delete one submission of this account's form deleteConsoleFormsByIdSubmissionsById

Delete one submission of this account's form

Parameters

nameinrequiredtypenotes
idpathyesstringThe form's slug, unique within this account.
submissionIdpathyesstringThe submission's id.

Request body

None: this operation takes its arguments in the path and the query.

Responses

statusmeaningbody
200The answerobject
400The request could not be readobject
401The credential is missing or does not open this accountobject
403This account may not do thatobject
404Nothing is hereobject
429Too many requestsobject

Example

Delete one submission of this account's form, with a token from the door.

DELETE /_/api/v1/console/forms/{id}/submissions/{submissionId}
curl -X DELETE 'https://zpe.vc/forms/_/api/v1/console/forms/string/submissions/string' \
  -H 'Authorization: Bearer $ZPE_TOKEN'
200 application/json
{}

The example is generated from the schema in the contract: the shape is the document's, the values are placeholders.

GET /_/api/v1/console/settings What this deployment does about mail, which is not a setting a form can hold getConsoleSettings

What this deployment does about mail, which is not a setting a form can hold

Parameters

No parameters.

Request body

None: this operation takes its arguments in the path and the query.

Responses

statusmeaningbody
200The answerobject
400The request could not be readobject
401The credential is missing or does not open this accountobject
403This account may not do thatobject
404Nothing is hereobject
429Too many requestsobject

Example

What this deployment does about mail, which is not a setting a form can hold, with a token from the door.

GET /_/api/v1/console/settings
curl -X GET 'https://zpe.vc/forms/_/api/v1/console/settings' \
  -H 'Authorization: Bearer $ZPE_TOKEN'
200 application/json
{}

The example is generated from the schema in the contract: the shape is the document's, the values are placeholders.