TikTok effect music cover 800x800: generate 1024x1024, then resize

TikTok wants an 800x800 music cover with the brand in a 260px centre circle. 800x800 is below Sume's GPT pixel minimum, so render 1024 and resize.

5 min readSume
All posts

Ask Sume for a 1024 x 1024 image and resize it to 800 x 800 yourself. TikTok's Branded Effect page asks for an official music cover of 800 x 800 px, 10 MB or less, with the brand placed in a 260 px diameter centre circle (read 2026-10-03). Sume's Image API says custom pixel sizes on the ChatGPT Image 2.5 models need both edges to be multiples of 16 and a total between 655,360 and 8,294,400 pixels. 800 x 800 is 640,000 pixels, just under that floor, so the exact size is refused for that family.

The workaround takes one extra line of Pillow, and it keeps the artwork sharp because you scale down instead of up.

The numbers behind the rule

800 is a multiple of 16 (16 x 50), so the edge test passes, but 800 x 800 = 640,000 falls below 655,360. The smallest square that passes is 816 x 816, which is 665,856 pixels, and 1024 x 1024 is 1,048,576, comfortably inside the range and a common size. Other models in the catalog publish their own size rules in the capability descriptors from GET /v1/images/models, so read those if you prefer a different model.

Cover size arithmetic, TikTok page read 2026-10-03, Sume Image API docs
SizePixelsPasses GPT custom range (655,360 to 8,294,400)?
800 x 800 (TikTok's cover size)640,000No, below the minimum
816 x 816665,856Yes
1024 x 10241,048,576Yes
Brand circle on the cover260 px diameterNot an image parameter

Generate big, resize down, check the circle

The script requests a 1024 x 1024 cover from openai/gpt-image-2.5 with image_size set as custom pixels, polls the job, downloads the first Sume-hosted image it finds and saves an 800 x 800 PNG with Pillow. The Image API page does not show the response shape on the page this post was written from, so the script searches the result for the first media.sume.com URL instead of assuming a field name.

After saving, look at the centre 260 px circle. TikTok places the brand in that area, so the logo or wordmark must sit inside it with margin. Models draw text unevenly, so check any lettering at full size, and prefer to add the logo yourself over the generated art.

import os, time, requests
BASE = "https://api.sume.com"
H = {"Authorization": f"Bearer {os.environ['SUME_API_KEY']}"}

def run(path, body, key):
    r = requests.post(BASE + path, headers={**H, "Idempotency-Key": key}, json=body)
    r.raise_for_status()
    job = r.json()["request_id"]
    while True:
        s = requests.get(f"{BASE}/v1/jobs/{job}/status", headers=H).json()["status"]
        if s in ("completed", "failed", "canceled"):
            break
        time.sleep(3)
    return s, (requests.get(f"{BASE}/v1/jobs/{job}/result", headers=H).json() if s == "completed" else None)

import io, json, re
from PIL import Image
status, res = run("/v1/images", {
    "model": "openai/gpt-image-2.5",
    "prompt": "Square album-style cover, bold abstract shapes in teal and orange, large empty centre circle, no text",
    "image_size": "1024x1024"}, "effect-cover-001")
url = re.search(r"https://media\.sume\.com/[^\"\s]+", json.dumps(res) if res else "")
if url:
    im = Image.open(io.BytesIO(requests.get(url.group(0)).content)).convert("RGB")
    im.resize((800, 800), Image.LANCZOS).save("music-cover-800.png")
    print("saved", im.size, "-> 800x800")
else:
    print(status, res)

Designing for the 260 px circle

TikTok's page puts brand placement in a centre circle 260 px across on an 800 px cover. That is about a third of the width, or roughly 33 percent, so the cover is mostly background and the logo is small. A good layout leaves the centre quiet and spends the rest of the canvas on colour and texture that frames it.

Write the prompt with that in mind: ask for an empty centre, soft or simple edges around it, and no text, then add the logo as a separate layer in your design tool. Image models are better at atmosphere than at exact brand marks, and a logo that is regenerated every time will drift from your real one. If you must generate a mark, pass your logo as a reference image using the input_references or image_urls fields the model supports, and read the result closely against the original.

Test the finished cover at small sizes too. Shrink it to about 100 px and check the circle still reads as the focal point. If it vanishes, the contrast is too low, and a darker ring or a flatter background will help.

What stays on your side

Sume does not know the 260 px circle, the 10 MB limit or TikTok's review. The PNG you save is nearly always well under 10 MB at 800 x 800, but check the byte size before you upload. Keep the 1024 version in case a later request asks for a larger cover.

If a model gives you an off-centre composition, ask again with a clearer description of the empty centre rather than shifting the art by hand, and keep the prompt in your notes so the next cover in the series stays consistent.

Keep the prompt, the seed or reference images you used, and the final 800 x 800 file together in the campaign folder. If TikTok asks for a revision, you can regenerate at 1024 with a small change instead of starting the artwork from scratch, and the new cover will still match the earlier one.

Sources

Related posts

More in Media tools

All Media tools posts

Written by Sume