Mastodon posting errors and fixes
A Mastodon failure is usually platform_rejected (the instance answered 400, 403 or 422), unauthorized (the instance refused the token; Mastodon tokens do not expire, so it was revoked, reconnect) or platform_unavailable (rate limited or down, nothing posted).
#Errors you can get posting
yeetpost answers with its own code and message. It does not hand back Mastodon's own text, so the second column is what yeetpost reads off Mastodon's answer. Every body is JSON with an error code and a message; platform_rejected, platform_unavailable and internal_server_error also carry a req_id. Inside a post item the same vocabulary shows up as { "code": ..., "message": ... }.
| yeetpost code | HTTP | What yeetpost reads | What it means | Fix |
|---|---|---|---|---|
platform_rejected | 422 | A 400, 403 or 422 on the status. The message is "Mastodon rejected the post." | The instance refused the post. yeetpost does not read the instance's reason, so 422 from Mastodon and 400 or 403 all look the same. | Check the text against the instance's limit (textLimit on GET /connections), then change the text and post again. If the text is fine, look at the account on the instance itself. Quote the req_id if the refusal looks wrong. |
unauthorized | 401 | A 401 on the status or on an image upload. | The instance refused the stored token. Mastodon tokens do not expire, so it was revoked on the instance. The connection is marked reconnect_required. | Reconnect the account at app.yeetpost.com/app/connections. For a customer's connection, send them through POST /profiles/{profileId}/connect with the connectionId. |
platform_rejected | 422 | An image upload that fails with anything but a 401: "Mastodon rejected the image." Or an upload the instance accepted with a 202 and never finished processing: "Mastodon is still processing the image." | The instance refused the image, or took too long to process it. | Try a different image, or send it again later if the instance was slow. |
platform_unavailable | 503 | A 429, or a 5xx or an html gateway page. The messages are "Mastodon is rate limiting this account, so nothing went out. Send it again later." and "Mastodon was busy or down, so nothing went out. Send it again in a bit." platform_status carries the status. | The instance rate limited the account or was down. Nothing was posted. | Nothing was posted. Wait a bit, then send it again with a new Idempotency-Key. |
text_too_long | 400 | Nothing: yeetpost checks before it calls the instance. | "Mastodon allows {limit} characters; the text is {count}." with a field naming the part. Only for AI-polished text checked at send time is the wording "Text is too long (max {limit} characters for {instance})." The limit is the one the instance reported when the account was connected, 500 if it never said. A link counts as 23. | Shorten the part the field names. |
media_unsupported | 400 | Nothing: yeetpost checks before it calls the instance. "Mastodon takes at most 4 images on a post." | More than 4 images. Only the Mastodon item fails. | Send up to 4 images, or drop Mastodon from connectionSlugs for this post. |
internal_server_error | 500 | Any other status, a request that failed, or an answer yeetpost could not read. The message is "An unexpected error occurred" with a req_id. | Whether the status went out is unknown. | Check the account on the platform before sending again. GET /posts/{postId} shows how yeetpost recorded it. Quote the req_id if you report it. |
reconnect_required | 403 | Nothing: yeetpost has no stored login for this connection. | The message is "Mastodon's login is missing. Reconnect it to send again." | Reconnect the account at app.yeetpost.com/app/connections. For a customer's connection, send them through POST /profiles/{profileId}/connect with the connectionId. |
platform_unavailable | 503 | Nothing: yeetpost could not get ready to send. | The message is "Mastodon was busy or down, so nothing went out. Send it again." Nothing was posted. | Nothing was posted. Wait a bit, then send it again with a new Idempotency-Key. |
internal_server_error | 500 | Nothing readable: something threw after the send to the platform had started. The message is "An unexpected error occurred while sending." with a req_id. | The post may already be live on Mastodon. | Check the platform before sending again: a blind resend can post twice. GET /posts/{postId} shows how yeetpost recorded it. Quote the req_id if you report it. |
Codes that are not about one platform (invalid_request, invalid_connection, idempotency_key_conflict, the rate limit and the rest) are on Errors.
#Errors when connecting
Connecting happens on a screen, not through the posting endpoint. These are the answers it gives. A wrong entry leaves the connect link open for another try.
| Message | What it means | Fix |
|---|---|---|
| invalid mastodon instance (400) | The host is not https, or resolves inside a private network. | Give the instance's https host, for example mastodon.social. The connect screen says "That does not look like a Mastodon instance." |
| mastodon instance not reachable (400) | The host is not a Mastodon instance, or it is down: yeetpost could not register its app there. | Check the host is a Mastodon instance and try again. |
#Reconnecting
reconnect_required and, inside a post item, unauthorized both mean the stored login is dead. Nothing in the request will fix it. Reconnect the account at https://app.yeetpost.com/app/connections. For a customer's connection under a profile, send them through POST /profiles/{profileId}/connect and pass the connectionId. GET /connections shows each connection's status: active, expiring or reconnect_required. The connection.reconnect_required webhook fires the moment yeetpost learns the login is dead.
#More
Last verified 2026-10-29