---
title: "Import Resource"
method: PUT
path: "/v1/installations/{integrationConfigurationId}/resources/{resourceId}"
tags: ["marketplace"]
---

# Import Resource

`PUT /v1/installations/{integrationConfigurationId}/resources/{resourceId}`

## Request

- Base URL: `https://api.vercel.com`
- URL: `https://api.vercel.com/v1/installations/{integrationConfigurationId}/resources/{resourceId}`
- Auth: HTTP bearer

This endpoint imports (upserts) a resource to Vercel's installation. This may be needed if resources can be independently created on the partner's side and need to be synchronized to Vercel. When importing as part of the user-initiated import flow, call this endpoint before redirecting the user back to Vercel. See the [Import existing resources flow](https://vercel.com/docs/integrations/create-integration/marketplace-flows#import-existing-resources-flow) for the full contract.

## Path parameters

- `integrationConfigurationId` string, required
- `resourceId` string, required

## Request body

- object
  - `ownership` 'owned' | 'linked' | 'sandbox'
  - `productId` string, required
  - `name` string, required
  - `status` 'ready' | 'pending' | 'onboarding' | 'suspended' | 'resumed' | 'uninstalled' | 'error', required
  - `metadata` object
  - `billingPlan` object
    - `id` string, required
    - `type` 'prepayment' | 'subscription', required
    - `name` string, required
    - `description` string
    - `paymentMethodRequired` boolean
    - `cost` string
    - `details` object[]
      - `label` string, required
      - `value` string
    - `highlightedDetails` object[]
      - `label` string, required
      - `value` string
    - `effectiveDate` string
  - `notification` object
    - `level` 'info' | 'warn' | 'error', required
    - `title` string, required
    - `message` string
    - `href` string, uri
  - `extras` object
  - `secrets` object[]
    - `name` string, required
    - `value` string, required
    - `prefix` string
    - `environmentOverrides` object: A map of environments to override values for the secret, used for setting different values across deployments in production, preview, and development environments. Note: the same value will be used for all deployments in the given environment.
      - `development` string: Value used for development environment.
      - `preview` string: Value used for preview environment.
      - `production` string: Value used for production environment.
  - `customClaims` object: Custom claims embedded in the resource tokens Vercel mints for this resource.
    - `roles` string[]: Roles a deployment may request when minting a token. The selected role is emitted as the `role` claim.
    - `defaultRole` string: Role used when the deployment does not request one. Required when `roles` is set.
    - `claimRules` object[]: Ordered rules resolved at mint time. Later rules win and shallow-merge over earlier ones.
      - `when` object
        - `role` string[]: Applies only when the token is minted for one of these roles.
        - `environment` string[]: Applies only when the token is minted for one of these environments: `production`, `preview`, `development`, or a custom environment slug. A custom environment also matches `preview`.
      - `claims` object, required: Claims to set (string, number, boolean, or array of strings), shallow-merged over earlier rules and over the default claims. `null` removes a claim. Reserved claims cannot be set; `aud` and `sub` can be overridden with a string but not removed.

## Response `200`

- object
  - `name` string, required

## Other responses

- `400`: One of the provided values in the request body is invalid. One of the provided values in the request query is invalid.
- `401`: The request is not authorized.
- `403`: You do not have permission to access this resource.
- `404`
- `409`
- `410`

## Changes

- **2026-10-23** `a24f99b1631b`: 1 info
  - removed the non-success response with the status `422`
- **2026-10-15** `8939e3983223`: 2 breaking, 1 info
  - the request property `customClaims/claimRules/items/claims/additionalProperties/` became not nullable
  - removed `subschema #1, subschema #2, subschema #3` from the `customClaims/claimRules/items/claims/additionalProperties/` request property `oneOf` list
  - added `subschema #1, subschema #2` to the `customClaims/claimRules/items/claims/additionalProperties/` request property `anyOf` list
- **2026-09-24** `dd6a90982ed0`: 1 info
  - added the new optional request property `customClaims`
- **2026-09-11** `83dbc1a3d2a1`: 1 info
  - removed the non-success response with the status `429`
- **2026-07-21** `2ae10ee9d21c`: 1 info
  - added the non-success response with the status `410`

[Operation history](https://skmtc.dev/vercel/apis/vercel-api/changes/v1/installations/:integrationConfigurationId/resources/:resourceId/put.md)

---

[API](https://skmtc.dev/vercel/apis/vercel-api.md) - [All operations](https://skmtc.dev/vercel/apis/vercel-api/llms.txt) - [OpenAPI document](https://skmtc.dev/vercel/apis/vercel-api/revisions/60686c0e1f6a?raw)
