| --- |
| title: OAuth Scopes Reference |
| description: Complete list of OAuth scopes for Midday API access. |
| section: developer |
| order: 3 |
| --- |
|
|
| Scopes define what data and actions your OAuth application can access. Request only the scopes your app needs—users are more likely to authorize apps with limited, focused permissions. |
|
|
| |
|
|
| - Scopes are requested during the authorization flow |
| - Users see the requested permissions before authorizing |
| - Your app can only access data allowed by granted scopes |
| - Scopes cannot be upgraded without re-authorization |
|
|
| |
|
|
| Scopes follow the pattern `resource.permission`: |
|
|
| - `transactions.read` — Read transaction data |
| - `invoices.write` — Create, update, delete invoices |
|
|
| |
|
|
| |
|
|
| | Scope | Description | |
| |-------|-------------| |
| | `transactions.read` | View transactions, categories, and attachments | |
| | `transactions.write` | Update transaction categories, notes, and attachments | |
|
|
| **Use cases**: Financial dashboards, expense tracking, receipt management |
|
|
| |
|
|
| | Scope | Description | |
| |-------|-------------| |
| | `invoices.read` | View invoices and their status | |
| | `invoices.write` | Create, update, send, and delete invoices | |
|
|
| **Use cases**: Invoice automation, payment reminders, accounting sync |
|
|
| |
|
|
| | Scope | Description | |
| |-------|-------------| |
| | `customers.read` | View customer information | |
| | `customers.write` | Create, update, and delete customers | |
|
|
| **Use cases**: CRM integration, customer portals, contact sync |
|
|
| |
|
|
| | Scope | Description | |
| |-------|-------------| |
| | `bank-accounts.read` | View connected bank accounts and balances | |
| | `bank-accounts.write` | Manage bank account settings | |
|
|
| **Use cases**: Cash position monitoring, balance alerts |
|
|
| |
|
|
| | Scope | Description | |
| |-------|-------------| |
| | `documents.read` | View documents in the vault | |
| | `documents.write` | Upload and organize documents | |
|
|
| **Use cases**: Document management, backup tools, OCR integrations |
|
|
| |
|
|
| | Scope | Description | |
| |-------|-------------| |
| | `inbox.read` | View inbox items (uploaded receipts, pending matches) | |
| | `inbox.write` | Process and match inbox items | |
|
|
| **Use cases**: Receipt processing, automated matching |
|
|
| |
|
|
| | Scope | Description | |
| |-------|-------------| |
| | `tracker-projects.read` | View time tracking projects | |
| | `tracker-projects.write` | Create, update, and delete projects | |
|
|
| **Use cases**: Project management integration, resource planning |
|
|
| |
|
|
| | Scope | Description | |
| |-------|-------------| |
| | `tracker-entries.read` | View time entries | |
| | `tracker-entries.write` | Create, update, and delete time entries | |
|
|
| **Use cases**: Time tracking apps, timesheets, billing automation |
|
|
| |
|
|
| | Scope | Description | |
| |-------|-------------| |
| | `teams.read` | View team information and settings | |
| | `teams.write` | Update team settings | |
|
|
| **Use cases**: Team management, onboarding tools |
|
|
| |
|
|
| | Scope | Description | |
| |-------|-------------| |
| | `users.read` | View user information within the team | |
| | `users.write` | Update user settings | |
|
|
| **Use cases**: User management, access control |
|
|
| |
|
|
| | Scope | Description | |
| |-------|-------------| |
| | `tags.read` | View tags used for organizing data | |
| | `tags.write` | Create, update, and delete tags | |
|
|
| **Use cases**: Custom categorization, workflow automation |
|
|
| |
|
|
| | Scope | Description | |
| |-------|-------------| |
| | `reports.read` | Access financial reports (revenue, profit, runway, burn rate) | |
|
|
| **Use cases**: Financial dashboards, investor updates, forecasting |
|
|
| |
|
|
| | Scope | Description | |
| |-------|-------------| |
| | `search.read` | Search across all data | |
|
|
| **Use cases**: Global search, data discovery tools |
|
|
| |
|
|
| | Scope | Description | |
| |-------|-------------| |
| | `notifications.read` | View notifications | |
| | `notifications.write` | Mark notifications as read, manage settings | |
|
|
| **Use cases**: Notification aggregators, alert systems |
|
|
| |
|
|
| For apps that need broad access, meta scopes provide convenient shortcuts: |
|
|
| | Scope | Description | |
| |-------|-------------| |
| | `apis.read` | Read-only access to all resources | |
| | `apis.all` | Full read and write access to all resources | |
|
|
| Use meta scopes sparingly. Most apps should request specific scopes. |
|
|
| |
|
|
| Include scopes in the authorization URL as a space-separated list: |
|
|
| ``` |
| https://app.midday.ai/oauth/authorize? |
| response_type=code& |
| client_id=YOUR_CLIENT_ID& |
| redirect_uri=YOUR_REDIRECT_URI& |
| scope=transactions.read%20invoices.read%20customers.read& |
| state=STATE |
| ``` |
|
|
| URL-encode the scope parameter (spaces become `%20`). |
|
|
| |
|
|
| When users authorize your app: |
|
|
| 1. Midday validates requested scopes against your app's registered scopes |
| 2. Invalid or unregistered scopes cause authorization to fail |
| 3. Users see exactly what permissions they're granting |
|
|
| If you need additional scopes later, users must re-authorize your app. |
|
|
| |
|
|
| |
|
|
| ``` |
| transactions.read invoices.read bank-accounts.read reports.read |
| ``` |
|
|
| |
|
|
| ``` |
| invoices.read invoices.write customers.read customers.write |
| ``` |
|
|
| |
|
|
| ``` |
| tracker-projects.read tracker-projects.write tracker-entries.read tracker-entries.write |
| ``` |
|
|
| |
|
|
| ``` |
| transactions.read invoices.read customers.read documents.read |
| ``` |
|
|
| |
|
|
| ``` |
| apis.read |
| ``` |
|
|
| |
|
|
| |
|
|
| Only request what you need. Users trust apps that ask for limited permissions. |
|
|
| **Good**: `transactions.read` for a spending tracker |
|
|
| **Avoid**: `apis.all` when you only need to read transactions |
|
|
| |
|
|
| If your app only displays data, don't request write scopes: |
|
|
| ``` |
| transactions.read invoices.read |
| ``` |
|
|
| |
|
|
| If you need invoices, you likely need customers too: |
|
|
| ``` |
| invoices.read invoices.write customers.read |
| ``` |
|
|
| |
|
|
| Tell users why you need each scope in your app's description or onboarding flow. |
|
|
| |
|
|
| The token response includes the granted scopes: |
|
|
| ```json |
| { |
| "access_token": "mid_at_xxxxx", |
| "token_type": "Bearer", |
| "expires_in": 3600, |
| "refresh_token": "mid_rt_xxxxx", |
| "scope": "transactions.read invoices.read" |
| } |
| ``` |
|
|
| Check this against your requested scopes to confirm what was granted. |
|
|
| |
|
|
| - [Build an OAuth App](/docs/build-oauth-app) — Getting started guide |
| - [OAuth API Endpoints](/docs/oauth-api-endpoints) — Technical reference |
| - [API Reference](/docs/api-reference) — Full API documentation |
|
|