PropGap Pro Workspace — For Licensed Tax Professionals Only

P
PropGapPro
Back to Pro

API Reference

PropGap Pro Open API

Export batch results to your CRM, case management system, or spreadsheet. All endpoints require your firm’s access key as authentication.

Authentication

All API endpoints accept your access key either as a query parameter or an HTTP header. The key format is PG-XXXXXXXX.

# Query parameter (easiest for testing)
GET /api/pro/export/[jobId]?accessKey=PG-YOURKEY

# Header (recommended for production)
GET /api/pro/export/[jobId]
x-access-key: PG-YOURKEY
GET
/api/pro/export/[jobId]

Returns full batch results as structured JSON. Use this to pipe PropGap data into your CRM, billing system, or reporting workflow.

Parameters

ParameterTypeDescription
jobIdpathUUID of the batch job (from batch results URL)
accessKeyquery / headerYour firm access key

Example Request

curl "https://propgap.ai/api/pro/export/YOUR-JOB-UUID?accessKey=PG-YOURKEY"

Response Schema

{
  "meta": {
    "jobId": "uuid",
    "firmName": "Smith & Associates LLC",
    "totalProperties": 20,
    "successCount": 15,
    "exportedAt": "2026-03-25T12:00:00Z",
    "disclaimer": "Tax rates are statewide averages..."
  },
  "results": [
    {
      "address": "123 Main St, Newark, NJ 07102",
      "assessedValue": 450000,
      "status": "success",           // success | no_gap | no_comps | error
      "taxGap": 3200,                // annual tax overpayment ($)
      "medianCompMV": 380000,        // median comparable sale price
      "compCount": 8,
      "outcome": "filed",            // filed | won | settled | denied | withdrew | pending
      "outcomeNotes": "Hearing 4/10",
      "shareUrl": "https://propgap.ai/pro/share/uuid",
      "evidenceKitUrl": "https://propgap.ai/api/pdf/evidence-packet?auditId=uuid&proKey=PG-KEY",
      "errorMessage": null
    }
  ]
}
GET
/api/pro/analytics

Aggregate outcome statistics for your firm — win rate, total gap, monthly trend, by-state breakdown.

curl "https://propgap.ai/api/pro/analytics?accessKey=PG-YOURKEY"

Response

{
  "firm": { "name": "Smith LLC", "status": "active", "memberSince": "2026-01-15" },
  "totals": { "properties": 200, "gapsFound": 145, "totalGap": 580000, "batches": 12 },
  "outcomes": { "won": 40, "settled": 25, "filed": 60, "denied": 8, "withdrew": 5, "pending": 7 },
  "winRate": 72,
  "estimatedRecovered": 225000,
  "byState": { "NJ": { "gapsFound": 90, "totalGap": 360000, "won": 28, "settled": 18 } },
  "monthlyTrend": [{ "month": "2026-01", "batches": 2, "gapsFound": 18, "totalGap": 72000 }]
}
GET
/api/pro/batch/history

Lists all batch jobs for your access key with summary stats.

curl "https://propgap.ai/api/pro/batch/history?accessKey=PG-YOURKEY"

# Response
{
  "jobs": [
    {
      "id": "uuid",
      "created_at": "2026-03-20T10:00:00Z",
      "status": "completed",
      "total_count": 20,
      "completed_count": 20,
      "success_count": 15
    }
  ],
  "totalGapByJob": { "uuid": 48000 }
}
PATCH
/api/pro/batch/outcome

Update the appeal outcome for a result. Call this from your case management system when a hearing concludes.

curl -X PATCH "https://propgap.ai/api/pro/batch/outcome" \
  -H "Content-Type: application/json" \
  -d '{
    "resultId": "uuid",
    "accessKey": "PG-YOURKEY",
    "outcome": "won",
    "notes": "Board reduced AV from $450k to $390k"
  }'

# Valid outcomes: filed | won | settled | denied | withdrew | pending
GET
/api/pro/pipeline

Returns all results across every batch that have a hearing date set — useful for building a calendar view or deadline tracker.

curl "https://propgap.ai/api/pro/pipeline?accessKey=PG-YOURKEY"

# Response
{
  "results": [
    {
      "id": "uuid",
      "job_id": "uuid",
      "address": "123 Main St, Newark, NJ 07102",
      "assessed_value": 450000,
      "tax_gap": 3200,
      "outcome": "filed",
      "filed_date": "2026-02-15",
      "hearing_date": "2026-04-10",
      "decision_date": null,
      "tax_savings_realized": null,
      "batchLabel": "March 2026 Upload"
    }
  ]
}
GET
/api/pro/portfolio

