Skip to main content

Error Codes

Complete list of API error codes and their meanings. All errors follow a consistent format to help you handle them programmatically.

Error Response Format

All API errors return a consistent JSON structure:

{
"statusCode": 400,
"code": "ERR_LIMIT_001",
"message": "PDF generation exceeded maximum page limit",
"timestamp": "2025-12-09T10:30:00.000Z",
"path": "/api/attachments/generate",
"relatedInfo": {
"actualPages": 45,
"maxPages": 30,
"message": "PDF generation exceeded 30 page limit. Your PDF has 45 pages."
}
}
FieldTypeDescription
statusCodenumberHTTP status code (400, 401, 403, 404, 429, 500)
codestringUnique error code for programmatic handling
messagestringHuman-readable error message
timestampstringISO 8601 timestamp when error occurred
pathstringAPI endpoint that generated the error
relatedInfoobjectAdditional context (varies by error type)

Generation Limit Errors (ERR_LIMIT_xxx)

These errors occur when document generation exceeds "Safe Harbor" limits. All return 400 Bad Request.

info

See Limits & Quotas for complete limit documentation.

CodeErrorDescription
ERR_LIMIT_001PDF Page LimitPDF generation exceeded maximum page limit
ERR_LIMIT_002PDF Image LimitPDF contains too many images
ERR_LIMIT_003Excel Row LimitExcel generation exceeded maximum row limit
ERR_LIMIT_004Excel Sheet LimitWorkbook exceeded maximum sheet limit
ERR_LIMIT_005Excel Column LimitSheet exceeded maximum column limit
ERR_LIMIT_006File Size LimitGenerated attachment exceeds safe email size limit
ERR_LIMIT_007Loop Iteration LimitLoop exceeded maximum iteration limit
ERR_LIMIT_008Nesting DepthTemplate exceeded maximum nesting depth
ERR_LIMIT_009Component CountTemplate exceeded maximum component count

Example: PDF Page Limit Error

{
"statusCode": 400,
"code": "ERR_LIMIT_001",
"message": "PDF generation exceeded maximum page limit",
"relatedInfo": {
"actualPages": 45,
"maxPages": 30,
"message": "PDF generation exceeded 30 page limit. Your PDF has 45 pages."
}
}

Example: Loop Iteration Error

{
"statusCode": 400,
"code": "ERR_LIMIT_007",
"message": "Loop exceeded maximum iteration limit",
"relatedInfo": {
"actualIterations": 2500,
"maxIterations": 1000,
"loopId": "items",
"message": "Loop \"items\" has 2,500 items but maximum is 1,000. Consider pagination or splitting data."
}
}

Authentication Errors (ERR_AUTH_xxx)

CodeHTTPDescription
ERR_AUTH_001401You are not authorized to access this resource
ERR_AUTH_002401Invalid email or password
ERR_AUTH_003401Your session has expired. Please login again
ERR_AUTH_004401Invalid authentication token
ERR_AUTH_005403You do not have permission to perform this action
ERR_AUTH_006403Please verify your email address before performing this action
ERR_AUTH_007400Invalid or expired verification token
ERR_AUTH_008400Verification token has expired. Please request a new one
ERR_AUTH_009400Email is already verified
ERR_AUTH_010400Invalid or expired password reset token
ERR_AUTH_011400Password reset token has expired. Please request a new one
ERR_AUTH_012400OTP verification failed
ERR_AUTH_013429Too many OTP requests. Please wait before trying again
ERR_AUTH_014500Failed to send OTP email. Please try again
ERR_AUTH_015400Invalid or unknown token
ERR_AUTH_016400This token has already been used

Template Errors (ERR_TMPL_xxx)

CodeHTTPDescription
ERR_TMPL_001404Template not found
ERR_TMPL_002404Document template not found
ERR_TMPL_003404Attachment template not found
ERR_TMPL_004403You do not have permission to access this template
ERR_TMPL_005403You do not have permission to edit this template
ERR_TMPL_006403You do not have permission to delete this template
ERR_TMPL_007403You do not have permission to view this template
ERR_TMPL_008400Template schema validation failed
ERR_TMPL_009400Invalid template type
ERR_TMPL_010400Template import data is invalid
ERR_TMPL_011409Template with the same name already exists
ERR_TMPL_012500Template export failed
ERR_TMPL_013404Template version not found
ERR_TMPL_014400Version does not belong to this template
ERR_TMPL_015400No file uploaded for template import
ERR_TMPL_016400Invalid JSON file format
ERR_TMPL_020400No draft version available to publish
ERR_TMPL_021404Template has no published version
ERR_TMPL_022404Template has no draft version
ERR_TMPL_023400Invalid version parameter. Must be "published", "draft", or a version number

Quota & Rate Limit Errors (ERR_QUOTA_xxx)

CodeHTTPDescription
ERR_QUOTA_001429Monthly document quota exceeded (email)
ERR_QUOTA_002429Monthly document quota exceeded (attachment)
ERR_QUOTA_003429Rate limit exceeded. Please try again later
ERR_QUOTA_004429Storage quota exceeded
ERR_QUOTA_005429Template limit exceeded for your subscription tier
ERR_QUOTA_006403This feature is not available on your subscription tier
ERR_QUOTA_007429Batch size exceeds the maximum allowed for your tier
ERR_QUOTA_008429Monthly document generation quota exceeded
ERR_QUOTA_009429Selection size exceeds the maximum rows per job allowed for your tier
ERR_QUOTA_010429Maximum concurrent jobs limit reached. Please wait for existing jobs to complete
ERR_QUOTA_011429Insufficient document credits. Please purchase more credits or use free quota

