Integrations

Integrations link your own Vercel and Render accounts to deplo.ai. Vercel connects via a browser OAuth flow; Render connects with a Personal API key. These endpoints report connection status and manage both — provider tokens and keys are stored encrypted and never returned by any endpoint.

GET/api/v1/integrationsBearer token

Lists the connection status of every supported provider for the authenticated user. Always returns one entry per provider (VERCEL and RENDER); the metadata fields are null when a provider is not connected.

FieldTypeDescription
providerstringVERCEL or RENDER.
connectedbooleanWhether the connection is active.
accountNamestring | nullAccount name on the provider.
teamNamestring | nullTeam/workspace name, if the connection is team-scoped.
teamIdstring | nullProvider team id; null for personal accounts.
connectedAtstring | nullISO timestamp of when the connection was created.
request
curl https://www.deplo.in/api/v1/integrations \
  -H "Authorization: Bearer $DEPLO_TOKEN"
response · 200
{
  "integrations": [
    {
      "provider": "VERCEL",
      "connected": true,
      "accountName": "adalovelace",
      "teamName": "acme-team",
      "teamId": "team_Fx3kP9qLm2Rv8sT1",
      "connectedAt": "2026-07-30T11:02:55.000Z"
    },
    {
      "provider": "RENDER",
      "connected": false,
      "accountName": null,
      "teamName": null,
      "teamId": null,
      "connectedAt": null
    }
  ]
}

Returns the URL that starts the Vercel integration install flow for this user. Open the returned URL in a browser — Vercel handles authorization there. The optional returnTo query parameter controls where the browser lands afterwards: pass onboarding to return to onboarding; anything else returns to the integrations page. Returns 503 if the deployment has no public HTTPS URL configured.

Query paramTypeDescription
returnTostringOptional. onboarding or integrations (default).
request
curl "https://www.deplo.in/api/v1/integrations/vercel/install-url?returnTo=integrations" \
  -H "Authorization: Bearer $DEPLO_TOKEN"
response · 200
{
  "url": "https://vercel.com/integrations/deplo-ai/new?state=eyJhbGciOiJIUzI1NiIs…"
}
Vercel OAuth callback
After the user authorizes on Vercel, Vercel redirects the browser to GET /api/v1/integrations/vercel/callback — a public system endpoint that identifies the user via a signed JWT in the state parameter, stores the connection, and redirects back to the dashboard. It is browser-driven and never called directly.
DELETE/api/v1/integrations/vercelBearer token

Disconnects the user's Vercel integration.

request
curl -X DELETE https://www.deplo.in/api/v1/integrations/vercel \
  -H "Authorization: Bearer $DEPLO_TOKEN"
response · 200
{
  "disconnected": true
}

Connects Render using a Personal API key (rnd_…). The key is validated live against the Render API before being stored encrypted — invalid keys are rejected and never persisted. The raw key is never logged and never echoed back.

FieldTypeDescription
apiKeystringRequired. A Render Personal API key — see the Render integration guide.
request
curl -X POST https://www.deplo.in/api/v1/integrations/render \
  -H "Authorization: Bearer $DEPLO_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"apiKey":"rnd_xxxxxxxxxxxxxxxxxxxx"}'
response · 200
{
  "connected": true,
  "accountName": "ada@example.com",
  "teamName": "Ada's Workspace",
  "connectedAt": "2026-08-07T09:20:13.000Z"
}
response · 400
{
  "error": {
    "message": "apiKey is required."
  }
}
DELETE/api/v1/integrations/renderBearer token

Disconnects the user's Render integration.

request
curl -X DELETE https://www.deplo.in/api/v1/integrations/render \
  -H "Authorization: Bearer $DEPLO_TOKEN"
response · 200
{
  "disconnected": true
}

A deployment requires whichever providers its detected stack uses — Render for the backend, Vercel for the frontend. A backend-only repository deploys with Render alone. See the Vercel and Render guides for the dashboard flows behind these endpoints.