Cowdidocs

List products

GET
/v1/products

Returns the products that the caller offers, each with its published version, ordered by key. Cowdi edits the products. The caller only reads them. Requires the org:products:read permission.

AuthorizationBearer <token>

Create a client with POST /v1/oauth/clients, then exchange its credentials for an access token. AUTHORIZATION_CODE clients act on behalf of a signed-in user and always use PKCE; CLIENT_CREDENTIALS clients act as themselves. A client may only be granted scopes its creator already holds — read the grantable list from GET /v1/oauth/clients/scopes.

In: header

Query Parameters

size?integer

Maximum number of products to return.

Range0 < value
Default20
after?string

Opaque cursor for the page after this one. Omit for the first page.

before?string

Opaque cursor for the page before this one. Omit for the first page.

Response Body

application/json

application/json

application/json

application/json

application/json

application/json

curl -X GET "https://example.com/v1/products?size=20"
{  "data": [    {      "id": "550e8400-e29b-41d4-a716-446655440000",      "organization_id": "cowdi",      "key": "ACME_FLAT_RATE",      "category": "TERM_LOAN",      "published_version": {        "id": "7c9e6679-7425-40de-944b-e07fc1f90ae7",        "product_id": "550e8400-e29b-41d4-a716-446655440000",        "version": 1,        "status": "DRAFT",        "name": "Weekly loan",        "description_template": "You pay a fixed {interest_rate} fee for {interest_period_value, plural, one{# week} other{# weeks}}.",        "ussd_description_template": "string",        "terms": {          "product": "TERM_LOAN",          "penalty_fee_configuration": {            "enabled": false          },          "block_policy": {},          "billing_strategy": "ARREARS",          "allocation_order": [            "PENALTY",            "ARREARS",            "INTEREST",            "PRINCIPAL"          ],          "grace_period": {            "value": 3,            "unit": "DAYS"          },          "payment_grace_period": {            "value": 0,            "unit": "DAYS"          },          "tenure": {            "duration": 4,            "unit": "WEEKS"          },          "interest_rate": {            "basis_points": 300,            "period": {              "value": 1,              "unit": "WEEKS"            },            "day_count_convention": "ACTUAL_365"          },          "interest_calculation_method": "FLAT_RATE",          "fixed_interest": null,          "accrual_period": null,          "billing_period": {            "value": 1,            "unit": "WEEKS"          },          "recalculation_mode": "FIXED_TENURE",          "fixed_emi_amount": null,          "interest_accrual_base": "PRINCIPAL",          "interest_billing_mode": "UPFRONT",          "can_spend_continuously": false,          "can_reborrow": false,          "can_spend_in_arrears": true,          "has_deferred_start": false        },        "published_at": "2026-10-08T10:15:30Z",        "created_at": "2026-09-01T10:15:30Z",        "resource_id": "string"      },      "created_at": "2026-09-01T10:15:30Z",      "resource_id": "string"    }  ],  "links": {    "next": "/v1/payees?after=eyJpZCI6MX0",    "prev": "/v1/payees?before=eyJpZCI6MX0"  }}
{  "code": "BAD_REQUEST",  "description": "Bad Request"}
{  "code": "UNAUTHORISED",  "description": "Unauthorised"}
{  "code": "FORBIDDEN",  "description": "Forbidden"}
{  "code": "RATE_LIMIT_EXCEEDED",  "description": "Too Many Requests"}
{  "code": "INTERNAL_ERROR",  "description": "Internal Server Error"}