Developer Preview · Beta Spec

    Built for enterprise integration.

    Elysium is a compound system — specialized agents, purpose-built parsers, and a canonical CRE data model. This is the published contract for our design-partner program: the schemas, endpoints, and events you would use to wire Elysium into your ledger, warehouse, or asset-management stack.

    Our API and extraction schemas are currently in developer preview for enterprise design partners. Production credentials are issued on request.

    Compound Architecture

    Not a prompt wrapper. A pipeline.

    Every document flows through a chain of specialized components. Each stage has a narrow job and a testable contract with the next one — so the output your engineers see is deterministic in shape and traceable back to the source page.

    1. 01
      Ingestion

      PDF, XLSX, scanned, and email uploads. Cloud storage sync.

    2. 02
      Specialized Parsers

      Layout, tables, and clause segmentation tuned for CRE documents.

    3. 03
      Extraction Agents

      Multi-agent pipeline — one specialist per document type.

    4. 04
      Normalization

      Canonical chart of accounts, currency, dates, and entities.

    5. 05
      Structured Output

      Typed records with clause-level citations, ready to sync.

    Core Data Models

    One schema per artifact. Same shape, every time.

    The records below are the published contract. Whatever the source document looks like — a scanned lease, a Yardi export, an operator's custom Excel — the output your systems consume is identical.

    Lease

    Fully normalized lease with parties, term, rent schedule, escalations, options, and recoveries.

    Every clause we extract maps to a typed field with a source citation. Rent amounts arrive as normalized currency strings so they slot directly into enterprise ledgers without a second pass.

    {
      "id": "lse_01HQ7X2K9V8R3P6M4N2Y5Z8B0C",
      "property_id": "prp_01HQ6M8T4W2N9K5J3H7F1D0A9E",
      "status": "executed",
      "landlord": {
        "legal_name": "ABJNY Holdings III, LLC",
        "entity_type": "delaware_llc"
      },
      "tenant": {
        "legal_name": "Meridian Health Partners, P.C.",
        "guarantor": null,
        "credit_rating": null
      },
      "premises": {
        "suite": "410",
        "rentable_sf": 12450,
        "floor": 4,
        "use": "medical_office"
      },
      "term": {
        "commencement_date": "2024-06-01",
        "expiration_date": "2034-05-31",
        "term_months": 120,
        "rent_commencement_date": "2024-09-01"
      },
      "base_rent_schedule": [
        {
          "period_start": "2024-09-01",
          "period_end": "2025-08-31",
          "annual": "$373,500.00",
          "monthly": "$31,125.00",
          "psf": "$30.00"
        },
        {
          "period_start": "2025-09-01",
          "period_end": "2026-08-31",
          "annual": "$384,705.00",
          "monthly": "$32,058.75",
          "psf": "$30.90"
        }
      ],
      "escalations": {
        "type": "fixed_percent",
        "rate": "3.00%",
        "frequency": "annual"
      },
      "options": [
        {
          "type": "renewal",
          "term_months": 60,
          "notice_days": 270,
          "rent_basis": "fair_market"
        }
      ],
      "recoveries": {
        "structure": "modified_gross",
        "base_year": 2024,
        "stops": {
          "operating_expenses": "$8.75",
          "real_estate_taxes": "$4.20"
        },
        "pro_rata_share": "6.42%"
      },
      "tenant_improvements": {
        "allowance": "$62,250.00",
        "allowance_psf": "$5.00",
        "landlord_work": "turnkey_medical_buildout"
      },
      "security_deposit": {
        "type": "cash",
        "amount": "$62,250.00"
      },
      "citations_available": true,
      "source_document_id": "doc_01HQ7X0J8P2M5R9Y3N6W4T1Z7B"
    }

    API Surface

    A small, versioned surface.

    Bearer-token auth, per-tenant scoping, semantic versioning under /v1. Endpoints below are the published contract for our design-partner program. Production credentials are issued on request.

    POST/v1/documents

    Submit a lease, rent roll, operating statement, or loan doc for extraction.

    Request
    curl -X POST https://api.elysium-cre.com/v1/documents \
      -H "Authorization: Bearer $ELYSIUM_API_KEY" \
      -H "Content-Type: multipart/form-data" \
      -F "file=@meridian-lease.pdf" \
      -F "property_id=prp_01HQ6M8T4W2N9K5J3H7F1D0A9E" \
      -F "doc_type=lease"
    Sample response
    {
      "id": "doc_01HQ7X0J8P2M5R9Y3N6W4T1Z7B",
      "status": "received",
      "doc_type": "lease",
      "property_id": "prp_01HQ6M8T4W2N9K5J3H7F1D0A9E",
      "created_at": "2025-11-04T14:22:08Z",
      "webhook_events": [
        "document.parsed",
        "extraction.completed"
      ]
    }
    • Async — final structured output arrives via webhook.
    • Max upload size 250 MB per file; multi-file batches accepted.
    GET/v1/documents/{id}

    Retrieve extraction status and links to structured output.

    Sample response
    {
      "id": "doc_01HQ7X0J8P2M5R9Y3N6W4T1Z7B",
      "status": "extraction_completed",
      "doc_type": "lease",
      "property_id": "prp_01HQ6M8T4W2N9K5J3H7F1D0A9E",
      "page_count": 84,
      "created_at": "2025-11-04T14:22:08Z",
      "completed_at": "2025-11-04T14:24:41Z",
      "confidence": "0.98",
      "needs_review": false,
      "output": {
        "lease_id": "lse_01HQ7X2K9V8R3P6M4N2Y5Z8B0C",
        "fields_extracted": 142,
        "field_confidence": {
          "base_rent_schedule": "0.99",
          "escalations": "0.97",
          "renewal_options": "0.94",
          ... several more fields
        },
        "links": {
          "json": "https://api.elysium-cre.com/v1/leases/lse_01HQ7X2K9V8R3P6M4N2Y5Z8B0C",
          "source_pdf": "https://api.elysium-cre.com/v1/documents/doc_01HQ7X0J8P2M5R9Y3N6W4T1Z7B/source"
        }
      }
    }

    "..." indicates fields omitted for brevity.

    GET/v1/leases/{id}

    Fetch the normalized Lease record with clause-level citations.

    Sample response
    {
      "id": "lse_01HQ7X2K9V8R3P6M4N2Y5Z8B0C",
      "property_id": "prp_01HQ6M8T4W2N9K5J3H7F1D0A9E",
      "status": "executed",
      "landlord": {
        "legal_name": "ABJNY Holdings III, LLC",
        "entity_type": "delaware_llc"
      },
      "tenant": {
        "legal_name": "Meridian Health Partners, P.C.",
        "guarantor": null
      },
      "premises": {
        "suite": "410",
        "rentable_sf": 12450,
        "floor": 4,
        "use": "medical_office"
      },
      "term": {
        "commencement_date": "2024-06-01",
        "expiration_date": "2034-05-31",
        "term_months": 120,
        "rent_commencement_date": "2024-09-01"
      },
      "base_rent_schedule_count": 10,
      "base_rent_schedule": [
        {
          "period_start": "2024-09-01",
          "period_end": "2025-08-31",
          "annual": "$373,500.00",
          "monthly": "$31,125.00",
          "psf": "$30.00"
        },
        {
          "period_start": "2025-09-01",
          "period_end": "2026-08-31",
          "annual": "$384,705.00",
          "monthly": "$32,058.75",
          "psf": "$30.90"
        },
        "... 8 more rows"
      ],
      "escalations": {
        "type": "fixed_percent",
        "rate": "3.00%",
        "frequency": "annual"
      },
      "options": [
        {
          "type": "renewal",
          "term_months": 60,
          "notice_days": 270,
          "rent_basis": "fair_market"
        }
      ],
      "recoveries": {
        "structure": "modified_gross",
        "base_year": 2024,
        "pro_rata_share": "6.42%",
        ... several more fields
      },
      "citations_available": true,
      "citations": [
        {
          "field": "escalations.rate",
          "page": 14,
          "bbox": [
            72.4,
            318.9,
            288.1,
            332.6
          ],
          "snippet": "…increase by three percent (3%) per annum…"
        },
        "... 141 more citations"
      ],
      "source_document_id": "doc_01HQ7X0J8P2M5R9Y3N6W4T1Z7B"
    }

    "..." indicates fields omitted for brevity.

    • Add ?include=citations for source page + bbox refs on every field.
    GET/v1/rent-rolls/{id}

    Return a normalized rent roll snapshot.

    Sample response
    {
      "id": "rr_01HQ8N4V6P2M9K3J5H7F1D0A9E",
      "property_id": "prp_01HQ6M8T4W2N9K5J3H7F1D0A9E",
      "as_of_date": "2025-09-30",
      "currency": "USD",
      "units_count": 24,
      "units": [
        {
          "unit": "410",
          "tenant": "Meridian Health Partners, P.C.",
          "sf": 12450,
          "lease_start": "2024-06-01",
          "lease_end": "2034-05-31",
          "base_rent_monthly": "$31,125.00",
          "base_rent_psf": "$30.00",
          "escalation": "3.00% annual",
          "status": "occupied"
        },
        {
          "unit": "215",
          "tenant": null,
          "sf": 4820,
          "lease_start": null,
          "lease_end": null,
          "base_rent_monthly": "$0.00",
          "base_rent_psf": null,
          "escalation": null,
          "status": "vacant"
        },
        "... 22 more rows"
      ],
      "totals": {
        "total_sf": 194200,
        "occupied_sf": 140000,
        "occupancy_pct": "72.09%",
        "annualized_base_rent": "$4,231,800.00"
      }
    }

    "..." indicates fields omitted for brevity.

    GET/v1/operating-statements/{id}

    Return a period operating statement mapped to the canonical chart of accounts.

    Sample response
    {
      "id": "os_01HQ9P5V7Q3N8L4M2J6H1F0A9E",
      "property_id": "prp_01HQ6M8T4W2N9K5J3H7F1D0A9E",
      "period": {
        "start": "2024-01-01",
        "end": "2024-12-31",
        "frequency": "annual"
      },
      "currency": "USD",
      "lines": [
        {
          "gl_account": "4000-01",
          "source_label": "Base Rent Income",
          "category": "revenue.base_rent",
          "amount": "$1,842,300.00"
        },
        {
          "gl_account": "4210-00",
          "source_label": "CAM Recoveries",
          "category": "revenue.recoveries.cam",
          "amount": "$212,450.00"
        },
        {
          "gl_account": "5100-04",
          "source_label": "R&M — HVAC",
          "category": "opex.repairs_maintenance",
          "amount": "$48,120.00"
        },
        {
          "gl_account": "5300-00",
          "source_label": "Real Estate Tax",
          "category": "opex.real_estate_taxes",
          "amount": "$276,540.00"
        },
        "... 38 more lines"
      ],
      "totals": {
        "total_revenue": "$2,054,750.00",
        "total_opex": "$724,660.00",
        "noi": "$1,330,090.00"
      }
    }

    "..." indicates fields omitted for brevity.

    POST/v1/webhooks

    Register a webhook endpoint for extraction and export events.

    Request
    curl -X POST https://api.elysium-cre.com/v1/webhooks \
      -H "Authorization: Bearer $ELYSIUM_API_KEY" \
      -H "Content-Type: application/json" \
      -d '{"url":"https://ops.acme.com/hooks/elysium","events":["extraction.completed","extraction.needs_review"]}'
    Sample response
    {
      "id": "wh_01HQAB2C4D6E8F0G2H4J6K8L0M",
      "url": "https://ops.acme.com/hooks/elysium",
      "events": [
        "extraction.completed",
        "extraction.needs_review"
      ],
      "signing_secret": "whsec_...redacted"
    }

    "..." indicates fields omitted for brevity.

    Webhooks & Events

    Push, not poll.

    Every meaningful transition emits a signed event. Wire the ones you care about; ignore the rest.

    EventFires when
    document.receivedImmediately after a document is queued for parsing.
    document.parsedText, tables, and layout have been extracted from the source file.
    extraction.completedAll specialized agents have finished; structured record is available.
    extraction.needs_reviewConfidence dropped below threshold on one or more fields.
    export.deliveredA push to a connected destination (warehouse, PMS, storage) succeeded.
    Sample payload
    {
      "id": "evt_01HQBC3D5E7F9G1H3J5K7L9M1N",
      "type": "extraction.completed",
      "created_at": "2025-11-04T14:24:41Z",
      "data": {
        "document_id": "doc_01HQ7X0J8P2M5R9Y3N6W4T1Z7B",
        "doc_type": "lease",
        "output": {
          "lease_id": "lse_01HQ7X2K9V8R3P6M4N2Y5Z8B0C",
          "confidence": "0.98",
          "needs_review": false
        }
      }
    }

    Integration Patterns

    Three ways teams put Elysium to work.

    Push to your data warehouse

    Stream normalized leases, rent rolls, and operating statements into Snowflake, BigQuery, or Databricks. One schema, one join key per property.

    Interoperate with your systems of record

    Elysium's canonical fields export cleanly for downstream mapping into Yardi, MRI, RealPage, or your internal PMS, with owner-specific GL codes translated on the way out — and native connectors for leading property management and accounting platforms expanding across our integration ecosystem.

    Embed in your existing workflow

    Trigger extractions from your DMS, receive a webhook when the record is ready, and land structured output where your analysts already work.

    SOC 2 posture

    Controls aligned to SOC 2 Type II; audit in progress with an independent firm.

    Encrypted end-to-end

    TLS 1.2+ in transit, AES-256 at rest. Per-tenant key isolation.

    Audit-ready logs

    Every extraction and export is logged with actor, timestamp, and source citation.

    Design partner program

    We're onboarding a small number of enterprise design partners onto our staging environment. If you're evaluating Elysium for integration into your platform or workflow, our engineering team will scope a pilot with you directly.