Export API

Pull a full account export as JSON or CSV from a single endpoint.

Overview

The export endpoint returns a complete machine-readable copy of your account's contacts, notes, tags, and "introduced by" links — the same data the dashboard's Settings → Data → Export produces, plus an optional CSV format.

For what's included and what's not (and why the Activity Log isn't part of it), see the user-facing Export page.

Endpoint

MethodPathPurpose
GET/api/v1/data/export?format=jsonFull account export as JSON.
GET/api/v1/data/export?format=csvFull account export as CSV.

Request

GET /api/v1/data/export?format=json
Authorization: Bearer rmy_<your-key>

Query parameters

ParamTypeDefaultNotes
formatjson | csvjsonOutput format.

If format is missing or anything other than json/csv, the response is 422 with the validation breakdown.

Response

The response body is the file itself, served with appropriate headers:

HTTP/1.1 200 OK
Content-Type: application/json; charset=utf-8
Content-Disposition: attachment; filename="remy-export-2026-05-04.json"
Cache-Control: no-store

For CSV:

Content-Type: text/csv; charset=utf-8
Content-Disposition: attachment; filename="remy-export-2026-05-04.csv"

Content-Disposition: attachment makes browsers offer a download. Programmatic clients should ignore the header and treat the body as the data.

JSON shape

A single top-level object with arrays for each type:

{
  "exportedAt": "2026-05-04T12:00:00.000Z",
  "contacts": [ { "id": "...", "givenName": "Alice", ... } ],
  "notes": [ { "id": "...", "contactId": "...", "body": "...", "occurredAt": "..." } ],
  "tags": [ { "id": "...", "name": "investor", "contactIds": [ ... ] } ],
  "introductions": [ { "contactId": "...", "introducedById": "..." } ]
}

CSV shape

CSV exports are flattened into one file per resource, concatenated into a single .csv payload with section headers. If your tooling expects strict tabular data, the JSON format is easier to consume.

What's Included

TypeNotes
ContactsAll active contacts (manual and Google-sourced), with identity fields, tags, and the introducer link.
NotesEvery active note, with body, occurredAt, and the contact it belongs to. Soft-deleted notes within the 30-day retention window are excluded.
TagsEvery tag with its membership list.
IntroductionsThe forward contact → introducer link. The reverse view is computed; not stored.

What's Not Included

  • The Activity Log itself — it's visible at Activity Log in the sidebar but not in the export. Export of the log is on the roadmap.
  • Account metadata — your email, password hash, sessions, 2FA secrets, billing history, API keys.
  • Soft-deleted records within their retention window.

Example

curl https://app.remy.com/api/v1/data/export?format=json \
  -H "Authorization: Bearer rmy_<your-key>" \
  -o remy-export.json

Or in JavaScript, streaming the response to disk via Node:

import { writeFile } from "node:fs/promises";

const res = await fetch(
  "https://app.remy.com/api/v1/data/export?format=json",
  { headers: { Authorization: `Bearer ${process.env.REMY_API_KEY}` } }
);

if (!res.ok) throw new Error(`Failed: ${res.status} ${await res.text()}`);
await writeFile("remy-export.json", await res.text());

Audit Trail

Every export — JSON or CSV, dashboard or API — lands in the Activity Log as Data Exported, with the format requested in metadata. API-driven exports carry authMethod: "api_key" and the IP and user-agent of the calling client, so you can distinguish a scheduled backup script from a one-off dashboard download.

Frequently Asked Questions

How often can I call this?

There's no fixed limit, but the export is computed on demand and may be slow for large accounts. A backup once a day is reasonable; once a minute is not.

Can I get an incremental export?

Not today. The endpoint always returns the full account. Differential / incremental export is on the roadmap.

Can I import this back into a fresh Remy account?

Not directly. There is no import endpoint today — you'd have to replay the data through the contact and note endpoints in your own script. An import path is on the roadmap.

Is the JSON format stable?

The shape evolves additively — new fields may be added, existing fields are not removed or renamed within /api/v1. If you script against it, treat unknown keys as forward-compatible.

On this page