Pinterest bulk upload for video Pins: a .txt file, not a CSV

Pinterest bulk uploads video Pins from a .txt file: 200 a day for US business accounts, Who can view set to everyone, a thumbnail each. Prep clips with Sume.

4 min readSume
All posts

Pinterest's bulk upload for video Pins uses a .txt file, not a CSV. A US-based business account can upload up to 200 videos a day this way. Each Pin goes on its own line and needs a date, a link and a Who can view value, and Who can view must be everyone or no Pin is created. Every video also needs a thumbnail. These rules are from Pinterest's help article (read 2026-10-11).

What does the .txt upload require?

The article lists the fields and limits below. It does not show a sample line or say how the fields are separated, so follow Pinterest's own upload screen for the layout rather than guessing it.

Pinterest video Pin bulk upload, read 2026-10-11
ItemWhat the page says
File typeA .txt file, with a line break between each Pin
Daily limitUp to 200 videos a day for US-based business accounts
Dateyyyy-mm-dd hh:mm:ss
LinkA URL starting with https
Who can viewMust say everyone, or no Pin is created
Media URLA publicly available link to the file itself, typically ending in MP4, PNG or JPEG
ThumbnailA timestamp (mm:ss), a number of seconds (ss), or a public image URL with the video's aspect ratio
WhereSettings, then Import content, on desktop

What must each clip meet?

The bulk page gives no file-size or length limits. Pinterest's Pin specs page (read 2026-10-11) says a video Pin is 4 seconds to 5 minutes, MP4 or M4V on the web and MP4, MOV or M4V on Android and iOS, encoded H.264 or H.265. It recommends 9:16 (1080 x 1920) and also lists 1:2, 2:3, 3:4, 4:5 and 1:1.

How do I prepare a batch with Sume?

Run video inspect with frames: false on each clip. It returns the probe: duration_seconds, width, height, video_codec and size_bytes. Use those to reject clips under 4 seconds or over 300 before you write a line of the file.

For the thumbnail, a seconds value is the easiest field to fill. Extract candidate stills with video frames at two or three at times, look at them, and write the chosen time into the thumbnail field. If a clip needs to be shorter, video trim cuts a range for $0.02 per job.

The check below flags clips that fall outside the length range or the listed ratios. The 1 percent ratio tolerance is my own choice, not Pinterest's.

RATIOS = [1/2, 2/3, 3/4, 4/5, 1.0, 9/16]

def check(probe):
    problems = []
    dur = probe.get("duration_seconds")
    w, h = probe.get("width"), probe.get("height")
    if dur is None or not 4 <= dur <= 300:
        problems.append("length outside 4-300 s")
    if not w or not h:
        problems.append("no size in probe")
    elif not any(abs(w / h - r) / r < 0.01 for r in RATIOS):
        problems.append("ratio not in the listed set")
    return problems

print(check({"duration_seconds": 12.0, "width": 1080, "height": 1920}))
print(check({"duration_seconds": 3.0, "width": 1920, "height": 1080}))

What about the links?

Pinterest needs a public link to the file itself. Before you upload 200 lines, open one media link in a private browser window and confirm it plays without signing in. The page also warns that a line with any other Who can view value creates no Pin, so scan the finished file for that value on every line before you submit.

Plan the 200-a-day ceiling into your schedule: a batch of 600 clips is three days of uploads, not one. Keep a list of which clips went in on which day so a rejected file can be re-sent without duplicating the rest.

Sources

Related posts

More in Use cases

All Use cases posts

Written by Sume