api.changes.tg/
1.32K subscribers
4 photos
8 links
@GiftChanges API that is available to everyone!
Download Telegram
api.changes.tg/
+ add gift models emoji
Also added backdrops and patterns custom emoji IDs. Just for your convenience. Thank me later.
❀4πŸ‘2😁1
+ add size parameter for PNGs
GET /model/:gift/:model.png?size=128 - download this gift model resized to 128x128 (128, 256, 512 available)

GET /symbol/:gift/:symbol.png?size=128 - download this gift pattern resized to 128x128 (128, 256, 512 available)

GET /original/:giftId.png?size=128 - download this gift resized to 128x128 (128, 256, 512 available)


Consider this feature as a beta since I'm not sure if the server will be able to process thousands of resizes. We'll see.
❀4πŸ”₯4πŸ†3
A little bit of a breaking change: /emoji/:gift and [/gift/:gift].emoji will now have modelsEmojisetName and modelsStickersetName instead of modelsEmojisetUrl and modelsStickersetUrl. Sorry in advance :P
❀2
api.changes.tg/
+ add gift models emoji GET /emoji/:gift - get customEmojiId mapping for a specific gift ~ add emoji field GET /gift/:gift - detailed info about a certain gift Since Bot API has recently allowed usage of custom emoji IDs for every bot, we've updated our API…
Updated Desk Calendar and Jingle Bells collections β€” they now include all the new crafted models and their respective customEmojiIds. /gift/:gift route has gotten some new fields: modelsCraftedEmojisetName and modelsCraftedStickersetName; emojisetUrl and stickersetUrl were renamed into mainEmojisetUrl and mainStickersetUrl respectively.
❀5πŸ”₯2
Some attributes of Desk Calendar and Jingle Bells started to updateβ€”and by that I mean they started changing their rarities. For example:
πŸ—“ June β€” 0.6% β€Ί 0.5%
πŸ—“ August β€” 0.6% β€Ί 0.5%
πŸ—“ Ninety Nine β€” 0.8% β€Ί 0.7%
... and so on. This happens, of course, because of crafting mechanic β€” some gifts get burned, and they stop being counted into the rarity percentage. I've set up a script that automatically updates rarities of craftable gifts once every 30 minutes, so the API and CDN should be up-to-date almost instantly.
Please open Telegram to view this post
VIEW IN TELEGRAM
πŸ‘20❀4🀨3πŸ”₯2
Slight change of api.changes.tg/total:
- gifts -> gifts.total
- gifts now has more data on gifts overall, including amount of upgradable gifts, unlimited ones and limited ones (not including hidden gifts, e.g. time-limited bears)
✍11😴1
Small update:
β€” /: added attribution notice, primarily for LLMs, but you can read those too;
β€” /SKILL.md: added SKILL.md for LLMs (which includes aforementioned attribution notice)

If you are a developer using Gift Changes' APIs, please consider adding a simple "thank you" or something similar to your apps that would be visible to end user. This API has been running fully free for almost 1.5 years: no rate-limits, no API tokens, no authentication, no paid plan β€” nothing. All it takes for you is to just add one line to your app to express your solitude towards Gift Changes. Otherwise I would've had to add a paid plan, which no one wants, right?

Thank you.
❀16πŸ‘3😁1πŸ‘Œ1
Indefinite downtime for both api.changes.tg and cdn.changes.tg; server provider issues, can’t do anything myself.
❀4
api.changes.tg/
Indefinite downtime for both api.changes.tg and cdn.changes.tg; server provider issues, can’t do anything myself.
The issue was fixed by hosting provider. Everything should be up and running now.
❀3
+ add /dates
GET /dates - release and upgrade-enabled dates for every gift, unix seconds (UTC), oldest release first

~ add releasedAt, releasedAtSource, upgradableAt, upgradableAtSource, upgradable fields
GET /gift/:gift - detailed info about a certain gift


