Download OpenAPI specification:
Sports team asset generation tool - Automated rendering of team graphics using HTML templates and Puppeteer browser automation.
The API uses Google OAuth 2.0 for authentication. Most endpoints require authentication.
Use the /auth/google endpoint to initiate the OAuth flow.
Handles the OAuth callback from Google.
On success, redirects to / with session cookie set.
On failure, redirects to /auth/login-failed.
| code required | string OAuth authorization code from Google |
| state | string OAuth state parameter |
Destroys the user session and clears authentication cookies
{- "error": {
- "type": "invalid_request_error",
- "code": "missing_required_parameter",
- "message": "Missing required field 'logo'",
- "param": "logo"
}
}Returns error information when OAuth authentication fails
{- "error": {
- "type": "invalid_request_error",
- "code": "missing_required_parameter",
- "message": "Missing required field 'logo'",
- "param": "logo"
}
}Renders a single PNG asset from uploaded logo and team color.
Process:
| logo required | string <binary> Team logo file (PNG, JPG, GIF, SVG) |
| teamHomeColor required | string^#[0-9A-Fa-f]{6}$ Hex color code (with |
| template required | string Template ID from /api/v1/templates |
{- "error": {
- "type": "invalid_request_error",
- "code": "missing_required_parameter",
- "message": "Missing required field 'logo'",
- "param": "logo"
}
}Returns metadata for all available templates including:
{- "object": "list",
- "data": [
- {
- "id": "angled-logo",
- "name": "Angled Logo",
- "description": "Team logo with angled edge and solid background color",
- "templateFile": "asset_butler_template.html",
- "viewport": {
- "width": 678,
- "height": 720
}, - "screenshot": {
- "selector": ".container",
- "omitBackground": true
}, - "placeholders": [
- {
- "key": "TEAM_FARBE",
- "description": "Team home color (hex)",
- "required": true,
- "type": "color"
}
], - "outputFormat": {
- "type": "png",
- "namingPattern": "{teamName}_Angled.png"
}
}
], - "has_more": false
}Returns all available workflows. A workflow defines a sequence of templates to generate from shared input data (e.g., generate logo, banner, and social media assets from one set of team data).
{- "object": "list",
- "data": [
- {
- "id": "team-asset-package",
- "name": "Team Asset Package",
- "description": "Generate complete asset package for a team",
- "version": "1.0.0",
- "templates": [
- "angled-logo",
- "square-logo",
- "banner"
], - "sharedData": {
- "property1": {
- "type": "text",
- "required": true,
- "description": "string"
}, - "property2": {
- "type": "text",
- "required": true,
- "description": "string"
}
}, - "outputFormat": {
- "zipName": "{{teamName}}_Assets_{{timestamp}}.zip"
}
}
], - "has_more": false
}Returns detailed workflow configuration including field schema for form generation. Use this to build dynamic forms for workflow execution.
| id required | string Example: team-asset-package Workflow ID |
{- "object": "workflow",
- "data": {
- "id": "team-asset-package",
- "name": "Team Asset Package",
- "description": "Generate complete asset package for a team",
- "version": "1.0.0",
- "templates": [
- "angled-logo",
- "square-logo",
- "banner"
], - "sharedData": {
- "property1": {
- "type": "text",
- "required": true,
- "description": "string"
}, - "property2": {
- "type": "text",
- "required": true,
- "description": "string"
}
}, - "outputFormat": {
- "zipName": "{{teamName}}_Assets_{{timestamp}}.zip"
}, - "fieldSchema": [
- {
- "key": "teamName",
- "label": "Team Name",
- "type": "text",
- "required": true,
- "description": "Name of the team"
}
]
}
}Executes a workflow with provided data and generates all assets defined in the workflow. Returns a ZIP archive containing all generated assets organized by template.
Process:
| id required | string Example: team-asset-package Workflow ID |
| property name* additional property | any |
{- "error": {
- "type": "invalid_request_error",
- "code": "missing_required_parameter",
- "message": "Missing required field 'logo'",
- "param": "logo"
}
}Diagnostic endpoint that returns information about the workflows directory, loaded workflows, and any configuration errors. No authentication required.
{- "cwd": "string",
- "workflowsDir": "string",
- "exists": true,
- "files": [
- "string"
], - "loadedWorkflows": 0,
- "workflows": [
- {
- "id": "team-asset-package",
- "name": "Team Asset Package",
- "description": "Generate complete asset package for a team",
- "version": "1.0.0",
- "templates": [
- "angled-logo",
- "square-logo",
- "banner"
], - "sharedData": {
- "property1": {
- "type": "text",
- "required": true,
- "description": "string"
}, - "property2": {
- "type": "text",
- "required": true,
- "description": "string"
}
}, - "outputFormat": {
- "zipName": "{{teamName}}_Assets_{{timestamp}}.zip"
}
}
]
}Processes CSV file with multiple teams and generates all templates for each team. Returns ZIP archive with organized folder structure.
CSV Format:
logoHomePath,teamHomeColor
TeamName1.png,#FF5733
TeamName2.png,#3498DB
Output Structure:
batch_assets.zip
├── TeamName1/
│ ├── Angled Logo.png
│ ├── Square Logo.png
│ └── Banner.png
└── TeamName2/
├── Angled Logo.png
├── Square Logo.png
└── Banner.png
| csvFile required | string <binary> CSV file with team data (logoHomePath, teamHomeColor) |
| logoFiles required | Array of strings <binary> [ items <binary > ] Multiple logo files matching CSV logoHomePath column |
{- "error": {
- "type": "invalid_request_error",
- "code": "missing_required_parameter",
- "message": "Missing required field 'logo'",
- "param": "logo"
}
}DEPRECATED: Use /api/v1/batch-render instead.
This endpoint is kept for backward compatibility.
| csv required | string <binary> CSV file with team data |
| logos required | Array of strings <binary> [ items <binary > ] Multiple logo files |
{- "error": {
- "type": "invalid_request_error",
- "code": "missing_required_parameter",
- "message": "Missing required field 'logo'",
- "param": "logo"
}
}DEPRECATED: Use /api/v1/templates instead.
This endpoint is kept for backward compatibility.
{- "templates": [
- {
- "id": "angled-logo",
- "name": "Angled Logo",
- "description": "Team logo with angled edge and solid background color",
- "templateFile": "asset_butler_template.html",
- "viewport": {
- "width": 678,
- "height": 720
}, - "screenshot": {
- "selector": ".container",
- "omitBackground": true
}, - "placeholders": [
- {
- "key": "TEAM_FARBE",
- "description": "Team home color (hex)",
- "required": true,
- "type": "color"
}
], - "outputFormat": {
- "type": "png",
- "namingPattern": "{teamName}_Angled.png"
}
}
]
}DEPRECATED: Use /api/v1/render instead.
This endpoint is kept for backward compatibility.
| logo required | string <binary> Team logo file (PNG, JPG, GIF, SVG) |
| teamHomeColor required | string^#[0-9A-Fa-f]{6}$ Hex color code (with |
| template required | string Template ID from /api/templates |
{- "error": {
- "type": "invalid_request_error",
- "code": "missing_required_parameter",
- "message": "Missing required field 'logo'",
- "param": "logo"
}
}DEPRECATED: Use /api/v1/batch-render instead.
This endpoint is kept for backward compatibility.
| csv required | string <binary> CSV file with team data |
| logos required | Array of strings <binary> [ items <binary > ] Multiple logo files |
{- "error": {
- "type": "invalid_request_error",
- "code": "missing_required_parameter",
- "message": "Missing required field 'logo'",
- "param": "logo"
}
}