Forge API

Help

Troubleshooting

Diagnose common problems with projects, endpoint URLs, HTTP methods, JSON responses, request protection, usage limits, account access and subscription updates.

Start with: Status code, request method and complete URLUseful tools: Browser, cURL, Postman and Vercel logs

Check the final response status

Middleware, routing and function logs may show several internal status values. Focus first on the final HTTP status returned to the client, such as 200, 401, 404, 405 or 429.

Quick diagnostic checklist

Check these items before changing your project or endpoint configuration.

  1. 1

    Confirm that you copied the complete endpoint URL from the correct project.

  2. 2

    Confirm that the HTTP method matches the method configured on the endpoint.

  3. 3

    Confirm that the endpoint is active.

  4. 4

    Confirm that the project and account are active.

  5. 5

    Include every required project and endpoint request header.

  6. 6

    Check whether the monthly request allowance has been exhausted.

  7. 7

    Test the same request using cURL or Postman to separate frontend problems from endpoint problems.

Endpoint returns 404

A 404 response normally means Forge API could not resolve an active endpoint for the requested project key, path and method.

Check the URL structure:

URL
https://apis.getforgeapi.com/abc12/products

Incorrect project key

The URL may contain an example key, an old key or a key copied from another project.

Incorrect path

The requested path may contain a typo, missing segment or unexpected trailing text.

Endpoint is inactive

The endpoint still exists in the dashboard but is not available to public callers.

Wrong HTTP method

The path may exist for GET while the client is sending POST, or the reverse.

Endpoint was deleted

Deleted endpoints are no longer available at their previous public URLs.

Project was deleted

Deleting the project removes access to every endpoint that belonged to it.

Test GET endpoints in the browser

For a GET endpoint, paste the complete URL into the browser. If it works there but not in your application, inspect the application’s method, headers and constructed URL.

Request uses the wrong HTTP method

Forge API matches the endpoint path and method together.

These are different endpoint definitions:

text
GET /products
POST /products
DELETE /products

If the endpoint is configured as POST /login, opening the URL in a browser sends a GET request and will not match the POST endpoint.

Use an API client for non-GET methods

Test POST, PUT, PATCH and DELETE endpoints using cURL, Postman or application code that explicitly sends the required method.

Invalid JSON

Forge API requires valid JSON before an endpoint response can be saved.

Common JSON mistakes include:

  • Missing commas between fields
  • Trailing commas after the final item
  • Single quotes instead of double quotes
  • Unquoted property names
  • Unclosed arrays or objects
  • JavaScript values such as undefined or NaN

Invalid example:

invalid.jsonJSON
{
  "name": "Polo Shirt",
  "price": 10,
}

Corrected example:

valid.jsonJSON
{
  "name": "Polo Shirt",
  "price": 10
}

Use the formatter

Use the JSON editor’s format action after correcting the error. A successfully formatted response is easier to read and review.

Required request header is missing

Protected endpoints reject requests that do not include every configured header and value.

Send the exact header name and secret value configured in the dashboard:

bash
curl \
  -H "x-api-key: your-secret-value" \
  https://apis.getforgeapi.com/abc12/products

Check for:

  • An incorrect header name
  • An incorrect secret value
  • Leading or trailing whitespace
  • A header added to the wrong request
  • A project-level header that was included while an endpoint-level header was omitted

All required headers must match

When protection is configured at both project and endpoint level, the request must contain every required project header and every required endpoint header.

Do not publish secret values

Avoid placing shared secret values in public repositories, screenshots, documentation, browser bundles or support messages.

Endpoint changes are not appearing

Confirm that the correct endpoint was saved and that the client is calling the expected URL.

Try these steps:

  1. 1

    Reopen the endpoint and confirm that the updated JSON is visible in the editor.

  2. 2

    Confirm that the save action completed without an error message.

  3. 3

    Copy the public URL again from the endpoint or project page.

  4. 4

    Test the URL directly using cURL or a private browser window.

  5. 5

    Confirm that your application is not using an older environment variable or hardcoded URL.

  6. 6

    Check whether the application is displaying previously cached data from its own state-management or request library.

Log the complete requested URL

Log the exact URL, method and response status inside your application. This often reveals that the frontend is calling a different project, path or environment.

Browser reports a CORS error

Public Forge API endpoints include CORS headers, but browser errors can still be caused by the request configuration or an earlier failure.

Check:

  • The complete endpoint URL is correct
  • The endpoint exists and is active
  • The method is supported by that endpoint
  • Required request headers are included
  • The browser is not blocking mixed HTTP and HTTPS content
  • The request is going directly to Forge API rather than through a failing local proxy

Inspect the network request

Open the browser developer tools, select the failed request and inspect its URL, method, request headers, response status and response body.

Response body cannot be parsed

A client may fail when it assumes every response contains JSON.

Before calling response.json(), check the status code and whether the response is expected to have a body.

request.tsTypeScript
const response = await fetch(
  "https://apis.getforgeapi.com/abc12/products"
);

if (!response.ok) {
  const errorBody = await response.text();

  console.error({
    status: response.status,
    statusText: response.statusText,
    body: errorBody,
  });

  throw new Error(
    `Forge API request failed with status ${response.status}`
  );
}

const data = await response.json();

console.log(data);

204 responses have no body

A response using status 204 should not be parsed as JSON. Handle it separately before calling response.json().

Response delay feels incorrect

A configured delay is approximate and is added to normal network and execution time.

