Tulz REST API

Free, no-auth REST APIs. No API key, no signup — just send a request. All endpoints are rate-limited per IP to ensure fair use.

Base URL: https://www.tulz.orgFormat: JSONAuth: None
POST/api/v1/meeting-cost

Meeting Cost Calculator

Calculate the real monetary cost of a meeting based on attendee hourly rates and duration.

Rate limit: 60 requests/min per IP

Request Body Parameters

ParameterTypeRequiredDescription
attendeesarrayYesArray of attendee objects. Each object must include "hourlyRate" (number). "name" and "role" are optional.
durationMinutesnumberYesMeeting duration in minutes.
currencystringNoThree-letter currency code. Default: "USD".

Example Request

curl -X POST https://www.tulz.org/api/v1/meeting-cost \
  -H "Content-Type: application/json" \
  -d '{
    "attendees": [
      { "name": "Alice", "role": "Engineer", "hourlyRate": 100 },
      { "name": "Bob",   "role": "Designer",  "hourlyRate": 80 }
    ],
    "durationMinutes": 60,
    "currency": "USD"
  }'

Example Response

{
  "totalCost": 180.00,
  "costPerMinute": 3.00,
  "costPerHour": 180.00,
  "attendees": 2,
  "durationMinutes": 60,
  "currency": "USD",
  "breakdown": [
    { "name": "Alice", "role": "Engineer", "cost": 100.00 },
    { "name": "Bob",   "role": "Designer",  "cost": 80.00 }
  ]
}

POST/api/v1/profit-calculator

E-Commerce Profit Calculator

Calculate profit, fees, and margin for Etsy, Shopify, Amazon, or custom platform sales.

Rate limit: 60 requests/min per IP

Request Body Parameters

ParameterTypeRequiredDescription
platformstringYes"etsy" | "shopify" | "amazon" | "custom"
salePricenumberYesTotal sale price charged to the buyer.
materialCostnumberYesRaw material or product cost.
shippingChargednumberNoShipping amount charged to the buyer.
shippingLabelnumberNoActual shipping label cost (Etsy only).
otherCostsnumberNoAny additional costs to subtract.
shopifyPlanstringNo"basic" | "shopify" | "advanced" (Shopify only).
amazonCategorystringNoAmazon referral fee category, e.g. "Default (15%)".
fbaWeightnumberNoPackage weight in lbs (Amazon FBA only).
customPctnumberNoPlatform fee percentage (custom only).
customFixednumberNoFixed transaction fee (custom only).

Example Request

curl -X POST https://www.tulz.org/api/v1/profit-calculator \
  -H "Content-Type: application/json" \
  -d '{
    "platform": "etsy",
    "salePrice": 29.99,
    "materialCost": 5.00,
    "shippingCharged": 4.00,
    "shippingLabel": 3.50
  }'

Example Response

{
  "platform": "etsy",
  "salePrice": 29.99,
  "totalRevenue": 33.99,
  "totalCosts": 14.62,
  "netProfit": 19.37,
  "marginPct": 57.0,
  "fees": [
    { "label": "Listing fee", "amount": 0.20 },
    { "label": "Transaction fee (6.5%)", "amount": 2.21 },
    { "label": "Payment processing (3% + $0.25)", "amount": 1.27 },
    { "label": "Shipping label", "amount": 3.50 },
    { "label": "Materials", "amount": 5.00 }
  ]
}

POST/api/v1/carbon-footprint

Website Carbon Footprint

Measure the CO₂ emissions of a public webpage per visit based on its page weight.

Rate limit: 20 requests/min per IP

Request Body Parameters

ParameterTypeRequiredDescription
urlstringYesPublic URL to measure (must be https:// or http://).
monthlyVisitsnumberNoEstimated monthly page views for annual CO₂ projection. Default: 10000.

Example Request

curl -X POST https://www.tulz.org/api/v1/carbon-footprint \
  -H "Content-Type: application/json" \
  -d '{
    "url": "https://example.com",
    "monthlyVisits": 50000
  }'

Example Response

{
  "url": "https://example.com",
  "pageSizeBytes": 850000,
  "pageSizeKB": 830,
  "pageSizeMB": 0.81,
  "co2PerVisitGrams": 0.26,
  "monthlyVisits": 50000,
  "annualCO2Kg": 156.0,
  "grade": "C",
  "recommendations": [
    "Enable gzip or Brotli compression on your server.",
    "Use a CDN to serve assets from edge nodes closest to your users."
  ]
}

POST/api/v1/code-image

Code Screenshot Generator

