> ## Documentation Index
> Fetch the complete documentation index at: https://docs.archeraffiliates.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Sales, commission and traffic for your links

> See how your Archer links are performing — sales, commission, clicks and
conversions — broken down by day, product and Amazon marketplace.

### How rows are organised
You get one row for every combination of day, product and marketplace one of
your links drove activity for. Each row carries its own marketplace and
currency.

### Date range
`start` and `end` are required. Either format works:
`2026-05-01` or `20260501`. Both ends are inclusive.

### Marketplace
Reports cover a single Amazon marketplace per request. Pass either
`marketplace=amazon.co.uk` or the equivalent `geo=UK` (country code). If
both are passed, `geo` wins. Defaults to `amazon.com` (US) when neither
is supplied. `marketplace=all` is no longer supported.

See the [Reporting concept](/concepts/reporting) for the full
geo-to-marketplace mapping.

### What's in the numbers
Sales, conversions, add-to-carts and detail page views include
both the linked product itself and any other items from the same brand the
shopper bought after clicking — that's how Amazon's affiliate program
credits publishers. The numbers are returned in the marketplace's native
currency. No currency conversion is applied; the row's `currency` field
tells you which one it is.

### Clicks are link-level — don't sum them
Amazon reports clicks per ad group, per day, not per product: a click happens
on your link before the shopper reaches any particular product. Every Archer
link is backed by exactly one ad group, so that figure is your link's daily
click count. Rows are per-product, so we repeat it on every product row
sharing that `date` + `link.id`.

Summing the `clicks` column therefore double-counts — a link that sold five
ASINs on one day produces five rows each carrying that day's full click count.
Deduplicate on `date` + `link.id` and take the value once per group. Every
other metric is genuinely per-product and sums correctly.

Rows where a link got clicks but drove no attributed sales come back with
`asin` null and zero sales. Those clicks are real — include them.

See the [Reporting concept](/concepts/reporting) for a worked example.

### Paging through results
Use `limit` to control page size (1–500, default 100). For the next page,
take `next_cursor` from the response and pass it back as `cursor`. When
`next_cursor` comes back null, you've seen everything.



## OpenAPI

````yaml /docs/api-reference/openapi.json get /reports
openapi: 3.1.0
info:
  title: Archer Affiliates API
  description: API that allows use of features on the Archer Platform
  version: '2.0'
servers:
  - url: https://api.archeraffiliates.com
    description: Production
