---
title: "Get an embedded url for the given user identifier."
method: POST
path: "/v1/get_embedded_url"
tags: ["v1", "Embedded"]
---

# Get an embedded url for the given user identifier.

`POST /v1/get_embedded_url`

## Request body

- EmbeddedUrlRequest
  - `user_identifier` string, required — Embedded user identifier
  - `canvas_id` string, nullable — Canvas ID for dashboard embeds
  - `doc_id` string, nullable — Doc ID for doc embeds
  - `drive_file` string, nullable — Drive path to the data-app .embedded.html artifact. Required when embed_type is 'data_app'.
  - `required_filters` union[] — Filters enforced for all supported datasets in this embed session
    - union
      - V1LoadRequestQueryFilterBase
        - `member` string, nullable — Dimension or measure to be used in the filter, e.g., `stories.isDraft`. Differentiates between filtering dimensions and filtering measures.
        - `operator` 'equals' | 'notEquals' | 'contains' | 'notContains' | 'startsWith' | 'notStartsWith' | 'endsWith' | 'notEndsWith' | 'gt' | 'gte' | 'lt' | 'lte' | 'set' | 'notSet' | 'inDateRange' | 'notInDateRange' | 'beforeDate' | 'afterDate' | 'measureFilter', nullable — Operator to apply in the filter. Some operators are exclusive to measures, while others depend on the dimension type.
        - `values` string[], nullable — List of values for the filter, provided as strings. For dates, use the `YYYY-MM-DD` format.
      - V1LoadRequestQueryFilterLogicalOr
        - `or` union[], nullable — List of filter items combined with logical OR
          - union
            - V1LoadRequestQueryFilterBase
              - …
            - V1LoadRequestQueryFilterLogicalOr — recursive
            - V1LoadRequestQueryFilterLogicalAnd
              - …
      - V1LoadRequestQueryFilterLogicalAnd
        - `and` union[], nullable — List of filter items combined with logical AND
          - union
            - V1LoadRequestQueryFilterBase
              - …
            - V1LoadRequestQueryFilterLogicalOr
              - …
            - V1LoadRequestQueryFilterLogicalAnd — recursive
  - `redirect_query_params` string, nullable — Optional query params for redirect URL
  - `embed_type` 'dashboard' | 'route' | 'canvas' | 'doc' | 'data_app', nullable — Embed target type
  - `clear_session` boolean, nullable — Whether to clear prior auth session
  - `timestamp` integer, nullable — Optional timestamp for request signing
  - `route` string, nullable — Route path for route embeds
  - `expires_in` integer, nullable — Seconds until the embed token expires. Only used when embed_type is 'data_app'. Defaults to 86400 (24h). Min 60, max 2592000 (30d).
  - `allowed_hosts` string[], nullable — Hostnames allowed to embed the iframe, set as Content-Security-Policy frame-ancestors. Default is allow-all ('*'). Only used when embed_type is 'data_app'.

## Response `200`

Success

- EmbeddedUrlResponse
  - `url` string, required — Embed URL (Supabase magic link for docs, signed direct URL for data apps)
  - `expires_at` string, date-time, nullable — Timestamp when the token expires; only populated for data_app embeds

## Other responses

- `422` — Validation Error

---

[API](https://skmtc.dev/definite/apis/defapi.md) · [All operations](https://skmtc.dev/definite/apis/defapi/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/definite/defapi/revisions/5ea378187147/schema)
