# Fix Fishbowl REST API Login 401 and Integrated App Errors

> Source: https://netray.co/erp-help/fishbowl-rest-api-login-401-integrated-app-approval
> Publisher: Netray (netray.co), AI and integration engineering for ERP and manufacturing systems.
> Section: ERP Help

## Short answer

A failed Fishbowl REST API login is usually one of three things: the integration was never approved inside Fishbowl, the appName and appId in the request do not match the approved entry, or the Fishbowl user lacks permission. Approve the app in the Fishbowl client, fix the login payload, use a dedicated API user and send the returned token on later calls.

## Kind

error

## System

small-erp

## Erp

Fishbowl Inventory

## Module

REST API / Integrated Apps

## Query

Fishbowl API login 401 unauthorized

## Alternate Queries

- Fishbowl REST API login not working
- Fishbowl integrated app not approved
- Fishbowl API token appId appName
- Fishbowl api/login returns error

## Applies To

Fishbowl Inventory versions with the REST API (Fishbowl Advanced and Fishbowl Drive offerings that expose it). Verify the endpoint paths in your version's API documentation.

## Steps

### How to fix the login failure

**Items:**

- Confirm the server URL, port and whether the REST API is enabled on your Fishbowl server.
- Send a POST to the login endpoint with JSON containing appName, appId, appDescription, username and password.
- Open the Fishbowl client and look in the integrated apps list for a pending entry from your appName. Approve it.
- Make sure the appName and appId you send are exactly the same on every later login, because Fishbowl identifies the integration by them.
- Create a dedicated Fishbowl user for the integration with only the permissions it needs, and do not share an admin login.
- Read the token from the successful response and send it as a bearer token on every later request.
- Call the logout endpoint when the job ends so you do not exhaust concurrent sessions or licenses.
- If you still get an error, read the response body and the Fishbowl server log for the exact reason before changing anything else.

## Sections

### Why approval is required

**Body:**

Fishbowl does not let any program that knows a username and password connect. The first login from a new integration creates a pending integrated app entry that an administrator must approve inside Fishbowl. Until then the API rejects the login, which developers often read as a bad password.

The approval is tied to the appName and appId you send. Change either one in your code, for example while moving from test to production, and Fishbowl treats it as a different, unapproved app. Keep them as fixed configuration values.

### A correct login request

**Body:**

The login is a JSON POST. Store the returned token in memory for the life of the job and pass it in the Authorization header on later calls. Do not log the token or password.

**Code:**

POST /api/login
Content-Type: application/json

{
  "appName": "NetrayInventorySync",
  "appId": 4321,
  "appDescription": "Nightly stock sync to warehouse dashboard",
  "username": "api_sync",
  "password": "<from secret store>"
}

### Permissions, licenses and sessions

**Body:**

The API user needs the same Fishbowl permissions as a person doing that work. A user who cannot view parts in the client cannot read them through the API, and you will see access errors on specific calls even though login succeeded.

API sessions count against your licensing and concurrency limits. Scripts that log in repeatedly without logging out can leave stale sessions and cause later logins to fail. Reuse one token per run and always log out in a finally block.

### Network and server checks

**Body:**

If no request reaches Fishbowl, check the firewall, the port, TLS certificates and whether you are calling the server from the correct network. A certificate mismatch often shows up as a client library error rather than a 401.

If Fishbowl is reachable but returns errors on many calls, check the server log and that the database is healthy. A database connection problem can surface through the API as generic failures; the related MySQL connection article covers that case.

## Pitfalls

- Never approving the integrated app and debugging the password instead.
- Changing appId or appName between environments and creating a new unapproved app.
- Using an administrator account for the integration instead of a least-privilege user.
- Logging in on every call instead of reusing the token, then hitting session limits.
- Storing the Fishbowl password in source control or logs.
- Skipping logout so stale sessions pile up.

## Ai Angle

SyteRay-style tooling is for SyteLine, but the same principle applies to Fishbowl through an ERPray or DataRay connector: a read-only service account, an approved integration, and every query visible to the user. An assistant can explain a failing API call from the response and server log, but it should not hold admin credentials or write to the system without human approval. For a single simple integration, Fishbowl's own documented integrations may be enough.

## Faq

### Why does Fishbowl reject my API login with a correct password?

**Answer:** Often the integrated app has not been approved in the Fishbowl client, or the appName and appId changed. Approve the pending app, keep those values constant and retry. Also confirm the user account is active and has the needed permissions.

### Where do I approve a Fishbowl integration?

**Answer:** In the Fishbowl client, an administrator reviews integrated apps and approves the pending request from your appName. The exact menu location can vary by version, so check the Fishbowl documentation for your release.

### Should I log in for every API call?

**Answer:** No. Log in once per job, reuse the token on later calls and log out at the end. Repeated logins waste time and can leave stale sessions that interfere with licensing and later logins.

### Can the API user be my administrator account?

**Answer:** It works but is a poor choice. Create a dedicated user with only the permissions the integration needs, so you can audit and revoke it without affecting people, and so a leaked credential has limited reach.

## Search terms

Fishbowl API login, Fishbowl REST API 401, Fishbowl integrated app approval, Fishbowl API token, Fishbowl appId appName, Fishbowl API authentication, Fishbowl integration setup, Fishbowl API user permissions

---
Talk to an engineer: https://netray.co/contact?intent=erp_ai | Machine catalog: https://netray.co/agent/catalog.json