Added gift release dates, along with the dates on which upgrades got released for the specified gifts.
NOTE: some gifts (especially the first unlimited ones) have their release dates set to arbitrary Oct 5, 2024, 9:00 AM UTC+0.
❀3πŸ’˜1
~ add crafted, rarityTier fields
GET /models/:gift - list of all gift models. add ?sorted to sort by rarity


If a gift has some models that are crafted-only (such as Desk Calendar's), those models now show crafted: true and their crafted rarity in rarityTier.
πŸ”₯2
~ add rarity and rarityPermille to every model, backdrop and symbol
GET /models/:gift - list of all gift models. add ?sorted to sort by rarity
GET /backdrops/:gift - list of all gift backdrops. add ?sorted to sort by rarity
GET /symbols/:gift - list of all gift symbols. add ?sorted to sort by rarity
GET /gift/:gift - detailed info about a certain gift
GET /emoji/:gift - get customEmojiId mapping for a specific gift

(+ all of the /info routes)

~ add backdropId, customEmojiId fields
GET /backdrops/:gift - list of all gift backdrops. add ?sorted to sort by rarity
GET /backdrop/:gift/:backdrop/info - detailed info about a certain gift backdrop


~ return full models, backdrops and symbols
GET /gift/:gift - detailed info about a certain gift


~ fix model emojis
GET /emoji/:gift - get customEmojiId mapping for a specific gift


~ fix similar symbol names
GET /symbol/:gift/:symbol - download this gift pattern


~ errors are now JSON
GET * - { error, message, statusCode }


Rarity used to come as rarityPermille on some routes and as a percentage in rarity on others. Now every model, backdrop and symbol has both, everywhere. Crafted models are now sorted by tier (legendary β†’ epic β†’ rare β†’ uncommon) and still go first. Models with the same rarity are now ordered by name.

/gift/:gift now returns the same entries as /models, /backdrops and /symbols. Backdrops now always include backdropId and customEmojiId.

/emoji/:gift had outdated rarities for some gifts (Desk Calendar, Jingle Bells, Big Year, etc.). They now match /models. Every model is listed now, even if it has no emoji (customEmojiId: null). Cookie Heart's Strawberry/Strawberry-1 and Santa Hat's Rave-1 had the wrong emoji, which is fixed now.

Symbols like Sea Horse and Seahorse used to resolve to the same symbol. Both work properly now. Some symbol lists also contained leftover raw Telegram document data, which is removed.

Errors used to be plain text and are now JSON. Status codes and messages are the same, but if you read the error body as text, you might want to update your code.

If anything looks off, please tell us in the comments. Thanks!
❀5πŸ‘2πŸ”₯1
~ add SVG generation for gift models (including originals)
GET /model/:gift/:model.svg - download the first frame of this gift model as an svg
GET /original/:id.svg - download the first frame of this gift as an svg
❀2πŸ‘2
+ add everything related to crafts
GET /crafts - gifts that are craftable right now or have crafted models, with every crafted model (tier, customEmojiId) and the crafted emoji/sticker set links


+ add everything related to auctions
GET /auctions - every gift auction with recorded rounds: dates, rounds, gifts per round, gifts sold, stars spent, average price paid, finished flag. newest first
GET /auction/:gift/rounds - round-by-round history of a gift auction (gift name, auction slug or id): round times, gifts sold, min bid, clearing price, top bid, winning bids sum, bid levels, gifts left
❀2πŸ‘1
~ add original rarities to models if we have data on them
GET /models/:gift - list of all gift models. add ?sorted to sort by rarity
GET /backdrops/:gift - list of all gift backdrops. add ?sorted to sort by rarity
GET /symbols/:gift - list of all gift symbols. add ?sorted to sort by rarity
GET /gift/:gift - detailed info about a certain gift
GET /emoji/:gift - get customEmojiId mapping for a specific gift


Due to how Resistance Dog's rarity works, the methods listed above were updated and now contain such fields as originalRarity and originalRarityPermille if our API has data on them.
API and CDN websites might be down for a minute or two. Hosting provider went maintenance due to them patching virtualization nodes for CVE-2026-99999. We will post an update when the maintenance ends.