Ever needed a graceful way to say “no”?
This tiny API returns random, generic, creative, and sometimes hilarious rejection reasons — perfectly suited for any scenario: personal, professional, student life, dev life, or just because.
Built for humans, excuses, and humor.
This project is sponsored by GitAds.
You can get your GitHub repository sponsored too — create your account now.
Base URL
https://naas.isalman.dev/no
Method: GET
Rate Limit: 120 requests per minute per IP
GET /no{
"reason": "This feels like something Future Me would yell at Present Me for agreeing to."
}Use it in apps, bots, landing pages, Slack integrations, rejection letters, or wherever you need a polite (or witty) no.
Want to run it yourself? It’s lightweight and simple.
git clone https://github.com/hotheadhacker/no-as-a-service.git
cd no-as-a-servicenpm installnpm startThe API will be live at:
http://localhost:3000/no
You can also change the port using an environment variable:
PORT=5000 npm startno-as-service/
├── index.js # Express API
├── reasons.json # 1000+ universal rejection reasons
├── package.json
├── .devcontainer.json # VS Code / Github devcontainer setup
└── README.md
For reference, here’s the package config:
{
"name": "no-as-service",
"version": "1.0.0",
"description": "A lightweight API that returns random rejection or no reasons.",
"main": "index.js",
"scripts": {
"start": "node index.js"
},
"author": "hotheadhacker",
"license": "MIT",
"dependencies": {
"express": "^4.18.2",
"express-rate-limit": "^7.0.0"
}
}If you open this repo in Github Codespaces, it will automatically use .devcontainer.json to set up your environment. If you open it in VSCode, it will ask you if you want to reopen it in a container.
Here are some projects and websites that creatively integrate no-as-a-service to deliver humorous or programmatic "no" responses:
-
no-as-a-service-rust
Rust implementation of this project. -
CSG Admins
A system administration and gaming service hub using no-as-a-service to provide playful negative responses across some admin panels and commands. -
FunnyAnswers - /no endpoint
A humor-focused API playground that includes a mirror or wrapper for no-as-a-service, perfect for developers exploring fun HTTP-based responses. -
Gerador de Frases Aleatórias (pt-BR) Uma reinterpretação em Python com frases em português, frontend e novas categorias.
-
NoAsAnApp
A simple native Android app calling no-as-a-service to provide negative responses. -
FunnyReasons
A simple Web app usingno-as-a-serviceto provide funny reasons to say No. -
How About No? A basic GUI using no-as-a-service as the backend. Built with docker in mind.
-
no-as-a-service-asp
A straight-forward implementation of NaaS in ASP.NET Core -
No as a Service - Raycast Extension
Get a random No from within Raycast. Just install the extension from the Raycast store, open Raycast, then type in 'Random No'. Raycast extension: No as a Service. -
Nopeify
A simple native iOS app calling no-as-a-service to provide negative responses. -
No-as-a-Service - Slack App
Get a randomNofrom within Slack. Install the app to your workspace and then use the/nocommand to get a random response. -
No-as-a-Service - Signal Bot
Get a randomNofrom within Signal. Deploy the Docker container, link your Signal account, and use the/nocommand to get a random response. -
No-as-a-Service GNOME Search GNOME search provider for the No-as-a-Service API. Type 'no' to get a random excuse. Click or press Enter to copy to clipboard.
14 No MCP
Perfect for when you want your AI to be consistently negative or just want to add some humor to your MCP setup.
- Your Project Here? If you're using no-as-a-service in your project, open a pull request to be featured here!
Want to use no-as-a-service in your own project? Check out the usage section in this README and start returning "no" like a pro.
Created with creative stubbornness by hotheadhacker
MIT — do whatever, just don’t say yes when you should say no.