Skip to content

Reference

Errors

On this page

When a Metzia tool rejects a call, the response gives an error code and tells you whether retrying can help. This page explains every code. The docs_url field links directly to the relevant section. The scope_missing error uses a different response format; see the last section of this page.

The connection guide shows both error formats, with an example of each.

The shape of an errorLink to this section

A tool error carries a stable code, a message a person reads, and retryable. It carries field when one argument is at fault, and retry_after_seconds on rate_limited.

{
  "code": "invalid_input",
  "message": "We can't answer with these arguments. Fix the named field and call again.",
  "retryable": false,
  "field": "query",
  "docs_url": "https://metzia.ai/docs/errors#invalid_input"
}

The codesLink to this section

invalid_inputLink to this section

The tool cannot answer with these arguments. The field value identifies the argument to fix. Change it, then call the tool again. Retrying without changes will fail again.

not_foundLink to this section

No published product matches that ID. The message names the ID and gives no reason, so it doesn't reveal what state a listing is in. Call search to find an available product. Retrying with the same ID will fail again.

The message identifies the product by its ID alone. It never quotes text a seller wrote.

handoff_unavailableLink to this section

The listing is live, but Metzia cannot create a purchase link. The message includes the listing URL without affiliate tracking. Send the buyer to that URL. Retrying the same call will fail again.

unauthenticatedLink to this section

Metzia couldn't verify the credentials sent with this call. Reconnect the client, then call the tool again.

forbiddenLink to this section

Your credentials are valid, but they don't allow this action. Don't retry. The refusal field explains the specific reason. email_unverified means the buyer hasn't verified their email address. terms_not_accepted means the buyer hasn't accepted the Terms of Service.

rate_limitedLink to this section

Your connection has reached its request limit. Wait for the number of seconds given in retry_after_seconds, then call the tool again.

refusal names a daily limit when one applies. retrieval_limit says the connection, or the account across all of its connections, received more distinct products today than Metzia serves. pagination_limit says it read more search pages through a cursor today than Metzia serves. Both waits run to the next midnight UTC. After pagination_limit, a search without a cursor still answers.

upstream_unavailableLink to this section

A service Metzia needs didn't respond. We've recorded the error. Try again shortly. If the error includes retry_after_seconds, wait that many seconds first.

timeoutLink to this section

The tool took too long to answer. Call again.

internalLink to this section

An error on our side prevented the tool from completing your request. We've recorded it. Try again. If you contact support, include the request ID.

scope_missingLink to this section

The token lacks the scope the tool needs. The result carries no envelope. It carries _meta.error_code and _meta.required_scope, which names the scope. Connect again and grant that scope. Do not call again with the same token.

Updated 2026-10-03