canonical: https://jentic.com/apis/fructu.co/fructu

# Fructu API

Jentic publishes the only available OpenAPI specification for Fructu API, keeping it validated and agent-ready. Fructu is a CRM where premium customers can read and write contacts, notes, tasks, records, and the underlying objects, fields, options, and lists that define their schema. The API exposes 19 endpoints covering object metadata, list membership, and write operations against records, notes, and tasks. Authentication uses an X-API-Key header.

## For AI agents

Read CRM schema and write records, notes, and tasks against contacts in a Fructu workspace.

## Scope

Does not handle email sending, payments, or marketing campaign delivery - use for CRM record, note, task, and schema operations only.

## Capabilities

- List and inspect Fructu objects, fields, options, and lists that define the workspace schema
- Create new records on a Fructu object such as contacts or deals
- Attach notes to a record to capture interaction context
- Create tasks linked to a record with due date and assignee
- Delete records, notes, and tasks the integration created in error
- Walk lists of records to drive segmented outreach

## Use cases

### Inbound Lead Capture

When a website form submits, an agent posts a new record on the Contacts object in Fructu via POST /records, attaches the original message as a note via POST /notes, and creates a follow-up task via POST /tasks. The full flow uses three calls and lands the lead in the right segment list ready for outreach.

Example prompt: Create a Fructu record on the contacts object with email and name, attach a note with the form message, and create a task due tomorrow

### Schema-Aware Sync

Before writing into Fructu, an integration calls GET /objects and GET `/objects/{object_id}/fields` to discover which fields exist on a customer's CRM, then GET `/fields/{field_id}/options` to validate picklist values. This lets a sync tool adapt to per-customer schema without hardcoding field IDs.

Example prompt: Call GET /objects, then for the contacts object call GET `/objects/{object_id}/fields` and cache the field IDs

### Sales Activity Logging

Sales reps want every email and call logged against the right contact. An automation listens to comms tools, finds the Fructu record by ID, and writes notes via POST /notes and tasks via POST /tasks so the activity timeline stays current. Notes can be deleted via DELETE `/notes/{note_id}` when an entry is wrong.

Example prompt: Create a note linked to record 9001 with body 'Discovery call held' and a follow-up task due in 3 days

### List-Driven Segmentation

Marketing teams use Fructu lists to segment contacts. A campaign script calls GET `/objects/{object_id}/lists` to find the active campaign list, then GET `/lists/{list_id}` to walk its members for outreach. Combined with the records endpoints this powers list-based newsletters and re-engagement flows.

Example prompt: Call GET `/objects/{object_id}/lists` for the contacts object and walk one list to fetch its members

### Agent-Driven CRM Updates

An AI agent inside a sales workflow takes the rep's instruction 'log this call against Acme' and resolves the company record, posts a note, and adds a task in three Jentic-mediated calls. The X-API-Key never enters the agent's prompt because Jentic injects it at execution time.

Example prompt: Search Jentic for 'create a fructu record', load the POST /records schema, and execute with object_id and field values

## Key endpoints

| Method | Path | Description |
| --- | --- | --- |
| GET | `/objects` | List CRM objects in the workspace |
| GET | `/objects/{object_id}/fields` | List fields on an object |
| GET | `/fields/{field_id}/options` | Get options for a picklist field |
| POST | `/records` | Create a record on an object |
| POST | `/notes` | Attach a note to a record |
| POST | `/tasks` | Create a task linked to a record |
| GET | `/lists/{list_id}` | Read a list and its members |

## Key resources

- **Objects** — Inspect the CRM schema objects available in the workspace
- **Fields** — List fields on an object and the options for picklist fields
- **Lists** — Read lists scoped to an object for segmentation
- **Records** — Create, retrieve, and delete records on any object
- **Notes** — Create, retrieve, and delete notes on a record
- **Tasks** — Create tasks linked to records with due dates and assignees

## Why Jentic

- **Setup:** Wiring Fructu by hand means sending an X-API-Key header on every call to api.fructu.co and first reading the objects and fields schema routes to learn the record shape before you can write. Through Jentic you install once, import Fructu from the API Directory, store the key once, and your agent calls it.
- **Permission scoping:** Fructu takes the target in the request body for writes like /records, /notes, and /tasks, so you limit the agent to the operations it needs, such as reading the object schema and creating a record or note. You choose which operations it may call, and nothing outside that set runs.
- **Credential handling:** Your Fructu API key is stored once, encrypted, by your own Jentic One instance and injected into the X-API-Key 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 Fructu record' or 'add a note to a record', and Jentic returns the matching POST /records or POST /notes operation with its input schema so the agent calls the right endpoint without scanning the reference docs.

## Related APIs

- **HubSpot** — Larger CRM platform with extensive marketing automation and reporting
- **Airtable** — Schema-flexible records platform with similar object and field semantics
- **Smartsheet** — Work-management platform with rows, attachments, and tasks

## FAQ

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

Fructu does not publish an OpenAPI specification. Jentic generates and maintains this spec so that AI agents and developers can call Fructu 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 Fructu API use?

Fructu uses an API-key header named X-API-Key. The key is issued from the Fructu app to premium customers. Through Jentic the key is stored encrypted in your Jentic One instance and injected into the X-API-Key header at execution time.

### Can I create a contact record through the Fructu API?

Yes. POST /records with the object_id for your contacts object and a fields payload that conforms to the schema returned by GET `/objects/{object_id}/fields.` The response returns the new record_id.

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

Fructu does not publish a fixed rate limit. Treat the API as a shared service: throttle high-volume sync jobs to a few requests per second and retry on 429 responses with exponential backoff.

### How do I attach a note to a record through Jentic?

Search Jentic for 'add a note to a fructu record', load the POST /notes schema, and execute with the record_id and body. Jentic injects the X-API-Key from the vault.

### Is Fructu API access free?

Fructu's public API is reserved for premium customers. There is no free tier exposed through the API itself, so the integration assumes a paid Fructu workspace.

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

Yes. Because you run Jentic One yourself, your own rules decide which Fructu operations and credentials the agent may use, so you can grant only what a task needs, such as reading the object schema with GET /objects and GET `/objects/{object_id}/fields` and creating a record with POST /records. Fructu takes the target in the request body for writes to /records, /notes, and /tasks, so you can allow the agent to create notes and tasks while withholding delete operations. Anything outside the operation set you approve does not run.
