---
title: "Integrations - ODK Central"
url: "https://docs.unified.to/integrations/odkcentral"
description: "Build ODK Central integrations faster with our Unified API — Forms data, API key, real-time sync."
date: "2026-11-10T21:36:02.009Z"
updated: "2026-11-10T21:36:02.009Z"
---

# ODK Central integration

> What this integration supports through the Unified.to API, by object. Live data: `GET https://api.unified.to/unified/integration?type=odkcentral` with your workspace API key (or Core MCP `list_unified_integrations` with `type: "odkcentral"`). All integrations: https://docs.unified.to/integrations.md

## Overview

- **Type:** `odkcentral`
- **Categories:** [Forms](https://docs.unified.to/forms/overview.md), [Tasks](https://docs.unified.to/task/overview.md), [HR & Directory](https://docs.unified.to/hris/overview.md), [Passthrough](https://docs.unified.to/passthrough/overview.md)
- **Website:** https://getodk.org
- **Vendor API docs:** https://docs.getodk.org/central-api/
- **Launched:** 2026-11-10

## How end users connect

- **API key** entered by the end user: `Email`, `Password`, `ODK Central Host`, `Project ID`
    - The email address of an ODK Central Web User. The User needs a role that can read the projects, forms and submissions you want to use (e.g. Project Manager or Administrator).
    - The password of that Web User. Servers that use single sign-on (OIDC) do not accept passwords over the API.
    - The host of your ODK Central server, e.g. central.example.com (no https:// and no path).
    - The numeric ID of the ODK Central project whose forms and submissions to use. It is the number after /projects/ in the project URL.

## Supported objects

| Object | Methods | Webhooks |
| --- | --- | --- |
| [forms_form](#forms_form) | list, get, update, remove | none |
| [forms_submission](#forms_submission) | list, get | created, updated |
| [hris_employee](#hris_employee) | list, get, create, update, remove | none |
| [passthrough](#passthrough) | none | none |
| [task_project](#task_project) | list, get, create, update, remove | none |

Values below come from the integration's support data. "Required list filters" must be sent on list calls; "Required on create" fields must be sent when creating. Webhook events are `native` (pushed by the vendor) or `virtual` (polled by Unified.to). Anything not listed is not supported; an unsupported method returns `501`.

### forms_form

- **Methods:** `list`, `get`, `update`, `remove`
- **Webhooks:** none
- **List filters:** none
- **Readable fields:** `created_at`, `id`, `is_active`, `name`, `response_count`, `updated_at`
- **Writable fields:** `is_active`
- **Vendor objects:** `form`
- **Model:** https://docs.unified.to/forms/form/model.md

### forms_submission

- **Methods:** `list`, `get`
- **Webhooks:** `created` (virtual), `updated` (virtual)
- **Virtual webhook filters:** `virtual_webhook_form_id`, `virtual_webhook_limit`, `virtual_webhook_updated_gte`
- **List filters:** `list_form_id`, `list_limit`, `list_offset`, `list_updated_gte`
- **Readable fields:** `answers`, `created_at`, `form_id`, `id`, `updated_at`
- **Writable fields:** none
- **Vendor objects:** `submission`
- **Model:** https://docs.unified.to/forms/submission/model.md

### hris_employee

- **Methods:** `list`, `get`, `create`, `update`, `remove`
- **Webhooks:** none
- **List filters:** `list_query`
- **Readable fields:** `created_at`, `emails`, `employment_status`, `first_name`, `id`, `last_name`, `name`, `terminated_at`, `updated_at`
- **Writable fields:** `name`
- **Required on create:** `emails`
- **Vendor objects:** `user`
- **Model:** https://docs.unified.to/hris/employee/model.md

### passthrough

- **Methods:** none
- **Webhooks:** none
- **Readable fields:** none
- **Writable fields:** none

### task_project

- **Methods:** `list`, `get`, `create`, `update`, `remove`
- **Webhooks:** none
- **List filters:** none
- **Readable fields:** `description`, `has_tasks`, `id`, `name`
- **Writable fields:** `description`
- **Required on create:** `name`
- **Vendor objects:** `project`
- **Model:** https://docs.unified.to/task/project/model.md
