Back to Blog & Resources
Engineering

How to Fix BlueSky Feed Generator Authentication Errors

June 20, 2026 - 9 min read

BlueSky custom feed authentication errors usually happen before ranking logic matters. The feed generator service is reachable, but the authenticated getFeedSkeleton request cannot be trusted, verified, or matched to the expected service DID.

The important correction is this: the feed generator does not generate the user's service JWT for the request. The request to the feed generator is authenticated with a JWT signed by the user's repo signing key, and the feed generator verifies that token before deciding how to respond.

Read BlueSky's custom feeds guide for the AppView, feed generator DID, getFeedSkeleton, and service-JWT request flow.

How custom feed authentication works

The custom feed guide explains that the AppView resolves the feed declaration, finds the Feed Generator DID document, sends a getFeedSkeleton request to the declared service endpoint, and authenticates that request with a JWT signed by the user's repo signing key.

The service-auth guide describes the JWT payload shape: iss is the user's DID, aud is the service DID receiving the request, and exp is a short expiration time. The feed generator should verify the signing key and always check audience.

Review BlueSky's service-auth guide before debugging audience, issuer, expiration, or signing-key failures.

Common 401 and proxy auth causes

Do not confuse service auth with user login

A BlueSky app password or client-server session is not the same thing as service-to-service auth. Feed generator requests are about proving the requester DID to the feed service. If the server expects a normal app session token, it can reject a valid feed request.

The getFeedSkeleton lexicon also says auth is optional depending on provider requirements and provides the DID of the requester. Public feeds may not need every personalized auth branch, but feed services should still handle the official flow correctly when auth is present.

A practical debugging checklist

If authentication is correct but the feed is still slow, use the custom feed timeout troubleshooting guide to isolate response latency, cursor shape, and getFeedSkeleton payload issues.

Where ONYX fits for non-feed developers

Most brands do not need to run a feed generator to be discoverable. They need consistent posts with clear text intent, stable topics, readable threads, and useful timing. That is the publishing side of the problem, and it is where ONYX is focused.

Use custom feeds when your team is actually building a feed service. Use ONYX when your team wants brand posts to be clear enough for native search, custom feeds, lists, starter packs, and human readers to classify naturally.

Build a feed-friendly BlueSky content calendar with ONYX without managing feed server auth lifecycles.

FAQ

What causes BlueSky feed generator 401 errors?

Common causes include JWT audience mismatches, expired tokens, wrong DID service endpoints, stale signing-key resolution, or treating service auth like normal app-password login.

Who verifies the custom feed service JWT?

The feed generator verifies the authenticated request it receives. The token identifies the requesting user DID and should be checked against the feed generator service audience.

Does ONYX host custom feed generators?

No. ONYX is a BlueSky post planning and scheduling workflow. It helps teams publish clearer posts that can be discovered by feeds, but it is not a feed-generator hosting platform.

Schedule your BlueSky posts with ONYX

AI drafts in your voice, a real calendar, threads, and analytics - built for BlueSky. Free forever, no credit card.

Start Free

Related ONYX resources

Keep reading