Skip to content
For AI assistants and developers

Card import reference

Use this reference to generate Rememberry card import links. It defines the payload format, encoding recipes and paste fallback.

Copy these instructions into your conversation

Copy the instructions, then paste them into your AI chat.

View instructions
Make Rememberry flashcards from useful vocabulary in this conversation. Ask which languages to use if needed. The instructions below are complete; browsing is not required.

Use a JSON object {"v":1,"source":"ai","cards":[{"o":"hola","t":["hello"],"sl":"es","tl":"en"}]}. cards must be nonempty. o is original text; t contains 1–10 translations; sl and tl are exact supported language codes. Each original/translation must contain non-whitespace text and be at most 200 JavaScript UTF-16 code units, including surrounding whitespace. The app trims surrounding whitespace. Language pairs may differ between cards. No deck metadata. source is optional; ai and share control guidance, unknown values are accepted as neutral. Supported codes: af, sq, am, ar, hy, az, eu, be, bn, bs, bg, ca, ceb, crh, crh-Latn, ny, zh-cn, zh-tw, co, hr, cs, da, nl, en, eo, et, tl, fi, fr-ca, fr-fr, fy, gl, ka, de, el, gu, ht, ha, haw, he, hi, hmn, hu, is, ig, id, ga, it, ja, jw, kn, kk, km, rw, ko, ku, ckb, ky, lo, la, lv, lt, lb, mk, mg, ms, ml, mt, mi, mr, mn, my, ne, no, or, ps, fa, pl, pt-br, pt-pt, pa, ro, ru, sm, sa, gd, sr, st, sn, sd, si, sk, sl, so, es, es-mx, su, sw, sv, tg, ta, te, th, tr, uk, ur, ug, uz, vi, cy, xh, yi, yo, zu. French uses fr-fr or fr-ca (not fr), Portuguese pt-br or pt-pt, Chinese zh-cn or zh-tw. Ask which variant to use when unclear.
Direct link: https://app.rememberry.in/#import=<encodeURIComponent(JSON.stringify(payload))>. Encode only compact JSON once with UTF-8 percent encoding, not base64, not the whole URL, never query parameters. Complete URL limit: 8000 characters. Split larger batches into independent complete payloads. All cards must be valid or the entire batch is rejected.

