For the complete documentation index, see llms.txt. This page is also available as Markdown.

Updating Custom Fields

Discover custom fields, inspect metadata, update values, and manage grouped records.

Problem statement

Some integrations need more than read access to custom fields. They need to discover the field schema, validate allowed values, update student or parent records, and manage grouped field records.

Before you start

Make sure your integration can authenticate against OpenApply v3.

See OpenApply v3 API Authentication.

If you only need to read custom field values from student or parent records, start with Pulling Custom Fields.

1. Discover the available fields

Use GET /api/v3/fields to fetch the current field schema for the school.

This is the best starting point when your integration should adapt to each school's configuration instead of hardcoding field names.

curl -H "Authorization: Bearer ACCESS_TOKEN" \
  "https://school.openapply.com/api/v3/fields"

Use the endpoint's query parameter shown in the API reference when you want to limit results to one record type.

See Fields.

2. Inspect one field before writing to it

Use GET /api/v3/fields/{id} to fetch metadata for one field.

This is especially useful for:

  • select fields with predefined options

  • grouped fields with child fields

  • validation before you send updates

Review the field's type, slug, and available options before building the payload.

3. Update student custom fields

Use PATCH /api/v3/students/{id}/custom_fields to write custom field values to a student record.

Build the custom_fields payload from the identifiers returned by the fields endpoints.

For grouped fields, send an array of records.

See Students.

4. Update parent custom fields

Use PATCH /api/v3/parents/{id}/custom_fields for parent or guardian records.

The payload shape matches the student custom fields endpoint.

See Parents.

5. Delete one grouped student record

Use DELETE /api/v3/students/{id}/custom_fields/{field_id}/records/{record_id} when you need to remove one item from a grouped field without changing the other records.

This is useful for grouped data such as previous schools or similar repeatable entries.

6. Manage options for select fields

If your integration also manages the field configuration, use the field option endpoints:

  • POST /api/v3/fields/{field_id}/options

  • PATCH /api/v3/fields/{field_id}/options/{id}

  • DELETE /api/v3/fields/{field_id}/options/{id}

Example create request:

Practical guidance

Read first, then write

Do not assume the same field exists across schools.

Always start by discovering fields for the current school, then build your write payload from that response.

Validate option fields before updating

For select-style fields, fetch the field detail first.

That gives you the allowed options and helps avoid failed writes.

Treat grouped fields as structured data

Grouped fields are not single string values.

They contain one or more records, and each record contains child fields.

Keep payloads narrow

Only send the custom fields you want to change.

This reduces the risk of overwriting unrelated values.

Last updated