Topic: MP4 links suddenly missing in new API responses

Posted under e621 Tools and Applications

Hi everyone!

I’ve been using the e621 API to fetch video posts and until recently I was reliably getting MP4 URLs in the response under sample.alternates.samples.480p.url (and variants.mp4.url). For example, this post still returns a valid MP4 link:

https://e621.net/posts.json?tags=id:5554992

However, over the past week I’ve noticed that newer posts no longer include any MP4 URLs—those fields are always null, even though the same files clearly exist (you can play them in the browser). Here’s an example where the MP4 link is missing:

https://e621.net/posts.json?tags=id:5574518

My application uses a standard User‑Agent header, and I haven’t changed anything on my end. It looks like the API simply isn’t returning the MP4 variants anymore. Could someone point me to what changed, or how I might restore access to those MP4 URLs? Is this an intentional API update or perhaps a bug?

Thank you for any guidance!

From topic #25734:

cinder said:
Neither the file nor the playback is "broken".
Your browser just does not support playing webm files.

Due to a background process that is going on right now, some posts won't have the mp4 variants available.
It'll all be sorted soon-ish.

Yeah, I saw that in the error logs.
Seems to have been a minor hiccup when one of the servers was out of rotation.

quenir said:
From topic #25734:

Is there a bug page somewhere or some information about the incident?
I still notice links to mp4 in some of the entries over the past week
I would like to receive an official response, in case the AI's answer turns out to be invalid :)

furkamore said:
Is there a bug page somewhere or some information about the incident?
I still notice links to mp4 in some of the entries over the past week
I would like to receive an official response, in case the AI's answer turns out to be invalid :)

Cinder is not an AI, he is the site's sole developer
All video samples are being regenerated, posts will not report that they have the expected samples until they are regenerated

donovan_dmc said:
Cinder is not an AI, he is the site's sole developer
All video samples are being regenerated, posts will not report that they have the expected samples until they are regenerated

Oh, sorry, I just trusted his bio :)
Thanks for the information.

furkamore said:
Oh, sorry, I just trusted his bio :)
Thanks for the information.

that should probably be updated at some point to make it a bit more clear that he's not just a standard chatbot or something. also probably change it so it dosn't say "moderator" anymore, because he's been admin for over a year now.

furkamore mightve just been playing, but It's kind of wild how many people literally thinks they're a chatbot. Works every time

Hawwo
Problem with the video is gone, thanks to the developers for that, but now I have a new problem :(
I’ve been using the e621 API successfully with a simple async request like this:

async with aiocfscrape.CloudflareScraper(headers={"User-Agent": "TestApi by furkamore"}) as session:
    ...

without authentication, and it worked fine until yesterday. Even when I tried adding Basic Auth (username and API key), which is less preferable for me, I now get this error:

message='Attempt to decode JSON with unexpected mimetype: text/html; charset=utf-8'

I also tested with curl on the same server and locally, and it works fine there

Could you please clarify if there were recent changes in API requirements or restrictions that might cause this? I want to ensure my requests stay compliant and avoid being blocked

Donovan DMC

Former Staff

furkamore said:
(...)

Have you looked at the body and status code? Also what's the url? An html page usually means you're either doing something wrong or your request url is wrong

There's also this html page (don't mind the url, this url will just always return that page) which can show up for a multitude of reasons on any request

donovan_dmc said:
Have you looked at the body and status code? Also what's the url? An html page usually means you're either doing something wrong or your request url is wrong

There's also this html page (don't mind the url, this url will just always return that page) which can show up for a multitude of reasons on any request

I tried to inspect the response body manually and it turns out to be an HTML page from Cloudflare saying:
"Sorry, you have been blocked"
The weird thing is that I’ve been successfully using this method until just yesterday, making requests with aiocfscrape.CloudflareScraper and a custom User-Agent. It worked across many different tag combinations and URLs — nothing specific. Now it fails even when I try from different IPs (both my local machine and my server), with or without auth
Just in case I’m doing something wrong — here’s how I was making the requests:

async with aiocfscrape.CloudflareScraper(headers={"User-Agent": "TestApi by furkamore"}) as session:

And I also tried adding authentication like this:

auth = BasicAuth("furkamore", "****API_KEY****")
async with aiocfscrape.CloudflareScraper(headers={"User-Agent": "TestApi by furkamore"}, auth=auth) as session:

Both approaches are now returning the same error:
Attempt to decode JSON with unexpected mimetype: text/html; charset=utf-8

Has there been a recent change in how requests are validated, or what headers/auth are expected?

And if using an API key is now necessary, is there a way to exclude tags like young (as used to happen with unauthenticated requests)?

Full response:
Sorry, you have been blocked
You are unable to access e621.net
Why have I been blocked?
This website is using a security service to protect itself from online attacks. The action you just performed triggered the security solution. There are several actions that could trigger this block including submitting a certain word or phrase, a SQL command or malformed data.What can I do to resolve this?
You can email the site owner to let them know you were blocked. Please include what you were doing when this page came up and the Cloudflare Ray ID found at the bottom of this page.

Updated

Donovan DMC

Former Staff

Considering you're using a module which tries to bypass cloudflare's bot checks, I'd bet on cloudflare not being happy about that

Try it without whatever that is and see if it works properly then, I'm not sure why you're using this module since I have never seen a captcha on the api unless ddos protection is enabled, which at that point you should just back off and consider e6 down rather than trying to bypass it

Also, no api changes have been made, all of my applications which access the api are working just fine
This is a problem between you and cloudflare, not you and e621

Sorry, you have been blocked
You are unable to access e621.net
Why have I been blocked?
This website is using a security service to protect itself from online attacks. The action you just performed triggered the security solution.

Something you're doing is setting off cloudflare and it's blocking the request due to that

donovan_dmc said:
Considering you're using a module which tries to bypass cloudflare's bot checks, I'd bet on cloudflare not being happy about that

Try it without whatever that is and see if it works properly then, I'm not sure why you're using this module since I have never seen a captcha on the api unless ddos protection is enabled, which at that point you should just back off and consider e6 down rather than trying to bypass it

Also, no api changes have been made, all of my applications which access the api are working just fine
This is a problem between you and cloudflare, not you and e621
Something you're doing is setting off cloudflare and it's blocking the request due to that

I’ve tried making plain requests without any Cloudflare bypass logic, but I’m still getting blocked. As far as I know, the API shouldn’t trigger Cloudflare unless there’s DDoS protection on.

Are there any specific conditions (headers, rate limits, user agent) I should follow to avoid being flagged?

Appreciate any pointers — just want to make sure I’m using it correctly.