If you have a code execution tool, RUN the JavaScript recipe below with your cards and return each resulting URL as a Markdown link labeled Add cards to Rememberry. Do not encode character by character or invent a URL. If you cannot execute code, return the complete v1 payload as ONE JSON code block with no commentary inside it, plus [Open Rememberry import](https://app.rememberry.in/#import). Tell me to copy the JSON, open that link and paste it. Paste accepts raw JSON or a single fenced JSON block, up to 100000 JavaScript UTF-16 code units; split larger payloads. The user previews cards, chooses or creates a deck, and explicitly saves. Sign in first if needed, then reopen the link. Link imports and sharing require the seven-day Demo or Pro.

function buildRememberryLinks(cards) {
  if (!Array.isArray(cards) || cards.length === 0) throw new Error('No cards');
  const prefix = 'https://app.rememberry.in/#import=';
  const encode = (batch) => {
    const payload = { v: 1, source: 'ai', cards: batch };
    const json = JSON.stringify(payload);
    const url = prefix + encodeURIComponent(json);
    if (JSON.stringify(JSON.parse(decodeURIComponent(url.slice(prefix.length)))) !== json) {
      throw new Error('Encoding round trip failed');
    }
    return url;
  };
  const links = [];
  let batch = [];
  for (const card of cards) {
    if (encode([card]).length > 8000) throw new Error('One card exceeds URL limit');
    const next = [...batch, card];
    if (encode(next).length > 8000) {
      links.push(encode(batch));
      batch = [card];
    } else {
      batch = next;
    }
  }
  links.push(encode(batch));
  return links;
}

Full guide: https://www.rememberry.in/docs/card-import

No working link? Paste the cards

Ask the AI for the complete card data in one JSON code block. Copy that block, open Rememberry import and press Paste, or paste into the text field. Review the cards before saving. Pasted data can contain up to 100,000 JavaScript UTF-16 code units.

Open Rememberry import

Version 1 import contract

The following reference is for AI assistants and people building import links. A link contains card text and languages, without deck metadata or study progress.

Use a JSON object {"v":1,"source":"ai","cards":[{"o":"hola","t":["hello"],"sl":"es","tl":"en"}]}. cards must be nonempty. o is original text; t contains 1–10 translations; sl and tl are exact supported language codes. Each original/translation must contain non-whitespace text and be at most 200 JavaScript UTF-16 code units, including surrounding whitespace. The app trims surrounding whitespace. Language pairs may differ between cards. No deck metadata. source is optional; ai and share control guidance, unknown values are accepted as neutral. Supported codes: af, sq, am, ar, hy, az, eu, be, bn, bs, bg, ca, ceb, crh, crh-Latn, ny, zh-cn, zh-tw, co, hr, cs, da, nl, en, eo, et, tl, fi, fr-ca, fr-fr, fy, gl, ka, de, el, gu, ht, ha, haw, he, hi, hmn, hu, is, ig, id, ga, it, ja, jw, kn, kk, km, rw, ko, ku, ckb, ky, lo, la, lv, lt, lb, mk, mg, ms, ml, mt, mi, mr, mn, my, ne, no, or, ps, fa, pl, pt-br, pt-pt, pa, ro, ru, sm, sa, gd, sr, st, sn, sd, si, sk, sl, so, es, es-mx, su, sw, sv, tg, ta, te, th, tr, uk, ur, ug, uz, vi, cy, xh, yi, yo, zu. French uses fr-fr or fr-ca (not fr), Portuguese pt-br or pt-pt, Chinese zh-cn or zh-tw. Ask which variant to use when unclear.
Direct link: https://app.rememberry.in/#import=<encodeURIComponent(JSON.stringify(payload))>. Encode only compact JSON once with UTF-8 percent encoding, not base64, not the whole URL, never query parameters. Complete URL limit: 8000 characters. Split larger batches into independent complete payloads. All cards must be valid or the entire batch is rejected.

Example payload

{
  "v": 1,
  "source": "ai",
  "cards": [
    {
      "o": "ありがとう",
      "t": [
        "thank you"
      ],
      "sl": "ja",
      "tl": "en"
    }
  ]
}

Build links by executing code

Run either recipe with the cards array from your payload. JavaScript: buildRememberryLinks(payload.cards). Python: build_rememberry_links(payload["cards"]). Both return a list of URLs, split batches at 8,000 characters and verify the encoding round trip. Validate card fields against the contract before encoding. Return each URL as a clickable “Add cards to Rememberry” link. If code execution is unavailable, use the paste workflow above.

JavaScript

function buildRememberryLinks(cards) {
  if (!Array.isArray(cards) || cards.length === 0) throw new Error('No cards');
  const prefix = 'https://app.rememberry.in/#import=';
  const encode = (batch) => {
    const payload = { v: 1, source: 'ai', cards: batch };
    const json = JSON.stringify(payload);
    const url = prefix + encodeURIComponent(json);
    if (JSON.stringify(JSON.parse(decodeURIComponent(url.slice(prefix.length)))) !== json) {
      throw new Error('Encoding round trip failed');
    }
    return url;
  };
  const links = [];
  let batch = [];
  for (const card of cards) {
    if (encode([card]).length > 8000) throw new Error('One card exceeds URL limit');
    const next = [...batch, card];
    if (encode(next).length > 8000) {
      links.push(encode(batch));
      batch = [card];
    } else {
      batch = next;
    }
  }
  links.push(encode(batch));
  return links;
}

Python

import json
from urllib.parse import quote, unquote

def build_rememberry_links(cards):
    if not isinstance(cards, list) or not cards:
        raise ValueError('No cards')
    prefix = 'https://app.rememberry.in/#import='
    def encode(batch):
        payload = {'v': 1, 'source': 'ai', 'cards': batch}
        text = json.dumps(payload, ensure_ascii=False, separators=(',', ':'))
        url = prefix + quote(text, safe="~()*!.'-")
        if json.loads(unquote(url[len(prefix):])) != payload:
            raise ValueError('Encoding round trip failed')
        return url
    links, batch = [], []
    for card in cards:
        if len(encode([card])) > 8000:
            raise ValueError('One card exceeds URL limit')
        next_batch = batch + [card]
        if len(encode(next_batch)) > 8000:
            links.append(encode(batch))
            batch = [card]
        else:
            batch = next_batch
    links.append(encode(batch))
    return links

Supported language codes

Use the exact codes below. French: fr-fr or fr-ca; Portuguese: pt-br or pt-pt; Chinese: zh-cn or zh-tw. Choose the intended variant rather than inventing a code.

af, sq, am, ar, hy, az, eu, be, bn, bs, bg, ca, ceb, crh, crh-Latn, ny, zh-cn, zh-tw, co, hr, cs, da, nl, en, eo, et, tl, fi, fr-ca, fr-fr, fy, gl, ka, de, el, gu, ht, ha, haw, he, hi, hmn, hu, is, ig, id, ga, it, ja, jw, kn, kk, km, rw, ko, ku, ckb, ky, lo, la, lv, lt, lb, mk, mg, ms, ml, mt, mi, mr, mn, my, ne, no, or, ps, fa, pl, pt-br, pt-pt, pa, ro, ru, sm, sa, gd, sr, st, sn, sd, si, sk, sl, so, es, es-mx, su, sw, sv, tg, ta, te, th, tr, uk, ur, ug, uz, vi, cy, xh, yi, yo, zu

Access and saving

Card import and sharing are available during the seven-day Demo and with Pro. The Demo restriction on deck file import does not apply to these card imports. One invalid card rejects the whole batch. Opening a link never saves automatically. Canceling or saving removes the import fragment; importing the same cards again can create duplicates. If you need to sign in, sign in first and reopen the original link, or paste the data again.

Generate flashcards with AI