Skip to content
Docs

Provision Resource

Required
POST/v1/installations/{installationId}/resources
Provisions a Resource. This is a synchronous operation but the provisioning can be asynchronous as the Resource does not need to be immediately available however the secrets must be known ahead of time.
Vercel calls this endpoint when a customer creates a resource. Return secrets and connection info immediately, even if full provisioning is async. This is the only resource endpoint whose response includes secrets, which become environment variables on connected projects.
/v1/installations/{installationId}/resources
const response = await fetch('/v1/installations/installationId/resources', {
method: 'POST',
headers: {
'Authorization': 'Bearer YOUR_ACCESS_TOKEN',
'Content-Type': 'application/json',
},
body: JSON.stringify({
"productId": "example_id",
"name": "Example Name",
"metadata": "value",
"billingPlanId": "example_id",
"externalId": "example_id",
"protocolSettings": {
"experimentation": {
"edgeConfigId": "example_id",
"globalConfigId": "example_id"
},
"authentication": {
"appUrls": [
{
"url": "https://example.com",
"target": "development"
}
]
}
}
}),
});
const data = await response.json();
console.log(data);
Response
{
"id": "icfg_1234567890",
"productId": "example_id",
"protocolSettings": {
"experimentation": {
"edgeConfigSyncingEnabled": "true",
"edgeConfigId": "example_id",
"globalConfigId": "example_id",
"globalConfigSyncingEnabled": "true",
"edgeConfigTokenId": "example_id"
},
"authentication": {
"appUrls": [
{
"url": "https://example.com",
"target": "development"
}
]
}
},
"billingPlan": {
"id": "icfg_1234567890",
"type": "prepayment",
"name": "Example Name",
"scope": "installation",
"description": "string",
"paymentMethodRequired": "true",
"preauthorizationAmount": "123",
"initialCharge": "string",
"minimumAmount": "100.00",
"maximumAmount": "100.00",
"maximumAmountAutoPurchasePerPeriod": "100.00",
"cost": "string",
"details": [
{
"label": "string",
"value": "string"
}
],
"highlightedDetails": [
{
"label": "string",
"value": "string"
}
],
"quote": [
{
"line": "string",
"amount": "100.00"
}
],
"effectiveDate": "2024-01-01T00:00:00Z",
"disabled": "true"
},
"name": "Example Name",
"metadata": "value",
"status": "ready",
"notification": {
"level": "info",
"title": "string",
"message": "string",
"href": "https://example.com"
},
"secrets": [
{
"name": "Example Name",
"value": "string",
"prefix": "string",
"environmentOverrides": {
"development": "string",
"preview": "string",
"production": "string"
}
}
]
}
Errors
{
"error": {
"code": "validation_error",
"message": "string",
"user": {
"message": "string",
"url": "https://example.com"
},
"fields": [
{
"key": "string",
"message": "string"
}
]
}
}
AuthorizationUser Authentication

Default authentication mechanism

installationIdstringRequired
X-Vercel-AuthstringOptional
The auth style used in the request (system, user, etc)
Idempotency-KeystringOptional
A unique key to identify a request across multiple retries

This endpoint expects an object.

productIdstringRequired
The partner-specific ID/slug of the product. Example: "redis"
namestringRequired
User-inputted name for the resource.
metadataobjectRequired
User-inputted metadata based on the registered metadata schema.
billingPlanIdstringRequired
Partner-provided billing plan. Example: "pro200"
externalIdstringOptional
An partner-provided identifier used to indicate the source of the resource provisioning. In the Deploy Button flow, the externalId will equal the external-id query parameter.
protocolSettingsobjectOptional
200Return the newly provisioned resource
idstringRequired
The partner-specific ID of the resource
productIdstringRequired
The partner-specific ID/slug of the product. Example: "redis"
protocolSettingsobjectOptional
billingPlanobjectOptional
The billing plan for the resource. If not set, the resource is billed on installation level.
namestringRequired
User-inputted name for the resource.
metadataobjectRequired
User-inputted metadata based on the registered metadata schema.
statusstringRequired
notificationobjectOptional
Resource's active notification. Example: { "level": "warn", "title": "Database is nearing maximum planned size" }
secretsarrayRequired
400Input has failed validation
errorobjectRequired
403Operation failed because the authentication is not allowed to perform this operation
errorobjectRequired
409Operation failed because of a conflict with the current state of the resource
errorobjectRequired
Provision Resource | Partner API