---
title: "Create integration store (free and paid plans)"
method: POST
path: "/v1/storage/stores/integration/direct"
tags: ["integrations"]
---

# Create integration store (free and paid plans)

`POST /v1/storage/stores/integration/direct`

Creates an integration store with automatic billing plan handling. For free resources, omit `billingPlanId` to auto-discover free plans. For paid resources, provide a `billingPlanId` from the billing plans endpoint.

## Query parameters

- `teamId` string
- `slug` string

## Request body

- object
  - `name` string, required — Human-readable name for the storage resource
  - `integrationConfigurationId` string, required — ID of your integration configuration. Get this from GET /v1/integrations/configurations
  - `integrationProductIdOrSlug` union, required — ID or slug of the integration product. Get available products from GET /v1/integrations/configuration/{id}/products
    - string — Product ID format
    - string — Product slug format
  - `metadata` object — Optional key-value pairs for resource metadata
  - `externalId` string — Optional external identifier for tracking purposes
  - `protocolSettings` object — Protocol-specific configuration settings
  - `source` 'marketplace' | 'deploy-button' | 'external' | 'v0' | 'resource-claims' | 'cli' | 'oauth' | 'backoffice' | 'import-recommended-integrations' — Source of the store creation request
  - `billingPlanId` string — ID of the billing plan for paid resources. Get available plans from GET /integrations/integration/{id}/products/{productId}/plans. If not provided, automatically discovers free billing plans.
  - `paymentMethodId` string — Payment method ID for paid resources. Optional - uses default payment method if not provided.
  - `prepaymentAmountCents` number — Amount in cents for prepayment billing plans. Required only for prepayment plans with variable amounts.

## Response `200`

