expo-api-routes

expo-api-routes is a skill for Codex from fanfan-de/anybox. It costs 18 tokens per session (2,108 once invoked), scanned B, a copy of expo-api-routes, MIT.

A guide for creating server-side API routes in Expo Router with EAS Hosting. An API route is an endpoint that receives requests and runs code on a server.

In plain words
What is it for?
Use it to build protected endpoints, proxy third-party services, handle database operations, receive callbacks, limit requests, or run heavy computation.
Why use it?
It helps keep secrets and database operations off the mobile client and provides a place for server-side validation and webhooks.

Skill for Codex

Written for Codex: agents/openai.yaml present.

Needs its repository: it reads a path above its own folder, which exists only inside the repository. The line is import { requireAuth } from "../../utils/auth";.

Good fit Use it to build protected endpoints, proxy third-party services, handle database operations, receive callbacks, limit requests, or run heavy computation.

Compare 6 skills from other repositories ↓
Install

Getting it into your agent

It runs from inside its repository, so the clone comes first — what it calls does not travel with the file alone.

Clone the repo
git clone --depth 1 https://github.com/fanfan-de/anybox
agentmods
npx agentmods add skills/fanfan-de/anybox/expo-api-routes

Made for: Codex.

Wrote this? Show the measurements

A badge with what this costs and how it scanned, read live from this page, so it follows the numbers instead of freezing them. Markdown for a README, HTML for a documentation site or a project page.

agentmods badge for expo-api-routes

