Detect toilets

Toilet detection · model toilet-detector

POST/v1/drawings/detection/toilets

Detect toilets and plumbing fixtures in architectural floor-plan PDFs. Accepts a previously uploaded document_id, enqueues inference, and returns a job you poll for results. Detections are returned as bounding boxes in PDF coordinate space along with a per-detection confidence score.

Returns
A job to check202 Accepted
Usage
Element detectionper sheet
Results in
A list of toiletsresult.toilets
Auth
API keyX-API-Key header
Processing time (free tier)

Free-tier toilets detection typically completes in 2–4 minutes per job. Processing time scales mainly with page count and drawing complexity — a dense multi-page set takes longer than a single sheet.

Accuracy note: The toilet detector achieves a mAP@0.5 of 0.70 with an average recall of ~47%. It reliably detects standard upright fixture symbols but may miss rotated or non-standard representations. We recommend treating results as a starting point for review rather than a complete count.

Need it faster? Developer and Enterprise plans run detection on dedicated GPU infrastructure. Upgrade your plan

Example

Floor plan input
A sample floor plan before and after toilet detection: 22 toilets detected.

How it runs

  1. Send a document_id
  2. Get a job_id
  3. Check your results or receive a webhook

Request

This endpoint requires a document_id. Upload your PDF first.

Body is JSON — this endpoint does not accept file uploads directly.

FieldDescription
document_idstring · UUIDRequiredID of the uploaded PDF. Must belong to this account and not be expired.
page_numbersarray of integersOptional1-based page indices to scan. Omit to scan all pages. Out-of-range values are skipped by the worker but still counted.
webhook_urlstring · URLOptionalURL to POST the completed job payload to. Delivered on developer, pro, and enterprise tiers only.
UsageUsage is counted on submission: each page in page_numbers (or every page of the document when omitted) is one element detection, not only the pages that contain toilets. Send only valid page indices.

Responses

The job is enqueued immediately. Poll GET /v1/jobs/{job_id} until status is complete or failed.

FieldDescription
job_idstring · UUIDUse this to poll for results.
statusstringAlways queued on this response.
poll_urlstringPath only — prepend https://api.anchorgrid.ai to build the full URL.

Usage & rate limits

Each page scanned is one element detection (See pricing). Rate limit: tier RPM (5 / 60 / 120 / 300).

PlanWhen the allowance is used up
trialTrial allowance — 402 FREE_TIER_LIMIT_REACHED when used up, 402 TRIAL_ENDED once the trial is over.
developerMonthly allowance, then overage up to your overage limit — 402 OVERAGE_LIMIT_REACHED at the limit (429 QUOTA_EXCEEDED when the allowance is used up without overage billing).
enterpriseNo allowance check.

Rate-limit 429s include retry_after_seconds in the body. Quota 429s and rate-limit 429s return the same status code — check the error body to distinguish them.

Errors

StatusWhat it means
401Missing or invalid X-API-Key.
402Trial allowance used up.
404document_id not found or expired.
422Validation error — malformed UUID or invalid body.
429Rate limit or monthly quota exceeded.

Searches these docs: guides, the basics and every endpoint.

Make your first requestPlayground walkthrough: upload, choose an analysis, run it
Connect your softwareYour application calls the REST API. Requires an API key
Connect your AI agentGive an agent a tool that calls the REST API
AuthenticationX-API-Key header, 401 errors, keeping keys safe
Detect doorsPOST /v1/drawings/detection/doorsDoor detection — Find the doors on the pages of an architectural drawing set.
Check your resultsGET /v1/jobs/{job_id}Get a job — See a job’s status and, once it’s complete, its results.