- object
  - `store` object, nullable, required
    - `projectsMetadata` object[], required
      - `id` string, required
      - `projectId` string, required
      - `name` string, required
      - `framework` 'actix-web' | 'angular' | 'ash' | 'astro' | 'axum' | 'blitzjs' | 'brunch' | 'bun' | 'container' | 'create-react-app' | 'django' | 'docusaurus' | 'docusaurus-2' | 'dojo' | 'eleventy' | 'elysia' | 'ember' | 'eve' | 'express' | 'fastapi' | 'fasthtml' | 'fastify' | 'flask' | 'gatsby' | 'go' | 'gridsome' | 'h3' | 'hexo' | 'hono' | 'hugo' | 'hydrogen' | 'ionic-angular' | 'ionic-react' | 'jekyll' | 'koa' | 'mastra' | 'middleman' | 'nestjs' | 'nextjs' | 'nitro' | 'node' | 'nuxtjs' | 'parcel' | 'polymer' | 'preact' | 'python' | 'react-router' | 'redwoodjs' | 'remix' | 'ruby' | 'rust' | 'saber' | 'sanity' | 'sanity-v2' | 'sapper' | 'scully' | 'services' | 'solidstart' | 'solidstart-1' | 'stencil' | 'storybook' | 'svelte' | 'sveltekit' | 'sveltekit-1' | 'tanstack-start' | 'tanstack-start-lovable' | 'umijs' | 'vite' | 'vitepress' | 'vue' | 'vuepress' | 'xmcp' | 'zola' | 'null', nullable
      - `latestDeployment` string
      - `environments` string[], required
      - `envVarPrefix` string, nullable, required
      - `environmentVariables` string[], required
      - `deployments` object
        - `required` false | true, required
        - `actions` object[], required
          - `slug` string, required
          - `environments` string[], required
      - `makeEnvVarsSensitive` false | true
    - `projectFilter` object
      - `git` object
        - `providers` union, required
          - string[]
          - '*'
        - `owners` string[]
        - `repos` string[]
    - `totalConnectedProjects` number
    - `usageQuotaExceeded` false | true, required
    - `status` 'available' | 'error' | 'initializing' | 'limits-exceeded-suspended' | 'limits-exceeded-suspended-store-count' | 'onboarding' | 'suspended' | 'uninstalled' | 'null', nullable, required
    - `ownership` 'linked' | 'owned' | 'sandbox'
    - `capabilities` object
      - `mcp` false | true
      - `mcpReadonly` false | true
      - `sso` false | true
      - `billable` false | true
      - `transferable` false | true
      - `secretsSync` false | true
      - `secretRotation` union
        - object
          - `maxDelayHours` number, required
        - false
      - `projects` false | true
      - `v0` false | true
      - `autoSensitive` false | true
      - `agentTools` false | true
    - `metadata` object
    - `externalResourceId` string, required
    - `externalResourceStatus` 'error' | 'onboarding' | 'pending' | 'ready' | 'resumed' | 'suspended' | 'uninstalled' | 'null', nullable
    - `directPartnerConsoleUrl` string
    - `product` object, required
      - `id` string
      - `name` string
      - `slug` string
      - `iconUrl` string
      - `capabilities` object
        - `mcp` false | true
        - `mcpReadonly` false | true
        - `sso` false | true
        - `billable` false | true
        - `transferable` false | true
        - `secretsSync` false | true
        - `secretRotation` union
          - object
            - `maxDelayHours` number, required
          - false
        - `sandbox` false | true
        - `linking` false | true
        - `projects` false | true
        - `v0` false | true
        - `importResource` false | true
        - `connectedImportResource` false | true
        - `nativeImportResource` false | true
        - `databaseUI` false | true
        - `v0Flavors` false | true
        - `autoSensitive` false | true
        - `agentTools` false | true
      - `shortDescription` string
      - `metadataSchema` object
        - `type` 'object', required
        - `properties` object, required
        - `required` string[]
        - `ui:order` string[]
      - `resourceLinks` object[]
        - `href` string, required
        - `title` string, required
      - `tags` string[]
      - `projectConnectionScopes` string[]
      - `showSSOLinkOnProjectConnection` false | true
      - `disableResourceRenaming` false | true
      - `resourceTitle` string — Custom resource title to display during installation and configuration. If not provided, defaults to protocol-based defaults.
      - `agentSkills` string[] — URLs to skills/guides for how AI agents should use this product. Providers can specify these to help agents understand how to interact with their integration.
      - `repl` object
        - `enabled` false | true, required
        - `supportsReadOnlyMode` false | true, required
        - `welcomeMessage` string
      - `guides` object[]
        - `framework` string, required
        - `title` string, required
        - `steps` object[], required
          - `title` string, required
          - `content` string, required
          - `actions` object[]
            - `type` 'add_drain' | 'configure_project_connections' | 'connect_to_project', required
      - `integration` object, required
        - `id` string, required
        - `name` string, required
        - `slug` string, required
        - `supportsInstallationBillingPlans` false | true
        - `icon` string, required
        - `capabilities` object
          - `provisioning` false | true
          - `mcp` false | true
          - `mcpReadonly` false | true
          - `sso` false | true
          - `billable` false | true
          - `transferable` false | true
          - `templateCloneOnly` false | true
          - `checks` false | true
          - `connectedProvisioning` false | true
          - `secretRotation` union
            - object
              - …
            - false
          - `importResource` false | true
          - `connectedImportResource` false | true
          - `nativeImportResource` false | true
          - `requiresBrowserInstall` false | true
          - `v0Flavors` false | true
          - `flexCommitEligible` false | true
          - `updateConfiguration` false | true
          - `maxAllowedTeams` number
        - `flags` string[]
      - `integrationConfigurationId` string, required
      - `supportedProtocols` string[], required
      - `primaryProtocol` 'ai' | 'authentication' | 'checks' | 'experimentation' | 'logDrain' | 'messaging' | 'observability' | 'other' | 'storage' | 'traceDrain' | 'video' | 'workflow'
      - `logDrainStatus` 'disabled' | 'enabled'
    - `protocolSettings` object
      - `experimentation` object
        - `edgeConfigSyncingEnabled` false | true
        - `edgeConfigId` string
        - `globalConfigId` string
        - `globalConfigSyncingEnabled` false | true
        - `edgeConfigTokenId` string
    - `notification` object
      - `title` string, required
      - `level` 'error' | 'info' | 'warn', required
      - `message` string
      - `href` string
    - `secrets` object[], required
      - `name` string, required
      - `length` number, required
      - `frameworkPublishable` false | true
    - `billingPlan` object
      - `id` string, required
      - `type` 'prepayment' | 'subscription', required
      - `description` string, required
      - `name` string, required
      - `scope` 'installation' | 'resource', required
      - `paymentMethodRequired` false | true, required
      - `preauthorizationAmount` number
      - `initialCharge` string
      - `minimumAmount` string
      - `maximumAmount` string
      - `maximumAmountAutoPurchasePerPeriod` string
      - `cost` string
      - `details` object[]
        - `label` string, required
        - `value` string
      - `highlightedDetails` object[]
        - `label` string, required
        - `value` string
      - `quote` object[]
        - `line` string, required
        - `amount` string, required
      - `effectiveDate` string
      - `disabled` false | true
    - `secretRotationRequestedAt` number — The timestamp when secret rotation was requested.
    - `secretRotationRequestedReason` string — The reason for the secret rotation request.
    - `secretRotationRequestedBy` string — The ID of the user/team who requested the secret rotation.
    - `secretRotationCompletedAt` number — The timestamp when secret rotation was completed.
    - `parentId` string — The ID of the parent resource. Used to establish a parent-child relationship between resources, such as sandbox resources linking to their owner account resource.
    - `targets` string[] — The deployment targets that this resource is available for.

## Other responses

- `400` — One of the provided values in the request body is invalid.
- `401` — The request is not authorized.
- `402` — The account is missing a payment so payment method must be updated
- `403` — You do not have permission to access this resource.
- `404`
- `409`
- `410`
- `429`
- `500`

---

[API](https://skmtc.net/vercel/apis/api.md) · [All operations](https://skmtc.net/vercel/apis/api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/vercel/api/versions/61d1ba3f6dac/schema)
