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.
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:
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.
The archive is organized so you can drag the file into any unzip tool and immediately understand what's where:
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.
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.
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.
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.
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.
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
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"])
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.