canonical: https://jentic.com/apis/dupin.app/dupin

# Dupin App Dupin API

Jentic publishes the only available OpenAPI specification for Dupin API, keeping it validated and agent-ready. Dupin is an application management platform that lets teams provision projects and store associated data records under a workspace. The API exposes five endpoints to list and create projects, retrieve a single project, and list and create generic data records linked to a project. Authentication uses an API key passed in the X-API-Key header.

## For AI agents

Provision Dupin projects and append data records under them. Useful for agents that bootstrap workspaces or persist structured artefacts as part of a workflow.

## Scope

Does not handle authentication, billing, or end-user UI - use for Dupin project provisioning and data record management only.

## Capabilities

- List existing projects via GET /projects
- Provision a new project via POST /projects
- Read a project's details via GET `/projects/{id}`
- List data records associated with the workspace via GET /data
- Append a new data record via POST /data

## Use cases

### Workspace Provisioning Bot

Stand up a Dupin project automatically when a new customer or internal team is created elsewhere. The agent calls POST /projects with the workspace name, then optionally POST /data with starter records so the project is not empty on first open. This removes manual setup steps from the onboarding workflow.

Example prompt: POST /projects with name='Acme Corp' and template='default', store the returned id, then POST /data with project_id and seed entries

### Structured Data Capture from a Webhook

Persist structured data records that arrive from another system into Dupin so they show up alongside the project they relate to. The agent receives a webhook, looks up the project via GET `/projects/{id}`, and writes the payload through POST /data. This is useful for keeping context next to the project without building separate storage.

Example prompt: On the inbound webhook, GET `/projects/{id}` to confirm the project exists, then POST /data with the project_id and the webhook payload

### Agent-Driven Project Management via Jentic

Wire Dupin into agent workflows that create projects and append records as part of a longer chain. Through Jentic the agent searches by intent, loads the schema for /projects or /data, and executes - the X-API-Key never enters the agent's prompt context.

Example prompt: Search Jentic for 'create a Dupin project', load the schema for POST /projects, and execute with the project name supplied by the parent workflow

## Key endpoints

| Method | Path | Description |
| --- | --- | --- |
| GET | `/projects` | List projects |
| POST | `/projects` | Create a project |
| GET | `/projects/{id}` | Get a project by ID |
| GET | `/data` | List data records |
| POST | `/data` | Create a data record |

## Key resources

- **Projects** — Provision and read projects under /projects
- **Data** — List and append data records under /data

## Why Jentic

- **Setup:** Wiring the Dupin API by hand means handling its X-API-Key auth and building the project and data-record calls yourself. Through Jentic you install once, import Dupin from the API Directory, store the key once, and your agent calls it.
- **Permission scoping:** Dupin puts the project id in the URL path (`/projects/{id}`), so a rule can pin your agent to reading a project and its data. You choose the operations it may call, so creating projects or writing data records is not included unless you add them.
- **Credential handling:** Your Dupin 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 Dupin project' or 'store a data record', and Jentic returns the matching Dupin operation with its input schema so the agent calls the right endpoint without browsing the docs.

## Related APIs

- **Dub API** — Branded short links for project resources surfaced from Dupin
- **Dubble API** — Step-by-step guides that document how to use a newly provisioned Dupin project
- **Duply API** — Generated images keyed off project metadata stored in Dupin

## FAQ

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

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

Dupin uses an API key passed in the X-API-Key header. Through Jentic the key is stored encrypted in the vault and injected at execution, so the raw value never enters the agent's prompt.

### Can I create a project with the Dupin API?

Yes. POST /projects accepts the project name and optional fields and returns the created project record. Read it back via GET `/projects/{id}.`

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

The OpenAPI spec does not declare rate limits. Confirm your plan's quota with Dupin support and have your agent handle 429 responses with exponential backoff.

### How do I append a data record to a project through Jentic?

Search Jentic for 'create Dupin data record', load the schema for POST /data, and execute with the project_id and payload. Install with pip install jentic.

### Does the Dupin API support listing all data across projects?

Yes. GET /data returns the list of records in the workspace. Filter or page in the client based on the project_id field for project-scoped views.

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

Yes. Because you run Jentic One yourself, your own rules decide which Dupin operations the agent may call and which stored credentials it may use. Since Dupin puts the project id in the URL path (GET `/projects/{id}`), you can pin the agent to reading a single project and its data records via GET /data, while leaving out the write operations. Creating projects with POST /projects or appending records with POST /data stays unavailable unless you explicitly add those operations.
