# FckSignups API Endpoints: Complete Reference for the Cloudflare Worker API

> Explore FckSignups API endpoints for submitting tools, reporting issues, and making suggestions via GitHub issues. Get the complete reference for this Cloudflare Worker API.

- Repository: [Abdullah/FckSignups](https://github.com/BraveOPotato/FckSignups)
- Tags: api-reference
- Published: 2026-09-07

---

**FckSignups exposes three HTTP POST endpoints (`/submit-tool`, `/report-tool`, `/suggest-tool`) through a Cloudflare Worker that creates GitHub issues for tool submissions, reports, and suggestions.**

The **FckSignups API** is a lightweight serverless interface designed to crowdsource tool discovery without requiring user accounts. Built as a Cloudflare Worker in the `BraveOPotato/FckSignups` repository, the API accepts JSON payloads from the frontend and automates GitHub issue creation for community moderation.

## Core API Endpoints

All endpoints share the same base URL (your deployed Worker address) and follow identical patterns: **POST** requests with JSON bodies, JSON responses, and built-in CORS support.

### `/submit-tool` — Submit a New Tool

The primary endpoint for adding tools to the FckSignups directory. In [`cloudflare-worker/worker.ts`](https://github.com/BraveOPotato/FckSignups/blob/main/cloudflare-worker/worker.ts), this route delegates to [`handleSubmitTool.ts`](https://github.com/BraveOPotato/FckSignups/blob/main/handleSubmitTool.ts), which formats the payload into a GitHub issue.

```javascript
fetch('https://<your-worker-url>/submit-tool', {
  method: 'POST',
  headers: { 'Content-Type': 'application/json' },
  body: JSON.stringify({
    name: 'SuperTool',
    description: 'Makes life easier',
    url: 'https://example.com/supertool',
    category: 'Productivity'
  })
})
  .then(r => r.json())
  .then(console.log)
  .catch(console.error);

```

Expected payload fields: `name`, `description`, `url`, `category`.

### `/report-tool` — Report an Existing Tool

Flags problematic tools for review. The handler in [`handleReportTool.ts`](https://github.com/BraveOPotato/FckSignups/blob/main/handleReportTool.ts) creates a structured issue containing the tool identifier and user-supplied details.

```javascript
fetch('https://<your-worker-url>/report-tool', {
  method: 'POST',
  headers: { 'Content-Type': 'application/json' },
  body: JSON.stringify({
    toolId: '12345',
    reason: 'Broken link',
    details: 'The download URL returns 404.'
  })
})
  .then(r => r.json())
  .then(console.log)
  .catch(console.error);

```

Key fields: `toolId` (reference to existing tool), `reason` (categorized issue), `details` (free-form explanation).

### `/suggest-tool` — Suggest an Unlisted Tool

For community members who want to propose tools not yet in the submission queue. Routed through [`handleSuggestTool.ts`](https://github.com/BraveOPotato/FckSignups/blob/main/handleSuggestTool.ts) with issue formatting tailored to suggestions.

```javascript
fetch('https://<your-worker-url>/suggest-tool', {
  method: 'POST',
  headers: { 'Content-Type': 'application/json' },
  body: JSON.stringify({
    name: 'NewTool',
    description: 'A tool we think the community would love',
    url: 'https://newtool.example.com',
    category: 'Utilities'
  })
})
  .then(r => r.json())
  .then(console.log)
  .catch(console.error);

```

## Request Handling and Routing Architecture

The entry point at [`cloudflare-worker/worker.ts`](https://github.com/BraveOPotato/FckSignups/blob/main/cloudflare-worker/worker.ts) implements a simple router with path matching:

1. **CORS preflight**: Responds to `OPTIONS` requests with appropriate headers (defined in [`utils.ts`](https://github.com/BraveOPotato/FckSignups/blob/main/utils.ts)).
2. **Method verification**: Rejects non-POST requests with 405 status.
3. **Path dispatch**: Routes to the corresponding handler module based on `request.url`.

Each handler module ([`handleSubmitTool.ts`](https://github.com/BraveOPotato/FckSignups/blob/main/handleSubmitTool.ts), [`handleReportTool.ts`](https://github.com/BraveOPotato/FckSignups/blob/main/handleReportTool.ts), [`handleSuggestTool.ts`](https://github.com/BraveOPotato/FckSignups/blob/main/handleSuggestTool.ts)) contains the GitHub API integration logic and issue formatting rules specific to its endpoint type.

### Shared Infrastructure

| File | Purpose |
|------|---------|
| [`cloudflare-worker/utils.ts`](https://github.com/BraveOPotato/FckSignups/blob/main/cloudflare-worker/utils.ts) | JSON response helpers and CORS header generation |
| [`cloudflare-worker/worker.ts`](https://github.com/BraveOPotato/FckSignups/blob/main/cloudflare-worker/worker.ts) | Request routing and middleware pipeline |
| [`urlHandlers/handleSubmitTool.ts`](https://github.com/BraveOPotato/FckSignups/blob/main/urlHandlers/handleSubmitTool.ts) | `/submit-tool` business logic |
| [`urlHandlers/handleReportTool.ts`](https://github.com/BraveOPotato/FckSignups/blob/main/urlHandlers/handleReportTool.ts) | `/report-tool` business logic |
| [`urlHandlers/handleSuggestTool.ts`](https://github.com/BraveOPotato/FckSignups/blob/main/urlHandlers/handleSuggestTool.ts) | `/suggest-tool` business logic |

All handlers return JSON with either a success indicator or an `error` field containing failure details.

## Response Format

Every FckSignups API endpoint returns a JSON object. Successful issue creation typically yields:

```json
{ "success": true, "issueNumber": 42 }

```

Errors include descriptive messaging:

```json
{ "error": "Missing required field: name" }

```

The [`utils.ts`](https://github.com/BraveOPotato/FckSignups/blob/main/utils.ts) module standardizes these response structures across all three endpoints.

## Summary

- **FckSignups provides three POST endpoints**: `/submit-tool`, `/report-tool`, and `/suggest-tool`
- **All endpoints create GitHub issues** through dedicated handlers in the `urlHandlers/` directory
- **CORS-enabled** with preflight support for browser-based clients
- **Consistent JSON request/response format** with error handling via [`utils.ts`](https://github.com/BraveOPotato/FckSignups/blob/main/utils.ts)
- **No authentication required** — submissions are moderated through GitHub issue workflows

## Frequently Asked Questions

### Does the FckSignups API require authentication?

No. The FckSignups API is intentionally open. Authentication is handled at the GitHub level when the Worker creates issues using a repository token stored as a Cloudflare secret. End users submit tools anonymously, and maintainers moderate via standard GitHub issue workflows.

### What HTTP methods does the FckSignups API support?

The three functional endpoints accept **POST** requests only. The Worker also responds to **OPTIONS** requests for CORS preflight. All other methods receive a 405 Method Not Allowed response generated in [`worker.ts`](https://github.com/BraveOPotato/FckSignups/blob/main/worker.ts) before route dispatch occurs.

### Can I use the FckSignups API from a browser?

Yes. The Worker explicitly handles CORS headers through the utility functions in [`utils.ts`](https://github.com/BraveOPotato/FckSignups/blob/main/utils.ts), allowing direct `fetch()` calls from browser contexts without proxy servers. Both simple requests and preflight scenarios are supported.

### Where are the tools stored after submission?

Nowhere in a traditional database. According to the source code in [`handleSubmitTool.ts`](https://github.com/BraveOPotato/FckSignups/blob/main/handleSubmitTool.ts) and sibling handlers, all submissions become **GitHub issues** in the repository configured via environment variables. The FckSignups API is essentially a GitHub issue creation proxy with structured formatting.