---
title: "Create custom reports"
method: POST
path: "/custom_reports"
tags: ["Custom Reports"]
---

# Create custom reports

`POST /custom_reports`

Create one or more custom reports (GAQL for Google Ads, ShopifyQL for Shopify) and attach them to the given ELT Syncs. Batchable: pass multiple items to create the same or different reports across many ELT Syncs in a single call. Each item is processed independently, so one failing item does not affect the others.

## Request body

- CreateCustomReportsRequestDto
  - `reports` CustomReportCreateItemDto[], required — The custom reports to create. To duplicate the same report across many ELT Syncs, repeat the same name/query with a different elt_sync_id for each entry.
    - `elt_sync_id` string, required — The ID of the ELT Sync to attach the custom report to.
    - `name` string, required — The name of the custom report. Used to derive the resulting source stream name.
    - `query` string, required — The query defining the report. GAQL for Google Ads connections, ShopifyQL for Shopify connections.
  - `add_as_source_stream` boolean — Whether to also register each created report as an active source stream on its ELT Sync so it starts syncing on the next run. Defaults to true.

## Response `201`

The result of each requested custom report creation, in the same order as the request.

- CreateCustomReportsResponseDto
  - `results` CustomReportCreateResultDto[], required — One result per requested custom report.
    - `elt_sync_id` string, required — The ID of the ELT Sync the report was requested for.
    - `name` string, required — The name of the custom report, as requested.
    - `source_stream_name` string — The resulting source stream name. Present when the report was created successfully.
    - `error` CustomReportCreateErrorDto
      - `error_code` 'connection_error' | 'connection_lost_access' | 'invalid_query' | 'not_found' | 'unknown' | 'unsupported_integration', required — A machine-readable category for the error. "connection_lost_access" means the connection needs to be reauthorized before retrying.
      - `message` string, required — A human-readable message describing the error.

---

[API](https://skmtc.net/weld/apis/weld-rest-api.md) · [All operations](https://skmtc.net/weld/apis/weld-rest-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/weld/weld-rest-api/revisions/75294f591cc2/schema)
