Skip to main content

No-Code & Low-Code Integrations

Connect Rynko to thousands of apps using our native integrations. Build automated workflows that generate PDF and Excel documents from your data.

Overview​

Rynko provides native integrations for popular automation platforms:

  • Zapier - 6,000+ apps, official integration
  • Make.com - 1,500+ apps, visual workflows
  • n8n - Self-hosted, community node
  • SDKs - Node.js, Python & Java

Zapier Integration​

tip

Native Integration Available - Find Rynko in the Zapier app directory with full OAuth 2.0 authentication.

Getting Started with Zapier​

Step 1: Connect Your Account​

  1. Create a new Zap in Zapier
  2. Search for Rynko in the app list
  3. Click Connect and authorize your Rynko account via OAuth
  4. Your connection is ready to use

Step 2: Choose a Trigger or Action​

Select from our available triggers and actions (see tables below).

Step 3: Configure and Test​

Map your data fields and test your Zap before publishing.

Available Triggers​

Triggers start your Zap when an event occurs in Rynko:

TriggerDescription
Document GeneratedWhen a document is successfully generated
Document FailedWhen document generation fails
Batch CompletedWhen a batch of documents finishes processing

Available Actions​

Actions let you perform operations in Rynko:

ActionDescription
Generate PDFGenerate a PDF document from a template
Generate ExcelGenerate an Excel spreadsheet from a template
Generate BatchGenerate multiple documents in one request

Available Searches​

Searches let you find existing data in Rynko:

SearchDescription
Find DocumentSearch for a document by job ID or status

Common Zapier Workflows​

Payment Received β†’ Generate Invoice PDF​

Trigger: Stripe - Payment Succeeded Action: Rynko - Generate PDF

Payment successful β†’ Generate invoice PDF β†’ Store in Google Drive

Configuration:

  1. Trigger: Stripe "Payment Intent Succeeded"
  2. Action: Rynko "Generate PDF"
  3. Select invoice template
  4. Map payment data:
    • {{invoiceNumber}} β†’ Stripe payment ID
    • {{amount}} β†’ Payment amount
    • {{customerName}} β†’ Customer name

Form Submission β†’ Certificate PDF​

Trigger: Google Forms / Typeform Action: Rynko - Generate PDF

Form submitted β†’ Generate certificate PDF β†’ Email to recipient

Weekly Schedule β†’ Report Excel​

Trigger: Schedule by Zapier (Weekly) Action: Rynko - Generate Excel

Every Monday 9 AM β†’ Generate report β†’ Send to stakeholders

New Customer β†’ Welcome Document​

Trigger: HubSpot - New Contact Action: Rynko - Generate PDF

New customer created β†’ Generate welcome packet PDF

Trigger Data Fields​

When Rynko triggers fire, they provide these data fields:

{
"event": "document.generated",
"timestamp": "2025-12-02T10:30:00Z",
"data": {
"jobId": "doc_abc123...",
"templateId": "tmpl_invoice",
"format": "pdf",
"status": "completed",
"downloadUrl": "https://storage.rynko.dev/..."
}
}

Make.com Integration​

tip

Native Integration Available - Rynko is available in the Make.com (formerly Integromat) app marketplace.

Getting Started with Make.com​

Step 1: Add Rynko to Your Scenario​

  1. Create a new scenario in Make.com
  2. Click the + button to add a module
  3. Search for Rynko
  4. Select a trigger or action module

Step 2: Connect Your Account​

  1. Click Create a connection
  2. Authorize via OAuth 2.0
  3. Grant requested permissions

Step 3: Configure the Module​

Set up your trigger/action with the visual interface.

Available Modules​

Triggers (Watch Events)​

ModuleDescription
Watch Document GeneratedTriggers when document is generated
Watch Document FailedTriggers when generation fails
Watch Batch CompletedTriggers when batch completes

Actions​

ModuleDescription
Generate PDFGenerate PDF from template
Generate ExcelGenerate Excel from template
Generate BatchGenerate multiple documents

Searches​

ModuleDescription
Get DocumentRetrieve document by job ID

Make.com Scenario Examples​

Multi-Condition Document Router​

Use the Router module to generate different documents based on conditions:

Trigger β†’ Router
β”œβ”€β†’ [Order > $100] β†’ Generate VIP Invoice
β”œβ”€β†’ [First Order] β†’ Generate Welcome PDF
└─→ [Default] β†’ Generate Standard Invoice

Batch Processing with Iterator​

Process multiple records with intelligent rate limiting:

1. Get Records (from database/sheet)
2. Array Aggregator
3. Iterator
4. Rynko - Generate PDF
5. Sleep (rate limit buffer)

n8n Integration​

tip

Community Node Available - Install n8n-nodes-rynko for full Rynko integration.

Installation​

