AI TOOLS.ONE Logo
API Portal

Developer API

Build widgets, automate feeds, and search our curated directory of AI tools directly inside your own platforms with our production-ready REST API.

1. Getting Started

AI Tools One provides developer-friendly JSON endpoints allowing you to query, search, and integrate our verified listings of AI products directly into your platforms. Whether you are building an AI newsletter, a directory website, automated social media bots, or custom research aggregators, our API gives you high-performance, real-time structured directory data.

info To obtain active credentials, sign up and navigate to the Developer API tab inside your user dashboard.
v1.0 Stable REST / JSON CORS Enabled

2. Authentication

API requests are authenticated by passing your secure API key. Generate and manage up to 5 keys with custom labels (e.g. Development, Production) from your dashboard.

Option A: HTTP Header (Recommended)

Pass your key inside the X-API-Key request header. This keeps keys out of server logs and browser history.

X-API-Key: atk_your_secure_api_key_here

Option B: URL Query Parameter

For quick testing, append api_key directly to the URL query string.

https://ai-tools.one/api/v1/tools.php?api_key=atk_your_secure_api_key_here

3. API Endpoints

All endpoints return application/json payloads and support browser CORS preflights.

GET https://ai-tools.one/api/v1/status.php No Auth Required

Public health check. Returns API version, date-timestamp, and database connectivity. Use this to verify system uptime before making queries.

{
  "status": "ok",
  "api_version": "1.0",
  "database": "connected",
  "timestamp": "2026-06-05T12:00:00+06:00",
  "server_time_ms": 3,
  "endpoints": {
    "tools": "/api/v1/tools.php",
    "tool": "/api/v1/tool.php",
    "categories": "/api/v1/categories.php",
    "search": "/api/v1/search.php",
    "status": "/api/v1/status.php"
  }
}

GET https://ai-tools.one/api/v1/tools.php

Fetch approved and active directory tools. Supports pagination, pricing filters, search keywords, categories, custom sorting, and column filter blocks.


GET https://ai-tools.one/api/v1/tool.php

Retrieve single tool data by slug or database ID. Includes ratings, logo paths, pricing types, tags, and category info.


GET https://ai-tools.one/api/v1/categories.php

Retrieve active directory categories alongside real-time tools_count statistics inside each.


GET https://ai-tools.one/api/v1/search.php New

Unified smart search. Pass query q to search and return matched tools and categories in a single call — perfect for dropdowns and typeahead bars.

4. Query Parameters

Parameters to filter and select columns returned by the API:

Tools List Parameters

Parameter Type Description
pageintegerPage index. Default is 1.
limitintegerMaximum items per page. Max 100, Default 15.
searchstringKeyword search filter matches tool name, tagline, description, and tags.
categorystring|intFilter by category slug (e.g. coding) or ID.
pricingstringFilter by model: Free, Freemium, or Paid.
sortstringOrder by: latest, popular, or rating.
featuredintegerPass 1 to return only featured/curated tools. New
fieldsstringComma-separated field selection (e.g. name,slug,rating). Updated

Unified Search Parameters

Parameter Type Description
qstringSearch term. Minimum 2 characters. *Required.*
limitintegerMaximum tools to return (default 8, max 20).

Single Tool Parameters

Parameter Type Description
idintegerTool ID. Required if slug is not provided.
slugstringTool URL slug (e.g. claude-ai). Required if id is not provided.
fieldsstringComma-separated columns to include (e.g. name,tagline,tags,website_url).

5. Response Schema

Success JSON envelope schema. The meta block contains execution trace UUIDs and timings:

Tools List Response

{
  "status": "success",
  "meta": {
    "request_id": "4f9a2c1e-b83c-41ab-8ea2-1f4a9b2c3e1e",
    "version": "1.0",
    "response_time_ms": 12,
    "endpoint": "/api/v1/tools.php"
  },
  "pagination": {
    "total_results": 39,
    "total_pages": 3,
    "current_page": 1,
    "limit": 15
  },
  "data": [
    {
      "id": 10,
      "name": "Claude",
      "slug": "claude-ai",
      "tagline": "Anthropic advanced AI assistant with 200K context window.",
      "overview": "...",
      "logo_url": "https://lh3.googleusercontent.com/...",
      "website_url": "https://claude.ai",
      "pricing_type": "Freemium",
      "pricing_details": null,
      "rating": "5.0",
      "upvotes": 7207,
      "tags": ["LLM", "Chat", "Analysis", "Coding"],
      "created_at": "2026-05-14 22:46:22",
      "category_name": "AI Writing",
      "category_slug": "ai-writing"
    }
  ]
}

Rate Limit Headers

X-RateLimit-Limit: 60          # Requests allowed per minute (RPM)
X-RateLimit-Remaining: 58      # Calls left in current minute window
X-RateLimit-Reset: 1748975400    # Unix timestamp of when window resets

Check X-RateLimit-Reset in your code to wait for rate window resets.

Unified Search Response

