Support

Support

Email support@joinpluto.com for anything — failed scans, billing questions, quota confusion, key recovery. Enterprise pricing goes to sales@joinpluto.com. Scale and Enterprise tiers include priority support.

What to include in a report

The more of this you include, the faster we can trace your issue:

  1. Tenant ID — shown on the dashboard Account page (opens in a new tab), and returned as tenant_id when you signed up. Never send your API key itself.
  2. Endpoint + method — e.g. POST /v1/aeo/scan.
  3. Timestamp (with timezone) of the failing request.
  4. The full error body — the error.code and error.message from the JSON response.
  5. run_id for anything asynchronous (AEO scans, agent runs) — it's in the 202 response and pollable at GET /v1/agents/runs/{run_id}, including any error_message.
  6. Request ID — if you send an x-request-id header on your requests, Pluto records it with the usage event on metered endpoints, which lets us find the exact call. Sending one (any UUID) is a good habit for production integrations.

Failed scans

An AEO scan (or any agent run) is accepted with 202 and executes in the background. Poll GET /v1/agents/runs/{run_id}: a run that ends in status: "failed" includes an error_message explaining why (you'll also get an agent.failed webhook if you have webhooks configured).

A request that is rejected up front — validation error, auth failure, 429, or 402 — is not metered at all. A run that is accepted and later fails does consume an agent-run slot at acceptance time; if a failed run left you short on quota, email support with the run_id and we'll review a credit.

Billing and quota questions

  • "Why am I getting 402 quota_exceeded?" One of three ceilings was hit: monthly actions, monthly agent runs (or workflow runs), or your tier's hard dollar spend cap. GET /v1/usage shows all counters and limits for the current period, which starts on the first of the month (UTC).
  • 402 vs 429402 means the period quota is exhausted (upgrade or wait for reset); 429 means you're calling too fast right now (back off per Retry-After and retry).
  • Overage chargesoverage_charges_usd in /v1/usage shows what the current period's usage beyond your included quota would cost. If a number there surprises you, include a screenshot or the raw /v1/usage response in your email.
  • Checkout problems — if you paid but never received a key, include your Stripe checkout session_id (cs_...). Expired or already-claimed sessions return 410; support can recover your account from the session id.

Key problems

  • Lost key — keys are shown once and stored only as hashes; nobody can read yours back. Mint a new one from the dashboard (opens in a new tab) Settings page or POST /v1/api-keys, then revoke the old one.
  • 401 on a key that used to work — check it wasn't revoked (Settings page lists key status). Only short-lived session keys expire on their own.