Voisnap Docs
Guides

Export & Import Agents

Move an agent (with its tools, data, knowledge base, channels and SSRF allowlist) between tenants or environments — what's carried, what's stripped, and the post-import readiness report.

Export & Import Agents

Export bundles an agent and its dependencies into a portable .zip, and import recreates it in another tenant or environment. Use it to promote an agent from staging to production, clone a template across clients, or back up a configuration.


What's in a bundle

A bundle is a .zip containing manifest.json (version, source tenant/agency, source data-residency region), agent.json (the full agent config), and kb/ (knowledge-base document blobs). Optional addons are selected at export time:

AddonContents
ToolsTool definitions + their integration bindings
DataFilesEmbedded agent data files
KnowledgeBaseKB documents (blobs) + embedding metadata
ParameterDefinitions / ParameterGroupsCollected-parameter config
WidgetEmbed / WidgetDemoPageWidget allow-list + demo-page settings
Goals / Hooks / MetadataAgent goals, lifecycle hooks, metadata
ChannelConfigurationsChannel shells referenced by the agent's enabled channels
SsrfAllowlistSSRF allowlist entries for the agent's webhook-tool hosts

Secrets are never exported

Bundles are safe to move between environments because all credentials are stripped:

  • Integration secrets (API keys, OAuth client/refresh/access tokens, basic-auth, custom header values) — imported integrations are created without credentials.
  • Channel credentials (Twilio auth tokens, SIP/email passwords, WhatsApp/Slack/Telegram tokens) are tenant-scoped — channel configs import as shells (numbers/SIDs/hosts kept, secrets blank).
  • Webhook signing secret — never carried; a fresh secret is generated on import and returned once in the result.

Knowledge-base vectors are not carried either — documents are re-indexed on the target tenant with its embedding model.


Exporting

# Preview what's available
GET /api/v1/agents/{id}/export/preview
 
# Download the bundle (all addons, or a comma-separated subset)
GET /api/v1/agents/{id}/export?addons=Tools,KnowledgeBase,ChannelConfigurations

Importing

Import is two steps — preview the bundle, then commit:

POST /api/v1/agents/import/preview      # multipart: file=<bundle.zip>  → { uploadId, preview }
POST /api/v1/agents/import/{uploadId}/commit
  { "addons": ["Tools","KnowledgeBase"], "overrideExistingTools": false,
    "overrideExistingIntegrations": false, "renameTo": null }

The imported agent is always created inactive so you can finish configuration before it goes live.


Post-import readiness report

The commit result includes a structured readiness report plus free-text warnings. In the console it renders as a panel after import; via the API it's the readiness array and requiresConfiguration flag. It surfaces everything you must do before activating:

KindAction
IntegrationAdd credentials for each integration created without secrets
ChannelReconfigure provider tokens/numbers for each recreated channel
WebhookUpdate your receiver with the new signing secret (webhookSecret, shown once)
KnowledgeBaseDocuments are queued for re-indexing — semantic search is unavailable until it finishes
DataResidencyThe source region differs from this tenant's — verify compliance

The result also reports channelConfigurationsImported, ssrfAllowlistEntriesImported, and knowledgeBaseDocumentsQueuedForIndexing.

Region note. Provider endpoints resolve at runtime from the target tenant's data-residency region. A cross-region import silently changes where conversations and recordings are processed — the readiness report flags this when the regions differ.


Bundle versions

The current bundle version is 3 (adds agent flags, KB embedding metadata, channel/SSRF addons, and the source region). Older v1/v2 bundles still import.

On this page