Items
Items are the products or services you bill as line items on an estimate or invoice.
An item is a billable product or service. You reference an item from a line item on an estimate or invoice, where it rolls up into that document's totals. A job has no line items over the API — see Jobs.
The path is /api/product-service (legacy naming) even though we refer
to the resource as "Items" everywhere else.
Create once, reuse forever
Items are long-lived. Create each distinct product or service once,
store the returned id, and pass it as itemId on an invoice line item.
There's no server-side dedup on item names. If you naïvely
POST /api/product-service for the same named item twice, you'll have
two items. Look up by name (and optionally price) client-side first.
Fields
type—Service(time-based work) orProduct(physical goods).isActive— settrue. Inactive items aren't selectable in the UI.price— the default unit price. Override it per line withrateon the invoice line item.
Endpoints
Send your key on the Authorization header here
This is a legacy route rather than a /api/v1/... one, and it authenticates
slightly differently. Your fc_live_ key does work — it authenticates as the
user who created it — but only when sent on the Authorization header:
curl https://api.fieldcamp.ai/api/product-service \
-H "Authorization: Bearer fc_live_..."X-Api-Key is not read on these routes, and per-key scopes are not enforced
here — the key acts with its creator's own access. On the /api/v1/... routes
both header forms work and scopes are checked, so prefer a v1 endpoint whenever
one exists for what you need.
/api/product-serviceAuthorization
BearerAuth Your FieldCamp API key (starts with fc_live_). Send it as Authorization: Bearer fc_live_… — or as the X-Api-Key: fc_live_… header. Create a key in Settings → API. This is an API key, not a login JWT.
In: header
Query Parameters
Response Body
application/json
application/json
application/json
application/json
application/json
curl -X GET "https://example.com/api/product-service"{ "success": true, "message": "", "data": null}/api/product-serviceAuthorization
BearerAuth Your FieldCamp API key (starts with fc_live_). Send it as Authorization: Bearer fc_live_… — or as the X-Api-Key: fc_live_… header. Create a key in Settings → API. This is an API key, not a login JWT.
In: header
Request Body
application/json
TypeScript Definitions
Use the request body type in TypeScript.
Response Body
application/json
application/json
application/json
application/json
application/json
curl -X POST "https://example.com/api/product-service" \ -H "Content-Type: application/json" \ -d '{ "name": "string", "type": "string", "price": 0 }'{ "success": true, "message": "", "data": null}