API Reference

The Fpgawright REST API v1.0 is available at https://api.fpgawright.com/v1. All requests must be authenticated with a Bearer token.

Authentication

Include your API key as a Bearer token in the Authorization header:

Authorization: Bearer fpgw_your_api_key_here

API keys are scoped to your organization. Generate and revoke keys from the dashboard. Keys have no expiry by default; rotate them on a schedule appropriate to your security policy.

Submit Analysis Job

POST /v1/jobs

Submit RTL source files for analysis. Returns a job ID you can poll for results.

Request body (JSON):

{
  "name": "my-design-v1.4",
  "language": "systemverilog",
  "source_archive_url": "https://storage.example.com/rtl-v1.4.tar.gz",
  "diff_base_job_id": "job_abc123",
  "config": {
    "fail_on": "error",
    "learning_enabled": true
  }
}

Response:

{
  "job_id": "job_xyz789",
  "status": "queued",
  "created_at": "2026-06-10T14:22:00Z"
}

Get Results

GET /v1/jobs/{job_id}

Poll for job status and retrieve results when complete.

Response when complete:

{
  "job_id": "job_xyz789",
  "status": "complete",
  "summary": {
    "errors": 3,
    "warnings": 7,
    "passed": false
  },
  "violations": [
    {
      "rule_id": "GLT-003",
      "severity": "error",
      "file": "rtl/clock_sync.sv",
      "line": 142,
      "module": "clock_sync_module",
      "message": "Multi-bit signal crosses clock domains without synchronizer",
      "learned_weight": 2.4
    }
  ]
}

Configure Rule Sets

POST /v1/rule-sets

Create a named rule set configuration that can be referenced by multiple jobs.

GET /v1/rule-sets

List all rule sets in your organization.

Webhooks

POST /v1/webhooks

Register a webhook URL to receive job completion notifications. Fpgawright signs the payload with a HMAC-SHA256 header X-Fpgawright-Signature.

Webhook payload on job completion:

{
  "event": "job.complete",
  "job_id": "job_xyz789",
  "passed": false,
  "errors": 3,
  "warnings": 7,
  "timestamp": "2026-06-10T14:26:43Z"
}

Rate limits

  • Starter plan: 500 analyses per month, 2 concurrent jobs
  • Team plan: unlimited analyses, 10 concurrent jobs
  • Enterprise: custom limits

Rate limit headers are included in all API responses: X-RateLimit-Remaining and X-RateLimit-Reset.