diff --git a/packages/nodes-base/credentials/DeepLApi.credentials.ts b/packages/nodes-base/credentials/DeepLApi.credentials.ts index fece90546b..625d3b7d43 100644 --- a/packages/nodes-base/credentials/DeepLApi.credentials.ts +++ b/packages/nodes-base/credentials/DeepLApi.credentials.ts @@ -11,5 +11,21 @@ export class DeepLApi implements ICredentialType { type: 'string' as NodePropertyTypes, default: '', }, + { + displayName: 'API Plan', + name: 'apiPlan', + type: 'options' as NodePropertyTypes, + options: [ + { + name: 'Pro Plan', + value: 'pro', + }, + { + name: 'Free Plan', + value: 'free', + }, + ], + default: 'pro', + }, ]; } diff --git a/packages/nodes-base/nodes/DeepL/GenericFunctions.ts b/packages/nodes-base/nodes/DeepL/GenericFunctions.ts index 0baa69665a..99b4a96132 100644 --- a/packages/nodes-base/nodes/DeepL/GenericFunctions.ts +++ b/packages/nodes-base/nodes/DeepL/GenericFunctions.ts @@ -22,6 +22,15 @@ export async function deepLApiRequest( headers: IDataObject = {}, ) { + const proApiEndpoint = 'https://api.deepl.com/v2'; + const freeApiEndpoint = 'https://api-free.deepl.com/v2'; + + const credentials = this.getCredentials('deepLApi'); + + if (credentials === undefined) { + throw new NodeOperationError(this.getNode(), 'No credentials got returned!'); + } + const options: OptionsWithUri = { headers: { 'Content-Type': 'application/json', @@ -29,7 +38,7 @@ export async function deepLApiRequest( method, body, qs, - uri: uri || `https://api.deepl.com/v2${resource}`, + uri: uri || `${credentials.apiPlan === 'pro' ? proApiEndpoint : freeApiEndpoint}${resource}`, json: true, }; @@ -42,12 +51,6 @@ export async function deepLApiRequest( delete options.body; } - const credentials = this.getCredentials('deepLApi'); - - if (credentials === undefined) { - throw new NodeOperationError(this.getNode(), 'No credentials got returned!'); - } - options.qs.auth_key = credentials.apiKey; return await this.helpers.request!(options);