Get an entry
Entries
Get an entry
Required scope: entry:read.
GET
Get an entry
Authorizations
Personal Access Token prefixed with fh_. Sent as Authorization: Bearer fh_xxx.
The scope required by each endpoint is listed in that endpoint's description.
Path Parameters
Form token
Per-form serial number of the entry
Response
Success
A submitted entry. In addition to the fixed fields below, every field of the
parent form appears as a top-level key on the entry under its api_code. The
JSON value type for each such key is determined by the corresponding field's
type.
Field value shapes
Each field of the parent form appears as a top-level key on the entry, keyed by its
api_code. The JSON shape of the value depends on the field's type:
Field type (type) | Submitted value |
|---|---|
short_text | String. The submitted text. |
long_text | String. Multi-line text. |
radio | Object { value, other_text?, extended_text? }, or null when unset. value is the api_code of the selected choice. other_text carries the respondent's free-text input and is only present when the selected choice has is_other: true. extended_text carries the free-text input for a choice that has allow_extended_text: true. The two text keys are mutually exclusive per choice (an is_other choice cannot also enable allow_extended_text) and both are omitted when blank. On write, a bare string is accepted as shorthand for { value: <string> }; null clears the field; text keys that don't match the selected choice's configuration are ignored. |
checkbox | Array of { value, other_text?, extended_text? } objects with the same per-choice semantics as radio. Empty array when nothing is selected. At most one element may carry other_text (the element whose value corresponds to the is_other choice). On write, null clears the field; bare strings in the array are accepted as shorthand for { value: <string> }; duplicate values are silently de-duplicated (first occurrence wins). |
image_radio | Object { value }, or null when unset. value is the api_code of the selected choice. Image choices support neither other_text nor extended_text. On write, a bare string is accepted as shorthand for { value: <string> }; null clears the field. |
image_checkbox | Array of { value } objects — value is the api_code of a selected choice. Empty array when nothing is selected. On write, null clears the field; bare strings in the array are accepted as shorthand; duplicate values are silently de-duplicated (first occurrence wins). |
dropdown | Object { value, other_text? }, or null when unset. Same value and other_text semantics as radio. dropdown does not support extended_text. |
number | Number. Stored as a float; integer-looking values may serialize without a decimal point. |
email | String — an email address. |
phone | Object { country_id, country_code, number }. country_id is an ISO 3166-1 alpha-2 country code (e.g. "CN", "US") and is required; country_code is the dialing code without + (e.g. "86", "1") and is optional on write — when omitted it is derived from country_id; number is the local number without the dialing-code prefix. |
date | Naive wall-clock string formatted per the field's precision: "YYYY-MM" (month), "YYYY-MM-DD" (day), "YYYY-MM-DD HH:mm" (minute), "YYYY-MM-DD HH:mm:ss" (second). Values are interpreted in the form's timezone setting. When no timezone is supplied at creation time, the form uses your account's timezone, falling back to UTC if that is unset or invalid. |
name | String — the submitted name. |
url | String — a URL. |
address | Object { address_line1, address_line2, city, state, postal_code, country }. country is an ISO 3166-1 alpha-2 country code; state is an ISO 3166-2 subdivision code (e.g. "CA", "NY"), not a localized label. |
rating | Integer — the chosen rating level (1..rating_max). |
nps | Integer — the selected score (0..10). |
attachment | Array of objects { id: string, name: string, url: string, file_size: integer, content_type: string }. url is a signed download link valid for 24 hours — refetch the entry to get a fresh link rather than caching it; name is the original filename. |
audio | Read-only object { id, name, url, file_size, content_type, duration } describing the recording (url is a signed download link valid for 24 hours; duration is the recording length). Null when no recording. Submitting a value for an audio field is not supported. |
cascade | Object { level_1: <api_code>, level_2: <api_code>, ... } — one key per level (the field's levels setting, default 2). Each value is the api_code of the choice selected at that level. |
ranking | Object { <choice_api_code>: <rank> } — rank is a positive integer, contiguous starting at 1 for the highest-ranked choice. Unranked choices are omitted. |
matrix | Nested object { <statement_api_code>: { <dimension_api_code>: <cell_value> }, ... }. The inner cell value type depends on the matrix cell field type. |
likert | Object { <statement_api_code>: [<choice_api_code>, ...] }. The value is always an array — a single-choice answer is wrapped in a one-element array. |
time | Object { hour: integer, minute: integer }, plus second: integer when the field has include_second enabled (e.g. { "hour": 9, "minute": 5 }). |
location | Object { longitude: number, latitude: number, address: string }. |
signature | Read-only string — a signed download URL for the signature image, valid for 24 hours. Refetch the entry to obtain a fresh link rather than caching it. Submitting a value for a signature field is not supported. |
matrix_rating | Nested object { <statement_api_code>: { <dimension_api_code>: <integer> } }. The inner integer is the chosen rating level (1..rating_max). |
table | Array of row objects [{ <dimension_api_code>: <cell_value>, ... }]. The inner cell value type depends on each dimension's field type. |
product | Array [{ api_code, number, specification? }]. specification is present when the goods item has dimensions; it is an object of { <dim_api_code>: <option_api_code> }. |
booking | Array of reservations. On write: [{ api_code, scheduled_at, end_at?, number? }] — api_code is the reservation item; scheduled_at (and end_at) are ISO8601 date-time strings; number defaults to 1. For a weekly-schedule item send scheduled_at on the target day. For a per-day-of-week time-slot item send scheduled_at = day + slot start and end_at = day + slot end, matching one of the item's configured slots (quota_setting.daily_time_range_quotas[].start_time / end_time). item_name / time_range_code are server-derived and ignored on write. Send [] to clear. On read: [{ api_code, scheduled_at, end_at, number, item_name, time_range_code }]. |
linked_form | On write: string — the entry_token of an entry in the associated form, or null to clear. The server resolves the token against associated_form_token; an unknown token yields 422. On read: one of three shapes — (1) null if not linked; (2) { "deleted": true } if the linked entry has been deleted; (3) Object { entry_token, serial_number, associated_fields, display_fields } describing the linked entry, where associated_fields / display_fields map each api_code (from associated_field_api_codes / display_field_api_codes respectively) to that field's value, formatted per the linked field's own type (recursive — e.g. a date field renders as its naive wall-clock string, an attachment field renders as its array of file objects). |
formula | The computed result. A number, a naive date string (YYYY-MM-DD), or a string, depending on what the formula evaluates to. |
page_break | None — display-only field; never appears as an entry value. |
description | None — display-only field; never appears as an entry value. |
Last modified on July 9, 2026