Skip to content

Reuily API

Read your forms, their questions and every response from your own code. The API is included on every plan, Free too.

Updated View as Markdown

Quick answer

How do I read my forms and responses with the Reuily API?

Create an API key under Settings, Security, API keys, then send it as Authorization: Bearer with each request to https://reuily.com/api/v1. The API reads forms and responses in the key's workspace, on every plan including Free.

How do I get an API key?

  1. 1

    Create a key

    Go to Settings, then Security. Under API keys, choose Create key, name it after the app that will use it and pick a workspace.
  2. 2

    Copy it once

    Reuily shows the key once. Store it in your app's secret settings, never in code a browser loads.
  3. 3

    Send it with each request

    Add the header Authorization: Bearer followed by your key.

Base URL

https://reuily.com/api/v1

Which endpoints are there?

Every endpoint is a GET request under the base URL and returns JSON. Lists come back as data, with page, page_size, total and has_more.

GET /me
The key's workspace, organization and owner. Handy for checking a key works.
GET /forms
Forms in the workspace, most recently updated first. Supports page, page_size and search.
GET /forms/{form_id}
One form with its questions, their IDs, types and answer choices.
GET /forms/{form_id}/responses
Responses to a form. Supports page, page_size, since, until and order.
GET /forms/{form_id}/responses/{response_id}
One response.

Query parameters

page
Page number, starting at 1.
page_size
Items per page, from 1 to 100. The default is 20.
search
Forms only: match form names.
since / until
Responses only: dates like 2026-10-08, in UTC. Both are inclusive.
order
Responses only: newest (the default) or oldest.

What does a request look like?

This reads the latest 50 responses to a form. Each answer carries its question's ID, which matches the questions from GET /forms/{form_id}.

curl https://reuily.com/api/v1/forms/Ab12Cd34/responses?page_size=50 \  -H "Authorization: Bearer rly_key_..."

Example response

JSON

{  "data": [    {      "id": "Ef56Gh78",      "form_id": "Ab12Cd34",      "submitted_at": "2026-10-08T11:59:58Z",      "completion_seconds": 42,      "answers": [        {          "question_id": "rating-field",          "question": "How would you rate us?",          "answer": 5        }      ]    }  ],  "page": 1,  "page_size": 50,  "total": 1,  "has_more": false}

What errors and limits are there?

Each key can make 100 requests a minute. Errors come back as JSON like {"error": {"code": "not_found", "message": "Not found."}}.

400 invalid_request
A parameter is missing or out of range. The message says which.
401 missing_api_key / invalid_api_key
No key was sent, or it was revoked or has stopped working.
403 forbidden / plan_required
The key's owner can't see that, or API access is off for the organization.
403 mfa_enrollment_required
The organization requires two-step verification and the key's owner hasn't set it up.
404 not_found
The form or response doesn't exist in the key's workspace.
429 rate_limited
More than 100 requests in a minute. Wait for the Retry-After seconds.

How do I revoke a key?

Go to Settings, then Security. Under API keys, choose Revoke next to the key. Apps using it stop working straight away.

Common questions

Which plans include API access?

Every plan, including Free. The API follows your plan's limits and features.

Can the API create or change forms?

Not yet. The API reads forms and responses. To build forms from code or an assistant, use an AI agent through Reuily's MCP server, and to receive each new response as it arrives, use a webhook.

What can a key see?

A key works in the one workspace you picked and has your access there. If you lose access to the workspace, the key stops working too.

Why did my key stop working?

A key ends when you revoke it, change your password, change two-step verification or sign out everywhere. Create a new key and update your app.

Should I poll the API for new responses?

Use a webhook to hear about each new response as it arrives, and the API to backfill or look up responses. Polling counts against the limit of 100 requests a minute.