corsproxy-dev Proxy API

The Proxy API from corsproxy-dev — 2 operation(s) for proxy.

Operations 4

GET /proxy Get proxy #
POST /proxy Create proxy #
GET /v1/proxy Forward a GET request to an upstream URL #
POST /v1/proxy Forward a POST request to an upstream URL #

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/corsproxy-dev:corsproxy-dev-proxy-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

A second provider on the same verified email joins the account you already have.

OpenAPI Specification

corsproxy-dev-proxy-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: corsproxy.dev Proxy API
  version: 0.1.0
  description: 'Managed CORS proxy API. Programmatic surface for the hosted runtime at

    `https://api.corsproxy.dev`. The same wire protocol is implemented by

    the MIT-licensed Go runtime at

    if you want to self-host.


    Auth: an API key, as `?key=sk_live_…` (browsers) or the `X-API-Key`

    header (servers). Keys are locked to their allowed origins, so server

    callers also send an allowed `Origin` header. API keys only work on the

    endpoints below; account management happens in the dashboard.


    Rate limits:

    - Free plan: 500 requests/day per account, enforced atomically by a

    per-user Durable Object. Over the limit returns `429`.'
  contact:
    name: corsproxy.dev support
    email: contact@corsproxy.dev
    url: https://corsproxy.dev/
  license:
    name: MIT (runtime)
    url: https://github.com/melihbirim/corsproxy/blob/main/LICENSE
servers:
- url: https://api.corsproxy.dev
  description: Production
tags:
- name: Proxy
paths:
  /proxy:
    get:
      $ref: '#/paths/~1v1~1proxy/get'
      tags:
      - Proxy
      summary: Get proxy
      x-summary-source: derived
      operationId: getProxy
      x-operation-id-source: derived
    post:
      $ref: '#/paths/~1v1~1proxy/post'
      tags:
      - Proxy
      summary: Create proxy
      x-summary-source: derived
      operationId: postProxy
      x-operation-id-source: derived
  /v1/proxy:
    get:
      tags:
      - Proxy
      summary: Forward a GET request to an upstream URL
      description: 'The core proxy. Sends `GET ` upstream and rewrites the response

        with permissive CORS headers so a browser can read it.

        Rejections return JSON `{ success: false, code, error }` with a stable

        reason key in `code` (e.g. RATE_LIMIT_EXCEEDED, API_KEY_ORIGIN_NOT_ALLOWED,

        BLOCKED_HOST, UPSTREAM_UNREACHABLE). Full list:

        https://corsproxy.dev/docs/#errors'
      parameters:
      - in: query
        name: url
        required: true
        description: Absolute URL of the upstream API to call.
        schema:
          type: string
          format: uri
          example: https://api.github.com/users/octocat
      - in: query
        name: key
        required: false
        description: API key for browser callers. Server callers should use the `X-API-Key` header instead.
        schema:
          type: string
          example: REDACTED_STRIPE_KEY
      - in: header
        name: X-API-Key
        required: false
        description: API key for server-side callers.
        schema:
          type: string
      - in: query
        name: ttl
        required: false
        description: Pro/Enterprise. Cache 200 responses at the edge for this many seconds (1-86400). Response has X-Cache HIT or MISS. 403 on Free.
        schema:
          type: integer
          minimum: 1
          maximum: 86400
      - in: query
        name: reqHeaders
        required: false
        description: Repeatable `name:value` header to set on the upstream request; empty value removes it. Max 20.
        schema:
          type: array
          items:
            type: string
        style: form
        explode: true
      - in: query
        name: resHeaders
        required: false
        description: Repeatable `name:value` header to set on the response; empty value removes it. Access-Control-* cannot be changed. Max 20.
        schema:
          type: array
          items:
            type: string
        style: form
        explode: true
      responses:
        '200':
          description: Upstream returned a successful response. Body and most headers passed through.
        '400':
          description: 'Bad request. Reason keys: MISSING_TARGET_URL, INVALID_TARGET_URL, INVALID_TTL, INVALID_HEADER_OVERRIDE.'
        '401':
          description: 'API key problem. Reason keys: MISSING_API_KEY, INVALID_API_KEY, API_KEY_REVOKED.'
        '403':
          description: 'Not allowed. Reason keys: API_KEY_ORIGIN_NOT_ALLOWED, TARGET_NOT_ALLOWED, BLOCKED_HOST, PROXY_LOOP_DETECTED, UNSAFE_TARGET, BLOCKED_CONTENT, PRO_FEATURE_REQUIRED, TERMS_NOT_ACCEPTED, ACCOUNT_SUSPENDED, ACCOUNT_DELETED.'
        '413':
          description: 'Request body over 10 MB. Reason key: REQUEST_TOO_LARGE.'
        '429':
          description: 'Daily request or bandwidth limit reached. Reason keys: RATE_LIMIT_EXCEEDED, BANDWIDTH_LIMIT_EXCEEDED. Resets at midnight UTC.'
        '502':
          description: 'Upstream problem. Reason keys: RESPONSE_TOO_LARGE, UPSTREAM_UNREACHABLE. (If the upstream itself returns an error, its status and body are passed through with no reason key.)'
      operationId: getV1Proxy
      x-operation-id-source: derived
    post:
      tags:
      - Proxy
      summary: Forward a POST request to an upstream URL
      parameters:
      - $ref: '#/paths/~1v1~1proxy/get/parameters/0'
      - $ref: '#/paths/~1v1~1proxy/get/parameters/1'
      - $ref: '#/paths/~1v1~1proxy/get/parameters/2'
      requestBody:
        required: false
        description: Pass-through to the upstream URL.
        content:
          application/json:
            schema:
              type: object
      responses:
        '200':
          description: Upstream response
          with CORS headers added.: null
        '400':
          description: 'Bad request. Reason keys: MISSING_TARGET_URL, INVALID_TARGET_URL, INVALID_TTL, INVALID_HEADER_OVERRIDE.'
        '401':
          description: 'API key problem. Reason keys: MISSING_API_KEY, INVALID_API_KEY, API_KEY_REVOKED.'
        '403':
          description: 'Not allowed. Reason keys: API_KEY_ORIGIN_NOT_ALLOWED, TARGET_NOT_ALLOWED, BLOCKED_HOST, PROXY_LOOP_DETECTED, UNSAFE_TARGET, BLOCKED_CONTENT, PRO_FEATURE_REQUIRED, TERMS_NOT_ACCEPTED, ACCOUNT_SUSPENDED, ACCOUNT_DELETED.'
        '413':
          description: 'Request body over 10 MB. Reason key: REQUEST_TOO_LARGE.'
        '429':
          description: 'Daily request or bandwidth limit reached. Reason keys: RATE_LIMIT_EXCEEDED, BANDWIDTH_LIMIT_EXCEEDED. Resets at midnight UTC.'
        '502':
          description: 'Upstream problem. Reason keys: RESPONSE_TOO_LARGE, UPSTREAM_UNREACHABLE. (If the upstream itself returns an error, its status and body are passed through with no reason key.)'
      operationId: postV1Proxy
      x-operation-id-source: derived
components:
  securitySchemes:
    apiKey:
      type: apiKey
      in: header
      name: X-API-Key