# Rynko Complete Documentation > This file contains comprehensive Rynko documentation for LLM consumption. > Rynko is a developer platform with two products: Rynko Render (document generation) and Rynko Flow (AI output validation). > Last Updated: March 2026 --- ## Overview Rynko is a developer platform with two products: 1. **Rynko Render** — A document generation API that creates professional PDF and Excel documents from JSON templates with dynamic data, using a native rendering engine (not HTML-to-PDF conversion). 2. **Rynko Flow** — An AI output validation gateway that validates agent/LLM outputs against JSON schemas and business rules before they reach downstream systems. ### Render Key Differentiators - **Sub-second generation**: 200-500ms typical vs 3-8s for HTML-to-PDF approaches - **Yoga Layout Engine**: Facebook's Flexbox engine (same as React Native) for pixel-perfect PDF layouts - **Hybrid Logic**: JavaScript expressions + Excel formulas in the same template - **TextRuns**: JSON-based rich text formatting without HTML parsing (zero XSS surface) - **Visual Consistency**: Charts rendered as images for identical appearance across all viewers ### Flow Key Differentiators - **Synchronous validation**: Schema + business rule checks return results inline (no polling needed) - **Tamper-proof tokens**: Each validated run returns a `validation_id` for downstream verification - **Human-in-the-loop**: Optional approval routing via magic links (no account required for reviewers) - **Webhook delivery**: Validated payloads delivered to configured endpoints with retry - **Expression-based rules**: Business rules use JavaScript expressions (e.g., `amount <= 50000`) --- ## Pricing The subscription covers **Rynko Flow** (AI output validation). **Rynko Render** (document generation) is a separate add-on — no render/document credits are included in any subscription tier. Documents are available via Render Pack add-ons (recurring monthly) or one-time credit packs. ### Subscription Tiers (Flow) | Tier | Standard Runs/Month | Gates | Team Members | API Keys | Storage | Price | |------|---------------------|-------|--------------|----------|---------|-------| | Free | 500 | 3 | 1 | 1 | 100MB | $0/month | | Starter | 10,000 | Unlimited | 3 | 3 | 500MB | $29/month | | Growth | 100,000 | Unlimited | 10 | 10 | 2GB | $99/month | | Scale | 500,000 | Unlimited | Unlimited | Unlimited | 10GB | $349/month | **Overages (paid tiers only):** $0.005/run (Starter), $0.004/run (Growth), $0.002/run (Scale). **Standard Runs** = schema validation + expression-based business rules (deterministic). **AI Judge** (LLM semantic evaluation) is a separate upcoming feature with separate pricing. **Free tier is limited to 3 gates** — this is the upgrade trigger. Paid tiers have unlimited gates. ### Render Pack Add-ons (Recurring Monthly, All Tiers) Document generation (PDF/Excel) requires a Render Pack add-on or one-time credit packs. Render Packs are available on all tiers, including Free. | Pack | Documents/Month | Price | |------|-----------------|-------| | Basic | 500 | +$19/month | | Pro | 2,000 | +$49/month | | Business | 10,000 | +$119/month | ### Credit Packs (One-Time Purchase, Overflow) For overflow beyond Render Pack quota, or for Free tier users who need a few documents. | Pack | Documents | Price | Per Document | |------|-----------|-------|--------------| | Micro | 100 | $15 | $0.15 | | Small | 500 | $50 | $0.10 | | Medium | 1,000 | $90 | $0.09 | | Large | 2,500 | $200 | $0.08 | Credit pack documents are always clean (no watermark). Credits never expire while account is active. ### Features by Tier **Free Tier ($0/month):** - 500 Flow runs/month, 3 gates - Watermarked documents (if using credit packs) - No Render Pack available (upgrade to add) - No webhooks - 1 team member, community support **Starter Tier ($29/month):** - 10,000 Flow runs/month, unlimited gates - Render Pack add-on available - No watermark, webhooks enabled - PDF form fields - 3 team members, email support **Growth Tier ($99/month):** - 100,000 Flow runs/month, unlimited gates - Batch generation, Google Sheets add-on - Higher concurrency limits - 10 team members **Scale Tier ($349/month):** - 500,000 Flow runs/month, unlimited gates - Unlimited team members & API keys - Priority support with SLA - Highest concurrency and backlog limits ### Account Policies - **Credits never expire** while account is active - **Active account**: Any login, API call, or integration use within 12 months - **Dormant accounts**: After 12 months inactivity, credits reset to zero - **Templates preserved**: Always retained even for dormant accounts --- ## Render API Reference ### Base URL ``` https://api.rynko.dev/api ``` Render endpoints use `/api/v1/...` paths. Flow endpoints use `/api/flow/...` paths (no version prefix). ### Authentication All API requests require authentication via Bearer token: ``` Authorization: Bearer YOUR_API_KEY ``` API keys are created in the dashboard under Settings > API Keys. ### Document Generation #### Generate Document ```http POST /v1/documents/generate Content-Type: application/json Authorization: Bearer YOUR_API_KEY { "templateId": "invoice-template", "format": "pdf", "variables": { "invoiceNumber": "INV-2026-001", "customerName": "Acme Corp", "items": [ { "description": "Consulting", "quantity": 10, "price": 150.00 } ], "total": 1500.00 } } ``` **Response (Sync - small documents):** ```json { "jobId": "doc_abc123", "status": "completed", "downloadUrl": "https://cdn.rynko.dev/documents/...", "expiresAt": "2026-01-21T12:00:00Z" } ``` **Response (Async - large documents):** ```json { "jobId": "doc_abc123", "status": "processing", "statusUrl": "https://api.rynko.dev/api/v1/documents/jobs/doc_abc123", "estimatedWaitSeconds": 5 } ``` #### Check Job Status ```http GET /v1/documents/jobs/{jobId} ``` **Response:** ```json { "jobId": "doc_abc123", "status": "completed", "downloadUrl": "https://cdn.rynko.dev/documents/...", "format": "pdf", "createdAt": "2026-01-20T10:00:00Z", "completedAt": "2026-01-20T10:00:00.450Z" } ``` **Status values:** `pending`, `processing`, `completed`, `failed` #### Batch Generation ```http POST /v1/documents/batch Content-Type: application/json { "templateId": "invoice-template", "format": "pdf", "items": [ { "variables": { "invoiceNumber": "INV-001", ... } }, { "variables": { "invoiceNumber": "INV-002", ... } }, { "variables": { "invoiceNumber": "INV-003", ... } } ] } ``` ### Templates #### List Templates ```http GET /v1/templates?type=attachment&limit=20&offset=0 ``` #### Get Template ```http GET /v1/templates/{templateId} ``` Templates can be identified by: - **UUID**: `550e8400-e29b-41d4-a716-446655440000` - **Short ID**: `atpl_a1b2c3d4` - **Slug**: `invoice-template` ### Webhooks #### Create Webhook Subscription ```http POST /v1/webhook-subscriptions Content-Type: application/json { "url": "https://your-server.com/webhooks/rynko", "events": ["document.generated", "document.failed"], "description": "Production webhook" } ``` **Webhook Events:** - `document.generated` - Document successfully created - `document.failed` - Document generation failed - `document.downloaded` - Document was downloaded - `batch.completed` - Batch generation finished **Webhook Payload:** ```json { "event": "document.generated", "timestamp": "2026-01-20T12:00:00.000Z", "data": { "jobId": "doc_abc123", "templateId": "atpl_xyz789", "format": "pdf", "status": "completed", "downloadUrl": "https://cdn.rynko.dev/documents/..." } } ``` **Signature Verification:** ```javascript const crypto = require('crypto'); function verifySignature(payload, signature, secret) { const expectedSig = crypto .createHmac('sha256', secret) .update(JSON.stringify(payload)) .digest('hex'); return `v1=${expectedSig}` === signature; } // In your webhook handler: const signature = req.headers['x-rynko-signature']; const isValid = verifySignature(req.body, signature, webhookSecret); ``` --- ## Rynko Flow API Reference Flow endpoints use base URL `https://api.rynko.dev/api/flow` (NOT `/api/v1/flow`). ### Gates Gates are validation checkpoints with a JSON schema and optional business rules. #### List Gates ```http GET /flow/gates?search=order&limit=20&offset=0 Authorization: Bearer YOUR_API_KEY ``` #### Get Gate ```http GET /flow/gates/{gateId} ``` Gates can be identified by UUID, shortId (`fgate_xxx`), or slug (`order-validation`). #### Create Gate ```http POST /flow/gates Content-Type: application/json { "name": "Order Validation", "description": "Validates order payloads before processing", "schema": { "type": "object", "properties": { "orderId": { "type": "string", "required": true }, "amount": { "type": "number", "required": true, "min": 0 }, "currency": { "type": "string", "required": true } } }, "businessRules": [ { "id": "rule_max_amount", "name": "Max order amount", "expression": "amount <= 50000", "errorMessage": "Order amount cannot exceed 50,000", "enabled": true } ] } ``` ### Runs Runs are payload submissions to a gate for validation. #### Submit Run ```http POST /flow/gates/{gateId}/runs Content-Type: application/json Authorization: Bearer YOUR_API_KEY { "payload": { "orderId": "ORD-2026-001", "amount": 1250.00, "currency": "USD" }, "metadata": { "source": "agent-v2", "traceId": "abc123" } } ``` **Response (validation passed):** ```json { "runId": "550e8400-e29b-41d4-a716-446655440000", "shortId": "frun_a1b2c3d4", "status": "validated", "success": true, "validation_id": "v_abc123def456...", "validated_payload": { "orderId": "ORD-2026-001", "amount": 1250.00, "currency": "USD" }, "layers": { "schema": "pass", "business_rules": "pass" } } ``` **Response (validation failed):** ```json { "runId": "550e8400-e29b-41d4-a716-446655440001", "shortId": "frun_b2c3d4e5", "status": "validation_failed", "success": false, "layers": { "schema": "pass", "business_rules": "fail" }, "errors": { "rules": [ { "ruleId": "rule_max_amount", "ruleName": "Max order amount", "message": "Order amount cannot exceed 50,000" } ] } } ``` **Important**: The request body uses `payload` (NOT `input`). The `metadata` field is optional. #### Validate (Legacy Endpoint) ```http POST /flow/gates/{gateId}/validate ``` Equivalent to Submit Run but uses the payload directly as the request body (no `payload` wrapper). Both endpoints work. #### Dry-Run Validation ```http POST /flow/gates/{gateId}/validate/dry-run ``` Test a payload without creating a persistent run. No quota consumed, no deliveries triggered. #### Get Run ```http GET /flow/runs/{runId} ``` Run can be identified by UUID or shortId (`frun_xxx`). #### List Runs ```http GET /flow/runs?status=validated&gateId=order-validation&from=2026-01-01&to=2026-03-01&limit=20&offset=0 ``` #### List Runs by Gate ```http GET /flow/gates/{gateId}/runs?page=1&limit=25&status=validated ``` #### List Active Runs ```http GET /flow/runs/active ``` Returns runs still in progress (not yet in a terminal state). ### Run Status Values | Status | Terminal? | Description | |--------|-----------|-------------| | `validating` | No | Validation in progress | | `validated` | Yes* | Passed all validation layers (*terminal if no approval/delivery configured) | | `validation_failed` | Yes | Schema or business rule validation failed | | `pending_approval` | No | Waiting for human reviewer | | `approved` | Yes* | Reviewer approved (*terminal if no delivery configured) | | `rejected` | Yes | Reviewer rejected | | `delivered` | Yes | Successfully delivered to webhook(s) | | `delivery_failed` | Yes | Webhook delivery failed | ### Approvals #### List Approvals ```http GET /flow/approvals?gateId=order-validation&limit=20&offset=0 ``` #### Approve Run ```http POST /flow/approvals/{runId}/approve Content-Type: application/json { "comment": "Looks good, approved." } ``` #### Reject Run ```http POST /flow/approvals/{runId}/reject Content-Type: application/json { "reason": "Amount exceeds department budget." } ``` ### Deliveries #### List Deliveries for a Run ```http GET /flow/runs/{runId}/deliveries ``` Returns all webhook deliveries including attempt history and response codes. #### Retry Failed Delivery ```http POST /flow/deliveries/{deliveryId}/retry ``` **Response:** ```json { "success": true, "message": "Retry enqueued" } ``` ### Analytics #### Overview ```http GET /flow/analytics/overview?period=7d&gateId=order-validation ``` **Periods**: `24h`, `7d`, `30d`, `90d` Returns: `totalRuns`, `passRate`, `failRate`, `approvalRate`, `deliverySuccessRate`, `avgValidationMs` #### Run Outcomes ```http GET /flow/analytics/run-outcomes?period=7d&granularity=day ``` Time-series breakdown of passed, failed (schema/rules), pending, approved, rejected. #### Throughput ```http GET /flow/analytics/throughput?period=7d&granularity=day ``` Runs per bucket with average and P95 validation latency. #### Gate Metrics ```http GET /flow/analytics/gate-metrics?period=7d&limit=10 ``` Per-gate breakdown with run count, pass rate, and top failing rules. ### Flow Error Codes | Code | Description | |------|-------------| | `ERR_FLOW_001` | Gate not found | | `ERR_FLOW_002` | Gate not published / not active | | `ERR_FLOW_003` | Schema validation failed | | `ERR_FLOW_004` | Business rule validation failed | | `ERR_FLOW_005` | Run not found | | `ERR_FLOW_006` | Quota exceeded (monthly run limit) | | `ERR_FLOW_007` | Backlog limit exceeded (too many concurrent runs) | | `ERR_FLOW_008` | Rate limited | | `ERR_FLOW_009` | Circuit breaker open (gate paused due to consecutive failures) | | `ERR_FLOW_010` | Approval expired | | `ERR_FLOW_011` | Delivery already completed (cannot retry) | --- ## Template Components Rynko templates support 28 component types across 4 categories. ### Basic Components (7) | Component | Type | PDF | Excel | Description | |-----------|------|-----|-------|-------------| | Text | `text` | Yes | Yes | Plain text with styling | | Heading | `heading` | Yes | Yes | H1-H6 headings | | TextRuns | `textRuns` | Yes | Yes | Rich text with inline formatting | | Image | `image` | Yes | Yes | Images from URL or base64 | | Line | `line` | Yes | No | Horizontal line | | Rectangle | `rectangle` | Yes | No | Rectangle shape | | Spacer | `spacer` | Yes | No | Vertical spacing | | Page Break | `pageBreak` | Yes | Yes | Force page/sheet break | ### Layout Components (5) | Component | Type | PDF | Excel | Description | |-----------|------|-----|-------|-------------| | Container | `container` | Yes | No | Wrapper with styling | | Columns | `columns` | Yes | Yes | Multi-column layout | | Column | `column` | Yes | Yes | Single column in Columns | | Table Layout | `tableLayout` | Yes | Yes | Grid-based layout | | Loop | `loop` | Yes | Yes | Iterate over array data | ### Advanced Components (7) | Component | Type | PDF | Excel | Description | |-----------|------|-----|-------|-------------| | Chart | `chart` | Yes | Yes | 8 chart types | | QR Code | `qrCode` | Yes | Yes | QR code generation | | Barcode | `barcode` | Yes | Yes | 10 barcode formats | | Data Table | `dataTable` | Yes | Yes | Dynamic table from array | | Calculated Variable | `calculatedVariable` | Yes | Yes | JavaScript expressions | | Conditional | `conditional` | Yes | Yes | Show/hide based on condition | | Section | `section` | Yes | Yes | Reusable section | ### Form Fields (9) - PDF Only | Component | Type | Description | |-----------|------|-------------| | Text Field | `textField` | Single-line text input | | Checkbox | `checkboxField` | Boolean checkbox | | Radio | `radioField` | Radio button group | | Dropdown | `dropdownField` | Select dropdown | | Date Field | `dateField` | Date picker | | Signature | `signatureField` | Signature placeholder | | Textarea | `textareaField` | Multi-line text input | | Number | `numberField` | Numeric input | | Button | `buttonField` | Action button | --- ## Chart Types (8) All charts are rendered as images for visual consistency across platforms. | Type | Description | Best For | |------|-------------|----------| | `bar` | Vertical bar chart | Comparing categories | | `line` | Line chart | Trends over time | | `pie` | Pie chart | Proportional data | | `doughnut` | Hollow pie chart | Proportional with center content | | `area` | Filled line chart | Volume over time | | `radar` | Radar/spider chart | Multi-axis comparison | | `polarArea` | Radial segments | Categorical comparison | | `scatter` | X-Y scatter plot | Correlation analysis | **Chart Example:** ```json { "type": "chart", "props": { "chartType": "bar", "dataSource": "{{salesData}}", "xAxis": "month", "yAxis": "revenue", "title": "Monthly Revenue", "colors": ["#2563eb", "#10b981", "#f59e0b"], "showLegend": true, "width": 600, "height": 400 } } ``` --- ## Barcode Formats (10) | Format | Type | Description | |--------|------|-------------| | Code 128 | `code128` | Alphanumeric, high density | | Code 39 | `code39` | Alphanumeric, widely supported | | EAN-13 | `ean13` | Retail products (13 digits) | | EAN-8 | `ean8` | Small products (8 digits) | | UPC-A | `upca` | North American retail (12 digits) | | UPC-E | `upce` | Compressed UPC (8 digits) | | ITF-14 | `itf14` | Shipping containers | | PDF417 | `pdf417` | 2D stacked barcode | | Data Matrix | `datamatrix` | 2D matrix barcode | | QR Code | `qrcode` | 2D QR code | **Barcode Example:** ```json { "type": "barcode", "props": { "barcodeType": "code128", "value": "{{productCode}}", "width": 200, "height": 80, "includeText": true } } ``` --- ## TextRuns (Rich Text) TextRuns provide JSON-based inline formatting without HTML parsing, eliminating XSS vulnerabilities. **Example:** ```json { "type": "textRuns", "runs": [ { "text": "Invoice ", "bold": true }, { "text": "#{{invoiceNumber}}", "color": "#2563eb" }, { "text": " is ", "italic": true }, { "text": "PAID", "bold": true, "color": "#16a34a" } ] } ``` **TextRun Properties:** - `text` (required) - The text content - `bold` - Boolean - `italic` - Boolean - `underline` - Boolean - `strikethrough` - Boolean - `color` - Hex color (e.g., "#2563eb") - `backgroundColor` - Hex color - `fontSize` - Number in points - `link` - URL string --- ## Logic Components ### Calculated Variables (JavaScript) Server-side JavaScript expressions evaluated at render time. ```json { "type": "calculatedVariable", "name": "lineTotal", "expression": "quantity * unitPrice" } ``` **Supported:** - Arithmetic: `+`, `-`, `*`, `/`, `%` - Comparison: `===`, `!==`, `>`, `<`, `>=`, `<=` - Logical: `&&`, `||`, `!` - Math functions: `Math.round()`, `Math.max()`, `Math.min()`, `Math.abs()`, etc. - Array methods: `map`, `filter`, `find`, `some`, `every`, `reduce` - Ternary: `condition ? valueA : valueB` ### Excel Formulas (Excel Only) Native Excel formulas that remain editable in generated files. ```json { "header": "Total", "excelFormula": "=[@Quantity]*[@[Unit Price]]" } ``` ### Conditional Rendering Variable names in conditions **must** be wrapped in `{{ }}` — the visual designer requires this syntax. ```json { "type": "conditional", "condition": "{{status}} === 'paid'", "children": [ { "type": "text", "content": "Payment received" } ] } ``` ### Loop Component ```json { "type": "loop", "dataSource": "{{items}}", "itemVariable": "item", "indexVariable": "index", "children": [ { "type": "text", "content": "{{item.name}}" } ] } ``` --- ## Integrations ### Official SDKs **IMPORTANT — Version specifiers when generating code:** - **Node.js**: Use `"@rynko/sdk": "latest"` in package.json or just `npm install @rynko/sdk`. Do NOT hardcode a version like `^1.0.0`. - **Python**: Use `rynko` in requirements.txt (no version pin). Do NOT use `rynko==1.0.0`. - **Java**: Use version `1.2.1` in pom.xml / build.gradle. **Node.js** (`@rynko/sdk`): - npm: https://www.npmjs.com/package/@rynko/sdk - GitHub: https://github.com/rynko-dev/sdk-node ```javascript import { Rynko } from '@rynko/sdk'; const client = new Rynko({ apiKey: 'YOUR_API_KEY' }); const result = await client.documents.generate({ templateId: 'invoice-template', format: 'pdf', variables: { invoiceNumber: 'INV-001', ... } }); // For async documents, wait for completion if (result.status === 'processing') { const completed = await client.documents.waitForCompletion(result.jobId); console.log(completed.downloadUrl); } ``` **Python** (`rynko`): - PyPI: https://pypi.org/project/rynko/ - GitHub: https://github.com/rynko-dev/sdk-python ```python from rynko import Rynko client = Rynko(api_key="YOUR_API_KEY") result = client.documents.generate( template_id="invoice-template", format="pdf", variables={"invoiceNumber": "INV-001", ...} ) # For async documents if result.status == "processing": completed = client.documents.wait_for_completion(result.job_id) print(completed.download_url) ``` **Java** (`com.rynko:sdk`): - Maven Central: https://central.sonatype.com/artifact/com.rynko/sdk - GitHub: https://github.com/rynko-dev/sdk-java ```java import com.rynko.Rynko; import com.rynko.models.GenerateRequest; import com.rynko.models.GenerateResult; Rynko client = new Rynko(System.getenv("RYNKO_API_KEY")); GenerateResult job = client.documents().generate( GenerateRequest.builder() .templateId("invoice-template") .format("pdf") .variable("invoiceNumber", "INV-001") .build() ); GenerateResult completed = client.documents().waitForCompletion(job.getJobId()); System.out.println(completed.getDownloadUrl()); ``` ### No-Code Platforms - **Zapier**: Triggers and actions for document generation - **Make.com**: Full integration with modules - **n8n**: Community node available ### Google Sheets Add-on Generate documents from spreadsheet data: - **Mail Merge**: One document per row - **Master-Detail**: Group rows into summary documents - **Variable Mapping**: Map columns to template variables - **Google Drive**: Save directly to Drive folders ### MCP Server (AI Agents) Connect AI agents (Claude, GPT) to Rynko for document generation and Flow validation: ```json { "mcpServers": { "rynko": { "command": "npx", "args": ["-y", "@anthropic/mcp-server-rynko"], "env": { "RYNKO_API_KEY": "YOUR_API_KEY" } } } } ``` --- ## Limits & Quotas ### Flow Limits | Resource | Free | Starter | Growth | Scale | |----------|------|---------|--------|-------| | Runs/month | 500 | 10,000 | 100,000 | 500,000 | | Gates | 3 | Unlimited | Unlimited | Unlimited | | Approvers/gate | 5 | 10 | 25 | Unlimited | | Artefact retention | 3 days | 5 days | 5 days | 5 days | | Freetext max length | 50K chars | 100K chars | 200K chars | 500K chars | ### Render Limits (from Render Pack / Credit Packs) | Resource | Free | Starter | Growth | Scale | |----------|------|---------|--------|-------| | Documents/month | 0 (credit packs only) | Per Render Pack | Per Render Pack | Per Render Pack | | Batch size (rows/job) | 5 | 50 | 500 | 2,500 | | Concurrent jobs | 1 | 5 | 25 | 30 | ### General Limits | Resource | Free | Starter | Growth | Scale | |----------|------|---------|--------|-------| | Team members | 1 | 3 | 10 | Unlimited | | API keys | 1 | 3 | 10 | Unlimited | | Asset storage | 100MB | 500MB | 2GB | 10GB | | Webhooks | No | Yes | Yes | Yes | | PDF form fields | No | Yes | Yes | Yes | --- ## Security & Compliance - **Encryption**: TLS 1.3 for data in transit, AES-256 for data at rest - **Download URLs**: Signed, time-limited (24 hours default) - **Data Retention**: Configurable per tier (1-3 days default) - **GDPR**: Compliant with data removal requests - **SOC 2 Type II**: Certification in progress --- ## Error Codes ### Render Error Codes | Code | Description | |------|-------------| | `ERR_AUTH_001` | Invalid or missing API key | | `ERR_AUTH_004` | Token expired | | `ERR_TMPL_001` | Template not found | | `ERR_TMPL_003` | Template validation failed | | `ERR_DOC_004` | Document generation failed | | `ERR_QUOTA_001` | Monthly quota exceeded | | `ERR_QUOTA_002` | Rate limit exceeded | ### Flow Error Codes | Code | Description | |------|-------------| | `ERR_FLOW_001` | Gate not found | | `ERR_FLOW_002` | Gate not published / not active | | `ERR_FLOW_006` | Monthly run quota exceeded | | `ERR_FLOW_007` | Backlog limit exceeded (too many concurrent runs) | | `ERR_FLOW_008` | Rate limited | | `ERR_FLOW_009` | Circuit breaker open (gate paused) | --- ## Links - **Website**: https://rynko.dev - **Documentation**: https://docs.rynko.dev - **Render API Reference**: https://docs.rynko.dev/api-reference - **Flow API Reference**: https://docs.rynko.dev/api-reference/flow - **Status Page**: https://status.rynko.dev - **Support**: support@rynko.dev - **Node.js SDK (npm)**: https://www.npmjs.com/package/@rynko/sdk - **Python SDK (PyPI)**: https://pypi.org/project/rynko/ - **Java SDK (Maven)**: https://central.sonatype.com/artifact/com.rynko/sdk - **SDK Reference**: https://docs.rynko.dev/llms-sdk-reference.txt