security: []
paths:
  /reports:
    get:
      tags:
        - Reports
      summary: Sales, commission and traffic for your links
      description: >-
        See how your Archer links are performing — sales, commission, clicks and

        conversions — broken down by day, product and Amazon marketplace.


        ### How rows are organised

        You get one row for every combination of day, product and marketplace
        one of

        your links drove activity for. Each row carries its own marketplace and

        currency.


        ### Date range

        `start` and `end` are required. Either format works:

        `2026-05-01` or `20260501`. Both ends are inclusive.


        ### Marketplace

        Reports cover a single Amazon marketplace per request. Pass either

        `marketplace=amazon.co.uk` or the equivalent `geo=UK` (country code). If

        both are passed, `geo` wins. Defaults to `amazon.com` (US) when neither

        is supplied. `marketplace=all` is no longer supported.


        See the [Reporting concept](/concepts/reporting) for the full

        geo-to-marketplace mapping.


        ### What's in the numbers

        Sales, conversions, add-to-carts and detail page views include

        both the linked product itself and any other items from the same brand
        the

        shopper bought after clicking — that's how Amazon's affiliate program

        credits publishers. The numbers are returned in the marketplace's native

        currency. No currency conversion is applied; the row's `currency` field

        tells you which one it is.


        ### Clicks are link-level — don't sum them

        Amazon reports clicks per ad group, per day, not per product: a click
        happens

        on your link before the shopper reaches any particular product. Every
        Archer

        link is backed by exactly one ad group, so that figure is your link's
        daily

        click count. Rows are per-product, so we repeat it on every product row

        sharing that `date` + `link.id`.


        Summing the `clicks` column therefore double-counts — a link that sold
        five

        ASINs on one day produces five rows each carrying that day's full click
        count.

        Deduplicate on `date` + `link.id` and take the value once per group.
        Every

        other metric is genuinely per-product and sums correctly.


        Rows where a link got clicks but drove no attributed sales come back
        with

        `asin` null and zero sales. Those clicks are real — include them.


        See the [Reporting concept](/concepts/reporting) for a worked example.


        ### Paging through results

        Use `limit` to control page size (1–500, default 100). For the next
        page,

        take `next_cursor` from the response and pass it back as `cursor`. When

        `next_cursor` comes back null, you've seen everything.
      operationId: list_reports_reports_get
      parameters:
        - name: start
          in: query
          required: true
          schema:
            type: string
            description: >-
              First day of the report (inclusive). Use `YYYY-MM-DD` or
              `YYYYMMDD`.
            examples:
              iso:
                value: '2026-05-01'
              compact:
                value: '20260501'
            title: Start
          description: First day of the report (inclusive). Use `YYYY-MM-DD` or `YYYYMMDD`.
        - name: end
          in: query
          required: true
          schema:
            type: string
            description: >-
              Last day of the report (inclusive). Use `YYYY-MM-DD` or
              `YYYYMMDD`.
            examples:
              iso:
                value: '2026-05-31'
              compact:
                value: '20260531'
            title: End
          description: Last day of the report (inclusive). Use `YYYY-MM-DD` or `YYYYMMDD`.
        - name: marketplace
          in: query
          required: false
          schema:
            anyOf:
              - type: string
              - type: 'null'
            description: >-
              Amazon marketplace to report on — e.g. `amazon.com`,
              `amazon.co.uk`, `amazon.de`. Defaults to `amazon.com` when neither
              `marketplace` nor `geo` is supplied. Only one marketplace per
              request — `all` is not supported.
            examples:
              us:
                value: amazon.com
              uk:
                value: amazon.co.uk
            title: Marketplace
          description: >-
            Amazon marketplace to report on — e.g. `amazon.com`, `amazon.co.uk`,
            `amazon.de`. Defaults to `amazon.com` when neither `marketplace` nor
            `geo` is supplied. Only one marketplace per request — `all` is not
            supported.
        - name: geo
          in: query
          required: false
          schema:
            anyOf:
              - type: string
              - type: 'null'
            description: >-
              Two-letter country code for the marketplace, e.g. `US`, `UK`,
              `DE`. Alternative to `marketplace`; if both are supplied `geo`
              wins. See the Reporting concept for the full geo→marketplace
              mapping.
            examples:
              us:
                value: US
              uk:
                value: UK
            title: Geo
          description: >-
            Two-letter country code for the marketplace, e.g. `US`, `UK`, `DE`.
            Alternative to `marketplace`; if both are supplied `geo` wins. See
            the Reporting concept for the full geo→marketplace mapping.
        - name: asins
          in: query
          required: false
          schema:
            anyOf:
              - type: string
              - type: 'null'
            description: >-
              Limit results to one or more products by ASIN. Separate multiple
              ASINs with commas.
            examples:
              single:
                value: B0D45KS7QM
              multi:
                value: B0D45KS7QM,B07XJ8C8F5
            title: Asins
          description: >-
            Limit results to one or more products by ASIN. Separate multiple
            ASINs with commas.
        - name: link_ids
          in: query
          required: false
          schema:
            anyOf:
              - type: string
              - type: 'null'
            description: >-
              Limit results to specific links by their Archer link id. Separate
              multiple ids with commas.
            title: Link Ids
          description: >-
            Limit results to specific links by their Archer link id. Separate
            multiple ids with commas.
        - name: brand_ids
          in: query
          required: false
          schema:
            anyOf:
              - type: string
              - type: 'null'
            description: >-
              Limit results to one or more brands. Separate multiple ids with
              commas.
            title: Brand Ids
          description: >-
            Limit results to one or more brands. Separate multiple ids with
            commas.
        - name: limit
          in: query
          required: false
          schema:
            type: integer
            maximum: 500
            minimum: 1
            description: How many rows to return per page (1–500). Defaults to 100.
            default: 100
            title: Limit
          description: How many rows to return per page (1–500). Defaults to 100.
        - name: cursor
          in: query
          required: false
          schema:
            anyOf:
              - type: string
              - type: 'null'
            description: >-
              Use `next_cursor` from the previous response. Leave blank for the
              first page.
            title: Cursor
          description: >-
            Use `next_cursor` from the previous response. Leave blank for the
            first page.
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ReportsResponse'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
      security:
        - OAuth2PasswordBearer: []
