Sendcloud Analytics API v2

Legacy v2 Analytics surface exposing aggregated shipping metrics.

Sendcloud Analytics API v2 is one of 20 APIs that Sendcloud publishes on the APIs.io network, described by a machine-readable OpenAPI specification.

Tagged areas include Analytics and Legacy. The published artifact set on APIs.io includes API documentation and an OpenAPI specification.

OpenAPI Specification

sendcloud-v2-analytics-openapi.yml Raw ↑
openapi: 3.1.0
info:
  title: Analytics
  version: 2.0.0
  description: >-
    The Analytics API lets you query for insights about parcels, products and
    transit times.
  license:
    name: Apache 2.0
    url: https://www.apache.org/licenses/LICENSE-2.0.html
  contact:
    name: Sendcloud API Support
    url: https://www.sendcloud.dev
    email: [email protected]
servers:
  - url: https://panel.sendcloud.sc/api/v2
    description: Sendcloud Production
tags:
  - name: Parcels
    description: Get insights about parcels
  - name: Products
    description: Get insights about products
  - name: Transit times
    description: Get insights about average transit times per carriers and shipping methods
  - name: User Carriers and Shipping Methods
    description: Get list of carriers and shipping methods a user ever used
paths:
  /insights/parcels/series:
    get:
      summary: Retrieve parcel-insights series
      tags:
        - Parcels
      x-mint:
        href: /api/v2/analytics/retrieve-parcel-insights-series
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Series'
              examples:
                Series:
                  summary: Series
                  value:
                    series:
                      - value: 358
                        start_date: '2017-12-10'
                        end_date: '2020-12-10'
                        missing_data:
                          - start_date: '2018-12-10'
                            end_date: '2019-12-10'
                            reason_code: not-available
                          - start_date: '2019-12-10'
                            end_date: '2020-12-10'
                            reason_code: partly-available
                      - value: 188
                        start_date: '2021-12-10'
                        end_date: '2022-12-10'
                        missing_data:
                          - start_date: '2021-12-10'
                            end_date: '2022-12-10'
                            reason_code: missing-filter-property
        '422':
          description: Unprocessable Entity (WebDAV)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Errors'
              examples:
                BadRequest:
                  summary: Bad request
                  value:
                    detail:
                      - loc:
                          - query
                          - start_date
                        msg: field required
                        type: value_error.missing
      operationId: sc-public-v2-analytics-get-parcels_series
      security:
        - HTTPBasicAuth: []
        - OAuth2ClientCreds: []
      description: >-
        Returns data about parcels as a series, e.g. the number of parcels per
        day/month/year over a specified period.
      parameters:
        - schema:
            type: string
            format: date
          in: query
          name: start_date
          required: true
          description: period start date
        - schema:
            type: string
            format: date
          in: query
          name: end_date
          required: true
          description: period end date
        - schema:
            type: string
            example: postnl
          in: query
          name: carrier_code
          description: filter by carrier
        - schema:
            type: string
            example: DE
          in: query
          name: from_country
          description: origin country
        - schema:
            type: string
            example: NL
          in: query
          name: to_country
          description: destination country
        - schema:
            type: array
            items:
              type: integer
              example: 124523
          allowEmptyValue: true
          in: query
          name: integration_id
          description: integrations
        - schema:
            type: string
            enum:
              - days
              - months
              - years
          in: query
          name: granularity
          description: the size of one point
          required: true
        - schema:
            type: string
            enum:
              - incoming
              - outgoing
          in: query
          name: direction
          description: incoming or outgoing
        - schema:
            type: array
            items:
              type: integer
          in: query
          name: brand_id
          description: filtering by brand id
          allowEmptyValue: true
        - schema:
            type: array
            items:
              type: string
          in: query
          name: product_name
          description: filtering by product name
        - schema:
            type: array
            items:
              type: string
          in: query
          name: product_sku
          description: filtering by product sku
  /insights/products/series:
    get:
      summary: Retrieve product-insights series
      tags:
        - Products
      x-mint:
        href: /api/v2/analytics/retrieve-product-insights-series
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Series'
              examples:
                Series:
                  summary: Series
                  value:
                    series:
                      - value: 358
                        start_date: '2017-12-10'
                        end_date: '2020-12-10'
                        missing_data:
                          - start_date: '2018-12-10'
                            end_date: '2019-12-10'
                            reason_code: not-available
                          - start_date: '2019-12-10'
                            end_date: '2020-12-10'
                            reason_code: partly-available
                      - value: 188
                        start_date: '2021-12-10'
                        end_date: '2022-12-10'
                        missing_data:
                          - start_date: '2021-12-10'
                            end_date: '2022-12-10'
                            reason_code: missing-filter-property
        '422':
          description: Unprocessable Entity (WebDAV)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Errors'
              examples:
                BadRequest:
                  summary: Bad request
                  value:
                    detail:
                      - loc:
                          - query
                          - start_date
                        msg: field required
                        type: value_error.missing
      operationId: sc-public-v2-analytics-get-products_series
      description: >-
        Returns data about products as a series, e.g. the number of products per
        day/month/year over a specified period.
      security: []
      parameters:
        - schema:
            type: string
            format: date
          in: query
          name: start_date
          required: true
          description: period start date
        - schema:
            type: string
            format: date
          in: query
          name: end_date
          required: true
          description: period end date
        - schema:
            type: string
            example: postnl
          in: query
          name: carrier_code
          description: filter by carrier
        - schema:
            type: string
            example: DE
          in: query
          name: from_country
          description: origin country
        - schema:
            type: string
            example: NL
          in: query
          name: to_country
          description: destination country
        - schema:
            type: array
            items:
              type: integer
              example: 124523
          allowEmptyValue: true
          in: query
          name: integration_id
          description: integrations
        - schema:
            type: string
            enum:
              - days
              - months
              - years
          in: query
          name: granularity
          description: the size of one point
          required: true
        - schema:
            type: string
            enum:
              - incoming
              - outgoing
          in: query
          name: direction
          description: incoming or outgoing
        - schema:
            type: array
            items:
              type: integer
          in: query
          name: brand_id
          description: filtering by brand id
          allowEmptyValue: true
        - schema:
            type: array
            items:
              type: string
          in: query
          name: product_name
          description: filtering by product name
        - schema:
            type: array
            items:
              type: string
          in: query
          name: product_sku
          description: filtering by product sku
  /insights/parcels/buckets:
    get:
      summary: Retrieve parcel-insights buckets
      tags:
        - Parcels
      x-mint:
        href: /api/v2/analytics/retrieve-parcel-insights-buckets
      description: >-
        Returns data about parcels as buckets. Buckets should be grouped by any
        category, for example by country.
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Buckets'
              examples:
                Buckets:
                  summary: Buckets
                  value:
                    buckets:
                      - key: UK
                        value: 10
                        percentage: 12.24
                        missing_data:
                          - start_date: '2018-12-10'
                            end_date: '2019-12-10'
                            reason_code: partly-available
                      - key: DE
                        value: 8
                        percentage: 9.85
                        missing_data:
                          - start_date: '2018-12-10'
                            end_date: '2019-12-10'
                            reason_code: not-available
                BucketsGroupedByCountryRoutes:
                  summary: Buckets grouped by country routes
                  value:
                    buckets:
                      - key: UK-DE
                        value: 34
                        percentage: 12.24
                        missing_data:
                          - start_date: '2018-12-10'
                            end_date: '2019-12-10'
                            reason_code: partly-available
                      - key: AT-NL
                        value: 25
                        percentage: 9.85
                        missing_data: []
        '422':
          description: Unprocessable Entity (WebDAV)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Errors'
              examples:
                BadRequest:
                  summary: Bad Request
                  value:
                    detail:
                      - loc:
                          - query
                          - start_date
                        msg: field required
                        type: value_error.missing
      operationId: sc-public-v2-analytics-get-parcels_buckets
      parameters:
        - schema:
            type: string
            format: date
          in: query
          name: start_date
          description: period start date (announced)
          required: true
        - schema:
            type: string
            format: date
          in: query
          name: end_date
          description: period end date (announced)
          required: true
        - schema:
            type: string
            example: postnl
          in: query
          name: carrier_code
          description: filter by carriers
        - schema:
            type: string
            example: DE
          in: query
          name: from_country
          description: origin country code
        - schema:
            type: string
            example: NL
          in: query
          name: to_country
          description: destination country code
        - schema:
            type: array
            items:
              type: integer
              example: 124523
          allowEmptyValue: true
          in: query
          name: integration_id
          description: integrations
        - schema:
            type: string
            enum:
              - to_country
              - from_country
              - carrier
              - integration
              - direction
              - route
              - brand
          in: query
          name: group_by
          description: group by category
          required: true
        - schema:
            type: string
            minLength: 0
            example: '5'
          in: query
          name: size
          description: number of the buckets
        - schema:
            type: string
            enum:
              - incoming
              - outgoing
          in: query
          name: direction
          description: incoming or outgoing
        - schema:
            type: array
            items:
              type: integer
          in: query
          name: brand_id
          description: filtering by brand id
          allowEmptyValue: true
        - schema:
            type: array
            items:
              type: string
          in: query
          name: product_name
          description: filtering by product name
        - schema:
            type: array
            items:
              type: string
          in: query
          name: product_sku
          description: filtering by product sku
      security: []
  /insights/products/buckets:
    get:
      summary: Retrieve product-insights buckets
      tags:
        - Products
      x-mint:
        href: /api/v2/analytics/retrieve-product-insights-buckets
      description: >-
        Returns data about products as buckets. Buckets should be grouped by any
        category, for example by country.
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Buckets'
              examples:
                Buckets:
                  summary: Buckets
                  value:
                    buckets:
                      - key: UK
                        value: 10
                        percentage: 12.24
                        missing_data:
                          - start_date: '2018-12-10'
                            end_date: '2019-12-10'
                            reason_code: partly-available
                      - key: DE
                        value: 8
                        percentage: 9.85
                        missing_data:
                          - start_date: '2018-12-10'
                            end_date: '2019-12-10'
                            reason_code: partly-available
        '422':
          description: Unprocessable Entity (WebDAV)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Errors'
              examples:
                BadRequest:
                  summary: Unprocessable Entity (WebDAV)
                  value:
                    detail:
                      - loc:
                          - query
                          - start_date
                        msg: field required
                        type: value_error.missing
      operationId: sc-public-v2-analytics-get-products_buckets
      parameters:
        - schema:
            type: string
            format: date
          in: query
          name: start_date
          description: period start date (announced)
          required: true
        - schema:
            type: string
            format: date
          in: query
          name: end_date
          description: period end date (announced)
          required: true
        - schema:
            type: string
            example: postnl
          in: query
          name: carrier_code
          description: filter by carriers
        - schema:
            type: string
            example: DE
          in: query
          name: from_country
          description: origin country code
        - schema:
            type: string
            example: NL
          in: query
          name: to_country
          description: destination country code
        - schema:
            type: array
            items:
              type: integer
              example: 124523
          allowEmptyValue: true
          in: query
          name: integration_id
          description: integrations
        - schema:
            type: string
            enum:
              - integration
              - description
              - return_reason
              - brand
          in: query
          name: group_by
          description: group by category
          required: true
        - schema:
            type: string
            minLength: 0
            example: '5'
          in: query
          name: size
          description: number of the buckets
        - schema:
            type: string
            enum:
              - incoming
              - outgoing
          in: query
          name: direction
          description: incoming or outgoing
        - schema:
            type: array
            items:
              type: integer
          in: query
          name: brand_id
          description: filtering by brand id
          allowEmptyValue: true
        - schema:
            type: array
            items:
              type: string
          in: query
          name: product_name
          description: filtering by product name
        - schema:
            type: array
            items:
              type: string
          in: query
          name: product_sku
          description: filtering by product sku
      security: []
  /insights/parcels/counts-summary:
    get:
      summary: Retrieve parcels counts summary
      x-mint:
        href: /api/v2/analytics/retrieve-parcels-counts-summary
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Summary'
              examples:
                Summary:
                  summary: Summary
                  value:
                    summary:
                      - last_days: 7
                        value: 368
                      - last_days: 14
                        value: 668
                      - last_days: 30
                        value: 1253
        '422':
          description: Unprocessable Entity (WebDAV)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Errors'
              examples:
                BadRequest:
                  summary: Unprocessable Entity (WebDAV)
                  value:
                    detail:
                      - loc:
                          - query
                          - last-days
                        msg: field required
                        type: value_error.missing
      operationId: sc-public-v2-analytics-get-parcels_summary
      description: Returns number of parcels for the last number of days selected.
      tags:
        - Parcels
      security: []
      parameters:
        - schema:
            type: string
            example: postnl
          in: query
          name: carrier_code
          description: filter by carrier
        - schema:
            type: string
            example: DE
          in: query
          name: from_country
          description: origin country
        - schema:
            type: string
            example: NL
          in: query
          name: to_country
          description: destination country
        - schema:
            type: array
            items:
              type: integer
              example: 124523
          allowEmptyValue: true
          in: query
          name: integration_id
          description: integrations
        - schema:
            type: integer
          in: query
          name: last_days
          required: true
          description: value for the last number of days
        - schema:
            type: string
            enum:
              - incoming
              - outgoing
          in: query
          name: direction
          description: incoming or outgoing parcels
        - schema:
            type: array
            items:
              type: integer
          in: query
          name: brand_id
          description: filtering by brand id
          allowEmptyValue: true
        - schema:
            type: array
            items:
              type: string
          in: query
          name: product_name
          description: filtering by product name
        - schema:
            type: array
            items:
              type: string
          in: query
          name: product_sku
          description: filtering by product sku
  /insights/carriers/transit-times:
    get:
      summary: Retrieve carrier transit times
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CarrierTransitTime'
              examples:
                TransitTimes:
                  summary: Retrieve Carriers transit times
                  value:
                    transit_times:
                      - user_id: '1234'
                        carrier_code: postnl
                        from_country: NL
                        to_country: DE
                        start_date: '2022-12-31'
                        end_date: '2023-11-17'
                        total_parcels: 2406
                        transit_time: 82
                      - user_id: '1234'
                        carrier_code: dhl
                        from_country: DE
                        to_country: AT
                        start_date: '2021-12-31'
                        end_date: '2022-12-31'
                        total_parcels: 75422
                        transit_time: 51
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Errors'
              examples:
                ValidationError:
                  summary: Validation error
                  value:
                    detail:
                      - loc:
                          - query
                          - carrier-code
                        msg: field required
                        type: value_error.missing
      operationId: sc-public-v2-analytics-get-carrier_transit_times
      description: >-
        Retrieves the average transit time of a parcel per carrier.

        You can filter the results by origin and destination country, as well as
        by start and end dates.
      tags:
        - Transit times
      x-mint:
        href: /api/v2/analytics/retrieve-carrier-transit-times
      security:
        - HTTPBasicAuth: []
      parameters:
        - schema:
            type: array
            items:
              type: string
              example: postnl
          in: query
          name: carrier_code
          description: selection of carriers
          required: true
        - schema:
            type: string
            example: DE
          in: query
          name: from_country
          description: origin country
        - schema:
            type: string
            example: NL
          in: query
          name: to_country
          description: destination country
        - schema:
            type: string
            format: date
            example: '2020-12-31'
          in: query
          name: start_date
          description: first delivery start date
        - schema:
            type: string
            format: date
            example: '2022-12-31'
          in: query
          name: end_date
          description: first delivery end date
  /insights/shipping-methods/transit-times:
    get:
      summary: Retrieve shipping method transit times
      x-mint:
        href: /api/v2/analytics/retrieve-shipping-method-transit-times
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ShippingMethodTransitTime'
              examples:
                TransitTimes:
                  summary: Retrieve Shipping method transit times
                  value:
                    transit_times:
                      - user_id: '1234'
                        carrier_code: postnl
                        shipping_method_code: postnl:standard/kg=0-23
                        from_country: NL
                        to_country: DE
                        start_date: '2022-12-31'
                        end_date: '2023-12-31'
                        total_parcels: 240
                        transit_time: 92
                      - user_id: '1234'
                        carrier_code: dhl
                        shipping_method_code: dhl:complete/standard
                        from_country: DE
                        to_country: AT
                        start_date: '2022-12-31'
                        end_date: '2023-12-31'
                        total_parcels: 752
                        transit_time: 53
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Errors'
              examples:
                ValidationError:
                  summary: Validation Error
                  value:
                    detail:
                      - loc:
                          - query
                          - carrier-code
                        msg: field required
                        type: value_error.missing
                      - loc:
                          - query
                          - shipping-method-code
                        msg: field required
                        type: value_error.missing
      operationId: sc-public-v2-analytics-get-shipping_method_transit_times
      description: >-
        Retrieves the average transit time of a parcel per shipping method and
        carrier.

        You can filter the results by origin and destination country, as well as
        start and end dates.
      tags:
        - Transit times
      security:
        - HTTPBasicAuth: []
      parameters:
        - schema:
            type: array
            items:
              type: string
              example: postnl:standard/kg=0-23
          in: query
          name: shipping_method_code
          description: selection of shipping methods
          required: true
        - schema:
            type: string
            example: DE
          in: query
          name: from_country
          description: origin country
        - schema:
            type: string
            example: NL
          in: query
          name: to_country
          description: destination country
        - schema:
            type: string
            format: date
            example: '2021-12-31'
          in: query
          name: start_date
          description: first delivery start date
        - schema:
            type: string
            format: date
            example: '2022-12-31'
          in: query
          name: end_date
          description: first delivery end date
  /analytics/shipping-methods:
    get:
      summary: Retrieve all shipping methods used by user
      x-mint:
        href: /api/v2/analytics/retrieve-all-shipping-methods-used-by-user
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UserShippingMethods'
              examples:
                TransitShippingTimes:
                  summary: Retrieve all shipping methods used by user
                  value:
                    shipping_methods:
                      - code: postnl:standard/kg=0-23
                        carrier_code: postnl
                      - code: dhl:complete/standard
                        carrier_code: dhl
      operationId: sc-public-v2-analytics-get-user_shipping_methods
      description: Returns a list of all shipping methods ever used by a user.
      tags:
        - User Carriers and Shipping Methods
      security: []
  /analytics/carriers:
    get:
      summary: Retrieve all carriers used by user
      x-mint:
        href: /api/v2/analytics/retrieve-all-carriers-used-by-user
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UserCarriers'
              examples:
                Carriers:
                  summary: Retrieve all carriers used by user
                  value:
                    carriers:
                      - code: postnl
                      - code: dhl
      operationId: sc-public-v2-analytics-get-user_carriers
      description: Returns a list of all carriers ever used by a user.
      tags:
        - User Carriers and Shipping Methods
      security: []
