---
title: "Getting Form Details"
method: GET
path: "/v1/projects/{projectId}/forms/{xmlFormId}"
tags: ["Individual Form"]
---

# Getting Form Details

`GET /v1/projects/{projectId}/forms/{xmlFormId}`

This endpoint supports retrieving extended metadata; provide a header `X-Extended-Metadata: true` to additionally retrieve the `submissions` count of the number of `Submission`s that this Form has, as well as the `lastSubmission` most recent submission timestamp.

## Path parameters

- `xmlFormId` string, required
- `projectId` number, required

## Response `200`

This is the Extended Metadata response, if requested via the appropriate header:

- Form
  - `projectId` number, required — The `id` of the project this form belongs to.
  - `xmlFormId` string, required — The `id` of this form as given in its XForms XML definition
  - `name` string — The friendly name of this form. It is given by the `<title>` in the XForms XML definition.
  - `version` string, required — The `version` of this form as given in its XForms XML definition. If no `version` was specified in the Form, a blank string will be given.
  - `enketoId` string — If it exists, this is the survey ID of this Form on Enketo at `/-`. This will be the ID of the published version if it exists, otherwise it will be the draft ID. Only a cookie-authenticated user may access the preview through Enketo.
  - `hash` string, required — An MD5 sum automatically computed based on the XForms XML definition. This is required for OpenRosa compliance.
  - `keyId` number — If a public encryption key is present on the form, its numeric ID as tracked by Central is given here.
  - `state` 'open' | 'closing' | 'closed', required
  - `publishedAt` string — Indicates when a draft has most recently been published for this Form. If this value is `null`, this Form has never been published yet, and contains only a draft.
  - `createdAt` string, required — ISO date format
  - `updatedAt` string — ISO date format
  - `webformsEnabled` boolean — Enables use of ODK Web Forms instead of Enketo for filling Forms via web browsers.

## Changes

- **2026-05-22** `fadfadd0e94e` — 4 breaking, 3 warning, 3 info
  - removed the required property `allOf[subschema #2]/entityRelated` from the response with the `200` status
  - removed the required property `allOf[subschema #2]/publicLinks` from the response with the `200` status
  - removed the required property `allOf[subschema #2]/reviewStates` from the response with the `200` status
  - removed the required property `allOf[subschema #2]/submissions` from the response with the `200` status
  - …6 more
- **2025-12-20** `022694254f0d` — 1 info
  - api operation id `Getting Form Details` removed and replaced with `getFormDetails`
- **2025-10-27** `b11b54eea487` — 1 info
  - removed the non-success response with the status `403`
- **2025-03-13** `e8c2858fd4eb` — 1 warning, 11 info
  - removed the optional property `allOf[subschema #2]/publishNotes` from the response with the `200` status (media type: application/json; extended)
  - api operation id `getFormDetails` removed and replaced with `Getting Form Details`
  - added `#/components/schemas/Form` to the response body `allOf` list for the response status `200` (media type: application/json; extended)
  - removed `#/components/schemas/ExtendedForm` from the response body `allOf` list for the response status `200` (media type: application/json; extended)
  - …8 more

[Change history](https://skmtc.dev/getodk/apis/odk-central-api/changes/v1/projects/:projectId/forms/:xmlFormId/get.md)

---

[API](https://skmtc.dev/getodk/apis/odk-central-api.md) · [All operations](https://skmtc.dev/getodk/apis/odk-central-api/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/getodk/odk-central-api/revisions/2ff2c2a4dfc7/schema)
