Nacelle

Nacelle is a headless / composable commerce data platform that ingests, normalizes, and indexes commerce and content data (Shopify, Contentful and other CMS sources) and serves it back to headless storefronts through a single, fast GraphQL Storefront API. The company has since pivoted toward an AI personalization engine, and the headless commerce Storefront API is now a legacy / maintenance-mode product rather than an actively expanding platform.

5 APIs 0 Features
CommerceHeadless CommerceComposable CommerceGraphQLContentData Indexing

APIs

Nacelle Storefront Products API

The `allProducts` query on Nacelle's Storefront GraphQL API returns normalized product entries (variants, pricing, media, metafields) drawn from ingested Shopify or other commer...

Nacelle Storefront Product Collections API

The `allProductCollections` query returns merchandised collections of products (the normalized equivalent of Shopify collections) with their member product references, for build...

Nacelle Storefront Content API

The `allContent` query returns CMS content entries (pages, articles, marketing blocks, media) ingested from sources such as Contentful, with a configurable entryDepth for resolv...

Nacelle Storefront Navigation and Spaces API

The `navigation` and `spaceProperties` queries return a space's navigation groups (menus) and space-level configuration (locales, currency, metadata) used to render a headless s...

Nacelle Admin Indexing and Ingestion API

The Admin GraphQL API triggers and monitors the indexing / ingestion pipeline that pulls data from connected sources (Shopify, CMS) into a space - starting or resetting index jo...

Collections

GraphQL

Nacelle GraphQL APIs

Nacelle is a headless / composable commerce data platform. It ingests and normalizes

GRAPHQL

Pricing Plans

Nacelle Plans Pricing

1 plans

PLANS

Rate Limits

Nacelle Rate Limits

3 limits

RATE LIMITS

FinOps

Resources

🔗
TrustCenter
TrustCenter
🔗
VulnerabilityDisclosure
VulnerabilityDisclosure
🔗
DomainSecurity
DomainSecurity
👥
GitHubOrganization
GitHubOrganization
🔗
LinkedIn
LinkedIn
🔗
Website
Website
🔗
Documentation
Documentation
🔗
Plans
Plans
🔗
RateLimits
RateLimits
🔗
FinOps
FinOps
📰
Blog
Blog

Sources

apis.yml Raw ↑
opencollection: 1.0.0
info:
  name: Nacelle GraphQL API
  version: '1.0'
  description: GraphQL POST examples for Nacelle's Storefront API and Admin (indexing / ingestion) API. Nacelle is GraphQL-first;
    no public REST surface exists. Replace SPACE_ID and tokens with your own.
items:
- info:
    name: Storefront
    type: folder
  items:
  - info:
      name: allProducts
      type: http
    http:
      method: POST
      url: https://storefront.api.nacelle.com/graphql/v1/spaces/<SPACE_ID>
      headers:
      - name: Content-Type
        value: application/json
      - name: x-nacelle-space-id
        value: <SPACE_ID>
      - name: x-nacelle-space-token
        value: <PUBLIC_STOREFRONT_TOKEN>
      body:
        type: json
        data: '{"query":"query { allProducts(filter: { first: 5 }) { edges { node { nacelleEntryId handle content { title
          } variants { sku availableForSale price } } } totalCount } }"}'
    docs: Fetch a page of normalized products.
  - info:
      name: allProductCollections
      type: http
    http:
      method: POST
      url: https://storefront.api.nacelle.com/graphql/v1/spaces/<SPACE_ID>
      headers:
      - name: Content-Type
        value: application/json
      - name: x-nacelle-space-id
        value: <SPACE_ID>
      - name: x-nacelle-space-token
        value: <PUBLIC_STOREFRONT_TOKEN>
      body:
        type: json
        data: '{"query":"query { allProductCollections(filter: { first: 10, handles: [\"new-arrivals\"] }) { edges { node
          { nacelleEntryId handle content { title } productHandles } } totalCount } }"}'
    docs: Fetch merchandised product collections.
  - info:
      name: allContent
      type: http
    http:
      method: POST
      url: https://storefront.api.nacelle.com/graphql/v1/spaces/<SPACE_ID>
      headers:
      - name: Content-Type
        value: application/json
      - name: x-nacelle-space-id
        value: <SPACE_ID>
      - name: x-nacelle-space-token
        value: <PUBLIC_STOREFRONT_TOKEN>
      body:
        type: json
        data: '{"query":"query { allContent(filter: { first: 10, type: \"page\", entryDepth: 4 }) { edges { node { nacelleEntryId
          handle type title } } totalCount } }"}'
    docs: Fetch ingested CMS content entries.
  - info:
      name: navigation
      type: http
    http:
      method: POST
      url: https://storefront.api.nacelle.com/graphql/v1/spaces/<SPACE_ID>
      headers:
      - name: Content-Type
        value: application/json
      - name: x-nacelle-space-id
        value: <SPACE_ID>
      - name: x-nacelle-space-token
        value: <PUBLIC_STOREFRONT_TOKEN>
      body:
        type: json
        data: '{"query":"query { navigation { groupId title items { title url items { title url } } } }"}'
    docs: Fetch navigation groups (menus) for the space.
  - info:
      name: spaceProperties
      type: http
    http:
      method: POST
      url: https://storefront.api.nacelle.com/graphql/v1/spaces/<SPACE_ID>
      headers:
      - name: Content-Type
        value: application/json
      - name: x-nacelle-space-id
        value: <SPACE_ID>
      - name: x-nacelle-space-token
        value: <PUBLIC_STOREFRONT_TOKEN>
      body:
        type: json
        data: '{"query":"query { spaceProperties { id name domain locales defaultLocale currencyCode } }"}'
    docs: Fetch space-level configuration.
- info:
    name: Admin (Indexing / Ingestion)
    type: folder
  items:
  - info:
      name: startIndex
      type: http
    http:
      method: POST
      url: https://admin.api.nacelle.com/graphql
      headers:
      - name: Content-Type
        value: application/json
      - name: x-nacelle-space-id
        value: <SPACE_ID>
      - name: x-nacelle-admin-token
        value: <ADMIN_TOKEN>
      body:
        type: json
        data: '{"query":"mutation { startIndex(input: { dataSourceId: \"shopify:my-store\" }) { jobId status startedAt } }"}'
    docs: Start (or re-run) an index job. Beta / limited availability.
  - info:
      name: indexStatus
      type: http
    http:
      method: POST
      url: https://admin.api.nacelle.com/graphql
      headers:
      - name: Content-Type
        value: application/json
      - name: x-nacelle-space-id
        value: <SPACE_ID>
      - name: x-nacelle-admin-token
        value: <ADMIN_TOKEN>
      body:
        type: json
        data: '{"query":"query { indexStatus(dataSourceId: \"shopify:my-store\") { dataSourceId entryType status indexedCount
          pendingCount lastIndexedAt } }"}'
    docs: Query current indexing status.
bundled: true