diff --git a/docs/api-catalog.txt b/docs/api-catalog.txt
index 363b028f89..de0da45ba0 100644
--- a/docs/api-catalog.txt
+++ b/docs/api-catalog.txt
@@ -2,7 +2,7 @@
> Compact provider slug catalog for agents. Use the slug to reconstruct provider-specific docs URLs only when needed.
-Provider count: 876
+Provider count: 877
URL patterns:
- Main provider page: https://nango.dev/docs/integrations/all/{slug}.md or https://nango.dev/docs/api-integrations/{slug}.md
@@ -517,6 +517,7 @@ URL patterns:
| `netsuite-tba` | NetSuite (TBA) | TBA | [docs](https://nango.dev/docs/api-integrations/netsuite-tba.md) | | [setup](https://nango.dev/docs/api-integrations/netsuite-tba/how-to-set-up-netsuite-tba-with-nango.md) | accounting, erp, popular |
| `next-cloud-ocs` | Next Cloud OCS | BASIC | [docs](https://nango.dev/docs/integrations/all/next-cloud-ocs.md) | [connect](https://nango.dev/docs/integrations/all/next-cloud-ocs/connect.md) | | storage, productivity |
| `nexthink` | Nexthink | OAUTH2_CC | [docs](https://nango.dev/docs/api-integrations/nexthink.md) | [connect](https://nango.dev/docs/api-integrations/nexthink/connect.md) | | analytics |
+| `ninety-io` | Ninety.io | API_KEY | [docs](https://nango.dev/docs/api-integrations/ninety-io.md) | [connect](https://nango.dev/docs/api-integrations/ninety-io/connect.md) | | productivity |
| `ninjaone-rmm` | NinjaOne RMM | OAUTH2_CC | [docs](https://nango.dev/docs/integrations/all/ninjaone-rmm.md) | [connect](https://nango.dev/docs/integrations/all/ninjaone-rmm/connect.md) | | support |
| `ninjaone-rmm-oauth2` | NinjaOne RMM (OAuth2) | OAUTH2 | [docs](https://nango.dev/docs/api-integrations/ninjaone-rmm-oauth2.md) | | [setup](https://nango.dev/docs/api-integrations/ninjaone-rmm-oauth2/how-to-register-your-own-ninjaone-rmm-api-oauth-app.md) | support |
| `ninjaone-saas-backup` | NinjaOne SaaS Backup | API_KEY | [docs](https://nango.dev/docs/api-integrations/ninjaone-saas-backup.md) | [connect](https://nango.dev/docs/api-integrations/ninjaone-saas-backup/connect.md) | | storage, productivity |
diff --git a/docs/api-integrations/ninety-io.mdx b/docs/api-integrations/ninety-io.mdx
new file mode 100644
index 0000000000..7ffed14f8d
--- /dev/null
+++ b/docs/api-integrations/ninety-io.mdx
@@ -0,0 +1,87 @@
+---
+title: 'Ninety.io'
+sidebarTitle: 'Ninety.io'
+description: 'Integrate your application with the Ninety.io API'
+---
+
+## Quickstart
+
+Connect to Ninety.io with Nango and see data flow in 2 minutes.
+
+
+
+ In Nango ([free signup](https://app.nango.dev)), go to [Integrations](https://app.nango.dev/dev/integrations) -> _Configure New Integration_ -> _Ninety.io_.
+
+
+ Go to [Connections](https://app.nango.dev/dev/connections) -> _Add Test Connection_ -> _Authorize_, then enter your Personal Access Token. Later, you'll let your users do the same directly from your app.
+
+
+ Let's make your first request to the Ninety.io API. Replace the placeholders below with your [secret key](https://app.nango.dev/dev/environment-settings), [integration ID](https://app.nango.dev/dev/integrations), and [connection ID](https://app.nango.dev/dev/connections):
+
+
+
+ ```bash
+ curl "https://api.nango.dev/proxy/v1/teams" \
+ -H "Authorization: Bearer " \
+ -H "Provider-Config-Key: " \
+ -H "Connection-Id: "
+ ```
+
+
+
+
+
+ Install Nango's backend SDK with `npm i @nangohq/node`. Then run:
+
+ ```typescript
+ import { Nango } from '@nangohq/node';
+
+ const nango = new Nango({ secretKey: '' });
+
+ const res = await nango.get({
+ endpoint: '/v1/teams',
+ providerConfigKey: '',
+ connectionId: ''
+ });
+
+ console.log(res.data);
+ ```
+
+
+
+
+ Or fetch credentials with the [Node SDK](/reference/sdks/node#get-a-connection-with-credentials) or [API](/reference/api/connection/get).
+
+ You're connected! Check the [Logs](https://app.nango.dev/dev/logs) tab in Nango to inspect requests.
+
+
+
+ Follow our [Auth implementation guide](/guides/primitives/auth) to integrate Nango in your app.
+
+ To obtain your own production credentials, follow the setup guide linked below.
+
+
+
+
+Ninety.io's Public API is only available on the Thrive subscription plan, and every request executes under the permissions of the user who generated the token. Rate limit: 25 requests/second, per user.
+
+
+## Ninety.io integration guides
+
+Nango-maintained guides for common use cases.
+
+- [How do I link my account?](/api-integrations/ninety-io/connect)
+Connect your Ninety.io account using the Connect UI
+
+Official docs: [Ninety.io API documentation](https://help.ninety.io/en/articles/15505694-api-reference-and-access)
+
+
+## Pre-built syncs & actions for Ninety.io
+
+Enable them in your dashboard. Extend and customize to fit your needs.
+
+import PreBuiltUseCases from "/snippets/generated/ninety-io/PreBuiltUseCases.mdx"
+
+
+
+---
diff --git a/docs/api-integrations/ninety-io/connect.mdx b/docs/api-integrations/ninety-io/connect.mdx
new file mode 100644
index 0000000000..c7b7120e2e
--- /dev/null
+++ b/docs/api-integrations/ninety-io/connect.mdx
@@ -0,0 +1,45 @@
+---
+title: Ninety.io - How do I link my account?
+sidebarTitle: Ninety.io
+---
+
+# Overview
+
+To authenticate with Ninety.io, you need a **Personal Access Token (PAT)**. All API calls execute under your user identity and respect your in-app permissions.
+
+### Prerequisites
+
+- A Ninety.io account on the **Thrive** subscription plan (Accelerate, Essentials, and Free plans don't include API access).
+- An Owner, Admin, Coach, Manager, or Team Member role. Observers can't generate tokens.
+
+### Step 1: Generate a Personal Access Token
+
+1. Click your name at the bottom of the left navigation.
+2. Click **User Settings**.
+
+
+
+3. Click **Developer Settings**.
+4. Click **Generate New Token** in the top right.
+
+
+
+5. Choose a **Token Expiration Timeframe** (default: 90 days).
+6. Enter a **Token Description** (50-character limit) identifying the token's purpose.
+7. Click **Generate Token**.
+8. Copy and store the token securely immediately — Ninety.io displays the full token only once.
+
+
+Treat your Personal Access Token like a password. Anyone with the token can call the API as you. Do not commit tokens to source control, share them in chat, or paste them publicly.
+
+
+### Step 2: Enter credentials in the Connect UI
+
+1. Open the form where you need to authenticate with Ninety.io.
+2. Enter your **Personal Access Token** in the designated field.
+3. Submit the form, and you should be successfully authenticated.
+
+
+
+
+You are now connected to Ninety.io.
diff --git a/docs/api-integrations/ninety-io/dashboard.png b/docs/api-integrations/ninety-io/dashboard.png
new file mode 100644
index 0000000000..d14b69bd5d
Binary files /dev/null and b/docs/api-integrations/ninety-io/dashboard.png differ
diff --git a/docs/api-integrations/ninety-io/developer_settings.png b/docs/api-integrations/ninety-io/developer_settings.png
new file mode 100644
index 0000000000..9cf5c4cb8c
Binary files /dev/null and b/docs/api-integrations/ninety-io/developer_settings.png differ
diff --git a/docs/api-integrations/ninety-io/form.png b/docs/api-integrations/ninety-io/form.png
new file mode 100644
index 0000000000..d4cb06b15d
Binary files /dev/null and b/docs/api-integrations/ninety-io/form.png differ
diff --git a/docs/docs.json b/docs/docs.json
index d4d9ba9d9b..40d3ee7388 100644
--- a/docs/docs.json
+++ b/docs/docs.json
@@ -1411,6 +1411,7 @@
"integrations/all/mural",
"api-integrations/nable-ncentral",
"integrations/all/nationbuilder",
+ "api-integrations/ninety-io",
"integrations/all/ninjaone-rmm",
"api-integrations/ninjaone-rmm-oauth2",
"api-integrations/ninjaone-saas-backup",
diff --git a/docs/llms-full.txt b/docs/llms-full.txt
index 72cda65ae1..e3cc0991b4 100644
--- a/docs/llms-full.txt
+++ b/docs/llms-full.txt
@@ -14810,6 +14810,7 @@ Use these slugs to construct provider-specific docs URLs only when needed.
| `netsuite-tba` | NetSuite (TBA) | TBA | [docs](https://nango.dev/docs/api-integrations/netsuite-tba.md) | | [setup](https://nango.dev/docs/api-integrations/netsuite-tba/how-to-set-up-netsuite-tba-with-nango.md) | accounting, erp, popular |
| `next-cloud-ocs` | Next Cloud OCS | BASIC | [docs](https://nango.dev/docs/integrations/all/next-cloud-ocs.md) | [connect](https://nango.dev/docs/integrations/all/next-cloud-ocs/connect.md) | | storage, productivity |
| `nexthink` | Nexthink | OAUTH2_CC | [docs](https://nango.dev/docs/api-integrations/nexthink.md) | [connect](https://nango.dev/docs/api-integrations/nexthink/connect.md) | | analytics |
+| `ninety-io` | Ninety.io | API_KEY | [docs](https://nango.dev/docs/api-integrations/ninety-io.md) | [connect](https://nango.dev/docs/api-integrations/ninety-io/connect.md) | | productivity |
| `ninjaone-rmm` | NinjaOne RMM | OAUTH2_CC | [docs](https://nango.dev/docs/integrations/all/ninjaone-rmm.md) | [connect](https://nango.dev/docs/integrations/all/ninjaone-rmm/connect.md) | | support |
| `ninjaone-rmm-oauth2` | NinjaOne RMM (OAuth2) | OAUTH2 | [docs](https://nango.dev/docs/api-integrations/ninjaone-rmm-oauth2.md) | | [setup](https://nango.dev/docs/api-integrations/ninjaone-rmm-oauth2/how-to-register-your-own-ninjaone-rmm-api-oauth-app.md) | support |
| `ninjaone-saas-backup` | NinjaOne SaaS Backup | API_KEY | [docs](https://nango.dev/docs/api-integrations/ninjaone-saas-backup.md) | [connect](https://nango.dev/docs/api-integrations/ninjaone-saas-backup/connect.md) | | storage, productivity |
diff --git a/docs/llms.txt b/docs/llms.txt
index 3f2927a930..28527c7cc9 100644
--- a/docs/llms.txt
+++ b/docs/llms.txt
@@ -139,7 +139,7 @@ Use provider URLs by replacing `{slug}` with a slug from the API catalog:
## APIs and integrations
-- [API catalog](https://nango.dev/docs/api-catalog.txt): 876 provider slugs with canonical docs routes, auth modes, setup guides, and connect guides.
+- [API catalog](https://nango.dev/docs/api-catalog.txt): 877 provider slugs with canonical docs routes, auth modes, setup guides, and connect guides.
- Provider-specific pages are intentionally not expanded here so core Nango guides remain easy for agents to find.
## Resources
diff --git a/docs/snippets/generated/ninety-io/PreBuiltTooling.mdx b/docs/snippets/generated/ninety-io/PreBuiltTooling.mdx
new file mode 100644
index 0000000000..9d88b89f57
--- /dev/null
+++ b/docs/snippets/generated/ninety-io/PreBuiltTooling.mdx
@@ -0,0 +1,40 @@
+## Pre-built tooling
+
+
+| Tools | Status |
+| - | - |
+| Pre-built authorization (API Key) | ✅ |
+| Pre-built authorization UI | ✅ |
+| Custom authorization UI | ✅ |
+| End-user authorization guide | ✅ |
+| Expired credentials detection | ✅ |
+
+
+| Tools | Status |
+| - | - |
+| Pre-built integrations | 🚫 (time to contribute: <48h) |
+| API unification | ✅ |
+| 2-way sync | ✅ |
+| Webhooks from Nango on data modifications | ✅ |
+| Real-time webhooks from 3rd-party API | 🚫 (time to contribute: <48h) |
+| Proxy requests | ✅ |
+
+
+| Tools | Status |
+| - | - |
+| HTTP request logging | ✅ |
+| End-to-end type safety | ✅ |
+| Data runtime validation | ✅ |
+| OpenTelemetry export | ✅ |
+| Slack alerts on errors | ✅ |
+| Integration status API | ✅ |
+
+
+| Tools | Status |
+| - | - |
+| Create or customize use-cases | ✅ |
+| Pre-configured pagination | 🚫 (time to contribute: <48h) |
+| Pre-configured rate-limit handling | 🚫 (time to contribute: <48h) |
+| Per-customer configurations | ✅ |
+
+
\ No newline at end of file
diff --git a/docs/snippets/generated/ninety-io/PreBuiltUseCases.mdx b/docs/snippets/generated/ninety-io/PreBuiltUseCases.mdx
new file mode 100644
index 0000000000..aa7f4345e3
--- /dev/null
+++ b/docs/snippets/generated/ninety-io/PreBuiltUseCases.mdx
@@ -0,0 +1,3 @@
+_No pre-built syncs or actions available yet._
+
+Not seeing the integration you need? [Build your own](/guides/functions/functions-guide) independently.
\ No newline at end of file
diff --git a/packages/providers/providers.yaml b/packages/providers/providers.yaml
index 14c8e89ecb..770e535b64 100644
--- a/packages/providers/providers.yaml
+++ b/packages/providers/providers.yaml
@@ -13758,6 +13758,30 @@ nexthink:
order: 2
doc_section: '#step-1-locate-your-instance-name-and-region'
+ninety-io:
+ display_name: Ninety.io
+ categories:
+ - productivity
+ auth_mode: API_KEY
+ proxy:
+ base_url: https://api.public.ninety.io
+ headers:
+ authorization: Bearer ${apiKey}
+ verification:
+ method: GET
+ endpoints:
+ - /v1/teams
+ docs: https://nango.dev/docs/api-integrations/ninety-io
+ docs_connect: https://nango.dev/docs/api-integrations/ninety-io/connect
+ credentials:
+ apiKey:
+ type: string
+ title: Personal Access Token
+ example: pat_189b**********************************4c11
+ pattern: '^pat_[a-f0-9]{64}$'
+ description: Your Ninety.io Personal Access Token.
+ doc_section: '#step-1-generate-a-personal-access-token'
+
ninjaone-rmm:
display_name: NinjaOne RMM
categories:
diff --git a/packages/webapp/public/images/template-logos/ninety-io.svg b/packages/webapp/public/images/template-logos/ninety-io.svg
new file mode 100644
index 0000000000..3014862363
--- /dev/null
+++ b/packages/webapp/public/images/template-logos/ninety-io.svg
@@ -0,0 +1 @@
+
\ No newline at end of file