Via n8n UI:

  1. Go to Settings β†’ Community Nodes
  2. Click Install a community node
  3. Enter: n8n-nodes-rynko
  4. Click Install

Via npm:

npm install n8n-nodes-rynko

Then restart your n8n instance.

Setting Up Credentials​

Step 1: Generate API Key in Rynko​

  1. Log in to your Rynko dashboard at https://app.rynko.dev
  2. Go to Settings β†’ API Keys
  3. Click Create New API Key
  4. Give it a descriptive name (e.g., "n8n Integration")
  5. Copy the generated API key (it will only be shown once)

Step 2: Add Credentials in n8n​

  1. Go to Credentials β†’ New
  2. Search for "Rynko API"
  3. Enter your API Key
  4. Optionally update the API Base URL if self-hosted
  5. Click Save

Available Nodes​

Rynko Trigger Node​

Starts workflows on document events:

EventDescription
Document GeneratedDocument successfully created
Document FailedGeneration failed
Batch CompletedBatch processing finished

Rynko Action Node​

Performs operations:

OperationDescription
Generate PDFGenerate PDF from template
Generate ExcelGenerate Excel from template
Generate BatchGenerate multiple documents
Get DocumentGet document details
Search DocumentsSearch document history

n8n Workflow Examples​

Scheduled Report Generation​

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”     β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”     β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚ Schedule β”‚ ──→ β”‚ Fetch Data β”‚ ──→ β”‚ Generate β”‚
β”‚ (Weekly) β”‚ β”‚ (Database) β”‚ β”‚ Excel β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β””β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”˜
β”‚
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”Œβ”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”
β”‚ Notify β”‚ ←── β”‚ Upload to β”‚ ←── β”‚ Download β”‚
β”‚ (Slack) β”‚ β”‚ Google Driveβ”‚ β”‚ Document β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

Conditional Logic with Switch Node​

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”     β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”     β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚ Webhook β”‚ ──→ β”‚ Switch β”‚ ──→ β”‚ invoice β†’ PDF β”‚
β”‚ β”‚ β”‚ (type) β”‚ β”‚ report β†’ Excel β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β”‚ certificate β†’ PDF β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

Self-Hosted Benefits​

  • Full API Access: Use all Rynko API endpoints
  • Custom Nodes: Extend functionality as needed
  • Data Privacy: Keep workflow data on your infrastructure
  • Unlimited Workflows: No execution limits
  • Advanced Logic: Complex branching and error handling

Native SDKs​

info

Official SDKs - For developers who want programmatic access with full type support.

Rynko provides official SDKs for popular programming languages:

SDKPackageRequirements
Node.js@rynko/sdkNode.js 18+
PythonrynkoPython 3.8+
Javadev.rynko:sdkJava 8+

Node.js SDK​

Package: @rynko/sdk

npm install @rynko/sdk
import { Rynko } from '@rynko/sdk';

const client = new Rynko({
apiKey: process.env.RYNKO_API_KEY!,
});

// Generate a PDF document
const result = await client.documents.generate({
templateId: 'invoice-template',
format: 'pdf',
variables: {
invoiceNumber: 'INV-001',
customerName: 'Acme Corp',
total: 1500.00
},
});

console.log('Download URL:', result.downloadUrl);

Batch Generation:

const result = await client.documents.generateBatch({
templateId: 'invoice-template',
format: 'pdf',
documents: [
{ variables: { invoiceNumber: 'INV-001', customerName: 'Customer A' } },
{ variables: { invoiceNumber: 'INV-002', customerName: 'Customer B' } },
{ variables: { invoiceNumber: 'INV-003', customerName: 'Customer C' } },
],
});

console.log('Batch ID:', result.batchId);

Python SDK​

Package: rynko

pip install rynko
from rynko import Rynko

client = Rynko(api_key="your_api_key")

# Generate a PDF document
result = client.documents.generate(
template_id="invoice-template",
format="pdf",
variables={
"invoiceNumber": "INV-001",
"customerName": "Acme Corp",
"total": 1500.00,
},
)

print(f"Download URL: {result.download_url}")

Async Support:

from rynko import AsyncRynko
import asyncio

async def main():
async with AsyncRynko(api_key="your_api_key") as client:
result = await client.documents.generate(
template_id="invoice-template",
format="pdf",
variables={"invoiceNumber": "INV-001"},
)
print(f"Download URL: {result.download_url}")

asyncio.run(main())

Java SDK​

Package: dev.rynko:sdk (Java 8+)

Maven​

<dependency>
<groupId>dev.rynko</groupId>
<artifactId>sdk</artifactId>
<version>1.0.0</version>
</dependency>

Gradle​

implementation 'dev.rynko:sdk:1.0.0'

Basic Usage​

import dev.rynko.Rynko;
import dev.rynko.models.GenerateRequest;
import dev.rynko.models.GenerateResult;