{
  "status": "success",
  "meta": {
    "request_id": "15baf7ac-877a-435d-ab4a-fb33c2e17f8f",
    "version": "1.0",
    "response_time_ms": 4,
    "endpoint": "/api/v1/search.php",
    "query": "chat"
  },
  "data": {
    "tools": [
      {
        "id": 10,
        "name": "Claude",
        "slug": "claude-ai",
        "tagline": "Anthropic advanced AI assistant",
        "logo_url": "https://lh3.googleusercontent.com/...",
        "pricing_type": "Freemium",
        "rating": "5.0",
        "upvotes": 7207,
        "tags": ["LLM", "Chat"],
        "category_name": "AI Writing",
        "category_slug": "ai-writing"
      }
    ],
    "categories": [
      {
        "id": 1,
        "name": "AI Writing",
        "slug": "ai-writing",
        "icon": "edit",
        "tools_count": 8
      }
    ]
  }
}

6. Error Handling & Rate Limits

Errors are accompanied by standard HTTP status codes and a structured JSON payload with error classifications:

{
  "status": "error",
  "error_code": "RATE_LIMIT_EXCEEDED",
  "message": "Too Many Requests: Rate limit of 60 requests per minute exceeded.",
  "meta": {
    "request_id": "93aedcc7-e0e7-48bf-89d0-e25ba4eba2ee",
    "version": "1.0"
  }
}
error_code HTTP Status Reason
MISSING_API_KEY401API key is missing in X-API-Key header or URL parameters.
INVALID_API_KEY401Key is invalid, deactivated, or revoked.
RATE_LIMIT_EXCEEDED429Minute call quota exceeded. Back off until reset timestamp.
MISSING_PARAMETER400A required query parameter (e.g. search "q") is missing.
TOOL_NOT_FOUND404Requested tool slug or database ID does not exist.
DB_ERROR500Internal database query exception. Try again.

7. Code Examples

Health Check (No Auth Required)

curl -i "https://ai-tools.one/api/v1/status.php"

Query Tools — cURL

curl -X GET "https://ai-tools.one/api/v1/tools.php?featured=1&limit=6&fields=name,slug,logo_url,tags" \
  -H "X-API-Key: atk_your_secure_api_key_here"

Autocomplete Search — JavaScript (Fetch)

async function searchAITools(query) {
  const response = await fetch(
    `https://ai-tools.one/api/v1/search.php?q=${encodeURIComponent(query)}&limit=6`,
    {
      headers: {
        'X-API-Key': 'atk_your_secure_api_key_here'
      }
    }
  );
  const result = await response.json();
  console.log('Matching Tools:', result.data.tools);
  console.log('Matching Categories:', result.data.categories);
  console.log('Trace Request ID:', result.meta.request_id);
}

searchAITools('image creation');

Exponential Backoff Header Check — JS

const response = await fetch('https://ai-tools.one/api/v1/tools.php', {
  headers: { 'X-API-Key': 'atk_your_key_here' }
});

if (response.status === 429) {
  const resetTimestamp = parseInt(response.headers.get('X-RateLimit-Reset'));
  const delayMs = (resetTimestamp * 1000) - Date.now();
  const delaySec = Math.ceil(delayMs / 1000);
  
  console.warn(`Rate limited. Waiting ${delaySec} seconds before re-calling...`);
  // setTimeout(() => recall(), delayMs);
} else {
  const remainingCalls = response.headers.get('X-RateLimit-Remaining');
  console.log(`RPM remaining quota: ${remainingCalls}`);
}

Single Tool Query — PHP (cURL)

<?php
$ch = curl_init("https://ai-tools.one/api/v1/tool.php?slug=claude-ai&fields=name,tagline,tags,website_url");
curl_setopt_array($ch, [
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_HTTPHEADER     => ['X-API-Key: atk_your_secure_api_key_here'],
]);
$response = curl_exec($ch);
curl_close($ch);

$res = json_decode($response, true);
if ($res && $res['status'] === 'success') {
    echo "Tool Name: " . $res['data']['name'] . "\n";
    echo "Tags: " . implode(', ', $res['data']['tags']);
}
?>

Query Tools List — Python (requests)

import requests

resp = requests.get(
    "https://ai-tools.one/api/v1/tools.php",
    params={"category": "ai-writing", "sort": "popular", "limit": 10, "fields": "name,slug,tags"},
    headers={"X-API-Key": "atk_your_secure_api_key_here"}
)

if resp.status_code == 200:
    res = resp.json()
    print(f"Total: {res['pagination']['total_results']} tools")
    print(f"Request ID: {res['meta']['request_id']}")
    for tool in res['data']:
        print(f"- {tool['name']} | Tags: {tool['tags']}")

8. Developer FAQ

Yes. Every registered user can generate up to 5 active API keys and call the directory API for free.

Up to 5 active keys. You can specify custom labels for each (e.g., Local Dev, Prod Server) to monitor usage separately.

It is a standard Unix timestamp representing when your 1-minute call window expires and resets. It helps you schedule subsequent requests efficiently.

Use the new /api/v1/search.php?q=keyword endpoint. It aggregates matched categories and tools in a single call.

It is a unique UUID generated for each API request. If you encounter errors, reference this UUID when contacting support to help trace logs.

Always parsed as a clean array of strings (e.g., ["LLM", "Chat"]). Empty tag values return empty arrays [].

Yes. The default limit is 60 RPM. If your project requires higher throughput, contact us through the support channel with details of your application.

Yes. All endpoints support browser CORS headers and correctly process preflight OPTIONS requests, meaning you can integrate widgets directly inside client-side JS code.

balance 0
Compare
balance

Compare Tools

0 of 4 selected

ooter.php'; ?>