Skip to main content

Daily quota

Each search takes 1 search from your daily quota. API access comes with Hound and Alpha.
  • The quota resets every day at 00:00 UTC. usage.resetAt in /v1/me gives the exact moment.
  • It is shared with the website: a search on dis.dog and a search through the API take from the same quota.
  • Unused searches do not carry over to the next day.
  • Paid plans are paid in crypto through OxaPay on the pricing page. A payment lasts 30 days and does not renew by itself; paying again for the same plan adds 30 days to its end. When it ends, the account is back on Pup.
The input is checked first, then the removals, and only then is a search taken: a refused call never costs anything. A 404 on a single-module route is an answer (“nothing there”), so it counts.

Rate limit

On Pup, two searches must be at least 3 seconds apart. The limit belongs to the account and applies to the website (Pup has no search access on the API). A search sent too early is refused with 429 rate_limited, and retryAfterMs says how long to wait. Hound and Alpha have no rate limit.

Headers

Every call that takes a search, and every GET /v1/me, carries your quota in its headers: The API answers browsers from any origin and exposes these three headers to them, so the playground shows them too.

Handling 429

A 429 says why in its body:
rate_limited (Pup only, so in practice on the website): wait retryAfterMs milliseconds, then try again. quota_exceeded: today’s searches are used up, and retrying before resetAt will not help.
Running batches? Read X-RateLimit-Remaining after each call, or GET /v1/me (free) before you start. Hound and Alpha have no rate limit; Alpha has no daily quota either.