1. Who we are
MoonyKids is operated by Fabro Labs LTD, a company registered in England and Wales under company number 17074624, with its registered office at 5th Floor, 167–169 Great Portland Street, London W1W 5PF, United Kingdom.
In this policy, “MoonyKids”, “we”, “us” and “our” mean Fabro Labs LTD. “You” means the parent or legal guardian who creates and holds a MoonyKids account. “Your child” means the child or children in your care who watch stories. “The Service” means the MoonyKids website at moonykids.com and the MoonyKids applications for iOS and Android.
Fabro Labs LTD is the operator of the Service and is responsible for the information described here.
How to contact us
You can contact us about anything in this policy — including any request to review, delete, or stop the further collection of information relating to your child:
| [email protected] | |
| Post | Fabro Labs LTD, 5th Floor 167–169 Great Portland Street London W1W 5PF, United Kingdom |
| Telephone | +44 7591 442430 |
We respond to every privacy request within 10 business days, and in all cases within the timeframes required by applicable law.
2. What we collect from you
The following information comes from the account holder or is created to provide the Service. Automatic collection and service providers are described in sections 6 and 7.
| What | Where it comes from | Why we have it |
|---|---|---|
| Email address | You provide it at signup, or Google provides it if you sign in with Google | Your account identity, signing you in, and sending you messages about the Service |
| Password | You provide it at signup | Signing you in. Stored only as a salted cryptographic hash — we cannot read it or recover it |
| Your name | Google provides it if you sign in with Google | Addressing you in the app and in emails |
| Display name (optional) | You choose it | What you would like us to call you. It does not have to be your real name |
| Character names | You type them when creating a story | Generating the story. See section 3 |
| Story selections | You choose them when creating a story | Selecting the story world, characters and artwork. See section 3 |
| Story age, character gender, theme and language | You select them for the story | Adapting the writing and presentation to the requested story and its intended listener |
| Story title, prompt and other instructions | You enter them when creating a story | Generating the story you request. Free-text instructions may contain personal information you choose to include |
| Optional hero image URL | You may supply a reference link where this option is available | Providing the reference selected for the story. Do not supply a link to a child’s photograph or other private material |
| Story text and narration audio | Generated by our system from your choices | The story itself, so you can play it again |
| Sign-in tokens | Created automatically when you sign in | Keeping you signed in and connecting a request to your account |
We do not ask for your date of birth. Our Terms require account holders to be 18 or older.
3. Story inputs, and why we treat them carefully
The names you type
A hero name is a name for a story character, not a request for your child’s legal name. Parents may nevertheless enter a child’s real name. We treat information about an identifiable child as personal information, even when a parent supplies it. The name is included in the story request and can appear in the generated text and narration.
Please use an invented name or nickname instead of your child’s full real name. Be careful with prompts too: do not include a child’s address, school, date of birth, contact details, health information or other identifying details. A nickname is not a guarantee of anonymity when combined with other information.
Story generation involves third parties. The selected text provider receives the story instructions, including entered names and details. When cloud text-to-speech is used, the selected narration provider receives the text to be spoken, which may contain those names and details. Section 7 names these providers. Do not assume a name is removed or anonymised before it is sent to them.
Your story selections
We store references to selected worlds, characters and artwork, alongside the story settings and instructions needed to generate and play the story. References may contain descriptive names; they should not be understood as anonymising your choices.
We treat these choices as sensitive, because appearance and cultural presentation can reveal things about a family that deserve protection. We do not group accounts by them, build audiences from them, infer anything about you or your child from them, or use them for any purpose beyond producing the story you asked for.
4. What we do not ask for or access
This list matters as much as the one above.
- No separate child accounts. Accounts and story creation are intended for parents or guardians. This does not mean that story inputs cannot contain information about a child; see section 3.
- We do not ask for your or your child’s date of birth. You do pick an age for the story so the writing suits the listener; section 2 lists it. Please do not include dates of birth in prompts or support messages.
- No voice recordings. We never ask for or record speech.
- No payment information. MoonyKids is free. We do not take payments and hold no card or billing details.
- No precise location. We never request GPS or device location permission.
- No access to your microphone, camera, contacts, or photo library.
- No biometric information.
- No advertising identifier. We do not collect Apple’s IDFA or Google’s Advertising ID, and MoonyKids contains no advertising of any kind.
- No information bought from anyone. We do not purchase personal information from data brokers, and we do not receive it from advertising networks or social platforms beyond the sign-in information described above.
5. Children’s privacy
MoonyKids is intended for families with young children. Parents or guardians manage the account and create stories for children to watch.
Information entered by a parent can still be personal information about a child. Please minimise what you provide, as described in section 3. Using a parent account does not, by itself, remove the privacy protections or consent requirements that may apply under children’s privacy laws, including COPPA.
Do not submit information that identifies a real child in story inputs. This includes names, prompts and reference links. OpenAI’s under-18 guidance says that processing personal data of children under 13, or the applicable age of digital consent, requires implementing Zero Data Retention first. Our current OpenAI API settings are not Zero Data Retention; see section 7. A parent entering the information, or using a nickname that still identifies a child, does not remove this concern. This warning does not mean that we automatically remove personal details before sending a request.
Persistent identifiers
Signing you in requires identifiers that persist between visits — session and authentication tokens. These are not anonymous. Connection information and website diagnostic identifiers are described in section 6. We use these operational data for:
- signing you in and keeping you signed in;
- performing the network communications needed to deliver a story to your device;
- maintaining and analysing whether the Service is working correctly;
- protecting the security and integrity of the Service and your account;
- meeting our legal obligations.
We do not use or disclose these identifiers to contact you or your child individually, to build a profile of either of you, for advertising, or for any other purpose.
Your rights as a parent
You may at any time review the information we hold, ask us to delete it, and refuse to permit any further collection. Section 11 explains how.
6. Information collected automatically
On our website
Our website uses our own interaction measurement and Sentry for technical diagnostics, performance monitoring and sampled session replay. Sentry is a third-party service; its role is described in section 7. We do not use Google Analytics or advertising tracking pixels on the website.
We run our own interaction measurement on our servers. When you use our website we record interaction events — where on a page something was clicked or tapped, how far a page was scrolled, and the name of the element involved — against a random identifier created in your browser.
We use the random identifier to group interaction events, not to identify you by name or build advertising audiences. We use these events to understand which parts of the site work and which confuse people. A random identifier does not, by itself, make all associated information anonymous.
In our mobile app
The mobile app does not integrate Firebase Analytics. Playback position, listening streaks and preferences are saved on the device. These local records are separate from story requests and account operations sent to our servers.
The mobile app uses Firebase Crashlytics, a Google service, to tell us when the app crashes or hits an error it cannot recover from. A crash report contains the error and where in the app it happened, the app version, the operating system and device model, and an identifier Crashlytics creates for the installation. Crashlytics also records that a session of the app started, so that it can show what share of sessions end in a crash. We do not attach your account, your email address, your child’s name or any story content to a crash report, and we do not use it for advertising. Reports are sent from the first time the app is opened, including before you sign in. Google’s role is described in section 7.
The mobile app can download fonts from Google when they are not already available on the device. Google receives the IP address and technical request information needed to deliver those files. Google sign-in, where available, also involves communications with Google. These connections should not be confused with Firebase analytics.
Connection information
Like any internet service, our servers receive your device’s IP address as part of delivering a request — this is how the internet works and cannot be avoided. We keep it, briefly and for one purpose: abuse and security. Each request our API serves is recorded with its IP address and browser user-agent, so that we can enforce rate limits and investigate an attack on the Service.
That record is not a profile. After 30 days the IP address and the user-agent are erased from it automatically — overwritten in place, not archived — and what remains says only which route was called, how long it took and whether it failed. The remainder is deleted after 90 days. A job enforces both, continuously; this is not a promise to tidy up later.
7. Who else sees your information
We use the following service providers to run MoonyKids. The text and narration provider selected for a request depends on the production configuration; a request does not necessarily go to every listed generation provider.
| Provider | What they do | What they receive |
|---|---|---|
| OpenAI | Story text generation | Story instructions, including hero names, the selected story age, character gender, theme, language, title, prompt and relevant story context |
| Anthropic (Claude) | Story text generation | Story instructions, including hero names, the selected story age, character gender, theme, language, title, prompt and relevant story context |
| ElevenLabs | Cloud narration (text-to-speech) | The story text to be spoken, including any names or personal details it contains, and voice and speech settings |
| Fish Audio | Cloud narration (text-to-speech) | The story text to be spoken, including any names or personal details it contains, and voice and speech settings |
| Sentry | Website and server error reporting, performance monitoring and sampled website session replay | Error details, logs, performance traces and technical browser/request information; sampled replay data on the website. Replay is configured to mask text and block media, and default personal-data collection is disabled. These controls do not make every diagnostic record anonymous |
| Google (Firebase Crashlytics) | Mobile app crash reporting | The error and its stack trace, app version, operating system and device model, an installation identifier created by Crashlytics, and a record that an app session started. We add no account identifier, name or story content |
| Google (sign-in and font delivery) | Account authentication where Google sign-in is available, and mobile font downloads | Sign-in requests and associated account identifiers for authentication; IP address and technical request information for network delivery and security |
| Resend | Sends our transactional email | Your email address and the message we send you |
| Hetzner | Provides the servers we run, in Finland | Hosts the infrastructure containing account information, story inputs, generated stories, narration and operational records; we manage the application and storage |
| Cloudflare | Website request delivery and security | IP addresses, requested website URLs and technical request information processed when traffic passes through its infrastructure |
Google Gemini API is disabled for production story generation, including fallback requests. Google sign-in and font delivery are separate services; disabling Gemini does not disable those connections.
Names and personal details in your inputs can reach generation providers. We send story instructions for text generation and story text for cloud narration. We do not need your password or account email for those generation requests. However, any personal information you put into a prompt or name field can become part of the content sent to a provider and of the resulting story.
OpenAI API data settings
We use the OpenAI API with its default data settings and have not opted in to sharing API content for model training. Under these settings, OpenAI does not use API inputs or outputs to train its models. Its abuse-monitoring logs may contain prompts, responses and related metadata and are retained for up to 30 days, unless longer retention is required by law or reasonably necessary to protect its services or others from harm. Some API features may store additional application data as described in OpenAI’s data controls documentation below.
These default settings are not Zero Data Retention. Deleting a story or account in MoonyKids does not immediately erase copies already held by OpenAI. The no-training statement above applies to our OpenAI API use; it is not a claim about every text or narration provider.
Other provider retention
Providers may retain inputs, outputs and technical records to operate their services, monitor abuse and meet legal requirements. Retention and any use for model improvement depend on the provider, API product, account settings and applicable agreement. We do not promise a single 30-day deletion period or a universal no-training rule for all providers.
- OpenAI API data controls
- Anthropic commercial data retention
- ElevenLabs privacy policy
- Fish Audio privacy policy
Narration may be generated locally on our servers or by ElevenLabs or Fish Audio. Local synthesis does not send text to an outside voice provider; cloud synthesis does. This is generated speech, not a recording of you or your child, and we do not ask you to upload a voice recording.
This is the main reason we ask you not to enter your child’s full real name.
We manage our own application servers and storage on Hetzner infrastructure in Finland. This does not mean that all processing stays on those servers: the providers above process the data needed for their respective services.
8. We do not sell your information
We do not sell personal information. We do not share it for cross-context behavioural advertising. We do not show advertising to anyone, and we do not allow anyone to advertise to you or your child through MoonyKids.
9. How long we keep things
Retention depends on the type of information and who holds it, as described below.
| What | How long | Then |
|---|---|---|
| Your account — email address, password hash, name, display name | While your account is open | Deleted when you close your account |
| Your stories — character names, selections, story text and narration audio | While your account is open. Your stories stay available to you for as long as you want them | Deleted when you delete that story in the app, and in any case when you close your account |
| Sign-in tokens | Until the session expires or you sign out | Discarded automatically |
| Email verification codes | 15 minutes | Expire automatically and cannot be reused |
| Copies and technical records held by text and narration providers | Depends on the provider, service settings and applicable agreement; see section 7 | Subject to the provider’s retention and deletion rules, including any security or legal exceptions |
| Mobile app crash reports (Firebase Crashlytics) | 90 days, under Google’s retention rules for Crashlytics | Removed by Google under those rules, separately from account deletion in MoonyKids |
| Sentry diagnostic and session replay data | According to the configured Sentry project retention and applicable service terms | Removed under those retention rules, separately from account deletion in MoonyKids |
| IP address and browser user-agent in our request records | 30 days | Erased from the record, leaving only which route was called and how it performed |
| Request records, once those identifiers are gone | 90 days | Deleted |
| Server logs on our own machines | 14 days | Deleted on a timer, on every server |
| First-party website interaction events | 180 days | Deleted from our interaction measurement records |
Closing your account deletes the narration audio too — not just the record of it. Deletion from our account and story storage happens immediately, in the same request. Copies already held by generation providers or in operational records follow their separate retention rules above; account deletion does not automatically erase those copies at the same moment.
10. Messages you send us
If you write to us for help, we keep your message, our reply, and the address it came from, so that we have a record of the conversation and can pick up where we left off if you write again.
Please do not include your child’s full name, date of birth, photograph, school, or health information in a message to us. We do not need any of it in order to help you, and anything you send becomes part of our support records. If you have already sent us something like this, ask us to delete it and we will.
11. Your rights, and how to use them
You can:
- See what we hold — ask us and we will tell you.
- Correct anything wrong — in your account settings, or by asking us.
- Delete everything you have made — by closing your account, below. To remove a single story and keep the rest, open it in your library and choose Delete story.
- Delete your whole account — in the app under Profile → Privacy → Delete account, or at moonykids.com/deletion if you cannot sign in.
- Stop account-linked collection — close your account and stop submitting story requests. If you visit the website or use the app afterwards, technical requests and website measurement may still occur as described in section 6.
Every request is answered within 10 business days.
When you ask us to delete your account, your stories, narration audio, account details and sign-in sessions are removed from our account and story storage immediately. That deletion cannot be undone. Provider copies and operational records are subject to the separate retention periods and exceptions explained in section 9. Contact us if you need help with a deletion request involving a service provider.
If you are unhappy with how we have handled a request, you may complain to the UK Information Commissioner’s Office at ico.org.uk.
12. Where your information is held
Fabro Labs LTD is registered in the United Kingdom. Your account and your stories are stored on our own servers in Helsinki, Finland, within the European Union, on infrastructure provided by Hetzner. We manage those servers ourselves.
Finland is the location of our primary account and story storage, not a guarantee that every provider processes or retains data only in Finland or the European Union. OpenAI, Anthropic, ElevenLabs, Fish Audio, Resend, Sentry and Cloudflare may process data outside the UK or EU, depending on the service and configuration. This includes story instructions and text sent for cloud generation. Google sign-in and font delivery also involve Google infrastructure. Applicable provider agreements and data-protection safeguards govern these transfers.
13. How we protect your information
We maintain a written information security programme covering the personal information we hold, and we review it at least once a year.
In practice, that means:
- Everything travels encrypted. All connections to MoonyKids use TLS 1.2 or 1.3, and HTTP Strict Transport Security is enforced, so a browser will not fall back to an unencrypted connection.
- Passwords are never stored in a readable form — only as a salted cryptographic hash.
- IP addresses in our API request records are kept for 30 days — to rate limit and investigate abuse — and are then erased from those records automatically. This does not specify the retention of copies held by providers.
- Access is limited to the small number of people who need it to operate the Service.
- Our servers are in the European Union, in Helsinki, and are managed by us.
No system is perfectly secure, and we will not pretend otherwise. If a breach ever affects your information, we will tell you and the relevant authorities as the law requires.
15. Stories are generated by AI
MoonyKids stories are created by artificial intelligence from the choices you make. They are not written by a person. We design the system to produce gentle, age-appropriate bedtime stories, but we cannot guarantee that every story is accurate, original, or suited to every child. You are always in control of what your child watches.
16. Changes to this policy
If we change this policy in a way that materially affects how we handle your information or your child’s, we will tell you directly by email before the change takes effect. We will not make a material change quietly.
The effective date at the top of this page always shows the current version.
17. Contact us
Questions about this policy, or about anything we hold:
| [email protected] | |
| Post | Fabro Labs LTD, 5th Floor, 167–169 Great Portland Street, London W1W 5PF, United Kingdom |
| Telephone | +44 7591 442430 |