canonical: https://jentic.com/apis/refiner.io/refiner

# Refiner API

Jentic publishes the only available OpenAPI specification for the Refiner API, keeping it validated and agent-ready. The Refiner API reads the survey responses your Refiner in-app surveys collect and feeds user identity and events back so surveys target the right people. You can pull responses for a form with completed, partial, or all filtering, list and look up contacts, list forms by state, and read segments. Identify-user and track-event calls attach users and named events to Refiner, and responses can also be stored server-side against a form_uuid.

## For AI agents

Pull Refiner survey responses, contacts, forms, and segments, and send user identities and events that drive survey targeting. Authenticated with a bearer token.

## Scope

Does not handle survey design, email campaign sending, or product analytics dashboards. Use for reading Refiner survey data and sending user identities and events only.

## Capabilities

- Pull survey responses for one form by form_uuid, including partial answers
- Send a named event for a user so Refiner can trigger surveys from it
- Identify a user by id or email so responses link to a known contact
- Look up a single contact by id, email, or uuid
- List forms filtered to published, drafts, or archived
- Store a survey response server-side against a form_uuid
- List the user segments defined in a Refiner account

## Use cases

### Agent-written survey summaries

Your agent reads the responses collected by a Refiner survey and summarises them for you. It lists forms to find the right form_uuid, then pulls that form's responses with include set to completed, and turns raw answers into themes and follow-up actions.

Example prompt: Call GET /forms with list set to published, pick the form_uuid for the NPS survey, then call GET /responses with that form_uuid and include set to completed

### Trigger surveys from product events

Refiner can show a survey when a user does something specific. Sending the event from your backend through the track-event operation, with the user's id or email and an event name, lets surveys fire after actions like an upgrade or a cancelled order.

Example prompt: Call POST /track-event with email set to the user's email and event set to 'subscription_upgraded'

### Keep Refiner contacts in sync

When a user signs up, the identify-user operation registers them by id or email so later survey answers link to a known contact. A single contact can then be read back by id, email, or uuid to confirm what Refiner holds.

Example prompt: Call POST /identify-user with id set to the new user's id and email set to their address, then call GET /contact with that email to confirm the record

### Recover partial survey answers

Users often abandon a survey halfway. Setting include to partials on the responses operation returns those incomplete submissions so you can still read the answers they gave.

Example prompt: Call GET /responses with form_uuid set to the onboarding survey and include set to partials

## Key endpoints

| Method | Path | Description |
| --- | --- | --- |
| GET | `/responses` | Get survey responses |
| POST | `/track-event` | Track a named user event |
| POST | `/identify-user` | Identify a user by id or email |
| GET | `/forms` | List forms by state |
| GET | `/contact` | Get a single contact |
| GET | `/segments` | List segments |

## Key resources

- **Responses** — Survey answers per form, readable as completed, partial, or all, and storable server-side
- **Contacts** — Users known to Refiner, listable, readable by id, email, or uuid, and deletable
- **Forms** — Surveys in the account, listable by state and deletable by form_uuid
- **Segments** — User segments defined in Refiner
- **Events and identity** — Identify-user and track-event calls that link users and actions to survey targeting

## AI readiness

This API is usable in Jentic One now. Its AI-readiness score against Jentic's framework shows where it stands today and where improvements would make it even easier for agents to use.

- **Score:** 65 / 100
- **Maturity:** AI-Aware
- **Dimensions:**
  - Foundational Compliance: 82 / 100
  - Developer Experience & Jentic Compatibility: 56 / 100
  - AI-Readiness & Agent Experience: 47 / 100
  - Agent Usability: 94 / 100
  - Security: 60 / 100
  - AI Discoverability: 100 / 100
- **View full report:** https://jentic.com/apis/refiner.io/refiner/scorecard
- **How the score is calculated:** https://docs.jentic.com/reference/api-readiness-framework/overview/
- **More about the dimensions:** https://docs.jentic.com/reference/api-readiness-framework/specification/#dimensional-model-overview

### Score it yourself

Every API in the directory is allowlisted, so you can re-score it with no key required.

- **Score your own API:** https://jentic.com/scorecard.md
- **Scoring CLI agent skill:** https://github.com/jentic/jentic-api-scorecard/blob/main/skills/jentic-api-scorecard/SKILL.md

```sh
npx @jentic/api-scorecard-cli score <openapi-url>
```

## Why Jentic

- **Setup:** Wiring Refiner by hand means handling its bearer key, separating identify-user and track-event calls from response reads, and paging through responses with page and page_length. Through Jentic you install once, import Refiner from the API Directory, store the key once, and your agent calls it.
- **Permission scoping:** Refiner identifies contacts and forms through query parameters and request bodies, not URL path ids, so rules bound which operations your agent may call rather than which form or contact. You choose those operations, so destructive ones like contact deletion or form deletion are not included unless you add them.
- **Credential handling:** Your Refiner API key is stored once, encrypted, by your own Jentic One instance and injected at execution time. It never enters the agent's prompt, logs, or context.
- **Discovery method:** Agents search Jentic by intent such as 'get survey responses' or 'track a user event', and Jentic returns the matching Refiner operation with its input schema so the agent calls the right endpoint.

## Related APIs

- **Typeform** — Hosted form and survey builder
- **SurveyMonkey** — Survey platform with response export
- **Segment** — Customer event routing
- **Mixpanel** — Product analytics to pair with survey answers

## FAQ

### Why is there no official OpenAPI spec for the Refiner API?

Refiner does not publish an OpenAPI specification. Jentic generates and maintains this spec so that AI agents and developers can call the Refiner API via structured tooling. It is validated against the live API and kept up to date. To run it on your own infrastructure, install Jentic One from its GitHub repo.

### What authentication does the Refiner API use?

Per its OpenAPI spec, the Refiner API authenticates with a bearer token: send your Refiner API key as Authorization: Bearer YOUR_API_KEY. Refiner's own description also mentions passing api_key as a request parameter or using HTTP Basic with the key as username. Through Jentic, the key is stored encrypted by your own Jentic One instance and injected at execution time.

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

The Refiner API description in the OpenAPI spec states 4,000 requests per minute per API key and 80 requests per minute per user ID.

### Can I get only completed survey responses from the Refiner API?

Yes. The responses operation takes an include parameter with the values completed, partials, or all, plus a form_uuid to restrict results to one survey and page and page_length for paging.

### How do I send a user event to Refiner through Jentic?

Search Jentic for 'track a user event in Refiner'. It returns the POST /track-event operation, which requires an event name and takes the user's id or email. Your agent fills those in and Jentic makes the call with your stored key.

### Is there a Refiner MCP server?

You don't need an MCP server to give your agent Refiner. Jentic connects it directly from the API Directory: import it, store your API key once, and your agent calls it, discovering operations on demand rather than loading a full tool list into its context.

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

Yes. For a reporting agent, allow only GET /responses, GET /forms, and GET /segments: it can read and summarise survey results, and the DELETE /contact and DELETE /forms operations stay out of reach. Every call it makes is logged.
