curl --request POST \
--url https://api.moonup.gg/v1/offers/gift-card \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"game": "<string>",
"title": "<string>",
"price": 123,
"delivery_method": "<string>",
"units": [
{}
],
"description": "<string>",
"images": [
"<string>"
],
"tags": [
"<string>"
],
"attributes": {}
}
'import requests
url = "https://api.moonup.gg/v1/offers/gift-card"
payload = {
"game": "<string>",
"title": "<string>",
"price": 123,
"delivery_method": "<string>",
"units": [{}],
"description": "<string>",
"images": ["<string>"],
"tags": ["<string>"],
"attributes": {}
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
game: '<string>',
title: '<string>',
price: 123,
delivery_method: '<string>',
units: [{}],
description: '<string>',
images: ['<string>'],
tags: ['<string>'],
attributes: {}
})
};
fetch('https://api.moonup.gg/v1/offers/gift-card', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.moonup.gg/v1/offers/gift-card",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'game' => '<string>',
'title' => '<string>',
'price' => 123,
'delivery_method' => '<string>',
'units' => [
[
]
],
'description' => '<string>',
'images' => [
'<string>'
],
'tags' => [
'<string>'
],
'attributes' => [
]
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.moonup.gg/v1/offers/gift-card"
payload := strings.NewReader("{\n \"game\": \"<string>\",\n \"title\": \"<string>\",\n \"price\": 123,\n \"delivery_method\": \"<string>\",\n \"units\": [\n {}\n ],\n \"description\": \"<string>\",\n \"images\": [\n \"<string>\"\n ],\n \"tags\": [\n \"<string>\"\n ],\n \"attributes\": {}\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.moonup.gg/v1/offers/gift-card")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"game\": \"<string>\",\n \"title\": \"<string>\",\n \"price\": 123,\n \"delivery_method\": \"<string>\",\n \"units\": [\n {}\n ],\n \"description\": \"<string>\",\n \"images\": [\n \"<string>\"\n ],\n \"tags\": [\n \"<string>\"\n ],\n \"attributes\": {}\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.moonup.gg/v1/offers/gift-card")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"game\": \"<string>\",\n \"title\": \"<string>\",\n \"price\": 123,\n \"delivery_method\": \"<string>\",\n \"units\": [\n {}\n ],\n \"description\": \"<string>\",\n \"images\": [\n \"<string>\"\n ],\n \"tags\": [\n \"<string>\"\n ],\n \"attributes\": {}\n}"
response = http.request(request)
puts response.read_body{
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"title": "<string>",
"description": "<string>",
"attributes": {},
"tags": [
"<string>"
],
"status": "draft",
"created_at": "2023-11-07T05:31:56Z",
"updated_at": "2023-11-07T05:31:56Z",
"published_at": "2023-11-07T05:31:56Z",
"price": 123,
"currency": "USD",
"images": [
"<string>"
],
"delivery_method": "<string>"
}{
"error": "delivery_instructions_required"
}{
"error": "unauthorized"
}{
"error": "delivery_instructions_required"
}{
"error": "rate_limited"
}Create a gift card listing
Created as a draft — nobody but you can see it until you publish it.
curl --request POST \
--url https://api.moonup.gg/v1/offers/gift-card \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"game": "<string>",
"title": "<string>",
"price": 123,
"delivery_method": "<string>",
"units": [
{}
],
"description": "<string>",
"images": [
"<string>"
],
"tags": [
"<string>"
],
"attributes": {}
}
'import requests
url = "https://api.moonup.gg/v1/offers/gift-card"
payload = {
"game": "<string>",
"title": "<string>",
"price": 123,
"delivery_method": "<string>",
"units": [{}],
"description": "<string>",
"images": ["<string>"],
"tags": ["<string>"],
"attributes": {}
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
game: '<string>',
title: '<string>',
price: 123,
delivery_method: '<string>',
units: [{}],
description: '<string>',
images: ['<string>'],
tags: ['<string>'],
attributes: {}
})
};
fetch('https://api.moonup.gg/v1/offers/gift-card', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.moonup.gg/v1/offers/gift-card",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'game' => '<string>',
'title' => '<string>',
'price' => 123,
'delivery_method' => '<string>',
'units' => [
[
]
],
'description' => '<string>',
'images' => [
'<string>'
],
'tags' => [
'<string>'
],
'attributes' => [
]
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.moonup.gg/v1/offers/gift-card"
payload := strings.NewReader("{\n \"game\": \"<string>\",\n \"title\": \"<string>\",\n \"price\": 123,\n \"delivery_method\": \"<string>\",\n \"units\": [\n {}\n ],\n \"description\": \"<string>\",\n \"images\": [\n \"<string>\"\n ],\n \"tags\": [\n \"<string>\"\n ],\n \"attributes\": {}\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.moonup.gg/v1/offers/gift-card")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"game\": \"<string>\",\n \"title\": \"<string>\",\n \"price\": 123,\n \"delivery_method\": \"<string>\",\n \"units\": [\n {}\n ],\n \"description\": \"<string>\",\n \"images\": [\n \"<string>\"\n ],\n \"tags\": [\n \"<string>\"\n ],\n \"attributes\": {}\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.moonup.gg/v1/offers/gift-card")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"game\": \"<string>\",\n \"title\": \"<string>\",\n \"price\": 123,\n \"delivery_method\": \"<string>\",\n \"units\": [\n {}\n ],\n \"description\": \"<string>\",\n \"images\": [\n \"<string>\"\n ],\n \"tags\": [\n \"<string>\"\n ],\n \"attributes\": {}\n}"
response = http.request(request)
puts response.read_body{
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"title": "<string>",
"description": "<string>",
"attributes": {},
"tags": [
"<string>"
],
"status": "draft",
"created_at": "2023-11-07T05:31:56Z",
"updated_at": "2023-11-07T05:31:56Z",
"published_at": "2023-11-07T05:31:56Z",
"price": 123,
"currency": "USD",
"images": [
"<string>"
],
"delivery_method": "<string>"
}{
"error": "delivery_instructions_required"
}{
"error": "unauthorized"
}{
"error": "delivery_instructions_required"
}{
"error": "rate_limited"
}Авторизации
Your API key, from the cabinet under Seller → API keys.
Тело
A gift card is one redemption code, handed over instantly — there is no delivery type to pick and no handover time to promise.
The game's slug.
8 - 128US cents.
A key from GET /v1/offers/delivery-methods — activation_code.
The codes themselves, one opaque JSON payload each. Encrypted at rest; never read back.
14096Optional — the marketplace renders the pack tile.
10Up to 500 characters in all, counted as the tags joined with ", ". No commas inside a tag. Stored trimmed, lower-cased and deduplicated.
The category's own fields — read them from its schema.
Ответ
Created
What every category's listing carries, whatever it sells.
The category's own fields, keyed by the schema's key.
draft on create, then active once you publish it. paused and
archived are yours too, through pause and DELETE. reserved
and sold follow an order. removed is a takedown after
publishing, which no call in this API performs.
draft, active, paused, reserved, sold, removed, archived When publish put it on the marketplace. null while it is a
draft, and written once — pausing and unpausing leave it alone.
US cents.
Always USD.
"USD"
The key this listing hands over by.
