curl --request POST \
--url https://patch.gg/api/v1/projects/{owner}/{slug}/covers \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"stills": [
{
"screenshot": "3c90c3cc-0d44-4b50-8888-8dd25736052a"
}
],
"subject": "<string>",
"takes": 2
}
'const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
stills: [{screenshot: '3c90c3cc-0d44-4b50-8888-8dd25736052a'}],
subject: '<string>',
takes: 2
})
};
fetch('https://patch.gg/api/v1/projects/{owner}/{slug}/covers', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://patch.gg/api/v1/projects/{owner}/{slug}/covers"
payload = {
"stills": [{ "screenshot": "3c90c3cc-0d44-4b50-8888-8dd25736052a" }],
"subject": "<string>",
"takes": 2
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text){
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"project": "<string>",
"kind": "make",
"state": "queued",
"shape": "<string>",
"subject": "<string>",
"instruction": "<string>",
"fixes": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"takes": [
{
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"shape": "wide",
"state": "making",
"url": "<string>",
"preview_url": "<string>",
"width": 123,
"height": 123,
"fixed_from": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"set_as": "<string>",
"error": "<string>"
}
],
"allowance": {
"free": true,
"note": "<string>",
"takes_per_game": 123,
"fixes_per_game": 123,
"takes_used": 123,
"fixes_used": 123,
"takes_left": 123,
"fixes_left": 123,
"stopped": "<string>"
},
"next": "<string>",
"created_at": "<string>"
}{
"error": {
"code": "version_exists",
"message": "<string>",
"details": "<unknown>"
}
}{
"error": {
"code": "version_exists",
"message": "<string>",
"details": "<unknown>"
}
}{
"error": {
"code": "version_exists",
"message": "<string>",
"details": "<unknown>"
}
}{
"error": {
"code": "version_exists",
"message": "<string>",
"details": "<unknown>"
}
}Start making covers from the game's own stills
Free: Patch pays for this, and it costs the creator nothing, up to a game’s allowance (12 takes and 4 fixes), once the game has a release (a draft is enough): Patch sponsors cover generation. Makes up to 3 takes of each shape, always both: wide (2560 x 1440, the cover) and tall (1200 x 1800, the tall cover), key art with the project’s name as its title, from 1 to 3 stills of the game (its own pictures, or stills uploaded for covers) and a subject of at most 80 characters. Answers at once with the job: takes take a minute or two each, so read it with wait. Show the person every take, and set the wide take and the tall take they pick, as the cover and the tall cover, only after they pick them. 409 covers_need_release before the game has a release; covers_allowance_used and covers_monthly_limit (an account’s games a month) once used; 503 covers_paused or covers_busy (Patch’s daily limit) for now.
curl --request POST \
--url https://patch.gg/api/v1/projects/{owner}/{slug}/covers \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"stills": [
{
"screenshot": "3c90c3cc-0d44-4b50-8888-8dd25736052a"
}
],
"subject": "<string>",
"takes": 2
}
'const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
stills: [{screenshot: '3c90c3cc-0d44-4b50-8888-8dd25736052a'}],
subject: '<string>',
takes: 2
})
};
fetch('https://patch.gg/api/v1/projects/{owner}/{slug}/covers', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://patch.gg/api/v1/projects/{owner}/{slug}/covers"
payload = {
"stills": [{ "screenshot": "3c90c3cc-0d44-4b50-8888-8dd25736052a" }],
"subject": "<string>",
"takes": 2
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text){
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"project": "<string>",
"kind": "make",
"state": "queued",
"shape": "<string>",
"subject": "<string>",
"instruction": "<string>",
"fixes": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"takes": [
{
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"shape": "wide",
"state": "making",
"url": "<string>",
"preview_url": "<string>",
"width": 123,
"height": 123,
"fixed_from": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"set_as": "<string>",
"error": "<string>"
}
],
"allowance": {
"free": true,
"note": "<string>",
"takes_per_game": 123,
"fixes_per_game": 123,
"takes_used": 123,
"fixes_used": 123,
"takes_left": 123,
"fixes_left": 123,
"stopped": "<string>"
},
"next": "<string>",
"created_at": "<string>"
}{
"error": {
"code": "version_exists",
"message": "<string>",
"details": "<unknown>"
}
}{
"error": {
"code": "version_exists",
"message": "<string>",
"details": "<unknown>"
}
}{
"error": {
"code": "version_exists",
"message": "<string>",
"details": "<unknown>"
}
}{
"error": {
"code": "version_exists",
"message": "<string>",
"details": "<unknown>"
}
}Body
Response
The job, with its takes being made