components:
  schemas:
    Errors:
      title: Errors Object
      type: object
      properties:
        detail:
          title: Detail
          type: array
          items:
            $ref: '#/components/schemas/ErrorItem'
    ErrorItem:
      title: Error Item Object
      type: object
      properties:
        loc:
          title: Location
          type: array
          items:
            type: string
        msg:
          title: Message
          type: string
        type:
          title: Error Type
          type: string
      required:
        - loc
        - msg
        - type
    Series:
      type: object
      title: Analytics Series Object
      description: Parcels/Products data represented in series
      properties:
        series:
          type: array
          items:
            type: object
            properties:
              value:
                type: integer
                example: 0
                minimum: 0
                description: Number of parcels/products for the period
              start_date:
                type: string
                format: date
              end_date:
                type: string
                format: date
              missing_data:
                type: array
                items:
                  type: object
                  description: Periods when data is missing
                  properties:
                    start_date:
                      type: string
                      format: date
                    end_date:
                      type: string
                      format: date
                    reason_code:
                      type: string
                      enum:
                        - missing-grouping-property
                        - missing-filter-property
                        - not-available
                        - partly-available
            required:
              - value
              - start_date
              - end_date
              - missing_data
      required:
        - series
    Buckets:
      type: object
      title: Analytics Buckets Object
      description: Parcel/Products data grouped into buckets.
      properties:
        buckets:
          type: array
          items:
            type: object
            properties:
              key:
                type: string
                description: bucket key
              value:
                type: integer
                minimum: 0
                description: Number of parcels/products in bucket
              percentage:
                type: number
                minimum: 0
                description: Percent of all parcels/products this bucket has
              missing_data:
                type: array

# --- truncated at 32 KB (37 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/sendcloud/refs/heads/main/openapi/sendcloud-v2-analytics-openapi.yml