README.md
[![agentmods](https://agentmods.dev/badge/skills/fanfan-de/anybox/expo-api-routes/github.svg)](https://agentmods.dev/skills/fanfan-de/anybox/expo-api-routes)
Your own site
<a href="https://agentmods.dev/skills/fanfan-de/anybox/expo-api-routes"><img src="https://agentmods.dev/badge/skills/fanfan-de/anybox/expo-api-routes/github.svg" alt="Measured on agentmods" height="20"></a>

Or the 80×15 button, for a site that already has a row of RSS and ATOM ones. Only the verdict fits; the numbers stay here.

agentmods 80×15 button for expo-api-routes

Your own site · 80×15
<a href="https://agentmods.dev/skills/fanfan-de/anybox/expo-api-routes"><img src="https://agentmods.dev/badge/skills/fanfan-de/anybox/expo-api-routes.svg" alt="Reviewed on agentmods" width="80" height="20"></a>
Per session 18 Skills are progressive disclosure: only the name and description are preloaded; the body loads when the skill is used.
When invoked 2,108 The whole file, excluding the scripts and references it only reads on demand.
Security scan B 2 findings. A grade says what 26 rules found in the file — not that it is safe.
Origin 100% copy Near-identical to another mod in the catalogue.
Token cost

What it costs to keep this loaded

Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.

ModelPer sessionOnce invoked
Fable 5.1 $0.00018 $0.02108
Opus 5 $0.00009 $0.01054
Sonnet 5 $0.00004 $0.00422
Haiku 4.5 $0.00002 $0.00211

Measured 8d ago against content hash db4d2cd6fbce, method: parsed. Prices are Anthropic first-party input rates as of 2026-09-11, from the pricing page.

Security

Grade B, and why

expo-api-routes scanned grade B with 2 findings against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured 8d ago.

A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.

Sends data to an external URLmediumData exfiltration

A POST to an outside endpoint may be telemetry or may be exfiltration; either way the mod talks to somewhere, and you should know where.

const response = await fetch("https://api.openai.com/v1/chat/completions", { method: "POST",

Makes network callslowCapability

Not a fault in itself. Listed so you know the mod talks to something, and to what.

Test with curl:
Origin

This is a copy

100% identical to expo-api-routes — 0 lines differ, which has more behind it and is treated as the original. This page carries a canonical link to it rather than competing with it.

plugins/Anybox-Plugins/expo/skills/expo-api-routes/SKILL.md · 369 lines

How it starts

The opening of the file, as written. The whole thing — 369 lines — stays where its author put it; the contents beside it link to each section on GitHub.

When to Use API Routes

Use API routes when you need:

  • Server-side secrets — API keys, database credentials, or tokens that must never reach the client
  • Database operations — Direct database queries that shouldn't be exposed
  • Third-party API proxies — Hide API keys when calling external services (OpenAI, Stripe, etc.)
  • Server-side validation — Validate data before database writes
  • Webhook endpoints — Receive callbacks from services like Stripe or GitHub
  • Rate limiting — Control access at the server level
  • Heavy computation — Offload processing that would be slow on mobile

When NOT to Use API Routes

Avoid API routes when:

  • Data is already public — Use direct fetch to public APIs instead
  • No secrets required — Static data or client-safe operations
  • Real-time updates needed — Use WebSockets or services like Supabase Realtime
  • Simple CRUD — Consider Firebase, Supabase, or Convex for managed backends
  • File uploads — Use direct-to-storage uploads (S3 presigned URLs, Cloudflare R2)
  • Authentication only — Use Clerk, Auth0, or Firebase Auth instead

File Structure

API routes live in the app directory with +api.ts suffix:

app/
  api/
    hello+api.ts          → GET /api/hello
    users+api.ts          → /api/users
    users/[id]+api.ts     → /api/users/:id
  (tabs)/
    index.tsx

Basic API Route

// app/api/hello+api.ts
export function GET(request: Request) {
  return Response.json({ message: "Hello from Expo!" });
}

HTTP Methods

Export named functions for each HTTP method:

// app/api/items+api.ts
export function GET(request: Request) {
  return Response.json({ items: [] });
}

export async function POST(request: Request) {
  const body = await request.json();
  return Response.json({ created: body }, { status: 201 });
}

export async function PUT(request: Request) {
  const body = await request.json();
  return Response.json({ updated: body });
}

export async function DELETE(request: Request) {
  return new Response(null, { status: 204 });
}

Read the full file on GitHub · 369 lines

Files

What ships with it

1 file beside SKILL.md in the same directory: the scripts, references and assets a skill reads on demand. Not counted in the per-session cost; read them before you install if any of them is executable.

Changes

What this file has done since we first saw it

Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.

  1. 8d ago First seen · 369 lines · 18 tokens per session scan B db4d2cd6fbce

Subscribe to this mod's changes

expo-api-routes is a skill published in the GitHub repository fanfan-de/anybox (57 stars, last pushed 29d ago), licensed MIT. It adds 18 tokens to every session and 2,108 once invoked, about $0.0001 per session on Opus 5. A static security scan graded it B with 2 findings (sends data to an external url, makes network calls). It is 100% identical to expo-api-routes, differing in 0 lines, and is treated as a copy.

Related

Other skills, from other repositories

build-zoom-contact-center-app

Reference skill for Zoom Contact Center. Use after routing to a contact-center workflow when implementing app, web, or native integrations; engagement context and state handling; campaigns; callbacks; or version-drift troubleshooting.

anthropics/knowledge-work-plugins · 48 tokens

add-signal

Add Signal channel integration via signal-cli device-link. Native adapter — no Chat SDK bridge.

nanocoai/nanoclaw · 22 tokens

build-zoom-meeting-app

Build or embed a Zoom meeting flow. Use when implementing Meeting SDK joins, web or mobile meeting embeds, meeting lifecycle flows, or when deciding between Meeting SDK and Video SDK.

anthropics/knowledge-work-plugins · 42 tokens

feature-flag-policy

Cargo feature flags for crates/xberg — ORT-incompatible targets (WASM, Android x8664 emulator), type-only and tract inference companion features, WASM/Android-safe variants, PDF backend, mutually-exclusive ORT variants, platform-conditional deps, aggregate feature sets, and build profiles. Load when adding, wiring, or…

xberg-io/xberg · 98 tokens

flutter-use-http-package

Use the http package to execute GET, POST, PUT, or DELETE requests. Use when you need to fetch from or send data to a REST API.

flutter/agent-plugins · 38 tokens

at_client_skills-sdk

Use this skill when a developer is building a Dart or Flutter app that depends on atclient or atclientflutter from pub.dev, stores or shares data via the Atsign Protocol, needs onboarding (CRAM new-atsign, atKeys file, keychain, APKAM) or APKAM enrollment, or asks about AtCollection , CItem , Query , sub-collections…

atsign-foundation/at_client_sdk · 232 tokens