PUBLIC API v1
Retrieve a product
GET /api/v1/companies/{company_pk}/products/{public_id}/
Retrieve a product with its usage across invoices.
Permission: read_invoices · Direct link
Company-scoped. Account permissions, plan limits and document state still apply.
Path and query parameters
| Parameter | Location / type | Description |
|---|---|---|
company_pkRequired | path · string (uuid) | Company's public id (primary key) |
public_idRequired | path · string (uuid) | Product's public id (primary key) |
Responses
200 Response fields
application/json
| Field | Type / accepted values | Description |
|---|---|---|
publicIdRequiredRead only | string (uuid) | Not specified |
companyRequired | string (uuid) | Not specified |
nameRequired | string | Not specified |
description | string | Not specified |
type | "GOODS" | "SERVICES" | * `GOODS` - Goods * `SERVICES` - Services |
unit | "items" | "hours" | "days" | "kilograms" | "liters" | "meters" | "square_meters" | "" | Not specified |
price | integer (int64) | Not specified |
isPriceGross | boolean | Not specified |
priceNetRequiredRead only | integer | Not specified |
priceGrossRequiredRead only | integer | Not specified |
vatRate | integer | Not specified |
sku | string | Not specified |
companyCategory | string (uuid) | null | Not specified |
companyCategoryCodeRequiredRead only | string | null | Not specified |
companyCategoryNameRequiredRead only | string | null | Not specified |
status | "active" | "archived" | * `active` - Active * `archived` - Archived |
createdRequiredRead only | string (date-time) | Not specified |
modified | string (date-time) | null | Not specified |
usageRequiredRead only | object | Not specified |
400 Response fields
application/json
| Field | Type / accepted values | Description |
|---|---|---|
detailRequired | string | Not specified |
code | integer | Not specified |
type_ | string | Not specified |
fieldRequired | string | Not specified |
401 Response fields
application/json
| Field | Type / accepted values | Description |
|---|---|---|
detailRequiredRead only | string | Not specified |
403 Response fields
application/json
| Field | Type / accepted values | Description |
|---|---|---|
detailRequiredRead only | string | Not specified |
429 Rate limit exceeded. Wait for the Retry-After header before retrying.
Use the base URL https://api.norman.finance/api/v1. Sign up or log in to Norman to create an API key, then send it as a Bearer token. For an OpenAPI JSON file, contact support.