Skip to main content
Every company in Particle API has a structured product hierarchy. Products are organized into a three-level tree: segments contain product lines, which contain individual products. Each product tracks its lifecycle status — from rumored through active to discontinued.

Product hierarchy

LevelDescriptionExample
segmentTop-level business segment”Services”
product_lineProduct line within a segment”Cloud Services”
productIndividual product or service”iCloud”

Lifecycle statuses

StatusDescription
activeCurrently available
announcedAnnounced but not yet released
discontinuedNo longer available
rumoredReported but not confirmed

List company products

Returns the full product tree for a company:
curl "https://api.particle.pro/v1/companies/5rKmNxW8pYvQ/products" \
  -H "X-API-Key: YOUR_API_KEY"

Response schema

The response is a nested tree. Each node can contain children of the next level down. The response is a top-level CompanyProduct[] array — there is no pagination wrapper.
Example response
[
  {
    "id": "8wLpNa2mK7Rp",
    "name": "Products",
    "level": "segment",
    "status": "active",
    "company_id": "5rKmNxW8pYvQ",
    "children": [
      {
        "id": "4xYbR3mWn8dQ",
        "name": "iPhone",
        "level": "product_line",
        "status": "active",
        "company_id": "5rKmNxW8pYvQ",
        "children": [
          {
            "id": "9fLwNa2mK7Rp",
            "name": "iPhone 16 Pro",
            "product_url": "https://www.apple.com/iphone-16-pro/",
            "level": "product",
            "status": "active",
            "updated_at": "2026-02-15T10:00:00Z",
            "company_id": "5rKmNxW8pYvQ"
          },
          {
            "id": "Kp3mRvWn8dYx",
            "name": "iPhone SE",
            "level": "product",
            "status": "active",
            "updated_at": "2026-01-20T08:30:00Z",
            "company_id": "5rKmNxW8pYvQ"
          }
        ]
      },
      {
        "id": "2LbQhR8jUVn5",
        "name": "Mac",
        "level": "product_line",
        "status": "active",
        "company_id": "5rKmNxW8pYvQ",
        "children": [
          {
            "id": "cQwDzXe3hR8j",
            "name": "MacBook Pro",
            "level": "product",
            "status": "active",
            "company_id": "5rKmNxW8pYvQ"
          }
        ]
      }
    ]
  },
  {
    "id": "5UVn3hR8jcQw",
    "name": "Services",
    "level": "segment",
    "status": "active",
    "company_id": "5rKmNxW8pYvQ",
    "children": [
      {
        "id": "DzXeKp3mRvWn",
        "name": "Cloud Services",
        "level": "product_line",
        "status": "active",
        "company_id": "5rKmNxW8pYvQ",
        "children": [
          {
            "id": "8dYx2LbQhR8j",
            "name": "iCloud",
            "level": "product",
            "status": "active",
            "company_id": "5rKmNxW8pYvQ"
          }
        ]
      }
    ]
  }
]

Filtering by status

By default, only active products are returned. Pass the status parameter to include other lifecycle stages:
# Include announced products alongside active ones
curl ".../v1/companies/5rKmNxW8pYvQ/products?status=active&status=announced" \
  -H "X-API-Key: YOUR_API_KEY"
# Only discontinued products
curl ".../v1/companies/5rKmNxW8pYvQ/products?status=discontinued" \
  -H "X-API-Key: YOUR_API_KEY"
Products whose parent has been filtered out are also excluded to maintain tree integrity. For example, if a segment is discontinued but you only request active products, that segment’s children won’t appear even if some are individually active.