> ## Documentation Index
> Fetch the complete documentation index at: https://help.propops.app/llms.txt
> Use this file to discover all available pages before exploring further.

# API Overview

> Base URL, JSON response format, pagination, rate limiting, authentication methods, and the full list of resource groups for the PropOps API.

The PropOps REST API gives you programmatic access to every resource on the platform — jobs, contractors, tenants, users, finances, and more. All endpoints are under `/api/` on your PropOps instance URL.

```text theme={null}
https://propops.yourcompany.com/api/
```

<Note>
  State-changing requests (POST, PUT, DELETE) require a valid CSRF token in addition to authentication. See [Authentication](/api/authentication) for how to obtain and send one.
</Note>

***

## Response format

Every response — success or error — is JSON. Successful responses use this envelope:

```json Success theme={null}
{
  "success": true,
  "data": { ... },
  "count": 42,
  "message": "Operation completed successfully"
}
```

```json Error theme={null}
{
  "success": false,
  "error": "Human-readable error message"
}
```

`count` is included on list endpoints and reflects the number of records in `data`. See [Error handling](/api/errors) for the full list of error codes.

***

## Pagination

List endpoints accept two query parameters:

<ParamField query="limit" default="50" type="number">
  Maximum number of records to return. Accepted range: 1–200.
</ParamField>

<ParamField query="offset" default="0" type="number">
  Number of records to skip before returning results. Use with `limit` to page through large result sets.
</ParamField>

```bash Example — second page of 25 jobs theme={null}
GET /api/jobs/manage?limit=25&offset=25
```

***

## Rate limiting

Requests are rate-limited per IP address and per authenticated account. When you exceed your limit the API returns `429 Too Many Requests`. Check the `Retry-After` header to know how long to wait before retrying.

Every response includes these rate-limit headers:

| Header                  | Description                                       |
| ----------------------- | ------------------------------------------------- |
| `X-RateLimit-Limit`     | Total requests allowed in the current window      |
| `X-RateLimit-Remaining` | Requests remaining before the limit is hit        |
| `X-RateLimit-Reset`     | Unix timestamp when the window resets             |
| `Retry-After`           | Seconds to wait (only present on `429` responses) |

Administrators can view and adjust per-endpoint rate-limit rules in **Settings → API Monitoring**.

***

## Performance headers

Every API response includes timing headers so you can monitor integration performance:

| Header               | Description                                             |
| -------------------- | ------------------------------------------------------- |
| `X-Response-Time-ms` | Total time (ms) to process the request server-side      |
| `X-DB-Query-Time-ms` | Time (ms) spent on database queries within that request |

***

## Resource groups

<CardGroup cols={2}>
  <Card title="Jobs" icon="wrench" href="/api/jobs">
    Create, update, and manage the full job lifecycle — including case notes, photos, documents, approvals, amendments, recalls, and calendar scheduling.
  </Card>

  <Card title="Users" icon="user" href="/api/users">
    Manage user profiles, permissions, notification preferences, avatars, and active sessions.
  </Card>

  <Card title="Contractors" icon="hard-hat" href="/api/contractors">
    List contractors, browse trade categories, and manage certifications.
  </Card>

  <Card title="Tenants" icon="house" href="/api/tenants">
    Create and manage tenant records, assign addresses, and export GDPR data reports.
  </Card>

  <Card title="Agents & Branches" icon="building" href="/api/agents">
    Retrieve agents, branch assignments, SLA profiles, and sharing rules.
  </Card>

  <Card title="Dashboard" icon="gauge" href="/api/dashboard">
    Aggregate stats, charts, job feeds, pinned jobs, and batch data loading for the dashboard.
  </Card>

  <Card title="Analytics & Reports" icon="chart-bar" href="/api/analytics">
    Activity feeds, branch performance, financial reports, and user contribution reports.
  </Card>

  <Card title="Financial" icon="sterling-sign" href="/api/financial">
    Create and manage invoices, record payments, track payment status, and service pricing.
  </Card>

  <Card title="Notifications" icon="bell" href="/api/notifications">
    Retrieve, mark as read, and delete in-app notifications and system notices.
  </Card>

  <Card title="Email" icon="envelope" href="/api/email">
    Send transactional emails, manage templates, and verify email addresses.
  </Card>

  <Card title="WhatsApp" icon="comment" href="/api/whatsapp">
    Send pre-filled WhatsApp messages to tenants and contractors using configurable templates.
  </Card>

  <Card title="Search" icon="magnifying-glass" href="/api/search">
    Full-text search across jobs, users, branches, and settings.
  </Card>

  <Card title="Security" icon="shield" href="/api/security-api">
    Manage sessions, CSRF tokens, file integrity alerts, password breach checks, and password resets.
  </Card>

  <Card title="GDPR & Privacy" icon="lock" href="/api/gdpr">
    Consent management and data subject access requests.
  </Card>

  <Card title="System" icon="server" href="/api/system">
    Health checks, maintenance mode, application settings, logs, and push subscriptions.
  </Card>

  <Card title="Administration" icon="gear" href="/api/admin">
    Manage branches, roles, permissions, activity logs, email logs, and API usage stats.
  </Card>

  <Card title="Automation" icon="bolt" href="/api/webhooks">
    List, trigger, and monitor n8n workflow automations and subscribe to platform events.
  </Card>

  <Card title="Attachments" icon="paperclip" href="/api/attachment">
    Download and serve file attachments for jobs, case notes, and documents.
  </Card>
</CardGroup>
