Pinterest CSV: title 100, description 500 characters, pre-upload check
Pinterest's bulk CSV allows titles up to 100 characters and descriptions up to 500. Check every row in Python before you upload 200 Sume-rendered Pins.

In a Pinterest bulk CSV, a title can be at most 100 characters and a description at most 500, and one upload holds up to 200 Pins. Check each row before upload, because one over-long row costs you a round trip after Sume has already rendered the whole batch.
What are the row limits?
The page states these limits for the CSV.
| Field | Limit |
|---|---|
| Title | 100 characters maximum |
| Description | 500 characters maximum |
| Rows per upload | 200 |
How do I lint a CSV?
The script reads rows from text, so it runs as written. Replace the string with open(path, newline='') for a real file.
import csv, io
data = "Title,Description\nShort,ok\n" + "T" * 101 + "," + "d" * 501 + "\n"
rows = list(csv.DictReader(io.StringIO(data)))
print(len(rows), "rows;", "over 200!" if len(rows) > 200 else "row count ok")
for n, r in enumerate(rows, start=2):
if len(r["Title"]) > 100:
print("line", n, "title too long:", len(r["Title"]))
if len(r["Description"]) > 500:
print("line", n, "description too long:", len(r["Description"]))Where does the text come from?
If you write titles with a model, give it the limits in the prompt, then still lint the result. The render side is independent: a Sume trim job is $0.02 per the docs, and each job needs its own Idempotency-Key, so a re-run of the batch reuses finished work instead of paying twice.
Sources
Related posts
More in Developers
- Pinterest CSV video thumbnail: mm:ss, seconds or an image URL
A Pinterest bulk CSV thumbnail can be mm:ss, seconds or a public image URL, and an image must match the video ratio. Make the still with Sume video-frames.
- Poll a 30-second Seedance 2.5 job in Python with a 20-minute deadline
Submit a 30 s Seedance 2.5 video to Sume, poll GET /v1/videos/{id} with capped backoff, and stop at a deadline without losing the job. Runnable stdlib Python.
- Poll a 30-second Seedance 2.5 job in Python: backoff and a deadline
A 30-second Seedance 2.5 job is slow. Poll /v1/videos/{id} with growing delays and a deadline. A stdlib Python script submits, waits and prints the cost.
- Poll a Seedance 2.5 job in Go: submit, wait 30 s, check status
A Go program that submits a 30-second Seedance 2.5 job to Sume, polls the polling_url every 30 seconds for up to 20 minutes, and prints the result URL.
Written by Sume