Create a compliance portal

posthttps://api.expiryedge.com/v1/createPortal
admin60/minAny method
Request
curl -X POST 'https://api.expiryedge.com/v1/createPortal' \
  -H "Authorization: Bearer $EXPIRYEDGE_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "name": "Northwind Dental - Vendor Compliance",
  "description": "Current licenses and insurance certificates for Northwind Dental.",
  "client_name": "Northwind Dental",
  "client_email": "priya@northwinddental.example",
  "expiry_ids": [
    "exp_4Tq9sLm2",
    "exp_8Jd3kQw1"
  ],
  "password": "harbor-2026",
  "link_expires_at": "2026-12-31T23:59:59.000Z"
}'
Response
{
  "success": true,
  "portal": {
    "id": "prt_5Vb1nK",
    "name": "Northwind Dental - Vendor Compliance",
    "description": "Current licenses and insurance certificates for Northwind Dental.",
    "client_name": "Northwind Dental",
    "client_email": "priya@northwinddental.example",
    "expiry_ids": [
      "exp_4Tq9sLm2",
      "exp_8Jd3kQw1"
    ],
    "link_expires_at": "2026-12-31T23:59:59.000Z",
    "organization_id": "org_northwind",
    "created_by": "u_71bXq",
    "access_token": "0f5c2a8e-6d4b-4e3a-9c1f-7b2d8e9a3c41",
    "has_password": true,
    "is_active": true,
    "view_count": 0,
    "last_viewed_at": null,
    "created_at": "2026-09-27T14:05:00.000Z",
    "updated_at": "2026-09-27T14:05:00.000Z"
  },
  "portalUrl": "https://app.expiryedge.com/portal/0f5c2a8e-6d4b-4e3a-9c1f-7b2d8e9a3c41"
}

Creates an active portal and returns its public URL. expiry_ids must all be in your organization (max 1000).

Body parameters

application/json
  • namestringrequired
    Required on create.
  • descriptionstring
  • client_namestring
  • client_emailstring
  • expiry_idsarray of string
    Expiry ids shown on the portal. Every id must belong to your organization (400 otherwise); duplicates are removed.
    max items: 1000
  • passwordstring
    Optional viewer password. On update, an empty string removes the password. Never returned.
  • link_expires_atstring | null
    After this time viewPortal returns 410.
    format: date-time

Returns

201
Created.
  • successboolean
  • portalobject
    A shareable, read-only compliance portal. The password hash is never returned.
  • portalUrlstring
    format: uri

Errors

400
The request is missing required fields or contains invalid values.
401
Missing, expired or invalid bearer token.
403
Authenticated, but your role or organization does not allow this action.
429
Too many requests for this endpoint from your IP. Wait Retry-After seconds.
500
Unexpected server error. Retry later; quote requestId to support.