endpoints
Custom REST API endpoints with authentication and helpers
Install / Use
npx skills add sanjayguwaju/himalayascontinentalInstalls into whichever agent you are using.
Cursor Rules
Cursor IDE rules (v2)
Quality Score
Category
Development & EngineeringSupported Platforms
Our assessment of endpoints
endpoints scores 59/100 on our quality scale, 4131st of 4,617 Development & Engineering skills we index.
Its Cursor Rules is 4.8 KB long, well organised into 12 sections with 9 code examples: a solid amount of guidance for an agent.
It has no GitHub stars yet, so there is no community track record; judge it on its content.
Maintenance, license and trust
- We could not determine when the repository was last updated.
- Our last check on 2026-10-20 found the source still online.
- No license is declared. By default that means all rights are reserved: you can read it, but reusing or redistributing it is not clearly permitted. Ask the author before building on it commercially.
- Its trust signals score 68/100, with 3 cautions from licensing, adoption, age or documentation. These come from repository metadata, not a code audit — read the skill file before letting an agent act on it.
Safety scan
No issues foundOur scan of the whole file found no instruction hijacking, hidden characters, credential access, data exfiltration or destructive commands. An AI review of the same text found nothing harmful.
AI review by kimi-k2.7-code on 2026-09-24. Automated pattern scan on 2026-09-24. It catches known dangerous patterns, not every risk — read a skill before letting an agent act on it.
endpoints compared with similar skills
All 4 of these similar skills score higher than endpoints; compare them before choosing.
| Skill | Score | Stars | Updated | Format |
|---|---|---|---|---|
| endpoints (this skill)by sanjayguwaju | 59 | 0 | — | Cursor Rules |
| taste-skillby Leonxlnx | 100 | 110.6k | today | CLAUDE.md |
| Agent-Reachby Panniantong | 100 | 109.2k | today | CLAUDE.md |
| headroomby headroomlabs-ai | 100 | 78.9k | today | CLAUDE.md |
| ai-job-searchby ai-job-search-dev | 100 | 69.8k | today | CLAUDE.md |
Frequently asked questions
- How do I install endpoints?
- Run
npx skills add sanjayguwaju/himalayascontinental. The install tabs above show the steps for each supported agent. - Which AI agents does endpoints work with?
- It is written for Cursor, as a Cursor Rules file. Other agents that read the same format can often use it too.
- Is endpoints safe to use?
- Our scan of the whole file found no instruction hijacking, hidden characters, credential access, data exfiltration or destructive commands. An AI review of the same text found nothing harmful. It declares no license and scores 68/100 on trust signals. Skills are instructions an agent will follow, so read the file before installing it and do not approve commands you do not understand.
- Is endpoints still maintained?
- We could not determine when the repository was last updated.
Skill content
View source on GitHubtitle: Custom Endpoints description: Custom REST API endpoints with authentication and helpers tags: [payload, endpoints, api, routes, webhooks]
Payload Custom Endpoints
Basic Endpoint Pattern
Custom endpoints are not authenticated by default. Always check req.user.
import { APIError } from "payload";
import type { Endpoint } from "payload";
export const protectedEndpoint: Endpoint = {
path: "/protected",
method: "get",
handler: async (req) => {
if (!req.user) {
throw new APIError("Unauthorized", 401);
}
// Use req.payload for database operations
const data = await req.payload.find({
collection: "posts",
where: { author: { equals: req.user.id } },
});
return Response.json(data);
},
};
Route Parameters
export const trackingEndpoint: Endpoint = {
path: "/:id/tracking",
method: "get",
handler: async (req) => {
const { id } = req.routeParams;
const tracking = await getTrackingInfo(id);
if (!tracking) {
return Response.json({ error: "not found" }, { status: 404 });
}
return Response.json(tracking);
},
};
Request Body Handling
// Manual JSON parsing
export const createEndpoint: Endpoint = {
path: "/create",
method: "post",
handler: async (req) => {
const data = await req.json();
const result = await req.payload.create({
collection: "posts",
data,
});
return Response.json(result);
},
};
// Using helper (handles JSON + files)
import { addDataAndFileToRequest } from "payload";
export const uploadEndpoint: Endpoint = {
path: "/upload",
method: "post",
handler: async (req) => {
await addDataAndFileToRequest(req);
// req.data contains parsed body
// req.file contains uploaded file (if multipart)
const result = await req.payload.create({
collection: "media",
data: req.data,
file: req.file,
});
return Response.json(result);
},
};
Query Parameters
export const searchEndpoint: Endpoint = {
path: "/search",
method: "get",
handler: async (req) => {
const url = new URL(req.url);
const query = url.searchParams.get("q");
const limit = parseInt(url.searchParams.get("limit") || "10");
const results = await req.payload.find({
collection: "posts",
where: {
title: {
contains: query,
},
},
limit,
});
return Response.json(results);
},
};
CORS Headers
import { headersWithCors } from "payload";
export const corsEndpoint: Endpoint = {
path: "/public-data",
method: "get",
handler: async (req) => {
const data = await fetchPublicData();
return Response.json(data, {
headers: headersWithCors({
headers: new Headers(),
req,
}),
});
},
};
Error Handling
import { APIError } from "payload";
export const validateEndpoint: Endpoint = {
path: "/validate",
method: "post",
handler: async (req) => {
const data = await req.json();
if (!data.email) {
throw new APIError("Email is required", 400);
}
return Response.json({ valid: true });
},
};
Endpoint Placement
Collection Endpoints
Mounted at /api/{collection-slug}/{path}.
export const Orders: CollectionConfig = {
slug: "orders",
endpoints: [
{
path: "/:id/tracking",
method: "get",
handler: async (req) => {
// Available at: /api/orders/:id/tracking
const orderId = req.routeParams.id;
return Response.json({ orderId });
},
},
],
};
Global Endpoints
Mounted at /api/globals/{global-slug}/{path}.
export const Settings: GlobalConfig = {
slug: "settings",
endpoints: [
{
path: "/clear-cache",
method: "post",
handler: async (req) => {
// Available at: /api/globals/settings/clear-cache
await clearCache();
return Response.json({ message: "Cache cleared" });
},
},
],
};
Root Endpoints
Mounted at /api/{path}.
export default buildConfig({
endpoints: [
{
path: "/hello",
method: "get",
handler: () => {
// Available at: /api/hello
return Response.json({ message: "Hello!" });
},
},
],
});
Best Practices
- Always check authentication - Custom endpoints are not authenticated by default
- Use
req.payloadfor operations - Ensures access control and hooks execute - Use helpers for common tasks -
addDataAndFileToRequest,headersWithCors - Throw
APIErrorfor errors - Provides consistent error responses - Return Web API
Response- UseResponse.json()for consistent responses - Validate input - Check required fields, validate types
- Log errors - Use
req.payload.loggerfor debugging
Related Skills
taste-skill
110.6kAgent skills that give coding agents taste: art direction, reference images and a browser check instead of generic AI pages
Agent-Reach
109.2kGive your AI agent eyes to see the entire internet. Read & search Twitter, Reddit, YouTube, GitHub, Bilibili, XiaoHongShu — one CLI, zero API fees.
headroom
78.9kCompress tool outputs, logs, files, and RAG chunks before they reach the LLM. 20% fewer tokens for coding agents, 60-95% fewer tokens for JSON, same answers. Library, proxy, MCP server.
ai-job-search
69.8kThe job search that runs on your machine. AI job application framework built on Claude Code: evaluate postings, tailor CVs, write cover letters, prep interviews. Fork it and own it.
Trust signals
From repository metadata: license, adoption, age and documentation. Not a code audit — see the Safety scan above for what the skill file itself contains.
