tinyhumansai/openhuman · error
Meta is temporarily rate-limiting {name} sign-in (HTTP 429).
Error message
Meta is temporarily rate-limiting {name} sign-in (HTTP 429). Wait a few minutes before retrying and avoid clicking Connect repeatedly.{account_hint} What it means
wrap_authorize_rate_limit_error's rewritten message for Meta-toolkit (Instagram/Facebook/WhatsApp) OAuth authorization when Composio reports HTTP 429: Meta is throttling sign-in attempts. Account-type hints are appended for instagram/facebook because personal accounts are a common secondary cause.
Source
Thrown at src/openhuman/integrations/composio/oauth_handoff.rs:72
let name = toolkit.trim();
let account_hint = if name.eq_ignore_ascii_case("instagram") {
" Use an Instagram Business or Creator account — personal accounts are not supported."
} else if name.eq_ignore_ascii_case("facebook") {
" Confirm the Facebook account has access to the relevant Page or Business Manager."
} else {
""
};
format!(
"Meta is temporarily rate-limiting {name} sign-in (HTTP 429). Wait a few \
minutes before retrying and avoid clicking Connect repeatedly.{account_hint}"
)
}
/// If `err` is a Meta-toolkit authorize rate limit, replace it with guidance.
pub fn wrap_authorize_rate_limit_error(toolkit: &str, err: anyhow::Error) -> anyhow::Error {
let rendered = format!("{err:#}");
if is_meta_oauth_toolkit(toolkit) && is_authorize_rate_limited(&rendered) {
anyhow::anyhow!("{}", meta_oauth_rate_limit_message(toolkit))
} else {
err
}
}
/// Remove non-active connection rows for `toolkit` so a fresh OAuth handoff does
/// not accumulate Meta sessions (#1952).
pub async fn clear_non_active_connections(
client: &ComposioClient,
toolkit: &str,
) -> anyhow::Result<u32> {
if !is_meta_oauth_toolkit(toolkit) {
return Ok(0);
}
let toolkit_key = toolkit.trim().to_ascii_lowercase();
let resp = client.list_connections().await?;
let mut cleared = 0u32;
for conn in resp.connections {View on GitHub (pinned to 7491200858)
Solutions
- Wait several minutes before retrying; do not click Connect repeatedly (each click consumes rate-limit budget)
- For Instagram, use a Business or Creator account
- For Facebook, confirm the account has access to the relevant Page or Business Manager
Defensive patterns
Strategy: retry
When it happens
Trigger: Thrown at src/openhuman/integrations/composio/oauth_handoff.rs:72 when the library encounters an invalid state.
Common situations: See trigger scenarios.
Understand the failure class
- HTTP status errors: handling 4xx and 5xx responses — how to handle 4xx and 5xx responses properly.
AI-assisted analysis of tinyhumansai/openhuman@7491200858 (2026-08-17).
Data as JSON: /api/errors/af3c51baf0b553af.
Report an issue: GitHub.