---
updatedAt: 2026-08-19T02:39:44.000Z
agentTools:
  projectIndex: https://docs.delivr.ai/llms.txt
---

# Update an export

Updates an export. Omitted fields are unchanged. Supply `destination` to re-point or reconfigure delivery: it is re-translated and the export's destination is updated together with the export, in one transaction. Changing `query` or `record_limit` requires `destination` too, so the export query and its destination stay in sync. The export must have exactly one destination, and its type cannot change in place (delete and recreate to switch type).


# OpenAPI definition

```json
{
  "openapi": "3.0.3",
  "info": {
    "title": "Exports",
    "description": "Create a scheduled export that delivers audience or event data to a saved integration (S3, DelivrDSP, email, Slack, HubSpot, or Salesforce).\n\nOne call creates the export and its destination together, so you never end up with an export that has nowhere to deliver. The export `query` selects what to send; the `destination` says where and in what shape, and references a saved integration by id (manage those under **Integrations**).\n\nAn export can deliver to up to 5 destinations. Add more at create time with `additional_destinations`, or add one to an existing export later with `POST /api/v1/exports/{id}/destinations`, and change one with `PUT /api/v1/exports/{id}/destinations/{destinationId}`. Each run is billed once for the data it produces, no matter how many destinations receive it; when an export's destinations use different products, the run is billed at the highest-priced one, for the largest record count any billable destination received. DelivrDSP deliveries are not billed as data.\n\n**Authentication:** organization API key (`X-Api-Key` + `X-Api-Secret`).\n\n**Base URL:** `https://api.delivr.ai`\n",
    "version": "1.0",
    "contact": {
      "name": "Delivr.ai Support",
      "url": "https://delivr.ai"
    }
  },
  "servers": [
    {
      "url": "https://api.delivr.ai",
      "description": "Production"
    }
  ],
  "security": [
    {
      "ApiKeyAuth": [],
      "ApiSecretAuth": []
    }
  ],
  "tags": [
    {
      "name": "Exports",
      "description": "Create, list, read, update, and delete exports. Create and update compose the export and its delivery destination together."
    }
  ],
  "paths": {
    "/api/v1/exports/{id}": {
      "parameters": [
        {
          "name": "id",
          "in": "path",
          "required": true,
          "description": "The export id (UUID).",
          "schema": {
            "type": "string",
            "format": "uuid"
          }
        }
      ],
      "put": {
        "operationId": "updateExport",
        "tags": [
          "Exports"
        ],
        "summary": "Update an export",
        "description": "Updates an export. Omitted fields are unchanged. Supply `destination` to re-point or reconfigure delivery: it is re-translated and the export's destination is updated together with the export, in one transaction. Changing `query` or `record_limit` requires `destination` too, so the export query and its destination stay in sync. The export must have exactly one destination, and its type cannot change in place (delete and recreate to switch type).\n",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateExportRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "The updated export and its destinations.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExportDetail"
                }
              }
            }
          },
          "400": {
            "description": "Invalid body or a failed validation: `query`/`record_limit` without `destination`, an `integration_id` outside the key's organization, an export that does not have exactly one destination, or an attempted destination type change.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid API key / secret."
          },
          "404": {
            "description": "No export with this id in the key's organization."
          },
          "409": {
            "description": "An export with this name already exists in the project.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    }
  },
  "components": {
    "securitySchemes": {
      "ApiKeyAuth": {
        "type": "apiKey",
        "in": "header",
        "name": "X-Api-Key",
        "description": "Organization API key (`dlvr_` prefixed), created in the dashboard at `https://app.delivr.ai/{org_id}/settings/api-keys`. Must be paired with the `X-Api-Secret` header."
      },
      "ApiSecretAuth": {
        "type": "apiKey",
        "in": "header",
        "name": "X-Api-Secret",
        "description": "Secret half of the organization API key, paired with `X-Api-Key`. Both headers are required on every request."
      }
    },
    "schemas": {
      "ExportQuery": {
        "type": "object",
        "description": "What to export. The server adds the destination (and `recordLimit`, if `record_limit` is supplied) into this object before saving.\n",
        "required": [
          "sourceType"
        ],
        "properties": {
          "sourceType": {
            "type": "string",
            "description": "What the export draws from, e.g. `audience`, `pixel`, `intent`."
          },
          "sourceId": {
            "type": "string",
            "description": "The id of the source (e.g. an audience id). Required for most source types."
          },
          "eventType": {
            "type": "string",
            "description": "Optional event-type filter, depending on `sourceType`."
          },
          "dateRange": {
            "type": "object",
            "description": "Optional date window.",
            "properties": {
              "start": {
                "type": "string"
              },
              "end": {
                "type": "string"
              }
            }
          },
          "audienceFilters": {
            "type": "array",
            "description": "Optional filter clauses.",
            "items": {
              "type": "object"
            }
          },
          "signalState": {
            "type": "string",
            "description": "Deliver only the audience's people in one Predictive Signals state on the latest signals day, instead of the whole audience. Only valid when `sourceType` is `audience`, and `sourceId` is then required. Omit it to export the whole audience.\n\nEach run delivers the previous UTC day's list. A run before that day is published waits for it, and a run whose day and state were already delivered is skipped. Each delivered row also carries the person's `intent_trend`, `active_days_14d` and `topic_ids`, which can be named in `fields` on any audience tier.\n\nThe destination must deliver people: S3, email, Slack, HubSpot or Salesforce records, or DelivrDSP. A run to a HubSpot activity destination (`delivers_activity`) fails. The run is billed at the Predictive Signals rate, one unit per delivered row, whatever the audience's type or tier.",
            "enum": [
              "in_market",
              "entered_market",
              "new",
              "rising",
              "steady",
              "cooling"
            ]
          }
        },
        "example": {
          "sourceType": "audience",
          "sourceId": "7d2f1e3a-4b5c-6d7e-8f90-1a2b3c4d5e6f"
        }
      },
      "ExportDestination": {
        "description": "Where and how to deliver. The `type` field selects the variant, and `integration_id` references a saved integration of that type.",
        "oneOf": [
          {
            "$ref": "#/components/schemas/S3Destination"
          },
          {
            "$ref": "#/components/schemas/DelivrDspDestination"
          },
          {
            "$ref": "#/components/schemas/EmailDestination"
          },
          {
            "$ref": "#/components/schemas/SlackDestination"
          },
          {
            "$ref": "#/components/schemas/HubspotDestination"
          },
          {
            "$ref": "#/components/schemas/SalesforceDestination"
          }
        ]
      },
      "FileFields": {
        "type": "object",
        "description": "Fields shared by the file-delivery destinations (S3, email, Slack).",
        "properties": {
          "record_type": {
            "type": "string",
            "description": "What each output record encodes. The value valid for a given export depends on its source (e.g. `contacts_only` for an audience export, `raw_events` for a pixel or DSP event export). `match_key` delivers a single identifier column and no attribute columns, for activation on a platform with no Delivr connector; see `match_key`.",
            "enum": [
              "hem",
              "uid2",
              "raw_events",
              "raw_logs",
              "contacts_only",
              "ip",
              "domain",
              "maid",
              "match_key"
            ]
          },
          "match_key": {
            "type": "string",
            "description": "Which identifier a `match_key` export delivers. Required when `record_type` is `match_key` and refused otherwise; `fields` and `array_transform` are refused alongside it. Audience sources only: a run on any other source fails.\n\n`hem` is the SHA-256 lowercase hashed email, in a `sha256_lc_hem` column. `uid2` is that same value converted to a UID2 token, in a `uid2` column. `maid` is a device advertising id (mobile or CTV) tied to the person, and `household_ip` is the person's household network, an IPv4 address or an IPv6 /64, each in a column of the same name. A file holds one row per distinct value; people with no value are left out.",
            "enum": [
              "hem",
              "uid2",
              "maid",
              "household_ip"
            ]
          },
          "file_format": {
            "type": "string",
            "enum": [
              "csv",
              "json",
              "jsonl",
              "parquet"
            ]
          },
          "fields": {
            "type": "array",
            "description": "Output column allow-list. Omit to use the default set for the record type.",
            "items": {
              "type": "string"
            }
          },
          "array_transform": {
            "type": "string",
            "description": "How to render multi-value fields. Defaults to `first`.",
            "enum": [
              "first",
              "json",
              "comma",
              "pipe",
              "semicolon",
              "count"
            ]
          },
          "filename_template": {
            "type": "string"
          }
        }
      },
      "FileWriteOptions": {
        "type": "object",
        "description": "File-write options supported by S3 and email destinations (not Slack).",
        "properties": {
          "emit_empty_file": {
            "type": "boolean",
            "description": "Deliver a file even when there are zero records. Defaults to false."
          },
          "combine_output": {
            "type": "boolean",
            "description": "Combine a multi-window run into one file. Not allowed with `parquet`. Defaults to false."
          }
        }
      },
      "S3Destination": {
        "allOf": [
          {
            "type": "object",
            "required": [
              "type",
              "integration_id",
              "record_type",
              "file_format"
            ],
            "properties": {
              "type": {
                "type": "string",
                "enum": [
                  "s3"
                ]
              },
              "integration_id": {
                "type": "string",
                "format": "uuid",
                "description": "A saved `s3` integration."
              },
              "prefix": {
                "type": "string",
                "description": "Object key prefix (folder path) within the bucket."
              },
              "path_format": {
                "type": "string",
                "enum": [
                  "flat",
                  "date",
                  "project"
                ]
              }
            }
          },
          {
            "$ref": "#/components/schemas/FileFields"
          },
          {
            "$ref": "#/components/schemas/FileWriteOptions"
          }
        ]
      },
      "EmailDestination": {
        "allOf": [
          {
            "type": "object",
            "required": [
              "type",
              "integration_id",
              "record_type",
              "file_format"
            ],
            "properties": {
              "type": {
                "type": "string",
                "enum": [
                  "email"
                ]
              },
              "integration_id": {
                "type": "string",
                "format": "uuid",
                "description": "A saved `email` integration. Recipients are configured on the integration."
              },
              "subject_template": {
                "type": "string",
                "description": "Optional email subject template."
              }
            }
          },
          {
            "$ref": "#/components/schemas/FileFields"
          },
          {
            "$ref": "#/components/schemas/FileWriteOptions"
          }
        ]
      },
      "SlackDestination": {
        "allOf": [
          {
            "type": "object",
            "required": [
              "type",
              "integration_id",
              "record_type",
              "file_format"
            ],
            "properties": {
              "type": {
                "type": "string",
                "enum": [
                  "slack"
                ]
              },
              "integration_id": {
                "type": "string",
                "format": "uuid",
                "description": "A saved `slack` integration. The channel is configured on the integration."
              }
            }
          },
          {
            "$ref": "#/components/schemas/FileFields"
          }
        ]
      },
      "HubspotDestination": {
        "type": "object",
        "description": "Deliver export output to a HubSpot list, or deliver intent activity onto HubSpot timelines. The target list can be set here or defaulted on the integration.",
        "required": [
          "type"
        ],
        "properties": {
          "type": {
            "type": "string",
            "enum": [
              "hubspot"
            ]
          },
          "integration_id": {
            "type": "string",
            "format": "uuid",
            "description": "A saved `hubspot` integration."
          },
          "record_type": {
            "type": "string",
            "description": "Required for a record export. Omitted for an activity destination, which delivers no records.",
            "enum": [
              "hem",
              "uid2",
              "raw_events",
              "raw_logs",
              "contacts_only",
              "ip",
              "domain",
              "maid"
            ]
          },
          "fields": {
            "type": "array",
            "description": "Output column allow-list. Omit to use the destination default.",
            "items": {
              "type": "string"
            }
          },
          "array_transform": {
            "type": "string",
            "enum": [
              "first",
              "json",
              "comma",
              "pipe",
              "semicolon",
              "count"
            ]
          },
          "list_id": {
            "type": "string",
            "description": "Target HubSpot list id. Set together with `list_name`."
          },
          "list_name": {
            "type": "string",
            "description": "Target HubSpot list name. Set together with `list_id`."
          },
          "delivers_activity": {
            "type": "boolean",
            "description": "Deliver intent activity onto contact and company timelines instead of syncing records. Set at create time; omit for a record export. An activity destination delivers no records, so `fields`, `array_transform`, `list_id` and `list_name` do not apply and are rejected alongside it."
          }
        }
      },
      "SalesforceDestination": {
        "type": "object",
        "description": "Deliver export output to a Salesforce campaign, optionally mapping source scores to campaign member statuses.",
        "required": [
          "type",
          "record_type"
        ],
        "properties": {
          "type": {
            "type": "string",
            "enum": [
              "salesforce"
            ]
          },
          "integration_id": {
            "type": "string",
            "format": "uuid",
            "description": "A saved `salesforce` integration."
          },
          "record_type": {
            "type": "string",
            "enum": [
              "hem",
              "uid2",
              "raw_events",
              "raw_logs",
              "contacts_only",
              "ip",
              "domain",
              "maid"
            ]
          },
          "fields": {
            "type": "array",
            "description": "Output column allow-list. Omit to use the destination default.",
            "items": {
              "type": "string"
            }
          },
          "array_transform": {
            "type": "string",
            "enum": [
              "first",
              "json",
              "comma",
              "pipe",
              "semicolon",
              "count"
            ]
          },
          "list_id": {
            "type": "string",
            "description": "Target Salesforce campaign id. Set together with `list_name`."
          },
          "list_name": {
            "type": "string",
            "description": "Target Salesforce campaign name. Set together with `list_id`."
          },
          "campaign_member_status": {
            "type": "string",
            "minLength": 1,
            "maxLength": 255,
            "description": "A fixed campaign member status applied to added members."
          },
          "campaign_member_status_bands": {
            "type": "array",
            "maxItems": 32,
            "description": "Maps source score ranges to campaign member statuses.",
            "items": {
              "$ref": "#/components/schemas/CampaignMemberStatusBand"
            }
          }
        }
      },
      "CampaignMemberStatusBand": {
        "type": "object",
        "description": "Maps a source score range to a Salesforce campaign member status. At least one of `min` or `max` is required.",
        "required": [
          "score_field",
          "status"
        ],
        "properties": {
          "score_field": {
            "type": "string",
            "minLength": 1,
            "description": "Source field whose numeric value selects the band."
          },
          "min": {
            "type": "number",
            "description": "Inclusive lower bound of the band."
          },
          "max": {
            "type": "number",
            "description": "Inclusive upper bound of the band."
          },
          "status": {
            "type": "string",
            "minLength": 1,
            "maxLength": 255,
            "description": "Campaign member status applied when the score falls in this band."
          }
        }
      },
      "DelivrDspDestination": {
        "type": "object",
        "description": "Activate an audience to DelivrDSP.",
        "required": [
          "type",
          "integration_id",
          "identifier",
          "mode"
        ],
        "properties": {
          "type": {
            "type": "string",
            "enum": [
              "delivrdsp"
            ]
          },
          "integration_id": {
            "type": "string",
            "format": "uuid",
            "description": "A saved `delivrdsp` integration."
          },
          "identifier": {
            "type": "string",
            "description": "What the DelivrDSP audience list is built from. `hem` and `uid2` are identity tokens; `ip` is the addresses an event export's events were seen from; `domain` is a company list. `maid` (each member's device advertising ids, mobile and CTV) and `household_ip` (each member's household network, an IPv4 address or an IPv6 /64) are resolved per member of an audience source and run in `cumulative` mode only. A `household_ip` list is sent with its IPv4 networks only, skipping IPv6 ones, and needs at least 1,000 of them; a smaller list fails the run.",
            "enum": [
              "hem",
              "uid2",
              "ip",
              "domain",
              "maid",
              "household_ip"
            ]
          },
          "mode": {
            "type": "string",
            "description": "Refresh strategy. `incremental` is not available for audience sources.",
            "enum": [
              "cumulative",
              "incremental",
              "regenerative"
            ]
          },
          "lookback_days": {
            "type": "integer",
            "minimum": 1,
            "maximum": 365,
            "description": "Only valid in `incremental` mode."
          },
          "hem_scope": {
            "type": "string",
            "enum": [
              "matched",
              "all_profile"
            ],
            "description": "Only valid for the `hem` and `uid2` identifiers. Defaults to `all_profile`."
          },
          "use_visitor_hem": {
            "type": "boolean",
            "description": "Pixel sources only. Overrides `hem_scope` when true."
          },
          "list_name": {
            "type": "string",
            "description": "Defaults to the export name."
          }
        }
      },
      "Export": {
        "type": "object",
        "required": [
          "id",
          "organization_id",
          "project_id",
          "name",
          "query",
          "status",
          "enabled",
          "created_at",
          "updated_at"
        ],
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "organization_id": {
            "type": "string",
            "format": "uuid"
          },
          "project_id": {
            "type": "string",
            "format": "uuid"
          },
          "name": {
            "type": "string"
          },
          "description": {
            "type": "string"
          },
          "query": {
            "type": "object",
            "description": "The stored query, including the resolved `destination`."
          },
          "schedule": {
            "type": "string"
          },
          "status": {
            "type": "string"
          },
          "enabled": {
            "type": "boolean"
          },
          "last_run_at": {
            "type": "string",
            "description": "Most recent run time (UTC, RFC3339)."
          },
          "last_run_status": {
            "type": "string"
          },
          "end_date": {
            "type": "string",
            "description": "`YYYY-MM-DD` (UTC)."
          },
          "run_time": {
            "type": "string",
            "description": "`HH:MM` in `run_timezone`."
          },
          "run_day_of_week": {
            "type": "integer",
            "minimum": 0,
            "maximum": 6
          },
          "run_timezone": {
            "type": "string",
            "description": "IANA time zone the schedule is local to. Absent for a schedule stored in UTC."
          },
          "archived_at": {
            "type": "string"
          },
          "auto_disabled_reason": {
            "type": "string",
            "description": "Why the system paused the export, e.g. `integration_connection_failed`."
          },
          "created_at": {
            "type": "string",
            "description": "Creation timestamp (UTC, RFC3339)."
          },
          "updated_at": {
            "type": "string",
            "description": "Last-update timestamp (UTC, RFC3339)."
          }
        }
      },
      "ExportDestinationObject": {
        "type": "object",
        "required": [
          "id",
          "organization_id",
          "project_id",
          "export_id",
          "type",
          "status",
          "enabled",
          "primary"
        ],
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "organization_id": {
            "type": "string",
            "format": "uuid"
          },
          "project_id": {
            "type": "string",
            "format": "uuid"
          },
          "export_id": {
            "type": "string",
            "format": "uuid"
          },
          "type": {
            "type": "string",
            "description": "`s3`, `delivrdsp`, `email`, `slack`, `hubspot`, or `salesforce`."
          },
          "name": {
            "type": "string"
          },
          "config": {
            "type": "object",
            "description": "The resolved delivery configuration."
          },
          "status": {
            "type": "string"
          },
          "enabled": {
            "type": "boolean"
          },
          "created_at": {
            "type": "string",
            "description": "Creation timestamp (UTC, RFC3339)."
          },
          "updated_at": {
            "type": "string",
            "description": "Last-update timestamp (UTC, RFC3339)."
          },
          "primary": {
            "type": "boolean",
            "description": "True for the export's original, earliest-created destination."
          },
          "destination": {
            "allOf": [
              {
                "$ref": "#/components/schemas/ExportDestination"
              }
            ],
            "description": "An added destination's settings in the shape `PUT /api/v1/exports/{id}/destinations/{destinationId}` accepts. Absent on the original destination, whose settings are the export's own. Exactly one destination on an export is primary."
          }
        }
      },
      "UpdateExportRequest": {
        "type": "object",
        "description": "Fields to change. Omitted fields are unchanged. Include `destination` to change delivery; `query` and `record_limit` require it.",
        "properties": {
          "name": {
            "type": "string"
          },
          "description": {
            "type": "string"
          },
          "query": {
            "$ref": "#/components/schemas/ExportQuery"
          },
          "record_limit": {
            "type": "object",
            "properties": {
              "maxRecords": {
                "type": "integer",
                "minimum": 0,
                "maximum": 10000000
              },
              "failMode": {
                "type": "string",
                "default": "soft",
                "description": "See `failMode` on the create request. Anything other than `hard` or `soft` is refused with 400.\n\n`record_limit` is replaced, not merged: sending it with only `maxRecords` drops a `failMode` set earlier, back to the default `soft`. Resend both to keep `hard`.",
                "enum": [
                  "soft",
                  "hard"
                ]
              }
            }
          },
          "schedule": {
            "type": "string",
            "enum": [
              "one_time",
              "daily",
              "weekly"
            ]
          },
          "status": {
            "type": "string"
          },
          "enabled": {
            "type": "boolean"
          },
          "end_date": {
            "type": "string"
          },
          "run_time": {
            "type": "string"
          },
          "run_day_of_week": {
            "type": "integer",
            "minimum": 0,
            "maximum": 6
          },
          "run_timezone": {
            "type": "string",
            "description": "IANA time zone for `run_time` and `run_day_of_week`. Omit to keep the current zone."
          },
          "destination": {
            "$ref": "#/components/schemas/ExportDestination"
          }
        }
      },
      "ExportDetail": {
        "type": "object",
        "required": [
          "export",
          "destinations"
        ],
        "properties": {
          "export": {
            "$ref": "#/components/schemas/Export"
          },
          "destinations": {
            "type": "array",
            "description": "The export's delivery destinations.",
            "items": {
              "$ref": "#/components/schemas/ExportDestinationObject"
            }
          }
        }
      },
      "ErrorResponse": {
        "type": "object",
        "required": [
          "error"
        ],
        "properties": {
          "error": {
            "type": "string",
            "description": "Error message."
          }
        }
      }
    }
  }
}
```