// Initialize client
Rynko client = new Rynko(System.getenv("RYNKO_API_KEY"));

// Generate a PDF document
GenerateResult result = client.documents().generate(
GenerateRequest.builder()
.templateId("invoice-template")
.format("pdf")
.variable("invoiceNumber", "INV-001")
.variable("customerName", "Acme Corp")
.variable("total", 1500.00)
.build()
);

System.out.println("Job ID: " + result.getJobId());

// Wait for completion
GenerateResult completed = client.documents().waitForCompletion(
result.getJobId(), 1000, 60000
);
System.out.println("Download URL: " + completed.getDownloadUrl());

Spring Boot Integration​

import dev.rynko.Rynko;
import dev.rynko.models.GenerateRequest;
import dev.rynko.models.GenerateResult;

@Configuration
public class RynkoConfiguration {

@Value("${rynko.api-key}")
private String apiKey;

@Bean
public Rynko rynko() {
return new Rynko(apiKey);
}
}

@Service
public class DocumentService {

private final Rynko client;

public DocumentService(Rynko rynko) {
this.client = rynko;
}

public String generateInvoice(Invoice invoice) {
GenerateResult result = client.documents().generate(
GenerateRequest.builder()
.templateId("invoice-template")
.format("pdf")
.variable("invoiceNumber", invoice.getNumber())
.variable("customerName", invoice.getCustomer().getName())
.variable("total", invoice.getTotal())
.build()
);
return result.getJobId();
}
}

Webhook Events​

All integrations can subscribe to these webhook events:

EventDescriptionData Fields
document.generatedDocument created successfullyjobId, templateId, format, downloadUrl
document.failedDocument generation failedjobId, templateId, errorMessage, errorCode
batch.completedBatch processing finishedbatchId, completedDocuments, failedDocuments

Webhook Payload Format​

{
"event": "document.generated",
"timestamp": "2025-12-02T10:30:00.000Z",
"data": {
"jobId": "doc_abc123def456",
"templateId": "tmpl_invoice",
"format": "pdf",
"status": "completed",
"downloadUrl": "https://storage.rynko.dev/...",
"expiresAt": "2025-12-05T10:30:00.000Z"
}
}

Webhook Security​

All webhooks include security headers for signature verification:

HeaderDescription
X-Rynko-SignatureHMAC-SHA256 signature (v1=<hex>)
X-Rynko-TimestampUnix timestamp of request
X-Rynko-Event-IdUnique event identifier
X-Rynko-Event-TypeEvent type

Authentication​

OAuth 2.0 (Zapier & Make.com)​

Zapier and Make.com use OAuth 2.0 for secure authentication.

Scopes:

ScopeDescription
documents:generateGenerate documents
documents:readRead document status
templates:readAccess templates
webhooks:readView webhook subscriptions
webhooks:writeManage webhook subscriptions
profile:readRead user profile

API Keys (n8n & SDKs)​

n8n and native SDKs authenticate using API keys generated in the Rynko dashboard.

  1. Go to Settings β†’ API Keys
  2. Click Create API Key
  3. Copy the key (shown only once)
  4. Store securely in environment variables
# .env
RYNKO_API_KEY=rd_sk_xxxxxxxxxxxx

Rate Limits​

PlanRequests/MinuteMax Batch Size
Free1010
Starter100100
Growth500500
ScaleCustom1000
warning

Use batch endpoints when generating multiple documents to avoid rate limits.


Best Practices​

1. API Key Security​

  • Store keys in environment variables
  • Use platform secret managers
  • Rotate keys periodically
  • Use separate keys for development/production

2. Error Handling​

Always implement error handling:

try {
await client.documents.generate({...});
} catch (error) {
if (error.statusCode === 429) {
// Rate limit - implement backoff
} else if (error.statusCode === 400) {
// Validation error - check request
}
}

3. Webhook Verification​

Always verify webhook signatures to prevent spoofing attacks.

4. Use Batch Endpoints​

For multiple documents, use batch generation instead of individual requests:

// Bad: Many individual requests
for (const data of records) {
await client.documents.generate({ variables: data });
}

// Good: Single batch request
await client.documents.generateBatch({
templateId: 'invoice-template',
format: 'pdf',
documents: records.map(data => ({ variables: data })),
});

Troubleshooting​

Common Issues​

401 Unauthorized

  • Verify API key or OAuth token is valid
  • Check key has required permissions
  • Ensure header is Authorization with value Bearer YOUR_API_KEY

400 Bad Request

  • Validate JSON structure
  • Check required fields (templateId, format)
  • Verify template exists

429 Rate Limit

  • Implement exponential backoff
  • Use batch endpoints
  • Contact support for limit increase

Webhook Not Receiving Events

  • Verify URL is publicly accessible (HTTPS)
  • Check subscription is active
  • Review delivery logs in dashboard

Getting Help​


Next Steps​