Product How It Works PDK Support Docs Pricing Blog
Sign In Request Access

API Reference

The Photoniq REST API allows you to submit verification jobs, poll status, retrieve reports, and manage PDKs programmatically. All endpoints require an API key.

Authentication

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

HTTP header
Authorization: Bearer YOUR_API_KEY

Base URL: https://api.photoniqo.com/v1

Endpoints

POST /verify

Submit a new verification job. Upload GDS, netlist, and specify a PDK. Returns a job ID for status polling.

Request (multipart/form-data)

ParameterTypeRequiredDescription
gds_filefilerequiredGDS-II or OASIS layout file
netlistfilerequiredSPICE netlist (.sp/.spi) or INTERCONNECT .icp
pdkstringrequiredPDK identifier (e.g. AIM_300mm_v3.1)
pdk_configfileoptionalCustom PDK JSON config (overrides pdk)
labelstringoptionalHuman-readable label for this job
curl example
curl -X POST https://api.photoniqo.com/v1/verify \
  -H "Authorization: Bearer $API_KEY" \
  -F "gds_file=@./layout/pic_top.gds" \
  -F "netlist=@./sim/pic_top.spi" \
  -F "pdk=AIM_300mm_v3.1" \
  -F "label=pic_top_v3_review"
Response — 202 Accepted
{
  "job_id": "PNQ-2A8F-20260315",
  "status": "queued",
  "pdk": "AIM_300mm_v3.1",
  "created_at": "2026-03-15T14:22:07Z",
  "estimated_minutes": 10
}
GET /jobs/{job_id}

Get current status and summary of a verification job. Poll this endpoint until status is complete or failed.

curl example
curl https://api.photoniqo.com/v1/jobs/PNQ-2A8F-20260315 \
  -H "Authorization: Bearer $API_KEY"
Response — 200 OK (complete)
{
  "job_id": "PNQ-2A8F-20260315",
  "status": "complete",
  "result": "FAIL",
  "summary": { "errors": 1, "warnings": 2, "passed": 4 },
  "duration_seconds": 656
}
GET /report/{job_id}/json

Download the full JSON verification report. Returns the structured error/warning list with all location and fix metadata.

curl example
curl https://api.photoniqo.com/v1/report/PNQ-2A8F-20260315/json \
  -H "Authorization: Bearer $API_KEY" \
  -o report.json
GET /report/{job_id}/html

Download the HTML verification report for human review. Self-contained HTML with inline styles — no external dependencies.

GET /pdks

List all available PDKs for your account tier, including custom PDKs you've uploaded.

Response — 200 OK
{
  "pdks": [
    { "id": "AIM_300mm_v3.1", "version": "3.1", "type": "standard" },
    { "id": "IMEC_iSiPP50G",   "version": "2.3", "type": "standard" },
    { "id": "ANT_NanoSOI",     "version": "2.0", "type": "standard" }
  ]
}
POST /pdks/custom

Upload a custom PDK configuration JSON. Available on Professional and Enterprise plans. The PDK config is validated and stored privately on your account.

curl example
curl -X POST https://api.photoniqo.com/v1/pdks/custom \
  -H "Authorization: Bearer $API_KEY" \
  -H "Content-Type: application/json" \
  -d @./my_foundry_pdk.json

Error codes

Standard HTTP status codes. Common error responses:

  • 401 Unauthorized — Missing or invalid API key
  • 402 Payment Required — Run limit exceeded for Starter plan
  • 404 Not Found — Job ID or PDK ID not found
  • 422 Unprocessable Entity — GDS or netlist file failed parsing
  • 429 Too Many Requests — Rate limit exceeded