add_image
ChatGPTShow a picture on one side of a card the user created, replacing the picture that side had. Pass a photo from this chat in image, or a public https link to an image in image_url. crop cuts out part of the picture, for example one character from a group photo.
add_pronunciation
ChatGPTGenerate spoken pronunciation for a card the user created and attach it, replacing any audio that side already had. Pass text to read something exact, for example only the example sentence on the back of a language card; otherwise the side's first line is read. Use it for existing cards, or after update_card changed a face's text.
check_cards
ChatGPTBefore creating cards, check each candidate against the user's deck. verdict is in_deck (the same card is already there), similar (worth a look first: the same headline with a different answer, or a card close in meaning) or new. matches lists those cards with card_id, headlines and the user's mastery (new, learning, shaky, known), and a similarity from 0 to 1 when the match came from meaning. Create the new ones. For a similar one, decide from the match: a different meaning deserves its own card, the same meaning worded differently does not, and for a shaky match consider an extra example or a variation.
create_card
ChatGPTCreate a flashcard that is not vocabulary; for a word or phrase in a language the user is learning, use create_vocabulary_card. Personal and private by default, added to the user's review deck. With channel_id it is posted publicly to that channel instead (the user must own the channel). Write plain text without labels, for example front "What does git rebase do?", back "Replays your commits on top of another branch", back_details "Keeps the history linear, unlike a merge". Either side can show a picture, from a photo in this chat (front_image, back_image) or a public https image link (front_image_url, back_image_url); a side with a picture may have no text, e.g. a picture of a character on the front and the name on the back. A personal card whose front and back headlines match a card already in the deck is not created again: the result is that card, with already_in_deck true.
create_vocabulary_card
ChatGPTCreate a card for a word or phrase in a language the user is learning. Give each part in its own field as plain text, with no labels; the server lays out the card: the word with its pronunciation and part of speech on the front; the meaning, the example sentence and its translation on the back. By default it also voices the word and the example sentence in the language being learned. The card is private and goes into the user's review deck, or is posted to a channel the user owns with channel_id. The result shows the laid-out front and back. If the deck already has a card with the same word and meaning, none is created: the result is that card, with already_in_deck true.
delete_card
ChatGPTDelete a card the user created. It leaves the user's deck and, for a channel card, everyone else's.
get_cards_for_review
ChatGPTCards due for review right now, most overdue first, with the total number waiting (count). Review them one at a time: show the front, let the user answer, reveal the back, then call submit_review.
get_channel_cards
ChatGPTCards in a channel, newest first, each flagged is_saved for the user.
get_feed
ChatGPTThe home feed: recent cards from channels the user follows plus discovery from other public channels. Each card has card_id, channel_id, channel_name, is_saved and is_following.
get_knowledge
ChatGPTThe cards in the user's deck most related in meaning to a topic, each with the user's mastery (new, learning, shaky, known), plus counts per mastery and the deck size. Use it to judge the user's level and gaps before creating cards or practising; combine it with what you hear from the user. Name the topic with a few example items, for example "Dutch food words like de rekening, het menu, lekker" rather than just "Dutch": matching is by meaning, and examples make it much more precise. Cards created in the last minute may be missing.
list_channels
ChatGPTPublic channels to discover (default), or the user's own channels with owned = true. Each has id, name, description, subscriber_count, is_owner and is_subscribed.
list_my_cards
ChatGPTThe user's review deck: cards they created plus channel cards they saved, newest first. Each item has saved_card_id (for submit_review), card_id (for update_card, delete_card, add_pronunciation, save_card), front, back, mastery, state, due_at, is_owner (only those cards can be changed) and channel_name for channel cards. When the result has a next value there are more: pass it as before.
save_card
ChatGPTAdd a public channel card to the user's review deck.
search_my_cards
ChatGPTFind cards in the user's whole deck with this text on the front or the back, ignoring case, newest first. Items have the same fields as list_my_cards, mastery included. When the result has a next value there are more: pass it as before.
submit_review
ChatGPTRecord how the user did on one card and reschedule it with spaced repetition. Call once per card, after the user has answered.
subscribe_channel
ChatGPTFollow a public channel so its cards appear in the user's feed.
unsave_card
ChatGPTRemove a saved channel card from the user's review deck. The card itself stays in its channel.
unsubscribe_channel
ChatGPTStop following a channel.
update_card
ChatGPTReplace the text of a card the user created. Give the complete new content for a face; details left out are removed. A face you leave out is left alone, which is how to change one side of a card whose other side is a picture with no text. Pictures and audio are kept, so after changing a face's text, call add_pronunciation to refresh that side's audio.