You can take your data with you: to keep a copy, to move to another provider or to your own systems, or before your account is closed. This page sets out how to do so, what you receive, in which formats, and the known technical limitations. Your rights are in section 9.7 of our Terms of Service and section 8 of our Privacy Policy.
1.1 You prepare an export of your data in your account settings. When it is ready, you download it there. You can prepare a new export once a day.
1.2 To switch to another provider or to your own systems, or to have your data erased when your contract ends, write to [email protected] from the email address of your account. If you can no longer write from that address, say so, and we will ask you to confirm the request in another way.
2.1 You receive one ZIP archive with the data of your account:
Your rights to your personal data under the GDPR, also in another person’s studio, are not affected (section 8 of our Privacy Policy).
2.2 The archive holds:
account.json: your profile, plan, balance and ledger, orders, withdrawals and cancellations, your crew and your provider settings;studio.json: your studio, the people in it and the invitations sent from it;conversations.json: every conversation you started, with its messages and the desk beside it as you last left it, and in somebody else’s studio only your own messages;projects.json: every project, the desk its conversations are synced into, and every version of every artifact in it, with its title, kind, prompt or description, the model and provider that made it, when it was made, what it was made from and where its file is in the archive;files/: every Input and Output, one folder per project;crew/: the pictures you gave your crew members;schemas/: the structure of each JSON file as JSON Schema;README.txt: a note pointing to this page, which also lists any file we could not read when we made the archive.For example:
lean_art-export-2026-10-11.zip
├── README.txt
├── account.json
├── studio.json
├── conversations.json
├── projects.json
├── schemas/
│ ├── account.schema.json
│ ├── studio.schema.json
│ ├── conversations.schema.json
│ └── projects.schema.json
├── crew/
│ └── halina.jpg
└── files/
└── night-ferry/
├── harbour_at_dusk_0193c8a1-….png
├── interview_0193c8a2-….mp4
└── script_0193c8a3-….json
2.3 Not included are our filter scores, internal moderation records and system logs, because providing them would disclose our trade secrets (section 9.7(c) of the Terms). Also not included is what we do not hold: your payment details and the photos from your identity check, which Stripe holds, and Content you have deleted.
3.1 Inputs and Outputs come in the file formats in which the Service holds them:
3.2 Everything else comes as JSON in UTF-8. Times are given in UTC in ISO 8601 format. Amounts of money are decimal numbers written as text. A field that does not apply is null. Section 5 sets out the structure of each file.
4.1 Documents, notes and cuts are in the Service’s own JSON format, which describes their text, layout and timing. Other software can read the files but will not display them as lean_art does. A cut names the clips it uses rather than containing them.
4.2 Footage that your browser converted on upload is exported as the converted copy the Service holds, not as your original file.
4.3 Marks drawn over a picture and a clip’s colour grade are not part of its file. They are in projects.json, in the Service’s own JSON format.
4.4 The desk of each project and of each conversation, with the place and folder of each card, is exported as data. Other software does not reproduce it.
4.5 The export names the model, provider and prompt that made each Output. Running the same prompt elsewhere will not give the same result, because AI models do not reproduce their outputs exactly.
4.6 Your own keys for AI providers are not exported, only their last four characters. Connect them again with the new service. For your security, keys are not exported in full.
4.7 Files are stored in the archive uncompressed, with the checksum of each after its data. Where the archive or a file in it is larger than 4 GB, the archive uses the ZIP64 extension of the format. We have checked that Info-ZIP’s unzip, libarchive’s bsdtar, macOS’s ditto, Python’s zipfile and Java’s ZipFile read such an archive, including a file larger than 4 GB. Java’s ZipInputStream does not read the archive at any size.
4.8 If we cannot read a file because it is no longer stored, the archive is made without it, and README.txt lists it.
Each JSON file is described below, field by field: its name, the kind of value it holds, and what it means. An object or list inside a file is described under a heading of its own that says where it sits. [] stands for each item of a list: ledger[] describes each entry of the ledger.
The account: profile, plan, balance and ledger, orders, withdrawals, cancellations, crew and provider settings.
exportedAt (time): When this archive was made.madeForAdultArea (true or false): Whether this archive was made for the adult area: true where you were admitted to the adult area when it was made, and it then includes your adult content.account (object): The account itself.plan (object): The subscription.wallet (object): The balance. The monthly allowance is the plan's, less what this billing month's ledger shows as used from it.ledger (list of objects): Every entry in the billing ledger, oldest first.orders (list of objects): Every order concluded, oldest first.withdrawals (list of objects): Every withdrawal received, oldest first.cancellations (list of objects): Every cancellation received through the cancellation function from your account's address, oldest first.crew (list of objects): The crew of AI personas, in roster order.providers (list of objects): Your settings for each AI provider you configured.The account itself.
id (text): The account's id at lean_art.email (text, or null): The email address the account signs in with.name (text, or null): The name given at sign-up.displayName (text, or null): The name shown in the app, where you set one.createdAt (time): When the account was opened.closedAt (time, or null): When the account was deleted; null while it is open.preferences (text, or null): What you asked the Assistant to keep in mind about you.readAloud (true or false): Whether replies read themselves aloud as they arrive.readAloudSpeed (number): How fast replies are read, as a multiple of the voice's own pace.footageConvertedTo (one of HD, UHD): The size footage is converted to on upload: HD (1080p) or UHD (2160p).identity (object, or null): What a passed identity check confirmed; null where none passed.What a passed identity check confirmed; null where none passed.
name (text): The name on the identity document.birthDate (text): The date of birth on the identity document, as YYYY-MM-DD.verifiedAt (time): When the identity check passed.The subscription.
plan (one of NONE, INDIE, PRO_BYOK, PRO, STUDIO): The plan the account is on; NONE without a subscription.subscriptionStatus (one of ACTIVE, PAST_DUE, CANCELED, or null): The state of the subscription; null where there never was one.periodStart (time, or null): When the current billing month began.periodEnd (time, or null): When the current billing month ends.endsAt (time, or null): When the subscription is set to end: the end of this billing month or of a later one; null while it renews or where there is none.foundingRateSince (time, or null): When the account took the founding rate; null where it holds none.The balance. The monthly allowance is the plan's, less what this billing month's ledger shows as used from it.
purchasedBalanceUsd (amount): Bought balance left, in US dollars of AI use.automaticTopUp (object, or null): Automatic top-up, where it is switched on; null where it is off.Automatic top-up, where it is switched on; null where it is off.
thresholdUsd (amount): The balance at which a top-up is bought, in US dollars.amountUsd (amount): The amount bought each time, in US dollars of AI use.Every entry in the billing ledger, oldest first.
at (time): When the entry was booked.amountUsd (amount): The amount in US dollars of AI use: positive when funds arrive, negative when they are used or refunded.balance (one of INCLUDED, PURCHASED): Which balance it moved: the plan's monthly allowance, or bought funds.type (one of MONTHLY_RESET, PURCHASE, TASK_USAGE, SYSTEM_USAGE, REFUND, BONUS): What the entry is: an allowance granted (older entries only), a purchase, work the Assistant ran, a smaller operation such as reading an upload, a refund, or funds given free.description (text, or null): What the entry was for, as the statement shows it.project (text, or null): The project the work ran in, as it was called then.ranBy (text, or null): The email address of whoever ran the work, where it was somebody in the studio; null where the entry pays for no work or their account has since been deleted.Every order concluded, oldest first.
id (text): The order's id.kind (one of SUBSCRIPTION, PLAN_CHANGE, CREDIT_PURCHASE, AUTOMATIC_TOP_UP): What was ordered: a subscription, a move to a higher plan, a top-up, or a top-up bought automatically.label (text): What was ordered, as the confirmation named it.amountCents (whole number): What was paid, in the smallest unit of the currency.currency (text): The currency paid in, as a three-letter code.concludedAt (time): When the contract was concluded.consentedAt (time): When you gave the two declarations in the order dialog.declarations (object): The declarations given with the order, in the words shown.confirmationSentAt (time, or null): When the order confirmation was emailed.The declarations given with the order, in the words shown.
earlyStart (text): The declaration that we start before the withdrawal period ends, word for word.outputs (text): The declaration about Outputs, word for word.Every withdrawal received, oldest first.
id (text): The withdrawal's id.receivedAt (time): When the withdrawal reached us.name (text): The name given with the withdrawal.email (text): The email address the acknowledgement went to.acknowledgedAt (time, or null): When the acknowledgement was sent.orders (list of text): The orders withdrawn from, by id.Every cancellation received through the cancellation function from your account's address, oldest first.
id (text): The cancellation's reference, as its confirmation gave it.receivedAt (time): When the cancellation reached us.kind (one of ORDINARY, FOR_CAUSE): An ordinary cancellation, or one for good cause.reason (text, or null): The good cause given; null for an ordinary cancellation.name (text): The name given with the cancellation.email (text): The email address given with it, where its confirmation went.contract (one of SUBSCRIPTION): The contract cancelled: the subscription.takeEffectOn (text, or null): The day it was asked to take effect, as YYYY-MM-DD; null for as soon as possible.endsAt (time, or null): When it ends the subscription; null where that is ours to work out, which we tell you by email.endedLateAt (time, or null): Where we could not end the subscription in time, when it ended instead; what was paid for the time after endsAt is refunded. Null where it ended in time.takenBackAt (time, or null): When you took it back, by resuming the subscription or moving it to a higher plan; null where you did not.confirmationSentAt (time, or null): When its confirmation was emailed.The crew of AI personas, in roster order.
name (text): What the crew member is called.role (text): Their trade, as written.brief (text): Who they are, as written.voice (text): The voice their replies are read aloud in.cast (true or false): Whether they are on the working crew rather than waiting beside it.leads (true or false): Whether they are the one the account leads with.portrait (text, or null): Where the picture you gave them is in this archive; null where they wear the app's own artwork or none, and where the picture could not be read when the archive was made.createdAt (time): When they joined the crew.archivedAt (time, or null): When they were taken off the crew; null while they are on it.Your settings for each AI provider you configured.
provider (text): The AI provider, as the app names it.enabled (true or false): Whether the provider may be used for your work.ownKeyEndsWith (text, or null): The last four characters of your own key for this provider; the key itself is never exported.The studio the account holds, the people in it and the invitations sent from it.
name (text): What the studio is called.createdAt (time): When the studio was opened.members (list of objects): Everybody in the studio, the holder included.invites (list of objects): Every invitation sent from the studio.Everybody in the studio, the holder included.
name (text, or null): Their name.email (text, or null): Their email address.role (one of WATCHES, MAKES, APPROVES, PRODUCES): What they may do in the studio: watch, make, approve, or produce.monthlyLimitUsd (amount, or null): How much of the studio's balance they may use per billing month, in US dollars; null for no limit.since (time): When they joined the studio.holder (true or false): Whether they hold the studio.Every invitation sent from the studio.
email (text): The address the invitation was sent to.role (one of WATCHES, MAKES, APPROVES, PRODUCES): The role offered.monthlyLimitUsd (amount, or null): The monthly limit offered, in US dollars; null for none.sentAt (time): When the invitation was last sent.expiresAt (time): When the invitation stops working.acceptedAt (time, or null): When it was accepted; null while it is open.Every conversation you started with the Assistant, in your studio or another, with its messages and the desk beside it.
conversations (list of objects): Every conversation you started, in any studio, oldest first. One on a project that holds adult content is left out, as the app withholds it, unless this archive was made for the adult area (madeForAdultArea in account.json).Every conversation you started, in any studio, oldest first. One on a project that holds adult content is left out, as the app withholds it, unless this archive was made for the adult area (madeForAdultArea in account.json).
id (text): The conversation's id.title (text): What the conversation is called.startedAt (time): When it was started.studio (text): The studio it was held in: yours, or one you were invited into.project (text, or null): The id of the project it works on. projects.json describes the project where it is in your own studio; a project in another studio is in its holder's export.job (text): The id of the job it was opened on: one given out in the studio, or one of its own where it was started without one. Every conversation on the same job shares it.part (one of MAKING, REVIEWING): What it was for on that job: MAKING the work, or REVIEWING what came back.repliesIncluded (true or false): Whether the Assistant's replies are included. They are in your own studio. In somebody else's studio only your own messages are, because what the Assistant made there is that studio holder's Content.messages (list of objects): Every message, oldest first; in somebody else's studio, only yours.desk (list of objects, or null): The cards on the desk shown beside the conversation as you last left it, in order, with the arrangement you had not saved: cards moved, filed, renamed, set aside or brought back. Each card shows its artifact as last saved, so words typed into a card and not saved are not included. Their artifacts are listed under its project in projects.json. An empty list where that desk holds no cards; null where no desk is carried: in somebody else's studio, where it is that studio holder's Content, for a conversation that has not reached a desk yet, and where the desk it stood at is no longer held.Every message, oldest first; in somebody else's studio, only yours.
id (text): The message's id.after (text, or null): The message this one follows; where the replies are left out, your message before it. Conversations branch: two messages after the same one are two versions of what came next.at (time): When it was written.from (one of USER, ASSISTANT): Who wrote it: you, or the Assistant.speaker (text, or null): The crew member the Assistant spoke as; null for your messages and where the app spoke for itself.text (text): What was written.choices (list of objects): The decisions the reply offered as buttons; empty where it offered none.attachments (list of objects): The files sent with the message.The decisions the reply offered as buttons; empty where it offered none.
question (text): The question the reply asked.options (list of text): The answers offered.recommended (text, or null): The answer the reply recommended; null where it recommended none.The files sent with the message.
name (text, or null): The file's name as you picked it.mimeType (text, or null): The file's media type.title (text, or null): The title of the artifact it became in the project; null where it never became one.The cards on the desk shown beside the conversation as you last left it, in order, with the arrangement you had not saved: cards moved, filed, renamed, set aside or brought back. Each card shows its artifact as last saved, so words typed into a card and not saved are not included. Their artifacts are listed under its project in projects.json. An empty list where that desk holds no cards; null where no desk is carried: in somebody else's studio, where it is that studio holder's Content, for a conversation that has not reached a desk yet, and where the desk it stood at is no longer held.
card (text): The card's id. Every version of an artifact shown on this card shares it.name (text): What the card is called on the desk.artifact (text): The id of the artifact version the card shows. A card whose artifact never arrived — still being made, failed or stopped — is left off the desk, and so is one whose artifact is adult content, unless this archive was made for the adult area (madeForAdultArea in account.json).folder (text, or null): The card of the folder this card sits in, always a card on the same desk; null at the top of the desk. A card filed in a folder that is left off the desk sits at the top, its x and y still measured on that folder's plane.x (number): Where the card sits, from the left.y (number): Where the card sits, from the top.width (number): How wide the card is drawn.height (number): How tall the card is drawn.Every project in the studio, its own desk, and every artifact in it with where its file is.
projects (list of objects): Every project in the studio, oldest first.Every project in the studio, oldest first.
id (text): The project's id.name (text): What the project is called.brief (text): The project's brief.aspectRatio (text, or null): The shape every new picture is made in, such as 16:9; null where each picture takes its own.createdAt (time): When the project was created.folder (text): The folder in this archive that holds its files.desk (list of objects): The cards on the project's own desk as it stands, in order: the desk its conversations are synced into. A conversation works on a desk of its own until it is synced; conversations.json holds the desk beside each of yours.artifacts (list of objects): Every version of every artifact the project holds, on the desk or set aside, oldest first. Adult content is left out unless this archive was made for the adult area (madeForAdultArea in account.json).The cards on the project's own desk as it stands, in order: the desk its conversations are synced into. A conversation works on a desk of its own until it is synced; conversations.json holds the desk beside each of yours.
card (text): The card's id. Every version of an artifact shown on this card shares it.name (text): What the card is called on the desk.artifact (text): The id of the artifact version the card shows. A card whose artifact never arrived — still being made, failed or stopped — is left off the desk, and so is one whose artifact is adult content, unless this archive was made for the adult area (madeForAdultArea in account.json).folder (text, or null): The card of the folder this card sits in, always a card on the same desk; null at the top of the desk. A card filed in a folder that is left off the desk sits at the top, its x and y still measured on that folder's plane.x (number): Where the card sits, from the left.y (number): Where the card sits, from the top.width (number): How wide the card is drawn.height (number): How tall the card is drawn.Every version of every artifact the project holds, on the desk or set aside, oldest first. Adult content is left out unless this archive was made for the adult area (madeForAdultArea in account.json).
id (text): The artifact version's id.card (text, or null): The card this version belongs to; every version of one card shares it. The card may no longer be on the desk. Null for a version no desk ever showed.title (text): The artifact's title.kind (one of IMAGE, PDF, AUDIO, VIDEO, DOCUMENT, NOTE, CUT, ANIMATION, FOLDER, OTHER): What it is. DOCUMENT, NOTE and CUT are held as the Service's own JSON; a FOLDER holds the cards filed into it and has no content of its own.source (one of UPLOAD_ANALYZED, GENERATED, AUTHORED): How it arrived: UPLOAD_ANALYZED is an Input you uploaded, GENERATED an Output the Service made, AUTHORED something you put on the desk yourself, such as a note or a folder.description (text): What it is, in a sentence.prompt (text, or null): What its generation was asked for; null for anything no model made.model (text, or null): The AI model that made it.provider (text, or null): The provider whose model made it.reading (text, or null): What the Service read in its content: what a picture shows, what is said in a recording.createdAt (time): When it was made or uploaded.madeFrom (list of text): The artifacts it was made from, by id, in the order they were used.mimeType (text, or null): The media type of its content.file (text, or null): Where its content is in this archive; null for a folder, and for a file that could not be read when the archive was made, which README.txt lists.overlay (JSON, as stored, or null): Marks drawn over a picture, as the Service stores them. The file itself does not show them.grade (JSON, as stored, or null): The colour grade given to a clip or a still, as the Service stores it. The file itself does not show it.style (JSON, as stored, or null): How the card is drawn on the desk, as the Service stores it.lean_art v6.38.0