API Documentation

Seamlessly integrate Jurono into your existing workflows. REST API, webhooks and comprehensive documentation for developers.

RESTAPI v1
OpenAPI3.0 Spec
WebhooksReal-time

Quick Start

Get up and running with your first API integration in minutes.

1. Authentication

All API requests require a valid API key in the Authorization header.

# Request API key
curl -X POST https://api.jurono.eu/auth/api-keys
-H "Authorization: Bearer YOUR_JWT_TOKEN"
# API request with key
curl -X GET https://api.jurono.eu/v1/clients
-H "Authorization: Bearer your-api-key"
Create API keys via dashboard
Granular permissions (scopes)
Rate limiting: 1000 req/min

2. First Request

Test the API with a simple GET request for your clients.

# Get all clients
GET /api/v1/clients
Authorization: Bearer your-api-key
# Response
{
"clients": [
{
"id": "client_123",
"name": "Max Mustermann",
"email": "max@example.com",
"status": "active"
}
],
"total": 42,
"page": 1
}

Sandbox Mode

Use api-sandbox.jurono.eu for testing without affecting real data.

API Endpoints

Complete REST API for all Jurono core functions.

GET/api/v1/clients

Get all clients

Parameters

pagestring
limitstring
searchstring
statusstring

Response

{
  "clients": [
    {
      "id": "client_123",
      "name": "Max Mustermann",
      "email": "max@example.com",
      "status": "active",
      "createdAt": "2024-01-15T10:30:00Z"
    }
  ],
  "total": 42,
  "page": 1,
  "hasMore": true
}
POST/api/v1/clients

Create new client

Parameters

namestring
emailstring
phonestring
addressstring

Response

{
  "id": "client_124",
  "name": "Anna Schmidt",
  "email": "anna@example.com",
  "status": "active",
  "createdAt": "2024-01-15T11:00:00Z"
}
GET/api/v1/cases

Get all cases

Parameters

clientIdstring
statusstring
dateFromstring
dateTostring

Response

{
  "cases": [
    {
      "id": "case_456",
      "title": "Contract consultation",
      "clientId": "client_123",
      "status": "active",
      "createdAt": "2024-01-15T10:30:00Z"
    }
  ],
  "total": 15,
  "page": 1
}
POST/api/v1/invoices

Create invoice

Parameters

clientIdstring
itemsstring
dueDatestring
notesstring

Response

{
  "id": "invoice_789",
  "number": "R-2024-001",
  "clientId": "client_123",
  "amount": 1500,
  "status": "draft",
  "createdAt": "2024-01-15T12:00:00Z"
}

Rate Limits

Fair rate limits to ensure stable performance for all users.

Standard Plan1,000 req/min
Enterprise Plan10,000 req/min

Best Practices

Use pagination for large datasets
Implement caching with ETags
Prefer webhooks over polling
Implement retry logic with backoff

Webhooks

Real-time notifications for events in your law firm.

Webhook Configuration

Register webhook URLs via API or dashboard.

# Register webhook
POST /api/v1/webhooks
{
"url": "https://yourdomain.com/webhook",
"events": ["client.created", "invoice.paid"],
"secret": "your-webhook-secret"
}
HMAC-SHA256 signature
Automatic retry logic
Event filtering available
Delivery status monitoring

Available Events

client.created

Triggered when a new client is created

{
  "event": "client.created",
  "data": {
    "id": "client_123",
    "name": "Max Mustermann",
    "email": "max@example.com"
  },
  "timestamp": "2024-01-15T10:30:00Z"
}
invoice.paid

Triggered when an invoice is paid

{
  "event": "invoice.paid",
  "data": {
    "id": "invoice_789",
    "number": "R-2024-001",
    "amount": 1500,
    "paidAt": "2024-01-15T14:30:00Z"
  },
  "timestamp": "2024-01-15T14:30:00Z"
}
case.status_changed

Triggered when a case status changes

{
  "event": "case.status_changed",
  "data": {
    "id": "case_456",
    "status": "completed",
    "previousStatus": "active",
    "changedAt": "2024-01-15T16:00:00Z"
  },
  "timestamp": "2024-01-15T16:00:00Z"
}

Webhook Security

Signature Verification

All webhooks are signed with HMAC-SHA256 for security.

# Node.js example
const crypto = require('crypto');
const signature = crypto
.createHmac('sha256', secret)
.update(payload)
.digest('hex');

Delivery Guarantees

At-least-once delivery
Exponential backoff retry
Maximum 5 retry attempts
24-hour delivery window

SDKs & Libraries

Official SDKs for the most popular programming languages.

🟨

JavaScript / TypeScript

npm install @jurono/sdk
import { Jurono } from '@jurono/sdk';

const jurono = new Jurono({
  apiKey: 'your-api-key'
});

const clients = await jurono.clients.list();
🐍

Python

pip install jurono-python
from jurono import Jurono

jurono = Jurono(api_key='your-api-key')

clients = jurono.clients.list()
🐘

PHP

composer require jurono/php-sdk
use Jurono\Client;

$jurono = new Client('your-api-key');

$clients = $jurono->clients()->list();
β˜•

Java

implementation 'com.jurono:java-sdk:1.0.0'
import com.jurono.JuronoClient;

JuronoClient jurono = new JuronoClient("your-api-key");

List<Client> clients = jurono.clients().list();
πŸ’œ

C# / .NET

dotnet add package Jurono.SDK
using Jurono;

var jurono = new JuronoClient("your-api-key");

var clients = await jurono.Clients.ListAsync();
🐹

Go

go get github.com/jurono/go-sdk
import "github.com/jurono/go-sdk"

client := jurono.NewClient("your-api-key")

clients, err := client.Clients.List()

Community SDKs

Ruby

Maintained by Community

Active

Rust

Maintained by Community

Beta

Swift

Maintained by Community

Alpha

Want to contribute or create a new SDK?

View on GitHub

Ready for Integration?

Create your API key and start integrating with Jurono today.

Jurono - Modern Legal Software for German Law Firms