Skip to main content
POST
/
v2
/
translations
/
upload
PHP
declare(strict_types=1);

require 'vendor/autoload.php';

use novu;
use novu\Models\Operations;

$sdk = novu\Novu::builder()
    ->setSecurity(
        'YOUR_SECRET_KEY_HERE'
    )
    ->build();

$requestBody = new Operations\TranslationControllerUploadTranslationFilesRequestBody(
    resourceId: 'welcome-email',
    resourceType: Operations\ResourceType::Workflow,
    files: [],
);

$response = $sdk->translations->upload(
    requestBody: $requestBody
);

if ($response->uploadTranslationsResponseDto !== null) {
    // handle response
}
{
  "totalFiles": 3,
  "successfulUploads": 2,
  "failedUploads": 1,
  "errors": [
    "Invalid JSON in file: es-ES.json"
  ]
}

Authorizations

Authorization
string
header
required

API key authentication. Allowed headers-- "Authorization: ApiKey <novu_secret_key>".

Headers

idempotency-key
string

A header for idempotency purposes

Body

multipart/form-data
resourceId
string
required

The resource ID to associate localizations with. Accepts identifier or slug format

Example:

"welcome-email"

resourceType
enum<string>
required

The resource type to associate localizations with

Available options:
workflow,
layout
files
file[]
required

One or more JSON translation files. Filenames must match locale format (e.g., en_US.json, fr_FR.json). Field name can be "files" or "files[]".

Response

200 - application/json

Upload results

totalFiles
number
required

Total number of files processed

Example:

3

successfulUploads
number
required

Number of files successfully uploaded

Example:

2

failedUploads
number
required

Number of files that failed to upload

Example:

1

errors
string[]
required

List of error messages for failed uploads

Example:
["Invalid JSON in file: es-ES.json"]