Developers
REST API, webhook notifications, and MCP server for desktop tools. Async job-based extraction with scoped API keys.
# 1. Upload a P&ID drawing
curl -X POST https://api.tagsight.net/v1/extract \
-H "Authorization: Bearer ts_your_api_key" \
-F "file=@your-drawing.pdf"
# Response: { "job_id": "abc123", "status": "queued" }
# 2. Poll for completion
curl https://api.tagsight.net/v1/jobs/abc123 \
-H "Authorization: Bearer ts_your_api_key"
# Response: { "status": "completed", "instrument_count": 47 }
# 3. Get results
curl https://api.tagsight.net/v1/jobs/abc123/results \
-H "Authorization: Bearer ts_your_api_key"
# Returns structured instrument data with tag numbers,
# signal classes (AI/AO/DI/DO), descriptions, and confidence scoresAPI Keys
Create API keys from your dashboard with scoped permissions (extract, read). Keys support optional expiration dates and atomic rotation — create a new key and revoke the old one in a single operation.
Pass your key in the Authorization: Bearer ts_... header.
| Method | Path |
|---|---|
| POST | /v1/extract |
| GET | /v1/jobs |
| GET | /v1/jobs/{id} |
| GET | /v1/jobs/{id}/results |
Base URL: https://api.tagsight.net. All endpoints require authentication. Idempotency keys supported on extract.
Register webhook endpoints to get notified when extractions complete. All payloads are cryptographically signed for verification with automatic retry and delivery tracking.
processing.completedExtraction finished successfully with results ready
processing.failedExtraction failed — pages automatically refunded
test.pingTest event to verify your endpoint connectivity
All errors return a JSON body with a detail field describing the issue.
| Status | Meaning |
|---|---|
| 400 | Bad Request |
| 401 | Unauthorized |
| 402 | Insufficient Credits |
| 403 | Forbidden |
| 404 | Not Found |
| 422 | Validation Error |
| 429 | Rate Limited |
| 500 | Server Error |
All endpoints are rate-limited per API key. When rate-limited, you'll receive a 429 response with a Retry-After header indicating when to retry.
| Endpoint | Limit |
|---|---|
| POST /v1/extract | 10 requests/min |
| GET /v1/jobs | 60 requests/min |
| GET /v1/jobs/{id} | 60 requests/min |
| GET /v1/jobs/{id}/results | 120 requests/min |
Every webhook delivery includes an X-Webhook-Signature header. Verify it by computing the signature of the raw request body using your webhook secret.
import hmac, hashlib
def verify_webhook(body: bytes, signature: str, secret: str) -> bool:
expected = hmac.new(
secret.encode(), body, hashlib.sha256
).hexdigest()
return hmac.compare_digest(expected, signature)Bluebeam Max plugin
Extract I/O lists directly from Bluebeam Max without switching to a browser. The desktop plugin connects to your Tagsight account and runs extractions from local PDFs.
Capabilities:
Excel (.xlsx)
Formatted I/O list with conditional formatting, signal highlighting, control loop grouping, and audit trail.
CSV
Simple comma-separated output with formula injection protection. Compatible with any spreadsheet tool.
PLCCreator
Device IO List CSV format. Supports single rack, single fieldbus, and multiple fieldbus architectures.
JSON
Machine-readable structured data with all instrument fields, confidence scores, and metadata.
TIA Portal XML
Siemens TIA Portal GlobalDB block with tag definitions. Maps AI/AO to %IW/%QW (Real), DI/DO to %I/%Q (Bool).
Rockwell L5X
Studio 5000 / RSLogix 5000 importable tags. Allen-Bradley CompactLogix and ControlLogix compatible.
DEXPI XML
ISO 15926-based DEXPI 1.3 format for process industry data exchange with engineering databases.
Create an account and generate your API key. 5 free pages included to test your integration.