---
title: "Create a lookup table import"
method: POST
path: "/projects/{projectId}/warehouse-sources/imports/lookup-table"
tags: ["Warehouse Imports"]
---

# Create a lookup table import

`POST /projects/{projectId}/warehouse-sources/imports/lookup-table`

Create a new warehouse import for lookup table data.

Lookup tables allow you to enrich event and user properties with additional
attributes from your warehouse.

## Path parameters

- `projectId` integer, required

## Request body

- CreateLookupTableImportRequest
  - `import_type` 'lookup_table', required
  - `warehouse_source_id` integer, required
  - `table_params` TableParams, required — Table location parameters (structure depends on warehouse type)
  - `mixpanel_property` object, required — The Mixpanel property that this lookup table will be joined on. This defines the "Join Key" — the Mixpanel event or user property whose values will be matched against the `property_key_column_name` column in your warehouse table. For example, if your events have a property called `product_id` and your warehouse lookup table has a column `product_id` containing matching values along with enrichment columns like `product_name` and `category`, you would set: - `mixpanel_property.value` = `"product_id"` (the Mixpanel property name) - `property_key_column_name` = `"product_id"` (the warehouse column name)
    - `value` string, required — The name of the Mixpanel property to join on. This is the event or user property whose values will be matched against the lookup table's key column.
    - `resourceType` 'event' | 'user', required — Whether the join property is an event property (`event`) or a user profile property (`user`).
    - `customPropertyId` integer, nullable — Optional. If the join property is a custom property (created via Lexicon), provide its ID here. Set to `null` for standard properties.
  - `property_key_column_name` string, required — The name of the column in your warehouse table that contains the join key values. This column's values will be matched against the Mixpanel property specified in `mixpanel_property.value` to look up the corresponding row.
  - `sync_mode` 'full_sync' | 'one_time', required
  - `run_every` 0 | 3600000000000 | 86400000000000 | 604800000000000 — Sync frequency in nanoseconds. Only these values are accepted: - `0` - API-triggered only (use the manual-sync endpoint to trigger) - `3600000000000` - Hourly - `86400000000000` - Daily - `604800000000000` - Weekly
  - `databricks_params` DatabricksParams, nullable
    - `export_cluster_config` DatabricksClusterConfig, nullable
      - `spark_version` string — Spark runtime version (e.g., '15.4.x-scala2.12')
      - `node_type_id` string — Instance type for worker nodes (e.g., 'n2-standard-4' for GCP)
      - `driver_node_type_id` string, nullable — Instance type for driver node (defaults to node_type_id if not set)
      - `num_workers` integer — Fixed number of worker nodes
      - `autoscale` object, nullable — Autoscaling configuration (overrides num_workers if set)
        - `min_workers` integer
        - `max_workers` integer
      - `spark_conf` object, nullable — Spark configuration key-value pairs
      - `spark_env_vars` object, nullable — Environment variables (PYSPARK_PYTHON is always included)
      - `data_security_mode` 'USER_ISOLATION' | 'SINGLE_USER' | 'NONE' | 'LEGACY_TABLE_ACL' | 'LEGACY_PASSTHROUGH' | 'LEGACY_SINGLE_USER' | 'LEGACY_SINGLE_USER_STANDARD', nullable — Data security mode for the cluster
      - `single_user_name` string, nullable — Required if data_security_mode is SINGLE_USER
      - `custom_tags` object, nullable — Custom tags (provider=mixpanel is always added)
      - `policy_id` string, nullable — Cluster policy ID
      - `instance_pool_id` string, nullable — Instance pool ID for worker nodes
      - `driver_instance_pool_id` string, nullable — Instance pool ID for driver node
      - `enable_elastic_disk` boolean, nullable — Enable autoscaling local storage
      - `runtime_engine` 'STANDARD' | 'PHOTON', nullable — Runtime engine (STANDARD or PHOTON)
      - `aws_attributes` object, nullable — AWS-specific cluster configuration
      - `azure_attributes` object, nullable — Azure-specific cluster configuration
      - `gcp_attributes` object, nullable — GCP-specific cluster configuration
      - `init_scripts` object[], nullable — Cluster initialization scripts

## Response `200`

Success

- object
  - `status` 'ok' — "ok" if the request succeeded, "error" otherwise.
  - `results` WarehouseImportDetail
    - `id` integer
    - `import_type` 'event_sync' | 'event_stream' | 'people' | 'groups' | 'lookup_table'
    - `sync_mode` 'time_based' | 'mirror_mode' | 'full_sync' | 'one_time'
    - `created` string, date-time
    - `creator_id` integer
    - `creator_name` string
    - `creator_email` string
    - `warehouse_source_id` integer
    - `table_params` TableParams — Table location parameters (structure depends on warehouse type)
    - `paused` boolean
    - `run_every` 0 | 3600000000000 | 86400000000000 | 604800000000000 — Sync frequency in nanoseconds. Only these values are accepted: - `0` - API-triggered only (use the manual-sync endpoint to trigger) - `3600000000000` - Hourly - `86400000000000` - Daily - `604800000000000` - Weekly
    - `last_dispatch` integer, nullable
    - `is_deleted` boolean
    - `event_name` string, nullable
    - `event_column_name` string, nullable
    - `time_column_name` string, nullable
    - `user_column_name` string, nullable
    - `insert_time_column_name` string, nullable
    - `property_mappings` PropertyMappings, nullable
    - `group_key` string, nullable
    - `group_id_column` string, nullable
    - `databricks_params` DatabricksParams, nullable
      - `export_cluster_config` DatabricksClusterConfig, nullable
        - `spark_version` string — Spark runtime version (e.g., '15.4.x-scala2.12')
        - `node_type_id` string — Instance type for worker nodes (e.g., 'n2-standard-4' for GCP)
        - `driver_node_type_id` string, nullable — Instance type for driver node (defaults to node_type_id if not set)
        - `num_workers` integer — Fixed number of worker nodes
        - `autoscale` object, nullable — Autoscaling configuration (overrides num_workers if set)
          - `min_workers` integer
          - `max_workers` integer
        - `spark_conf` object, nullable — Spark configuration key-value pairs
        - `spark_env_vars` object, nullable — Environment variables (PYSPARK_PYTHON is always included)
        - `data_security_mode` 'USER_ISOLATION' | 'SINGLE_USER' | 'NONE' | 'LEGACY_TABLE_ACL' | 'LEGACY_PASSTHROUGH' | 'LEGACY_SINGLE_USER' | 'LEGACY_SINGLE_USER_STANDARD', nullable — Data security mode for the cluster
        - `single_user_name` string, nullable — Required if data_security_mode is SINGLE_USER
        - `custom_tags` object, nullable — Custom tags (provider=mixpanel is always added)
        - `policy_id` string, nullable — Cluster policy ID
        - `instance_pool_id` string, nullable — Instance pool ID for worker nodes
        - `driver_instance_pool_id` string, nullable — Instance pool ID for driver node
        - `enable_elastic_disk` boolean, nullable — Enable autoscaling local storage
        - `runtime_engine` 'STANDARD' | 'PHOTON', nullable — Runtime engine (STANDARD or PHOTON)
        - `aws_attributes` object, nullable — AWS-specific cluster configuration
        - `azure_attributes` object, nullable — Azure-specific cluster configuration
        - `gcp_attributes` object, nullable — GCP-specific cluster configuration
        - `init_scripts` object[], nullable — Cluster initialization scripts

## Other responses

- `400` — Bad request
- `401` — Unauthorized
- `403` — Forbidden

---

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