Services

List services

Returns the sellable services of the catalogue, cursor-paginated: personnel, transport and work days that do not come from inventory, with their requirements and tags.

GET
/api/v1/services

Request examples

curl https://app.filmo.io/api/v1/services \
  --header "Authorization: Bearer $FILMO_API_KEY"
{
  "data": [
    {
      "id": "service_9f3a2b",
      "name": "Example service",
      "serviceType": "Example service type",
      "description": "Example text.",
      "defaultQty": 1,
      "showInPlanner": true,
      "includeInPrice": true,
      "collectionName": "Example collection name",
      "tags": [
        {
          "id": "tag_9f3a2b",
          "name": "Example tag"
        }
      ],
      "requirements": [
        {
          "requiredResourceType": "personnel",
          "qty": 1,
          "requiredTags": [
            "Example required tags"
          ]
        }
      ],
      "createdAt": "2026-09-01T08:00:00.000Z",
      "updatedAt": "2026-09-01T08:00:00.000Z"
    }
  ],
  "pagination": {
    "nextCursor": "eyJvIjoyMH0",
    "hasMore": true,
    "total": 1
  }
}

Generated from the schema

Filter by type, collection and a single tag. Sorted by name; sort accepts a single field. Costs and the internal name are not published; creation and update date filters are not available on this listing.

Authorizations

Bearer API key with the scope below. services:read

Query parameters

limitintegerdefault:50

Page size (1-500). Defaults to 50.

Limits: min 1, max 500

cursorstring

Opaque cursor of the page to return. Pass the value of pagination.nextCursor from the previous response; treat it as opaque.

Limits: max length 200

sortstring

Sort order: a single field, with a leading "-" for descending (e.g. "-updatedAt"). Sortable fields: name, serviceType, defaultQty, createdAt, updatedAt. Defaults to "name". Ties are broken by id, so the order is stable across pages, and a cursor is bound to the sort it was issued with.

Limits: max length 200

serviceTypestring

Filter by type: crew (personnel), fleet (vehicles) or general.

Available options: crew, fleet, general

collectionIdstring

Filter by identifier of the collection the service belongs to.

Limits: min length 1, max length 100

collectionIdsstring[]

Filter by collectionId, as a list: repeat the parameter or separate the values with commas. Accepts up to 50 values and returns whatever matches any of them.

Limits: min 1 items, max 50 items, each min length 1, each max length 100

tagIdstring

Filter by tag identifier: services that carry that tag.

Limits: min length 1, max length 100

includeTotalbooleandefault:false

Set it to true to include pagination.total, the number of results that match the filters across all pages. Off by default.

Response

application/json

Successful response.

Response schema: ServiceDto

Envelope: ServiceList. meta.warnings is present only when the operation is deprecated.

Headers: X-Request-Id · RateLimit-Limit · RateLimit-Remaining · RateLimit-Reset

dataobject[]

Show child attributes
data.idstring

Unique service identifier.

data.namestring

Service name as the customer sees it.

data.serviceTypestring

Type: crew (personnel), fleet (vehicles) or general.

data.descriptionstring | null

Description; null if it has none.

data.defaultQtyinteger

Quantity added to an order by default.

data.showInPlannerboolean

Whether it appears as a plannable service.

data.includeInPriceboolean

Whether its amount counts towards the document total.

data.collectionNamestring | null

Path of the collection it belongs to; null if it is in none.

data.tagsobject[]

Service tags, with their identifier and name.

Show child attributes
data.tags.idstring

Unique identifier of the tag.

data.tags.namestring

Tag name.

data.requirementsobject[]

Resources needed to provide it.

Show child attributes
data.requirements.requiredResourceTypestring

What is needed to provide it: personnel or vehicle.

Available options: personnel, vehicle

data.requirements.qtyinteger

How many are needed.

Limits: min 1

data.requirements.requiredTagsstring[]

Tags the assigned resource must have. E.g.: "Carné C".

Limits: max 20 items, each max length 100

data.createdAtstring<date-time> | null

Creation date in ISO 8601 UTC; null if not recorded.

data.updatedAtstring<date-time> | null

Last modification date in ISO 8601 UTC; null if not recorded.

paginationobject

Opaque-cursor pagination metadata.

Show child attributes
pagination.nextCursorstring | null

Opaque cursor of the next page; null when there are no more results. Pass it as cursor in the next request.

pagination.hasMoreboolean

Whether more results exist beyond this page.

pagination.totalinteger

Number of results matching the filters across all pages. Present only when the request sets includeTotal=true.

Limits: min 0

metaobject

Additional information about the response.

Show child attributes
meta.warningsobject[]

Lifecycle warnings; present only when the operation is deprecated.

Show child attributes
meta.warnings.codestring

Stable warning code.

Available options: deprecated

meta.warnings.messagestring

For people: what is deprecated, until when, and what to use.

meta.warnings.sunsetstring

Day (YYYY-MM-DD) the operation stops being served.

meta.warnings.replacementstring | null

operationId of the operation to use instead, or null if there is none.

Errors

StatusCodesMeaning
400validation_errorMalformed query or body. errors[] lists every offending field with its stable code.

401, 403, 429, 500 can be returned by any operation. Errors

Deprecation

This operation is not deprecated. Deprecations are announced with a Deprecation header and a sunset date. Versioning policy

  • Operations

    Service

    Sellable line that does not come from inventory: personnel, transport, work days.