Cross-batch aggregate stats, top 50 properties by gap size, and at-risk cases (hearing within 14 days with no final outcome).

curl "https://propgap.ai/api/pro/portfolio?accessKey=PG-YOURKEY"

# Response
{
  "stats": {
    "total": 200,
    "gapCount": 145,
    "totalGap": 580000,
    "realizedSavings": 225000
  },
  "topProperties": [ /* top 50 by tax_gap, same shape as pipeline results */ ],
  "atRisk": [ /* hearing_date within 14 days, no won/settled/denied outcome */ ]
}
GET
/api/pro/batch/progress

Returns the most recent in-progress or recently completed batch job. Poll at 1–2s intervals while a batch is running to drive a progress bar.

curl "https://propgap.ai/api/pro/batch/progress?accessKey=PG-YOURKEY"

# Response (while processing)
{
  "job": {
    "id": "uuid",
    "status": "processing",   // processing | completed | failed
    "totalCount": 20,
    "completedCount": 12,
    "pct": 60
  }
}

# Response (no active job)
{ "job": null }
PATCH
/api/pro/batch/archive

Archive or unarchive a batch job. Archived jobs are hidden from the default history view but remain accessible.

curl -X PATCH "https://propgap.ai/api/pro/batch/archive" \
  -H "Content-Type: application/json" \
  -d '{
    "jobId": "uuid",
    "accessKey": "PG-YOURKEY",
    "archived": true
  }'

# Response
{ "ok": true }
PATCH
/api/pro/batch/internal-notes

Save internal notes for a result row. Notes are firm-only and never visible to homeowners on the share page.

curl -X PATCH "https://propgap.ai/api/pro/batch/internal-notes" \
  -H "Content-Type: application/json" \
  -d '{
    "resultId": "uuid",
    "accessKey": "PG-YOURKEY",
    "notes": "Owner prefers email. Deadline April 1."
  }'

# Response
{ "ok": true }
POST
/api/pro/share/intent

Called by the homeowner-facing share page when a client submits their contact info. Saves the lead to the result row and fires an email to the firm. Deduplicates — subsequent calls for the same result are no-ops.

curl -X POST "https://propgap.ai/api/pro/share/intent" \
  -H "Content-Type: application/json" \
  -d '{
    "resultId": "uuid",
    "name": "Jane Smith",
    "email": "jane@example.com",
    "phone": "201-555-1234"   // optional
  }'

# Response (first submission)
{ "ok": true }

# Response (duplicate)
{ "ok": true, "alreadySubmitted": true }

Zapier / Make Integration

No native Zapier app yet — use the Webhook trigger pattern with the export endpoint. Here’s a common setup:

  1. In your CRM (Clio, MyCase, etc.), create an automation on new matter creation.
  2. Add a webhook step that calls GET /api/pro/export/[jobId] with your access key.
  3. Map the taxGap, shareUrl, and evidenceKitUrl fields to your matter record.
  4. Set up a second webhook to PATCH the outcome back to PropGap when you mark a matter resolved.

Need a native Zapier app or Make template? info@propgap.ai — we’re building integrations based on demand.

Rate Limits & SLA

EndpointLimitNotes
POST /api/pro/batch10/batch (trial) · 30/batch (active)Intentionally capped — run one batch per county or client group for clean error management
GET /api/pro/exportUnlimitedRead-only, no rate limit
GET /api/pro/analyticsUnlimitedRead-only, no rate limit
PATCH /api/pro/batch/outcomeUnlimitedWrite access requires valid accessKey
GET /api/pro/pipelineUnlimitedRead-only, no rate limit
GET /api/pro/portfolioUnlimitedRead-only, no rate limit
GET /api/pro/batch/progressUnlimitedDesigned for 1–2s polling; no rate limit
PATCH /api/pro/batch/archiveUnlimitedWrite access requires valid accessKey
PATCH /api/pro/batch/internal-notesUnlimitedWrite access requires valid accessKey
POST /api/pro/share/intent1 per resultDeduplicates by resultId — subsequent calls are no-ops

Questions or custom integration needs? info@propgap.ai

P
PropGap Pro

Professional-grade property tax research. NJ Chapter 123 · TX §41.43. For licensed tax professionals only.

Return to Consumer Site

Support

FOR LICENSED TAX PROFESSIONALS ONLY. PropGap provides comparable sales research and statutory formula calculations as litigation support data. PropGap is not a law firm and does not provide legal or tax advice. Licensed professionals bear full responsibility for reviewing, validating, and filing any evidence in actual proceedings.

© 2026 PropGap. All rights reserved.