API Overview

The NoodleSpy API is a JSON HTTP API. All requests and responses use application/json.

Base URL

https://api.noodlespy.com

Authentication

Every request requires an API key in the Authorization header:

Authorization: Bearer nspy_your_api_key_here

Create and manage API keys in your dashboard. Keys can be scoped as read-write or read-only.

Endpoints

MethodPathDescriptionQuota
POST/search/webWeb search via Google Custom Search1 utility call
POST/search/groundedAI-generated answer with citations1 utility call
POST/fetchFetch a web page as markdown/HTML1 utility call
POST/runsCreate a research run1–3 credits
GET/runsList research runs
GET/runs/{id}Get a research run

Request format

Send JSON in the request body with a Content-Type: application/json header:

curl -X POST https://api.noodlespy.com/search/web \
  -H "Authorization: Bearer nspy_your_key" \
  -H "Content-Type: application/json" \
  -d '{"query": "user onboarding pain points"}'

Response format

Responses wrap data in a data key for single-resource endpoints:

{
  "data": { ... }
}

List endpoints include pagination:

{
  "data": [ ... ],
  "next_cursor": "eyJ0..."
}

Quota headers

Every response includes remaining quota in headers:

X-Usage-Remaining-Credits: 28
X-Usage-Remaining-Utility: 994

Errors

Errors return a structured JSON body:

{
  "error": {
    "code": "invalid_argument",
    "message": "query is required"
  }
}
HTTP StatusMeaning
400Bad request — invalid parameters
401Unauthorized — missing or invalid API key
404Not found
422Unprocessable — valid request but cannot be completed (e.g., fetch timeout)
429Quota exhausted — wait for your billing cycle to reset
504Gateway timeout — upstream request took too long

Pagination

List endpoints use cursor-based pagination. Pass cursor and limit as query parameters:

GET /runs?limit=10&cursor=eyJ0...

The response includes next_cursor if there are more results. When next_cursor is absent, you've reached the end.