Pedro Afonso
10/08/2025, 9:28 AMChiranjeet Mishra
10/08/2025, 8:00 PMCreateCustomLLMCredentialDTO or CreateWebhookCredentialDTO payload. Here’s a brief example for creating a custom LLM credential:
json
{
"provider": "custom-llm",
"apiKey": "your-api-key",
"authenticationPlan": {
"type": "oauth2",
"url": "https://your-url.com/your/path/token",
"clientId": "your-client-id",
"clientSecret": "your-client-secret"
},
"name": "your-credential-name"
}
Similarly, for webhooks, you can use:
json
{
"provider": "webhook",
"authenticationPlan": {
"type": "oauth2",
"url": "https://your-url.com/your/path/token",
"clientId": "your-client-id",
"clientSecret": "your-client-secret"
},
"name": "your-webhook-name"
}
You can find detailed guidance on creating custom credentials in the changelog links for [December 6, 2024](https://docs.vapi.ai/changelog/2024/12/6) and [August 30, 2025](https://docs.vapi.ai/changelog/2025/8/30).Pedro Afonso
10/09/2025, 10:45 AMChiranjeet Mishra
10/11/2025, 12:00 AM{ "token": "your-secure-token", "headerName": "Authorization", // customizable "bearerPrefixEnabled": true // optional, defaults to true}
3. For tool authentication:
- Use ApiRequestTool.credentialId to link custom credentials
- Avoids embedding sensitive auth details in tool configs
4. For webhook credentials:
- Configure via WebhookCredential.authenticationPlan
- Supports OAuth2, HMAC, or Bearer authentication
However, the documentation doesn't specifically address:
- Token refresh flows
- Expired token handling
- Deletion of custom authorization headers