Draft v0.1. The Partner API is being built. Endpoints and payloads may still change until sandbox access opens.

Products

Your listings on the Sorplos catalogue. New listings and price changes are proposals: nothing goes live until your Company Admin and then Sorplos approve it, and a change applies on its effective date.

EndpointWhat it does
GET/productsList your products
POST/products/proposalsPropose listings or price changes
GET/products/proposals/{id}Check a proposal

List your products

GET/products

Your live listings, with the version currently in force and any changes waiting for approval.

Query parameters

FieldTypeDescription
pageintegerPage number, starting at 1.
per_pageintegerItems per page, 1–200. Defaults to 50.
updated_sincetimestampOnly records changed at or after this ISO-8601 time — use it to sync incrementally.
Request
curl -X GET https://api-dev.sorplos.com/v1/partner-api/products \
  -H "Authorization: Bearer sk_test_..."
Response
{
  "data": [
    {
      "provider_product_id": "PROV-MTR-001",
      "name": "Comprehensive Motor",
      "category": "motor",
      "claim_track": "managed",
      "status": "active",
      "base_premium": 350000,
      "commission_rate_pct": 15,
      "version": 3,
      "pending_changes": 1
    }
  ],
  "meta": {
    "page": 1,
    "per_page": 50,
    "total": 1
  }
}

Propose listings or price changes

POST/products/proposals

Upload the Sorplos product template (XLSX or CSV) as a file, or send the same columns as JSON. The whole upload is validated first and errors come back per row and column; an upload with any error changes nothing. A new provider_product_id proposes a new listing; a known one proposes a change to it. A key cannot approve its own proposal — approval happens in the Insurer Portal.

Body

FieldTypeDescription
filefileThe filled template, as multipart/form-data. Or send products instead.
productsobject[]Rows using the template's column names, as JSON.
Request
curl -X POST https://api-dev.sorplos.com/v1/partner-api/products/proposals \
  -H "Authorization: Bearer sk_test_..." \
  -H "Idempotency-Key: 5f0c2a8e-7d1b-4c3e-9a64-1b2d3e4f5a6b" \
  -F "file=@product-upload-template.xlsx"
Response
{
  "id": "prop_01J8Z9",
  "status": "awaiting_company_admin",
  "rows": 12,
  "new_listings": 2,
  "changes": 10,
  "errors": [],
  "created_at": "2026-09-14T12:00:00Z"
}

Check a proposal

GET/products/proposals/{id}

Where a proposal is in review: awaiting_company_admin → awaiting_sorplos → scheduled (approved, waiting for its effective date) → live. Or rejected, or failed validation, with the reasons.

Request
curl -X GET https://api-dev.sorplos.com/v1/partner-api/products/proposals/prop_01J8Z9 \
  -H "Authorization: Bearer sk_test_..."
Response
{
  "id": "prop_01J8Z9",
  "status": "failed_validation",
  "rows": 12,
  "errors": [
    {
      "row": 14,
      "column": "category",
      "message": "'motors' is not one of motor, health, life, general, travel."
    }
  ]
}