components:
  schemas:
    ReportsResponse:
      properties:
        total_count:
          type: integer
          title: Total Count
          description: Total rows matching your filters across every page.
        fetched_count:
          type: integer
          title: Fetched Count
          description: Rows in this page.
        next_cursor:
          anyOf:
            - type: string
            - type: 'null'
          title: Next Cursor
          description: >-
            Pass this back as `cursor` to fetch the next page. Null when you're
            on the last page.
        rows:
          items:
            $ref: '#/components/schemas/ReportRow'
          type: array
          title: Rows
          description: The performance rows for this page.
      type: object
      required:
        - total_count
        - fetched_count
        - rows
      title: ReportsResponse
      description: The response from GET /reports.
    HTTPValidationError:
      properties:
        detail:
          items:
            $ref: '#/components/schemas/ValidationError'
          type: array
          title: Detail
      type: object
      title: HTTPValidationError
    ReportRow:
      properties:
        asin:
          anyOf:
            - type: string
            - type: 'null'
          title: Asin
          description: The Amazon product identifier (from the products catalog).
        product_name:
          anyOf:
            - type: string
            - type: 'null'
          title: Product Name
          description: Product name (from the `products_catalog` collection).
        brand_name:
          anyOf:
            - type: string
            - type: 'null'
          title: Brand Name
          description: Brand name (from the `products_catalog` collection).
        date:
          anyOf:
            - type: string
            - type: 'null'
          title: Date
          description: The day the activity happened (YYYY-MM-DD).
        marketplace:
          anyOf:
            - type: string
            - type: 'null'
          title: Marketplace
          description: The Amazon marketplace, e.g. `amazon.co.uk`.
        country_code:
          anyOf:
            - type: string
            - type: 'null'
          title: Country Code
          description: Two-letter country code, e.g. `UK`.
        currency:
          anyOf:
            - type: string
            - type: 'null'
          title: Currency
          description: Currency of the money values on this row (no conversion is applied).
        commissionEarned:
          type: number
          title: Commissionearned
          description: Affiliate commission you earned, in the row's currency.
          default: 0
        commission_percentage:
          anyOf:
            - type: number
            - type: 'null'
          title: Commission Percentage
          description: >-
            Commission rate (percent) used to compute `commissionEarned` for
            this row.
        sales:
          type: number
          title: Sales
          description: Total sales attributed to your link, in the row's currency.
          default: 0
        conversions:
          type: number
          title: Conversions
          description: Total units sold attributed to your link.
          default: 0
        purchases:
          type: number
          title: Purchases
          description: >-
            Attributed purchase count — orders that contained an attributed
            sale.
          default: 0
        clicks:
          type: integer
          title: Clicks
          description: >-
            Click-throughs on this link on this day. Amazon reports clicks per
            ad group (one per link), not per product, so the same value repeats
            on every product row sharing this `date` + `link.id`. Do not sum
            this column — deduplicate on `date` + `link.id` first.
          default: 0
        addToCarts:
          type: integer
          title: Addtocarts
          description: Times a shopper added an attributed product to their cart.
          default: 0
        detailPageViews:
          type: integer
          title: Detailpageviews
          description: Product detail page views driven by your link.
          default: 0
        link:
          anyOf:
            - $ref: '#/components/schemas/ReportLink'
            - type: 'null'
          description: >-
            The link that drove the activity, or null when no matching link is
            found.
      type: object
      title: ReportRow
      description: |-
        One day of performance for a single product, on a single Amazon
        marketplace, driven by one of your links.

        `asin`, `product_name` and `brand_name` on the row are looked up from
        the products catalog (`products_catalog`). The link object carries the
        asin / product_name stored on the link itself in `attribution_links`.

        All sale and traffic numbers include both purchases of the linked
        product itself and any other items from the same brand that the shopper
        bought after clicking your link.
    ValidationError:
      properties:
        loc:
          items:
            anyOf:
              - type: string
              - type: integer
          type: array
          title: Location
        msg:
          type: string
          title: Message
        type:
          type: string
          title: Error Type
        input:
          title: Input
        ctx:
          type: object
          title: Context
      type: object
      required:
        - loc
        - msg
        - type
      title: ValidationError
    ReportLink:
      properties:
        id:
          anyOf:
            - type: string
            - type: 'null'
          title: Id
          description: The link's identifier on the Archer platform.
        link_name:
          anyOf:
            - type: string
            - type: 'null'
          title: Link Name
          description: The name you chose when you created the link.
        url:
          anyOf:
            - type: string
            - type: 'null'
          title: Url
          description: The Amazon URL the link sends shoppers to.
        active:
          anyOf:
            - type: boolean
            - type: 'null'
          title: Active
          description: False if you've paused reporting for this link.
        type:
          anyOf:
            - type: string
            - type: 'null'
          title: Type
          description: What the link points to. Currently always a single product.
          default: product
        marketplace:
          anyOf:
            - type: string
            - type: 'null'
          title: Marketplace
          description: The Amazon marketplace the link targets, e.g. `amazon.co.uk`.
        asin:
          anyOf:
            - type: string
            - type: 'null'
          title: Asin
          description: >-
            ASIN the link was created against (from the `attribution_links`
            collection).
        product_name:
          anyOf:
            - type: string
            - type: 'null'
          title: Product Name
          description: >-
            Product name stored on the link (from the `attribution_links`
            collection).
      type: object
      title: ReportLink
      description: |-
        The Archer link that drove the activity on this row.

        `asin` and `product_name` here come from the `attribution_links`
        collection — i.e. what the link was set up to point at when it was
        created. They may differ from the row's `asin`/`product_name`, which
        are sourced from the products catalog at report time.
  securitySchemes:
    OAuth2PasswordBearer:
      type: oauth2
      flows:
        password:
          scopes: {}
          tokenUrl: token

````