repeat.cards logorepeat.cards
Setup guide · Two Google keys, not one

Get to a working key without guessing which console.

repeat.cards runs its AI on your own provider keys. It accepts three, they come from three different places, and two of them are Google keys that cannot do each other's job. Here is each one, start to finish.

repeat.cards accepts three keys. Gemini and Cloud Text-to-Speech are both Google keys, but they are issued by two different consoles and neither one works in the other’s field — that is Google’s arrangement, not ours. OpenAI is a third, separate key. Take only the ones that pay for what you want.

Which key pays for what

Every feature that spends a key, and the keys that can pay for it
What you wantWhich key pays for it
Translations, word checking, mnemonics, example sentences, card chatOpenAI or Gemini — whichever model you pick
Reading a word off a screenshotOpenAI or Gemini — whichever model you pick
Spoken pronunciationOpenAI or Cloud Text-to-Speech
Pictures on cardsOpenAI only

An account can hold all three at once. Each key is saved, replaced and removed on its own, and removing one disables only the features that spent it.

OpenAI API key

The shortest of the three: one page, one button, no restrictions to choose. The only catch is money — this is the key that needs credit before it will answer at all.

  1. Sign in at platform.openai.com. Your ChatGPT account works here. The API is billed separately from any ChatGPT subscription, which is the part people are most often surprised by.
  2. Open API keys. It is in the left-hand menu, or go straight to platform.openai.com/api-keys.
  3. Create a new secret key. Leave "Owned by" on You, give the key a name you will recognise later, and leave Permissions on All. repeat.cards uses several OpenAI endpoints, so a restricted key will fail on whichever one you left out.
  4. Copy it immediately. OpenAI shows a secret key once and never again. It begins with sk-. If you lose it, delete it and make another — there is no way to read it back.
  5. Add credit. Under Settings → Billing. This is the one key of the three that needs money before it does anything: the API runs on prepaid credit, and ChatGPT Plus or Pro does not pay for it.
  6. Paste it into repeat.cards. Profile → AI Settings → OpenAI API Key, then Save.

Billing: Required. Prepaid credit, bought separately from any ChatGPT subscription.

The OpenAI Create new secret key dialog, with the key named repeat.cards, owned by You, and Permissions set to All
Leave Owned by on You and Permissions on All. (platform.openai.com, August 2026)

Gemini API key

This is the longest of the three, and the only one with a fork in it.

Two different Google consoles will issue you something called a Gemini key, and they do not behave the same. Take the AI Studio route below. The Cloud console route is longer, and it ends with a key that can never also do your pronunciation audio — so read to the end of this section before you start.

  1. Go to aistudio.google.com/apikey. Sign in with any Google account. This is Google AI Studio — not the Google Cloud console, which issues a different kind of key.
  2. Press Create API key. The button sits at the top right of the API Keys page.
  3. Choose a project. A Gemini key always belongs to a Google Cloud project, which is why the dialog asks. If you have none, pick Create project in the same dropdown and give it any name — repeat-cards will do.
  4. Create the key and copy it. Keys issued by AI Studio begin with AQ. Google calls these auth keys, and they are the kind the Gemini API expects.
  5. Paste it into repeat.cards. Profile → AI Settings → Gemini API Key, then Save. repeat.cards asks Google whether the key works and shows you the answer in Google's own words, so you find out now rather than at your first card.

Billing: Not required to start. AI Studio issues keys on the free tier; a paid tier needs a billing account on the project.

The API Keys page in Google AI Studio, showing a Gemini API key on a project named repeat-cards at the free tier, with the Create API key button at the top right
Create API key sits at the top right. A key belongs to a project, and the free tier needs no billing account. (Google AI Studio, August 2026)
The Create a new key dialog in Google AI Studio with the project dropdown open, offering Import project and Create project alongside the existing projects
No project yet? Create project is in the same dropdown that picks one. (Google AI Studio, August 2026)

If you have to use the Cloud console instead

Some organisations do not allow AI Studio. A Gemini key made in the Google Cloud console works, but it costs you two things. It must be restricted to the Gemini API, because an unrestricted key of that kind is refused outright — and as of August 2026 the console also states that a key for the Gemini APIs has to be bound to a service account, a step this guide does not cover.

