MemGift Mint API Base URL: https://api-memgift.bincore.site Авторизация: Во всех приватных запросах передавайте токен: Authorization: Bearer API можно вызывать с других сайтов и хостов. CORS включён. Endpoints: GET /health Проверка, что API работает. Токен не нужен. GET /docs Эта документация. Токен не нужен. POST /v1/mint Создать NFT в GetGems коллекции. API не проверяет наличие подарка на MemGift аккаунте и создаёт NFT по данным из запроса. GET /v1/mint/{request_id} Проверить статус создания NFT. Статусы: validated - запрос проверен, но реальный mint не запускался, если dry_run=true. processing - запрос принят, NFT создаётся. success - NFT создан. failed - создание не удалось. Минимальный POST /v1/mint: { "request_id": "serphira-530-001", "owner_address": "UQxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", "gift_key": "Serphira", "gift_title": "Serphira", "number": 530, "image": "https://example.com/final-image.png", "model": { "name": "Default", "image": "https://example.com/model.svg", "drop_rate": "10%" }, "background": { "name": "Red", "image": "https://example.com/background.png", "center": "#875353", "around": "#734040", "drop_rate": "5%" }, "symbol": { "name": "Star", "image": "https://example.com/symbol.svg", "drop_rate": "3%" } } Пример ответа: { "ok": true, "request_id": "serphira-530-001", "status": "processing", "getgems_status": "pending", "name": "Serphira #530", "address": null, "url": null, "error": null } Пример успешного ответа: { "ok": true, "request_id": "serphira-530-001", "status": "success", "getgems_status": "ready", "name": "Serphira #530", "address": "EQ...", "url": "https://getgems.io/...", "error": null } Поля запроса: request_id: уникальный id запроса, 6-120 символов. Лучше всегда передавать свой. owner_address или wallet_address: TON/GRAM адрес получателя, начинается с UQ или EQ. gift_key: технический ключ подарка. gift_title или gift_name: название подарка. number, seq или gift_number: номер подарка. image или image_url: финальная картинка NFT. model.name: название модели. model.image: ссылка на модель. model.drop_rate: редкость модели. background.name: название фона. background.image: ссылка на фон, если есть. background.center: основной цвет фона в формате #875353. background.around: внешний цвет фона в формате #734040. background.drop_rate: редкость фона. symbol.name: название символа. symbol.image: ссылка на символ. symbol.drop_rate: редкость символа. description: описание NFT, необязательно. name: полное имя NFT, необязательно. По умолчанию gift_title + номер. attributes: дополнительные атрибуты массивом [{"trait_type":"...", "value":"..."}]. wait_ready: true, если нужно подождать готовность прямо в POST-запросе. wait_timeout: сколько секунд ждать, максимум 120. dry_run: true, чтобы проверить запрос без реального минта. Пример curl: curl -X POST "https://api-memgift.bincore.site/v1/mint" \ -H "Authorization: Bearer " \ -H "Content-Type: application/json" \ -d '{ "request_id": "pepcream-777-001", "owner_address": "UQxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", "gift_key": "PepCream", "gift_title": "Pep Cream", "number": 777, "image": "https://example.com/pepcream-777.png", "model": {"name": "Vanilla", "image": "https://example.com/model.svg", "drop_rate": "12%"}, "background": {"name": "Green", "center": "#7DCB8A", "around": "#315C3A", "drop_rate": "6%"}, "symbol": {"name": "Clover", "image": "https://example.com/symbol.svg", "drop_rate": "2%"} }' Пример browser fetch: fetch("https://api-memgift.bincore.site/v1/mint", { method: "POST", headers: { "Authorization": "Bearer ", "Content-Type": "application/json" }, body: JSON.stringify({ request_id: "test-001", owner_address: "UQxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", gift_key: "Serphira", gift_title: "Serphira", number: 530, image: "https://example.com/final.png", model: {"name": "Default", "image": "https://example.com/model.svg"}, background: {"name": "Red", "center": "#875353", "around": "#734040"}, symbol: {"name": "Star", "image": "https://example.com/symbol.svg"} }) }) Важно: Не используйте один request_id для разных NFT. Повторный запрос с тем же request_id и тем же телом вернёт текущий статус. Повторный запрос с тем же request_id, но другим телом вернёт ошибку conflict.