Render a syntax-highlighted code snippet as a PNG image with optional window chrome.

Rate limit: 30 requests/min per IP

Request Body Parameters

ParameterTypeRequiredDescription
codestringYesThe source code to render (max 5000 characters).
languagestringYesProgramming language for syntax highlighting, e.g. "javascript", "python", "typescript".
themestringNo"Dracula" | "GitHub Dark" | "One Dark" | "Monokai" | "Nord" | "Solarized" | "Candy" | "Sunrise". Default: "Dracula".
showLineNumbersbooleanNoShow line numbers on the left. Default: true.
showWindowChromebooleanNoRender a macOS-style title bar above the code. Default: true.
fontSizenumberNoFont size in pixels (12–24). Default: 14.
paddingnumberNoPadding around the code block in pixels (16–64). Default: 32.

Example Request

curl -X POST https://www.tulz.org/api/v1/code-image \
  -H "Content-Type: application/json" \
  -d '{
    "code": "const greet = (name) => `Hello, ${name}!`;",
    "language": "javascript",
    "theme": "Dracula"
  }' \
  --output code.png

Example Response

HTTP/1.1 200 OK
Content-Type: image/png

<binary PNG image data>

POST/api/v1/contract-generator

Contract Generator

Generate a plain-text freelance or service contract from structured input.

Rate limit: 30 requests/min per IP

Request Body Parameters

ParameterTypeRequiredDescription
typestringYes"freelance-design" | "web-development" | "service-agreement"
freelancerobjectYes{ name, email, address }
clientobjectYes{ name, email, address }
projectobjectYes{ title, description, deliverables, startDate, endDate }
paymentobjectYes{ amount, currency, upfrontPercent, paymentTermsDays, latePaymentRate }
clausesobjectNo{ revisionRounds, ipTransferOnPayment, killFeePercent, includeKillFee, includeNDA, includeNonSolicitation, governingState, includeForce }

Example Request

curl -X POST https://www.tulz.org/api/v1/contract-generator \
  -H "Content-Type: application/json" \
  -d '{
    "type": "web-development",
    "freelancer": { "name": "Jane Dev", "email": "jane@dev.io", "address": "Austin, TX" },
    "client": { "name": "Acme Corp", "email": "legal@acme.com", "address": "New York, NY" },
    "project": {
      "title": "Company Website Redesign",
      "description": "Full redesign of acme.com",
      "deliverables": "Figma designs + Next.js build",
      "startDate": "2025-02-01",
      "endDate": "2025-04-01"
    },
    "payment": { "amount": "8000", "currency": "USD", "upfrontPercent": 50, "paymentTermsDays": 14, "latePaymentRate": 1.5 },
    "clauses": { "revisionRounds": 3, "ipTransferOnPayment": true, "includeNDA": true, "governingState": "Texas" }
  }'

Example Response

{
  "contract": "WEB DEVELOPMENT AGREEMENT\n\nThis web development agreement...",
  "wordCount": 842,
  "type": "web-development"
}

POST/api/v1/webhook/{id}

Webhook Inbox

Send any HTTP method to a unique inbox ID to capture and inspect the request. Use GET to read back payloads. Inboxes auto-expire after 4 hours.

Rate limit: No limit on sends; polling is best-effort

Request Body Parameters

ParameterTypeRequiredDescription
{id}pathYesAny unique string that identifies your inbox, e.g. a UUID or random slug.

Example Request

# Send a test webhook to your inbox
curl -X POST https://www.tulz.org/api/v1/webhook/my-inbox-id \
  -H "Content-Type: application/json" \
  -d '{ "event": "order.created", "orderId": 42 }'

# Read captured payloads
curl https://www.tulz.org/api/v1/webhook/my-inbox-id

Example Response

// GET response
{
  "id": "my-inbox-id",
  "count": 1,
  "payloads": [
    {
      "id": "abc123",
      "receivedAt": "2025-01-15T10:32:00.000Z",
      "method": "POST",
      "contentType": "application/json",
      "body": "{ \"event\": \"order.created\", \"orderId\": 42 }",
      "bodyJson": { "event": "order.created", "orderId": 42 },
      "headers": { "content-type": "application/json" },
      "ip": "1.2.3.4"
    }
  ]
}

Usage & Fair Use

All Tulz APIs are free to use with no authentication required. Each endpoint is rate-limited per IP address. Exceeding the limit returns HTTP 429 Too Many Requests. These APIs are intended for integration in personal projects, developer tools, and small-scale automations. For high-volume production use, please get in touch.