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.
| Endpoint | What it does |
|---|---|
| GET/products | List your products |
| POST/products/proposals | Propose 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
| Field | Type | Description |
|---|---|---|
| page | integer | Page number, starting at 1. |
| per_page | integer | Items per page, 1–200. Defaults to 50. |
| updated_since | timestamp | Only records changed at or after this ISO-8601 time — use it to sync incrementally. |
curl -X GET https://api-dev.sorplos.com/v1/partner-api/products \
-H "Authorization: Bearer sk_test_..."{
"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
| Field | Type | Description |
|---|---|---|
| file | file | The filled template, as multipart/form-data. Or send products instead. |
| products | object[] | Rows using the template's column names, as JSON. |
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"{
"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.
curl -X GET https://api-dev.sorplos.com/v1/partner-api/products/proposals/prop_01J8Z9 \
-H "Authorization: Bearer sk_test_..."{
"id": "prop_01J8Z9",
"status": "failed_validation",
"rows": 12,
"errors": [
{
"row": 14,
"column": "category",
"message": "'motors' is not one of motor, health, life, general, travel."
}
]
}