Developer API v1

NexTool API Documentation

Access 300+ tools programmatically with a simple REST API. Authenticate with an API key, send inputs, get results.

API Key Auth

Secure per-key authentication

300+ Tools

Text, finance, dev, math & more

Rate Limited

100 req/hour with clear headers

Simple REST

JSON in, JSON out, CORS enabled

Overview

The NexTool API lets you run any of our 300+ tools from your own applications. Send a POST request with the tool slug and input parameters, and receive structured JSON results.

The API is available to users on the Pro and Business plans. You can generate up to 5 API keys from your dashboard.

Base URL
https://getnextool.com/api/v1

Authentication

All API requests require an API key passed via the x-api-key header. You can generate keys from your dashboard or via the key management API.

Keys use the format ntool_ followed by 32 hex characters. Keep your keys secret — they grant full API access to your account.

Example Headerhttp
x-api-key: ntool_a1b2c3d4e5f6a1b2c3d4e5f6a1b2c3d4

Key Management API

GET/api/v1/keys

List all your active API keys. Requires session authentication (cookies).

POST/api/v1/keys

Generate a new API key. Returns the full key once — save it immediately.

Request Bodyjson
{
  "name": "My production key"
}
Response (201 Created)json
{
  "key": "ntool_a1b2c3d4e5f6a1b2c3d4e5f6a1b2c3d4",
  "hash": "sha256_hash_of_key",
  "name": "My production key",
  "prefix": "ntool_a1b2c3...",
  "createdAt": "2026-03-08T12:00:00.000Z",
  "message": "Save this key now — it will not be shown again."
}
DELETE/api/v1/keys

Revoke an API key by its hash. The key is immediately invalidated.

Request Bodyjson
{
  "hash": "sha256_hash_of_key"
}

Endpoints

POST/api/v1/tools

Run a tool with the provided inputs and receive structured results.

Request Body

FieldTypeRequiredDescription
toolstringYesTool slug (e.g. word-counter, json-formatter)
inputsobjectNoKey-value pairs of tool-specific inputs

Required Headers

HeaderDescription
x-api-keyYour NexTool API key
Content-Typeapplication/json

Response (200 OK)

{
  "success": true,
  "tool": "word-counter",
  "result": {
    "words": 142,
    "characters": 891,
    "sentences": 8,
    "paragraphs": 3
  },
  "usage": {
    "remaining": 99,
    "limit": 100,
    "resetAt": "2026-03-08T13:00:00.000Z"
  },
  "meta": {
    "apiVersion": "v1",
    "timestamp": "2026-03-08T12:00:00.000Z"
  }
}

Response Headers

HeaderDescription
X-RateLimit-LimitMaximum requests allowed per window (100)
X-RateLimit-RemainingRequests remaining in the current window
X-RateLimit-ResetISO timestamp when the window resets

Rate Limits

API requests are rate-limited using a sliding window of 1 hour. Each API key has its own independent counter.

PlanRate LimitMax KeysPrice
FreeNo API access-$0
Pro100 requests / hour5$9/mo
Business1,000 requests / hour5$29/mo

Tip: Check the X-RateLimit-Remaining response header to track your usage. When you hit the limit, you will receive a 429 response with a retryAfter timestamp.

Error Handling

All errors return a consistent JSON structure with an error code and a human-readable message.

StatusError CodeDescription
400missing_toolThe tool field is missing or not a string
400invalid_inputsThe inputs field is not a valid object
400invalid_jsonRequest body is not valid JSON
401missing_api_keyNo x-api-key header provided
401invalid_api_keyKey format is wrong, key not found, or key has been revoked
429rate_limit_exceededExceeded 100 requests/hour — wait for the window to reset
Error Response Examplejson
{
  "error": "rate_limit_exceeded",
  "message": "You have exceeded the rate limit of 100 requests per hour.",
  "retryAfter": "2026-03-08T13:00:00.000Z"
}

Examples

cURL

Terminalbash
curl -X POST https://getnextool.com/api/v1/tools \
  -H "Content-Type: application/json" \
  -H "x-api-key: ntool_YOUR_API_KEY_HERE" \
  -d '{
    "tool": "word-counter",
    "inputs": {
      "text": "Hello world, this is a test."
    }
  }'

JavaScript / Fetch

JavaScriptjs
const response = await fetch("https://getnextool.com/api/v1/tools", {
  method: "POST",
  headers: {
    "Content-Type": "application/json",
    "x-api-key": "ntool_YOUR_API_KEY_HERE",
  },
  body: JSON.stringify({
    tool: "json-formatter",
    inputs: {
      json: '{"name":"NexTool","version":1}',
      indent: 2,
    },
  }),
});

const data = await response.json();
console.log(data.result);

// Check rate limit headers
console.log("Remaining:", response.headers.get("X-RateLimit-Remaining"));

Python / requests

Pythonpython
import requests

response = requests.post(
    "https://getnextool.com/api/v1/tools",
    headers={
        "Content-Type": "application/json",
        "x-api-key": "ntool_YOUR_API_KEY_HERE",
    },
    json={
        "tool": "base64-encoder",
        "inputs": {
            "text": "Hello, NexTool API!",
            "mode": "encode",
        },
    },
)

data = response.json()
print(data["result"])
print(f"Remaining: {response.headers['X-RateLimit-Remaining']}")

Node.js (with error handling)

Node.jsjs
async function runTool(tool, inputs) {
  const res = await fetch("https://getnextool.com/api/v1/tools", {
    method: "POST",
    headers: {
      "Content-Type": "application/json",
      "x-api-key": process.env.NEXTOOL_API_KEY,
    },
    body: JSON.stringify({ tool, inputs }),
  });

  if (res.status === 429) {
    const { retryAfter } = await res.json();
    throw new Error(`Rate limited. Retry after ${retryAfter}`);
  }

  if (!res.ok) {
    const err = await res.json();
    throw new Error(`API error: ${err.message}`);
  }

  return res.json();
}

// Usage
const result = await runTool("hash-generator", {
  text: "my secret data",
  algorithm: "sha256",
});
console.log(result);

Generate an API key (cURL)

Terminalbash
# You must be logged in (send session cookies)
curl -X POST https://getnextool.com/api/v1/keys \
  -H "Content-Type: application/json" \
  -b "your-session-cookies" \
  -d '{ "name": "Production key" }'
Get weekly tips for NexTool API & more

No spam. Unsubscribe anytime.

Ready to Build?

Upgrade to Pro or Business to get API access and start integrating 300+ tools into your applications.

Stay Updated

Get notified about new tools, features, and exclusive deals. No spam, ever.