canonical: https://jentic.com/apis/fulcrumapp.com/fulcrumapp-fulcrum-api

# Fulcrumapp Fulcrum API

Jentic publishes the only available OpenAPI specification for Fulcrum API, keeping it validated and agent-ready. This is the wider 61-endpoint Fulcrum spec, covering forms, records, projects, choice lists, classification sets, memberships, roles, photos, videos, audio, signatures, layers, webhooks, and changesets. It is the right choice when an integration needs more than the core record-and-form surface - for example managing project membership, configuring webhooks, or syncing classification sets. Authentication uses an ApiToken header.

## For AI agents

Run the full Fulcrum mobile data collection surface - forms, records, projects, memberships, media, and webhooks - across 61 endpoints.

## Scope

Does not handle billing, BI dashboards, or end-user mobile auth - use for the full Fulcrum forms, records, projects, memberships, media, and webhook surface only.

## Capabilities

- Manage Fulcrum forms, records, and record history across the full data-collection lifecycle
- Organise field work into projects and assign user memberships and roles
- Maintain choice lists and classification sets that drive form picklists
- Configure webhooks to push record events to downstream systems
- Download photos, videos, audio, and signatures captured against records
- Manage map layers used inside the Fulcrum mobile app
- Track record edits via changesets for auditing and rollback

## Use cases

### Project and Membership Setup

Operations teams launching a new field campaign create a Fulcrum project via POST /projects, then add user memberships via POST /memberships and assign roles via POST /roles. This bootstraps a new crew with the right permissions before any forms are filled out, replacing manual web-app clicks with scripted onboarding.

Example prompt: Create a project named 'Q3 Pipeline Inspections' and add three user memberships with role inspector

### Webhook-Driven Sync

Push new record events into a downstream warehouse or CRM by registering a webhook via POST /webhooks. Fulcrum POSTs record-created and record-updated events to the configured URL, and the spec exposes the full webhook resource for listing, updating, and deleting subscriptions.

Example prompt: Create a webhook on the records resource pointing at https://example.com/hooks/fulcrum

### Choice List and Classification Management

Forms often share dropdown values across templates. The choice_lists and classification_sets endpoints let an integration update the master list of options once and have all dependent forms reflect the change on next mobile sync. This is critical when regulatory codes or asset taxonomies change.

Example prompt: Add a new option to choice list 'Asset Type' and verify the form referencing it returns the updated values

### Audit Trail and Rollback

When a record is edited in the field, the changesets endpoints provide a full audit trail. An auditor can call GET `/records/{id}/history` and GET /changesets to see who changed what and when, and combine that with role memberships to confirm authorisation.

Example prompt: Retrieve the history for record 9001 and list every changeset author and timestamp

### Agent-Driven Field Operations Hub

An AI agent assembles a daily field operations digest by listing today's records, pulling associated photos, summarising changesets, and posting any rule-violating records to a Slack channel. Through Jentic the ApiToken stays in the vault and the agent only sees scoped operation results.

Example prompt: Search Jentic for 'list fulcrum records', execute filtered by today's date, then for each record call GET `/records/{id}/history`

## Key endpoints

| Method | Path | Description |
| --- | --- | --- |
| POST | `/projects` | Create a new field-campaign project |
| POST | `/memberships` | Add a user to a project with a role |
| POST | `/records` | Submit a new record against a form |
| GET | `/records/{id}/history` | Walk a record's edit history |
| POST | `/webhooks` | Subscribe to record events with a target URL |
| GET | `/forms` | List forms in the organisation |
| GET | `/photos/{access_key}` | Download a captured photo by access_key |

## Key resources

- **Forms** — Create, update, and retire data-collection forms
- **Records** — Submit records and walk record history
- **Projects** — Group forms and records by field campaign
- **Memberships** — Assign users to projects with roles
- **Webhooks** — Subscribe to record and form events
- **Choice Lists** — Manage shared dropdown values used by forms
- **Classification Sets** — Manage hierarchical taxonomies referenced by forms
- **Photos / Videos / Audio / Signatures** — Download media captured against records
- **Changesets** — Audit edits to records over time

## Why Jentic

- **Setup:** Wiring Fulcrum by hand means sending an ApiToken header on every call to api.fulcrumapp.com and threading forms, records, projects, memberships, media, and webhooks together yourself. Through Jentic you install once, import Fulcrum from the API Directory, store the token once, and your agent calls it.
- **Permission scoping:** Fulcrum creates most resources through the request body on routes like /projects, /records, and /webhooks, so you limit the agent to the operations it needs, such as creating a project or subscribing to record events. You choose which operations it may call, and nothing outside that set runs.
- **Credential handling:** Your Fulcrum token is stored once, encrypted, by your own Jentic One instance and injected into the ApiToken header at execution time. It never enters the agent's prompt, logs, or context.
- **Discovery method:** Agents search Jentic by intent such as 'create a Fulcrum project' or 'subscribe to Fulcrum record events', and Jentic returns the matching POST /projects or POST /webhooks operation with its full input schema so the agent calls the right endpoint without browsing the reference docs.

## Related APIs

- **Fulcrum API (core)** — Lighter 13-endpoint Fulcrum spec for the core forms, records, users, and photos surface
- **KoboToolbox** — Open-source field data collection and survey platform
- **Typeform** — Conversational online forms with rich response analytics
- **JotForm** — Browser-first form platform with broad templates

## FAQ

### Why is there no official OpenAPI spec for Fulcrum API?

Fulcrum does not publish an OpenAPI specification. Jentic generates and maintains this spec so that AI agents and developers can call Fulcrum API via structured tooling. It is validated against the live API and kept up to date. Get started with Jentic One, the self-hosted execution layer.

### What authentication does the Fulcrum API use?

Fulcrum uses an ApiToken header carrying the API token from the Fulcrum web app. Jentic stores the token encrypted in your Jentic One instance and injects it into the ApiToken header at execution time, so the agent never sees the raw value.

### Can I subscribe to record events through the Fulcrum API?

Yes. POST /webhooks with a target URL and an event filter to receive record-created and record-updated callbacks. Webhooks can be listed, updated, and deleted via the same /webhooks resource.

### What are the rate limits for the Fulcrum API?

Fulcrum applies per-account throttling that scales with plan tier. Keep concurrent calls under five for sustained sync jobs, retry on 429 with exponential backoff, and avoid full-form re-syncs unless schema actually changes.

### How do I create a Fulcrum project through Jentic?

Search Jentic for 'create a fulcrum project', load the POST /projects schema, and execute with name and description. Then call POST /memberships to add users to the project.

### Which Fulcrum spec should I use - fulcrum or fulcrum-api?

Use the lighter fulcrum spec for the core 13-endpoint forms, records, users, and photos workflow. Use this fulcrum-api spec when you need the full 61-endpoint surface including projects, memberships, choice lists, classification sets, webhooks, and changesets.

### Can I limit what my agent is allowed to do with the Fulcrum API?

Yes. Jentic One is self-hosted, so your own rules decide which Fulcrum operations and credentials the agent may use. Because Fulcrum creates most resources through the request body on routes like POST /projects, POST /records, and POST /webhooks, you can grant only the operations the agent needs, such as creating a project or subscribing to record events, and leave out membership or changeset access. Anything outside that chosen set never runs, and the ApiToken is injected at execution time so the agent never handles the raw credential.