For example, a 1,500 millisecond delay does not guarantee that the complete request finishes in exactly 1.5 seconds. The total time also includes:

  • Client network latency
  • DNS and TLS connection time
  • Forge API request processing
  • Browser or application processing

Plan limits apply

Forge API restricts response delays to the maximum supported by the active plan. A value above the allowed maximum may be rejected or reduced.

Cannot create another project

The account may have reached its project allowance or may not be allowed to create resources.

Review the dashboard and check:

  • The current project count
  • The maximum projects allowed by the active plan
  • The account status
  • Whether paid access has ended

Cannot create another endpoint

The project may have reached its endpoint allowance.

The Free plan limits endpoints per project. Paid plans may provide unlimited endpoints per project, subject to other account limits.

You can:

  • Delete an unused endpoint
  • Reuse and edit an existing endpoint
  • Upgrade to a plan with a higher allowance

Monthly request limit reached

Public requests may be rejected after the account uses its monthly allowance.

Open the Usage page and compare:

  • Requests used in the current period
  • The active plan’s request allowance
  • The usage period start and end dates

Access returns when the usage period resets or the account upgrades to a plan with a larger allowance.

Watch automated polling

Development apps, health checks and test suites can generate many requests quickly. Check for repeated polling, retry loops or tests running more often than expected.

Response exceeds the size limit

Each plan limits the amount of JSON stored in one endpoint response.

Reduce the response size by:

  • Removing repeated fields
  • Reducing the number of sample records
  • Using shorter placeholder strings
  • Splitting one large response across several endpoints
  • Upgrading to a plan with a larger response limit

Use representative data

A mock response usually needs enough records to test pagination, loading and layout behaviour, not a complete copy of production data.

Account is paused

Paused accounts are blocked from protected product actions while retaining access to support routes.

When an account is paused:

  • Dashboard access may redirect to the paused-account page
  • New projects and endpoints cannot be created
  • Protected server actions reject the account
  • The contact page remains available for support

Do not create a second account

Contact support from the affected account where possible. Include the account email and explain why you believe the pause should be reviewed.

Sign-in redirects unexpectedly

Authentication redirects usually indicate a missing or expired session.

Try:

  1. 1

    Sign out and sign in again.

  2. 2

    Confirm that the browser allows cookies for Forge API.

  3. 3

    Try a private browsing window.

  4. 4

    Confirm that you are using the correct Forge API domain and environment.

  5. 5

    Use the password-reset flow when the password is no longer known.

Payment succeeded but the plan did not update

Stripe Checkout may complete before the subscription update appears in Forge API.

Check:

  • You returned to Forge API using the successful Checkout flow
  • The Billing page after waiting briefly
  • The subscription status in Stripe
  • Recent Stripe webhook deliveries
  • Whether webhook deliveries returned a successful response

Refresh the Billing page

Subscription updates can be synchronized again when the Billing or success page checks the current Stripe subscription.

Do not pay twice

If Stripe already shows a successful subscription, do not create another Checkout payment while waiting for the Forge API account to update.

Cancellation is not showing

The Forge API Billing page depends on the latest Stripe subscription state.

After scheduling cancellation:

  1. 1

    Return from the Stripe Customer Portal to Forge API.

  2. 2

    Refresh the Billing page.

  3. 3

    Confirm that Stripe shows a cancellation date rather than an immediate cancellation.

  4. 4

    Review recent webhook deliveries when the local state remains unchanged.

Access continues until period end

A subscription scheduled to cancel remains active during the paid period. The Billing page should show that it is cancelling rather than already cancelled.

Unexpected currency

Forge API displays GBP to UK visitors and USD to visitors elsewhere.

If the displayed currency looks incorrect:

  • Disable any VPN or proxy and reload the page
  • Confirm the deployment is receiving country information
  • Confirm that pricing, Checkout and subscription-status routes use the same currency helper
  • Confirm that both GBP and USD Stripe Price IDs are configured in the deployment environment

Pricing is fixed by region

Forge API does not use live currency conversion. GBP and USD plans have separate fixed prices.

Works locally but not on Preview or Production

Differences between environments are commonly caused by environment variables, authentication protection or deployment configuration.

Review:

  • Supabase URL and publishable-key values in the affected environment
  • Stripe secret, webhook and Price ID variables
  • Vercel deployment protection settings
  • Which Git branch the deployment was built from
  • The domain assigned to the current deployment
  • Recent build and function logs

Preview protection can intercept API requests

Vercel Authentication or deployment protection may return an HTML login page before your public API route executes. Public test endpoints must be reachable by the clients that need to call them.

Testing with cURL

cURL helps reveal the final status, headers and response body without frontend application behaviour.

bash
curl -i https://apis.getforgeapi.com/abc12/products

For a protected endpoint:

bash
curl \
  -H "x-api-key: your-secret-value" \
  https://apis.getforgeapi.com/abc12/products

For a POST endpoint:

bash
curl -i \
  -X POST \
  https://apis.getforgeapi.com/abc12/login

Information to include when contacting support

Clear diagnostic information helps Forge API support investigate the problem more quickly.

  • The email address associated with the account
  • The affected project name
  • The endpoint method and path
  • The final HTTP status code
  • The response body or error message
  • The approximate time the problem occurred
  • The environment: localhost, Preview or Production
  • Steps required to reproduce the issue

Remove sensitive information

Do not include passwords, full payment-card details, Stripe secret keys, Supabase service-role keys or required request-header secret values.

Couldn’t resolve the problem?

Contact Forge API with the request URL, method, status code, environment and exact steps required to reproduce the issue.