Example: Rate Limit Error

{
"statusCode": 429,
"code": "ERR_QUOTA_003",
"message": "Rate limit exceeded. Please try again later.",
"retryAfter": 45
}

Validation Errors (ERR_VALID_xxx)

CodeHTTPDescription
ERR_VALID_001400Component validation failed
ERR_VALID_002400Variable validation failed
ERR_VALID_003400Formula validation failed
ERR_VALID_004400Schema validation failed
ERR_VALID_005400Required field is missing
ERR_VALID_006400Invalid format
ERR_VALID_007400Potentially dangerous code detected
ERR_VALID_008400Invalid input provided

User Errors (ERR_USER_xxx)

CodeHTTPDescription
ERR_USER_001404User not found
ERR_USER_002409A user with this email already exists
ERR_USER_003400Invalid email format
ERR_USER_004409An account with this email was recently deleted. Would you like to restore it?
ERR_USER_005409This account is scheduled for permanent deletion
ERR_USER_006500Failed to restore account
ERR_USER_007400This account is not deleted and cannot be restored

Team Errors (ERR_TEAM_xxx)

CodeHTTPDescription
ERR_TEAM_001404Team not found
ERR_TEAM_002409A team with this slug already exists
ERR_TEAM_003403You are not the owner of this team
ERR_TEAM_004403Personal teams cannot be deleted directly
ERR_TEAM_005403Personal team slug cannot be changed
ERR_TEAM_006400This team is not a personal team
ERR_TEAM_007409User is already a member of this team
ERR_TEAM_008409An invitation has already been sent to this user
ERR_TEAM_009404Invitation not found
ERR_TEAM_010410This invitation has expired
ERR_TEAM_011404Team member not found
ERR_TEAM_012403You cannot remove yourself from the team

Folder Errors (ERR_FLDR_xxx)

CodeHTTPDescription
ERR_FLDR_001404Folder not found
ERR_FLDR_002404Parent folder not found
ERR_FLDR_003403Parent folder belongs to a different team
ERR_FLDR_004400Maximum folder nesting depth reached
ERR_FLDR_005400Cannot move folder to itself
ERR_FLDR_006400Cannot move folder to its own descendant
ERR_FLDR_007400Cannot delete folder with subfolders

API Key Errors (ERR_AKEY_xxx)

CodeHTTPDescription
ERR_AKEY_001404API key not found
ERR_AKEY_002401Invalid API key
ERR_AKEY_003401API key has been deactivated
ERR_AKEY_004403You do not have permission to access this API key

Asset Errors (ERR_ASSET_xxx)

CodeHTTPDescription
ERR_ASSET_001404Asset not found
ERR_ASSET_002403You do not have permission to access this asset
ERR_ASSET_003400Invalid file type
ERR_ASSET_004404Asset folder not found
ERR_ASSET_005400Cannot delete folder containing assets or subfolders
ERR_ASSET_006400File size exceeds maximum limit of 10MB

Webhook Errors (ERR_WEBHOOK_xxx)

CodeHTTPDescription
ERR_WEBHOOK_001404Webhook subscription not found
ERR_WEBHOOK_002409A webhook subscription with this URL already exists
ERR_WEBHOOK_003400Invalid webhook URL. Must be a valid HTTPS URL
ERR_WEBHOOK_004400Invalid event types specified
ERR_WEBHOOK_005400Maximum number of webhook subscriptions reached
ERR_WEBHOOK_006400Webhook subscription has been disabled due to repeated failures
ERR_WEBHOOK_007500Webhook delivery failed
ERR_WEBHOOK_008403You do not have permission to access this webhook subscription
ERR_WEBHOOK_009404Webhook delivery not found

Database Errors (ERR_DB_xxx)

CodeHTTPDescription
ERR_DB_001500Database connection failed
ERR_DB_002500Database query failed
ERR_DB_003409Database constraint violation

System Errors (ERR_SYS_xxx)

CodeHTTPDescription
ERR_SYS_001500An internal server error occurred
ERR_SYS_002501This feature is not yet implemented
ERR_SYS_003503Service temporarily unavailable

Sheets Add-on Errors (ERR_SHEETS_xxx)

CodeHTTPDescription
ERR_SHEETS_001404Task not found
ERR_SHEETS_002409A task with this name already exists for this spreadsheet
ERR_SHEETS_003409Task has been modified. Please refresh and try again
ERR_SHEETS_004404Execution not found
ERR_SHEETS_005400Invalid spreadsheet ID
ERR_SHEETS_006403You do not have permission to access this task

Handling Errors

JavaScript/TypeScript

try {
const response = await renderdoc.documents.generate(payload);
} catch (error) {
if (error.code === 'ERR_LIMIT_007') {
// Handle loop iteration limit
console.log(`Loop "${error.relatedInfo.loopId}" has too many items`);
// Consider pagination or splitting data
} else if (error.code === 'ERR_QUOTA_003') {
// Handle rate limit
await sleep(error.retryAfter * 1000);
// Retry the request
} else if (error.code === 'ERR_QUOTA_011') {
// Handle insufficient credits
console.log('Please purchase more document credits');
} else if (error.statusCode === 400) {
// Handle validation errors
console.log('Validation error:', error.message);
}
}

Best Practices

  1. Check error codes programmatically - Don't rely on error messages, they may change
  2. Handle rate limits gracefully - Implement exponential backoff
  3. Validate data client-side - Check array sizes before calling API
  4. Log relatedInfo - Contains valuable debugging context

Back to API Reference