> For the complete documentation index, see [llms.txt](https://docs.intelligems.io/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.intelligems.io/developer-resources/external-api/get-experience-export.md).

# Get Experience Export

## POST /v25-10-beta/analytics/experience/{experienceId}/export

> Export order-level or line-item-level data for an experience (A/B test) as a CSV file.\
> \
> \## POST /analytics/experience/{experienceId}/export\
> \
> Returns a presigned S3 URL to download a CSV file containing the requested export data. The URL is valid for 15 minutes.\
> \
> \### Parameters\
> \
> \- \`experienceId\` (path) — \*\*required\*\*. UUID of the experience.\
> \- \`exportType\` — \*\*required\*\*. Type of export: \`orders\`, \`order\_line\_items\`, or \`order\_reconciliation\` (see table below).\
> \- \`startTs\` — optional 10-digit epoch timestamp in seconds. Defaults to experience start date.\
> \- \`endTs\` — optional 10-digit epoch timestamp in seconds. Defaults to now or experience end date.\
> \- \`filters\` — optional analytics filters object. See below and the Filters Reference for available fields.\
> \
> \### Export Types\
> \
> \| Value                  | Description                                                                                    |\
> \| ---------------------- | ---------------------------------------------------------------------------------------------- |\
> \| \`orders\`               | Order-level data — one row per order with revenue, discount, variation assignment, and visitor |\
> \| \`order\_line\_items\`     | Line-item-level data — one row per line item with product, quantity, price, and variation      |\
> \| \`order\_reconciliation\` | Reconciliation export joining Intelligems order attribution against the underlying order data  |\
> \
> \### Upsell columns\
> \
> Both the \`orders\` and \`order\_line\_items\` exports identify lines that an Intelligems upsell put in the cart, so you can separate upsell revenue from organic revenue.\
> \
> \`order\_line\_items\` adds one column:\
> \
> \| Column        | Description                                                                              |\
> \| ------------- | ---------------------------------------------------------------------------------------- |\
> \| \`upsell\_type\` | Which Intelligems upsell surface added this line. Empty when none did. See values below. |\
> \
> \| Value                 | Meaning                                                                                 |\
> \| --------------------- | --------------------------------------------------------------------------------------- |\
> \| \_(empty)\_             | No Intelligems upsell added this line — see scoping below.                              |\
> \| \`checkout\_upsell\`     | Added from an upsell block in the checkout extension.                                   |\
> \| \`onsite\_upsell\`       | Added from the onsite upsell widget, which renders on the product page \*\*or\*\* the cart. |\
> \| \`post\_purchase\_offer\` | Added from a post-purchase offer, after checkout completed.                             |\
> \
> The surfaces are mutually exclusive, so a line has exactly one value. Filter or pivot on this column to split upsell revenue from organic revenue. To see which \_variation\_ an upsell line belongs to, use \`test\_group\_name\`, which is already in the export.\
> \
> \#### Scoping — what an empty value means\
> \
> \*\*When the experience has its own checkout upsell blocks or onsite upsell components, \`upsell\_type\` is scoped to them.\*\* \`checkout\_upsell\` then means "added by \_this experience's\_ checkout upsell", not "is an upsell of any kind". A line added by a different, concurrently-running upsell experience is left empty.\
> \
> This is deliberate: it stops an export of one upsell test from attributing an overlapping test's upsells to itself. When the experience has no upsell surfaces of its own, no scoping is applied and the values mean "from any Intelligems upsell".\
> \
> So read an empty \`upsell\_type\` as "no upsell attributable to this experience", not strictly as "organic line item".\
> \
> \`orders\` adds three order-level columns rolled up from the same scoped classification, so the two exports always agree on whether an order contains an upsell:\
> \
> \| Column                      | Description                                                                                  |\
> \| --------------------------- | -------------------------------------------------------------------------------------------- |\
> \| \`upsell\_types\`              | Array of the distinct upsell surfaces present on the order. Empty array when there are none. |\
> \| \`net\_revenue\_from\_upsell\`   | Net revenue across every upsell line on the order, all surfaces combined.                    |\
> \| \`unit\_quantity\_from\_upsell\` | Units across every upsell line on the order, all surfaces combined.                          |\
> \
> For a per-surface revenue split, use the \`order\_line\_items\` export and group by \`upsell\_type\`, or request the per-variation upsell metrics from \`POST /analytics/resource/{experienceId}\` with \`includeUpsellMetrics: true\`.\
> \
> \### Filters\
> \
> This endpoint accepts the same filters as \`POST /analytics/resource/{experienceId}\`. Key filters include:\
> \
> \| Field                    | Type     | Description                                               |\
> \| ------------------------ | -------- | --------------------------------------------------------- |\
> \| \`deviceType\`             | string   | \`"any"\`, \`"mobile"\`, or \`"desktop"\`                       |\
> \| \`visitorType\`            | string   | \`"any"\`, \`"new"\`, or \`"returning"\`                        |\
> \| \`countryCodes\`           | string\[] | ISO 3166-1 alpha-2 codes, e.g. \`\["US", "GB"]\`             |\
> \| \`sourceSitesOrChannels\`  | string\[] | Traffic channel names (see Filters Reference)             |\
> \| \`userBehavior\`           | object   | Visitor behavior filter (see sub-fields below)            |\
> \| \`experimentProductsOnly\` | boolean  | Only include products in the experiment (target products) |\
> \| \`onlyProductIds\`         | string\[] | Shopify product IDs to include                            |\
> \| \`onlyProductHandles\`     | string\[] | Shopify product handles to include                        |\
> \
> \#### \`userBehavior\` sub-fields\
> \
> All fields are optional booleans. Set to \`true\` to filter to only visitors who performed that action.\
> \
> \| Field                  | Description                      |\
> \| ---------------------- | -------------------------------- |\
> \| \`viewedProductPage\`    | Visitor viewed a product page    |\
> \| \`viewedCollectionPage\` | Visitor viewed a collection page |\
> \| \`addedToCart\`          | Visitor added an item to cart    |\
> \| \`viewedCheckout\`       | Visitor reached checkout         |\
> \
> See the Filters Reference section for the full list of available filter fields.\
> \
> \### Response Structure\
> \
> The response contains:\
> \
> \| Field            | Type         | Description                                                                         |\
> \| ---------------- | ------------ | ----------------------------------------------------------------------------------- |\
> \| \`exportType\`     | string       | The export type requested (\`orders\`, \`order\_line\_items\`, or \`order\_reconciliation\`) |\
> \| \`experienceId\`   | string       | UUID of the experience                                                              |\
> \| \`experienceName\` | string       | Display name of the experience                                                      |\
> \| \`url\`            | string\\|null | Presigned S3 URL to download the CSV. Null if the export timed out.                 |\
> \| \`expiresIn\`      | number       | Seconds until the URL expires (900 = 15 minutes). 0 if url is null.                 |\
> \| \`format\`         | string       | Always \`"csv"\`                                                                      |\
> \| \`message\`        | string       | Human-readable status (e.g. "Export ready", "Export timed out, please retry")       |\
> \
> \### Date Range Behavior\
> \
> \- When \`startTs\` and \`endTs\` are omitted, the date range defaults to the experience's full lifetime (start date through end/pause date or now).\
> \- If the experience is \*\*paused\*\* or \*\*ended\*\*, the export is automatically truncated at the pause/end date.\
> \- If the provided \`startTs\` is before the experience start date, it is clamped to the experience start. Similarly, \`endTs\` is clamped to the experience end/pause date.\
> \
> \### Presigned URL\
> \
> The returned URL is a time-limited presigned S3 URL. It expires after \*\*15 minutes\*\* (900 seconds). After expiry, the URL returns a 403 Forbidden. Call the endpoint again to generate a new URL.

```json
{"openapi":"3.1.0","info":{"title":"Intelligems External API v25-10-beta","version":"v25-10-beta"},"tags":[{"name":"Get Experience Export"}],"servers":[{"url":"https://api.intelligems.io","description":"Production"}],"paths":{"/v25-10-beta/analytics/experience/{experienceId}/export":{"post":{"tags":["Get Experience Export"],"description":"Export order-level or line-item-level data for an experience (A/B test) as a CSV file.\n\n## POST /analytics/experience/{experienceId}/export\n\nReturns a presigned S3 URL to download a CSV file containing the requested export data. The URL is valid for 15 minutes.\n\n### Parameters\n\n- `experienceId` (path) — **required**. UUID of the experience.\n- `exportType` — **required**. Type of export: `orders`, `order_line_items`, or `order_reconciliation` (see table below).\n- `startTs` — optional 10-digit epoch timestamp in seconds. Defaults to experience start date.\n- `endTs` — optional 10-digit epoch timestamp in seconds. Defaults to now or experience end date.\n- `filters` — optional analytics filters object. See below and the Filters Reference for available fields.\n\n### Export Types\n\n| Value                  | Description                                                                                    |\n| ---------------------- | ---------------------------------------------------------------------------------------------- |\n| `orders`               | Order-level data — one row per order with revenue, discount, variation assignment, and visitor |\n| `order_line_items`     | Line-item-level data — one row per line item with product, quantity, price, and variation      |\n| `order_reconciliation` | Reconciliation export joining Intelligems order attribution against the underlying order data  |\n\n### Upsell columns\n\nBoth the `orders` and `order_line_items` exports identify lines that an Intelligems upsell put in the cart, so you can separate upsell revenue from organic revenue.\n\n`order_line_items` adds one column:\n\n| Column        | Description                                                                              |\n| ------------- | ---------------------------------------------------------------------------------------- |\n| `upsell_type` | Which Intelligems upsell surface added this line. Empty when none did. See values below. |\n\n| Value                 | Meaning                                                                                 |\n| --------------------- | --------------------------------------------------------------------------------------- |\n| _(empty)_             | No Intelligems upsell added this line — see scoping below.                              |\n| `checkout_upsell`     | Added from an upsell block in the checkout extension.                                   |\n| `onsite_upsell`       | Added from the onsite upsell widget, which renders on the product page **or** the cart. |\n| `post_purchase_offer` | Added from a post-purchase offer, after checkout completed.                             |\n\nThe surfaces are mutually exclusive, so a line has exactly one value. Filter or pivot on this column to split upsell revenue from organic revenue. To see which _variation_ an upsell line belongs to, use `test_group_name`, which is already in the export.\n\n#### Scoping — what an empty value means\n\n**When the experience has its own checkout upsell blocks or onsite upsell components, `upsell_type` is scoped to them.** `checkout_upsell` then means \"added by _this experience's_ checkout upsell\", not \"is an upsell of any kind\". A line added by a different, concurrently-running upsell experience is left empty.\n\nThis is deliberate: it stops an export of one upsell test from attributing an overlapping test's upsells to itself. When the experience has no upsell surfaces of its own, no scoping is applied and the values mean \"from any Intelligems upsell\".\n\nSo read an empty `upsell_type` as \"no upsell attributable to this experience\", not strictly as \"organic line item\".\n\n`orders` adds three order-level columns rolled up from the same scoped classification, so the two exports always agree on whether an order contains an upsell:\n\n| Column                      | Description                                                                                  |\n| --------------------------- | -------------------------------------------------------------------------------------------- |\n| `upsell_types`              | Array of the distinct upsell surfaces present on the order. Empty array when there are none. |\n| `net_revenue_from_upsell`   | Net revenue across every upsell line on the order, all surfaces combined.                    |\n| `unit_quantity_from_upsell` | Units across every upsell line on the order, all surfaces combined.                          |\n\nFor a per-surface revenue split, use the `order_line_items` export and group by `upsell_type`, or request the per-variation upsell metrics from `POST /analytics/resource/{experienceId}` with `includeUpsellMetrics: true`.\n\n### Filters\n\nThis endpoint accepts the same filters as `POST /analytics/resource/{experienceId}`. Key filters include:\n\n| Field                    | Type     | Description                                               |\n| ------------------------ | -------- | --------------------------------------------------------- |\n| `deviceType`             | string   | `\"any\"`, `\"mobile\"`, or `\"desktop\"`                       |\n| `visitorType`            | string   | `\"any\"`, `\"new\"`, or `\"returning\"`                        |\n| `countryCodes`           | string[] | ISO 3166-1 alpha-2 codes, e.g. `[\"US\", \"GB\"]`             |\n| `sourceSitesOrChannels`  | string[] | Traffic channel names (see Filters Reference)             |\n| `userBehavior`           | object   | Visitor behavior filter (see sub-fields below)            |\n| `experimentProductsOnly` | boolean  | Only include products in the experiment (target products) |\n| `onlyProductIds`         | string[] | Shopify product IDs to include                            |\n| `onlyProductHandles`     | string[] | Shopify product handles to include                        |\n\n#### `userBehavior` sub-fields\n\nAll fields are optional booleans. Set to `true` to filter to only visitors who performed that action.\n\n| Field                  | Description                      |\n| ---------------------- | -------------------------------- |\n| `viewedProductPage`    | Visitor viewed a product page    |\n| `viewedCollectionPage` | Visitor viewed a collection page |\n| `addedToCart`          | Visitor added an item to cart    |\n| `viewedCheckout`       | Visitor reached checkout         |\n\nSee the Filters Reference section for the full list of available filter fields.\n\n### Response Structure\n\nThe response contains:\n\n| Field            | Type         | Description                                                                         |\n| ---------------- | ------------ | ----------------------------------------------------------------------------------- |\n| `exportType`     | string       | The export type requested (`orders`, `order_line_items`, or `order_reconciliation`) |\n| `experienceId`   | string       | UUID of the experience                                                              |\n| `experienceName` | string       | Display name of the experience                                                      |\n| `url`            | string\\|null | Presigned S3 URL to download the CSV. Null if the export timed out.                 |\n| `expiresIn`      | number       | Seconds until the URL expires (900 = 15 minutes). 0 if url is null.                 |\n| `format`         | string       | Always `\"csv\"`                                                                      |\n| `message`        | string       | Human-readable status (e.g. \"Export ready\", \"Export timed out, please retry\")       |\n\n### Date Range Behavior\n\n- When `startTs` and `endTs` are omitted, the date range defaults to the experience's full lifetime (start date through end/pause date or now).\n- If the experience is **paused** or **ended**, the export is automatically truncated at the pause/end date.\n- If the provided `startTs` is before the experience start date, it is clamped to the experience start. Similarly, `endTs` is clamped to the experience end/pause date.\n\n### Presigned URL\n\nThe returned URL is a time-limited presigned S3 URL. It expires after **15 minutes** (900 seconds). After expiry, the URL returns a 403 Forbidden. Call the endpoint again to generate a new URL.","parameters":[{"in":"path","name":"experienceId","schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"required":true}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"exportType":{"type":"string","enum":["orders","order_line_items","order_reconciliation"],"description":"Type of export data to retrieve. 'orders' returns order-level data, 'order_line_items' returns line-item-level data."},"startTs":{"description":"Optional analysis start timestamp as a 10-digit Unix epoch string in seconds. Defaults to the experience start date.","type":"string"},"endTs":{"description":"Optional analysis end timestamp as a 10-digit Unix epoch string in seconds. Defaults to now or the experience end date.","type":"string"},"filters":{"description":"Optional analytics filters object. Supports device, visitor, traffic source, country, product, and targeting filters.\n\nAnalytics filters object for narrowing experience/experiment result data.","type":"object","properties":{"deviceType":{"description":"Filter by device type. Options: 'any' (disables filter), 'mobile', 'desktop'. Omit or null to include all devices.","anyOf":[{"type":"string","enum":["any","mobile","desktop"]},{"type":"null"}]},"visitorType":{"description":"Filter by visitor type. Options: 'any' (disables filter), 'new', 'returning'. Omit or null to include all visitors.","anyOf":[{"type":"string","enum":["any","new","returning"]},{"type":"null"}]},"customerType":{"description":"Filter experiment analytics by customer type. Options: 'new', 'returning'. Omit or null to include all customers.","anyOf":[{"type":"string","enum":["new","returning"]},{"type":"null"}]},"sourceSitesOrChannels":{"description":"Filter by traffic source channels. These 25 values are the complete accepted set — the channels the analytics service buckets sessions and orders into — and any other value is rejected with a 400: 'Instagram', 'Facebook', 'Google', 'Twitter', 'TikTok', 'Youtube', 'Klaviyo', 'Attentive', 'Postscript', 'Paid Shopping', 'Paid Search', 'Paid Social', 'Paid Video', 'Display', 'Paid Other', 'Organic Shopping', 'Organic Social', 'Organic Video', 'Organic Search', 'Other', 'Referral', 'Affiliate', 'SMS', 'Email', 'Direct'. Omit or pass an empty array for all channels — there is no 'any' sentinel.","type":"array","items":{"type":"string","enum":["Instagram","Facebook","Google","Twitter","TikTok","Youtube","Klaviyo","Attentive","Postscript","Paid Shopping","Paid Search","Paid Social","Paid Video","Display","Paid Other","Organic Shopping","Organic Social","Organic Video","Organic Search","Other","Referral","Affiliate","SMS","Email","Direct"]}},"urlParam":{"description":"Filter by URL query parameter. Object with: queryParam (string|null — the parameter name), queryParamValue (string|null — the value to match), queryParamFilterType (match operator|null: 'equals', 'contains', 'startsWith', 'endsWith', 'doesNotEqual', 'doesNotContain', 'doesNotStartWith', 'doesNotEndWith', 'isNull', 'isNotNull'). REQUIRED COMBINATIONS (enforced with a 400): when queryParamFilterType is set, queryParam must be a non-empty string; every operator except 'isNull'/'isNotNull' also requires a non-empty queryParamValue; 'isNull'/'isNotNull' take no value, so leave queryParamValue null. Omit all three fields to apply no query-parameter filter.","type":"object","properties":{"queryParam":{"anyOf":[{"type":"string"},{"type":"null"}]},"queryParamValue":{"anyOf":[{"type":"string"},{"type":"null"}]},"queryParamFilterType":{"anyOf":[{"type":"string","enum":["equals","contains","startsWith","endsWith","doesNotEqual","doesNotContain","doesNotStartWith","doesNotEndWith","isNull","isNotNull"]},{"type":"null"}]}},"required":["queryParam","queryParamValue","queryParamFilterType"]},"landingPage":{"description":"DEPRECATED — use landingPageFilters instead, which supports multiple values and an and/or operator. This single-path filter is retained for backwards compatibility and still works, but new integrations should use landingPageFilters. Filter by landing page URL path. Object with: landingPageUrlPath (string|null — the path to match), landingPageUrlPathFilterType (match operator|null: 'equals', 'contains', 'startsWith', 'endsWith', 'doesNotEqual', 'doesNotContain', 'doesNotStartWith', 'doesNotEndWith', 'isNull', 'isNotNull'). REQUIRED COMBINATIONS (enforced with a 400): every operator except 'isNull'/'isNotNull' requires a non-empty landingPageUrlPath; 'isNull'/'isNotNull' take no path, so leave landingPageUrlPath null; and a landingPageUrlPath with no landingPageUrlPathFilterType is rejected. Omit both fields to apply no landing-page filter.","deprecated":true,"anyOf":[{"type":"object","properties":{"landingPageUrlPath":{"anyOf":[{"type":"string"},{"type":"null"}]},"landingPageUrlPathFilterType":{"anyOf":[{"type":"string","enum":["equals","contains","startsWith","endsWith","doesNotEqual","doesNotContain","doesNotStartWith","doesNotEndWith","isNull","isNotNull"]},{"type":"null"}]}},"required":["landingPageUrlPath","landingPageUrlPathFilterType"]},{"type":"null"}]},"landingPageFilters":{"description":"Filter by landing page URL path with multi-value support. Recommended landing page filter (supersedes the deprecated landingPage field). Array of filter items, each with: filterType (match operator: 'equals', 'contains', 'startsWith', 'endsWith', 'doesNotEqual', 'doesNotContain', 'doesNotStartWith', 'doesNotEndWith', 'isNull', 'isNotNull') and values (array of strings to match against). REQUIRED COMBINATIONS (enforced with a 400): every operator except 'isNull'/'isNotNull' requires at least one non-empty entry in values — an omitted, empty, or blank-only values array is rejected rather than silently matching nothing. 'isNull'/'isNotNull' take no values; omit the field (an empty array is tolerated, real values are rejected). Multiple values within a single item are OR'd. How items in the array are combined is controlled by landingPageFiltersOperator.","type":"array","items":{"type":"object","properties":{"values":{"type":"array","items":{"type":"string"}},"filterType":{"type":"string","enum":["equals","contains","startsWith","endsWith","doesNotEqual","doesNotContain","doesNotStartWith","doesNotEndWith","isNull","isNotNull"]}},"required":["filterType"]}},"landingPageFiltersOperator":{"description":"How multiple items in landingPageFilters are combined. 'or' (default) — session matches if any filter item matches. 'and' — session must match every filter item.","type":"string","enum":["or","and"]},"userBehavior":{"description":"Filter by visitor browsing behavior. Object with optional boolean flags: viewedCheckout, addedToCart, viewedProductPage, viewedCollectionPage. Set a flag to true to include only visitors who performed that action. Omit or null for flags you don't want to filter on. Multiple true flags are combined with AND logic.","type":"object","properties":{"viewedCheckout":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"addedToCart":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"viewedProductPage":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"viewedCollectionPage":{"anyOf":[{"type":"boolean"},{"type":"null"}]}}},"countryCodes":{"description":"Filter by ISO 3166-1 alpha-2 country codes (e.g. ['US', 'GB', 'CA']). Omit or pass empty array for all countries.","type":"array","items":{"type":"string"}},"countryCodesFilterType":{"description":"How countryCodes should be matched: 'include' (only visitors in the listed countries) or 'exclude' (visitors in any country except the listed ones). Defaults to 'include' when omitted. Requires countryCodes to be a non-empty array.","type":"string","enum":["include","exclude"]},"maxZScore":{"description":"Maximum Z-score threshold for outlier filtering on order revenue. Visitors with orders whose Z-score exceeds this value are excluded. Accepts number or numeric string. Null or omit to disable outlier filtering.","anyOf":[{"anyOf":[{"type":"number"},{"type":"string"}]},{"type":"null"}]},"triggeredCustomEvents":{"description":"Filter by custom event identifiers that visitors must have triggered. Requires customEventsFilterType to be set to control matching logic. Has no effect without customEventsFilterType. Pull merchant-defined identifiers from the GET https://api.intelligems.io/v25-10-beta/experiences/{experienceId} endpoint > experienceCustomMetrics > customEvent > identifier field. Three additional identifiers are always available with no Events Manager setup, synthesized server-side rather than looked up from a stored custom event: 'checkout_block_viewed', 'onsite_upsell_viewed', 'post_purchase_offer_viewed'. Note: the analytics UI's filter drawer groups these three visually under 'Reached Checkout Stage' alongside the checkout funnel-stage options, but they are NOT reachedCheckoutStage values — pass them here, in triggeredCustomEvents, not in reachedCheckoutStage.","type":"array","items":{"type":"string"}},"customEventsFilterType":{"description":"How triggeredCustomEvents should be matched: 'any' (visitor triggered at least one), 'all' (visitor triggered every listed event), 'none' (visitor triggered none of the listed events). Requires triggeredCustomEvents to be a non-empty array.","type":"string","enum":["any","all","none"]},"reachedCheckoutStage":{"description":"Filter to visitors who reached at least the given checkout stage. Options: 'started', 'contact_info_submitted', 'address_info_submitted'. Omit or null to not filter by checkout stage. Note: 'checkout_block_viewed', 'onsite_upsell_viewed', and 'post_purchase_offer_viewed' are NOT valid values here for experience-level analytics — despite appearing next to these stages in the analytics UI's filter drawer, filter on them via triggeredCustomEvents instead (see that field's description).","anyOf":[{"type":"string","enum":["started","contact_info_submitted","address_info_submitted"]},{"type":"null"}]},"minNetRevenue":{"description":"Minimum order net revenue to include (inclusive). Accepts number or numeric string. Omit or null to not apply a minimum.","anyOf":[{"anyOf":[{"type":"number"},{"type":"string"}]},{"type":"null"}]},"maxNetRevenue":{"description":"Maximum order net revenue to include (inclusive). Accepts number or numeric string. Omit or null to not apply a maximum.","anyOf":[{"anyOf":[{"type":"number"},{"type":"string"}]},{"type":"null"}]},"minShippingRevenue":{"description":"Minimum shipping revenue to include (inclusive). Accepts number or numeric string. Omit or null to not apply a minimum.","anyOf":[{"anyOf":[{"type":"number"},{"type":"string"}]},{"type":"null"}]},"maxShippingRevenue":{"description":"Maximum shipping revenue to include (inclusive). Accepts number or numeric string. Omit or null to not apply a maximum.","anyOf":[{"anyOf":[{"type":"number"},{"type":"string"}]},{"type":"null"}]},"shippingMethods":{"description":"Filter by shipping method names. Only orders using one of these methods are included.","type":"array","items":{"type":"string"}},"onlyProductIds":{"description":"Filter to only include specific Shopify product IDs (numeric strings).","anyOf":[{"type":"array","items":{"type":"string"}},{"type":"null"}]},"landingPageTypes":{"description":"Filter sessions by landing page types. An array of values from: 'PDP', 'Collection', 'Content', 'Blog', 'Homepage', 'Search', 'Cart', 'Other'. Omit or null to include all landing page types.","type":"array","items":{"type":"string","enum":["PDP","Collection","Content","Blog","Homepage","Search","Cart","Other"]}},"experimentProductsOnly":{"description":"When true, only include products that are part of the experiment. Only applies when analyzing an experience/experiment.","anyOf":[{"type":"boolean"},{"type":"null"}]},"onlyProductHandles":{"description":"Filter to only include specific Shopify product handles.","anyOf":[{"type":"array","items":{"type":"string"}},{"type":"null"}]}}}},"required":["exportType"]}}}},"responses":{"200":{"description":"OK","headers":{"access-control-allow-origin":{"schema":{"type":"string"},"description":"CORS allow-origin header."},"access-control-allow-credentials":{"schema":{"type":"string"},"description":"CORS allow-credentials header."},"content-type":{"schema":{"type":"string"},"description":"Response content type."},"Timing-Allow-Origin":{"schema":{"type":"string"},"description":"Allowed origin for Timing headers."}},"content":{"application/json":{"schema":{"type":"object","properties":{"exportType":{"type":"string","enum":["orders","order_line_items","order_reconciliation"],"description":"The type of export that was generated."},"experienceId":{"type":"string","description":"The UUID of the experience."},"experienceName":{"type":"string","description":"The display name of the experience."},"url":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Presigned S3 URL to download the CSV file. Valid for 15 minutes. Null if the export timed out or failed."},"expiresIn":{"type":"number","description":"Number of seconds until the presigned URL expires. 0 if url is null."},"format":{"type":"string","const":"csv","description":"The file format of the export (always 'csv')."},"message":{"type":"string","description":"Human-readable status message."}},"required":["exportType","experienceId","experienceName","url","expiresIn","format","message"],"additionalProperties":false}}}}}}}}}
```


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://docs.intelligems.io/developer-resources/external-api/get-experience-export.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
