Items | FieldCamp API
Items are the products or services billed as line items on jobs.
An item is a billable product or service. Items appear as line items
on jobs, where they roll up into subTotal, tax, and total.
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 reference it from every job's jobItems.
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 per-line viaJobItem.priceif needed.
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/teams \
-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}