Download Your Data

Take a portable ZIP archive of everything tied to your Gab AI account — anytime, in one click. Available in Settings and through the developer API.

Overview

Your data belongs to you. Gab AI ships a one-click data export that packages every record we hold for your account into a single, portable ZIP archive you can save, search, or migrate. Inside you'll find one JSON file per data type (conversations, memories, files, etc.) plus a markdown file per conversation that's easy to open in any text editor. The same data is available programmatically over the developer API for backups, dashboards, or compliance tooling. The export includes:

What's NOT included

Deleted conversations and chats marked as temporary (incognito mode) are filtered out before we build the archive — if you can't see it in the app, it isn't in the export. We also strip passwords, password reset tokens, MFA secrets, backup codes, payment-processor identifiers (Authorize.net / Valmar customer + payment-method IDs), memory embedding vectors, files attached to temporary chats, and the secret value of API keys.

What's in the ZIP

The archive is organized so you can drag the file into any unzip tool and immediately understand what's where:

Archive contents

From the App

Most users will grab their data through the Settings UI. The download triggers a ZIP file save on web and the OS share sheet on iOS / Android.

Throttling

Account exports are capped at 5 per hour to protect server capacity. That's plenty for legitimate "I want a backup" or "I'm migrating tools" workflows.

From the Developer API

Plus subscribers with API access can fetch the same data over HTTP from GET /v1/account/export. The developer API defaults to JSON for easy programmatic consumption and accepts ?format=zip when you want the same archive the Settings UI downloads. Pass ?include_messages=false if you only want metadata for a sanity check — that drops the (often very large) conversation messages array and shrinks the bundle dramatically.

Quick start

Node.js

Python

Same data, two views

The developer API and the in-app Settings button hit the same backend — you get the same data either way. JSON is the canonical shape; the ZIP is just a friendlier wrapping that adds a README and per-conversation markdown files.

Common Use Cases

FAQ

Are deleted or temporary chats included? No. We exclude every conversation that's been deleted (soft or hard) and every chat that was started in temporary / incognito mode. Same goes for memories you rejected, soft-deleted custom agents and collections, and files attached to temporary chats. If it isn't visible in the app, it isn't in the export. Does the export contain my password or payment info? No. We strip all credentials, password reset tokens, MFA secrets, backup codes, and payment-processor IDs before returning the archive. What if my account is too large to fit? Each collection is capped at a generous limit (5,000 conversations, 10,000 files, etc.). If a cap is hit, the JSON response includes a truncated object listing the affected collections, and the ZIP's README spells it out. Email support@gab.ai for a complete offline archive. Are the API keys in the export usable? No — only metadata is included (name, creation time, last-used timestamp, usage counts). Secret values are never re-exported, since we only display them once at creation. Does this cost credits? No. Account exports are free and don't consume API credits. They count against your daily request limit but at a tiny rate compared to inference calls.

What's NOT included

Deleted conversations and chats marked as temporary (incognito mode) are filtered out before we build the archive — if you can't see it in the app, it isn't in the export. We also strip passwords, password reset tokens, MFA secrets, backup codes, payment-processor identifiers (Authorize.net / Valmar customer + payment-method IDs), memory embedding vectors, files attached to temporary chats, and the secret value of API keys.

gab-ai-account-data-2026-05-02.zip
├── README.md                  # human-readable overview, counts, layout
├── manifest.json              # exported_at, counts, truncated, schema_version
├── profile.json               # your account profile
├── conversations.json         # raw bundle of every conversation
├── conversations/             # one .md file per conversation, easy to read
│   ├── 2026-05-01-untitled-conversation-abc123.md
│   └── ...
├── memories.json              # raw memory bundle
├── memories.txt               # one memory per line, easy to grep
├── files.json
├── agents.json
├── collections.json
├── voice_sessions.json
├── bookmark_folders.json
├── inference_tasks.json
├── purchases.json
├── credit_purchases.json
├── referrals.json
├── feedback.json
└── api_keys.json              # metadata only — secret values are never re-exported
  1. Open Settings — Click your avatar in the top-right corner of Gab AI and pick Settings. On mobile, tap the menu icon and select Settings.
  2. Go to General — In the Settings sidebar, select General. Your language preferences live here, along with the data controls.
  3. Find "Download your data" — Scroll past the language and verification rows to the Download your data section. It sits right above the Danger Zone.
  4. Click Download ZIP — Click Download ZIP. Gab AI prepares an archive named gab-ai-account-data-YYYY-MM-DD.zip and either saves it to your downloads folder (web) or opens the share sheet (mobile). Heavy accounts may take a few seconds — that's normal.
  5. Open the archive — Unzip the file with whatever tool your OS provides. Start with the README.md for a tour, browse conversations/ to read individual chats, or load the per-collection JSON files into the tool of your choice.

Throttling

Account exports are capped at 5 per hour to protect server capacity. That's plenty for legitimate "I want a backup" or "I'm migrating tools" workflows.

# JSON (default) — easy to script against
curl https://gab.ai/v1/account/export \\
  -H "Authorization: Bearer YOUR_API_KEY" \\
  -o gab-ai-account-data.json

# ZIP archive — matches the in-app download
curl "https://gab.ai/v1/account/export?format=zip" \\
  -H "Authorization: Bearer YOUR_API_KEY" \\
  -o gab-ai-account-data.zip
const fs = require('fs');

const response = await fetch('https://gab.ai/v1/account/export', {
  headers: { Authorization: 'Bearer YOUR_API_KEY' },
});

if (!response.ok) {
  throw new Error(\`Export failed: \${response.status}\`);
}

const bundle = await response.json();
fs.writeFileSync(
  'gab-ai-account-data.json',
  JSON.stringify(bundle, null, 2),
);

console.log('Exported', bundle.counts);
import json
import requests

resp = requests.get(
    "https://gab.ai/v1/account/export",
    headers={"Authorization": "Bearer YOUR_API_KEY"},
    timeout=120,
)
resp.raise_for_status()

with open("gab-ai-account-data.json", "w") as f:
    json.dump(resp.json(), f, indent=2)

print("Exported", resp.json()["counts"])

Same data, two views

The developer API and the in-app Settings button hit the same backend — you get the same data either way. JSON is the canonical shape; the ZIP is just a friendlier wrapping that adds a README and per-conversation markdown files.