The restriction is not free either. It is precisely what stops that key doing Text-to-Speech, because Google’s restriction picker will not let the Gemini API share a key with another service. Whichever route you take, pronunciation needs its own key.

Cloud Text-to-Speech API key

This is a Google key too, but not the Gemini one and not from the same console. It comes from the Google Cloud console, and it is the one place on this page where a wrong click leaves you with a key that saves cleanly and then makes no sound.

  1. Open console.cloud.google.com and pick a project. Use the project selector in the top bar, or create a project — any name will do. This is the Google Cloud console, a different place from AI Studio.
  2. Attach a billing account to that project. Text-to-Speech synthesises nothing on a project with no billing account, even inside Google's monthly free allowance. Google's current prices are on its own pricing page.
  3. Enable the Cloud Text-to-Speech API. APIs & Services → Library, search for "text-to-speech", open Cloud Text-to-Speech API and press Enable. Nothing else needs enabling.
  4. Create the key. APIs & Services → Credentials → Create credentials → API key.
  5. Restrict it to Cloud Text-to-Speech — and to nothing else. Under Select API restrictions, tick Cloud Text-to-Speech API alone. The field is required, so there is no unrestricted option here any more. Do not add the Gemini API to this key: a key restricted to Gemini answers Text-to-Speech with API_KEY_SERVICE_BLOCKED, and Google will not let the Gemini API share a key with another service. That restriction is exactly what silences your cards.
  6. Copy it and paste it into repeat.cards. The key begins with AIza. Profile → AI Settings → Cloud Text-to-Speech API Key, then Save.

Billing: Required. The API refuses to synthesise on a project with no billing account attached.

The New Project form in the Google Cloud console with the project name repeat-cards
Any project name will do; the project ID is generated from it and cannot be changed later. (Google Cloud console, August 2026)
Two results in the Google Cloud API Library: Cloud Text-to-Speech API beside Cloud Speech-to-Text API
Searching the library for text-to-speech returns both halves of the job. You want Cloud Text-to-Speech — Speech-to-Text is the opposite one. Open it and press Enable; the button reads Manage once it is on. (Google Cloud console, August 2026)
The Create API key panel in the Google Cloud console with Select API restrictions set to one API, Cloud Text-to-Speech API
The step that decides whether your cards ever speak: Cloud Text-to-Speech API alone under Select API restrictions. (Google Cloud console, August 2026)

Questions people actually hit

Can one Google key do both Gemini and pronunciation?
No, and this is not a setting you can find. A key from AI Studio is refused by Text-to-Speech as the wrong type of credential. A key from the Cloud console is refused by Gemini unless you restrict it to the Gemini API — and Google will not let the Gemini API share a key with another service, so applying that restriction is what takes Text-to-Speech away. There is no arrangement that leaves both working, which is why repeat.cards keeps two separate fields.
I already had a Google key and my card audio stopped working.
You most likely restricted it to the Gemini API to make the AI features work. That restriction blocks Text-to-Speech, which answers with API_KEY_SERVICE_BLOCKED. The fix is a second key: keep the restricted one in the Gemini field, and create a new key restricted to Cloud Text-to-Speech for the pronunciation field.
Do I need all three keys?
No. Take only the ones that pay for what you want. Text features run on either an OpenAI key or a Gemini key, whichever model you choose. Pronunciation runs on either an OpenAI key or a Cloud Text-to-Speech key. Pictures on cards are OpenAI only. An account can hold all three at once, and each one is saved, replaced and removed on its own.
What does repeat.cards do with a key I save?
It stores the key on your account and sends it only to the service that spends it — the Gemini key to Gemini, the speech key to Text-to-Speech, and neither to the other. The key is shown back to you masked and is never returned in full, and Remove on the same screen deletes it.
The screens do not look like the pictures here.
The screenshots on this page were taken in August 2026 and show consoles that Google and OpenAI change without telling anyone. The names to look for — Create API key, API restrictions, Cloud Text-to-Speech API — outlast the layout, so follow the words rather than the pixels. If you notice a screen that has moved on far enough to mislead, tell us through the contact page and we will re-shoot it.

Keys in, and the cards build themselves.

Translations, example sentences, mnemonics and pronunciation, on your own provider account. repeat.cards adds nothing on top.

Open your AI settings

Each key stored, masked and removable on its own