Skip to main content

Vremly API

Run a real-estate media business from your own tooling.

A REST API over shoots, customers, media delivery, invoicing and webhooks. Call it from GoHighLevel, n8n, a cron job or a single line of curl — an API key is all it takes.

Authenticate with x-api-key. The organization comes from the key, so there is no tenant header to get wrong.

subscribe
$ curl -X POST \  https://api.vremly.com/webhooks/subscriptions \  -H "x-api-key: $VREMLY_API_KEY" \  -d '{"url":"https://example.com/hooks",      "events":["DELIVERY_APPROVED"]}'
then, when a client signs off
{  "event": "DELIVERY_APPROVED",  "data": {    "projectId": "proj_xyz789",    "approvedAt": "2026-09-05T12:00:00.000Z"  }}

Eleven events, no polling

Register a URL and Vremly posts to it. Each request carries X-Webhook-Signature as t=<unix>,v1=<hmac> — an HMAC-SHA256 over the timestamp, a dot, and the raw body.

PROJECT_DELIVERED and DELIVERY_APPROVED are different moments. The first fires when the company sends the work; the second when the client accepts it. A sent delivery can still come back as a revision request, so a pipeline stage that means “fulfilled” wants approval.

Payloads, retries and verification →
  • PROJECT_CREATED
  • PROJECT_ASSIGNED
  • PROJECT_STATUS_CHANGED
  • PROJECT_DELIVERED
  • DELIVERY_APPROVED
  • INVOICE_CREATED
  • INVOICE_SENT
  • INVOICE_PAID
  • INVOICE_VOIDED
  • CUSTOMER_CREATED
  • CUSTOMER_UPDATED

Scopes are enforced on every request

A key carries scopes and the server checks them per route, not per controller. Grant the least an integration needs — a workflow that only reads delivery status should hold READ, so a mistake in that workflow cannot change anything.

READ
GET, HEAD, OPTIONS
WRITE
Everything READ allows, plus POST, PUT, PATCH, DELETE
ADMIN
Everything
BULK_IMPORT
The bulk import endpoints, and nothing else
WEBHOOKS
Managing webhook subscriptions

A request whose key lacks the scope returns 403 naming what was needed and what the key holds. Rate limits are three simultaneous windows — 3 per second, 20 per 10 seconds, 100 per minute — bucketed per key, so platforms that share egress IPs do not compete for one allowance.

Built to be used by agents

Vremly ships an MCP server, so an AI assistant can work with your projects, customers and invoices directly. One command, nothing to clone:

npx -y github:RelayDigital/vremly-mcp

It exposes three tools — search, describe, call — which reach every endpoint without a thousand-entry tool list. What the assistant may do is decided by the API key you give it and enforced server-side, so a read-only key cannot be talked into writing.

For everything else there is an llms.txt index and the specification itself, which is the authority whenever prose disagrees with it.