fiSSHingv2

Plugins & API

Connect your tools
to Fisshing.

Your agent can reach you here while you fish. Use the API to build bots, check your inventory, or add an overlay to your stream.

Fisshing API
// Weather and player counts. No key needed.
GET /api/v2/world

// Your character. Requires an API key.
GET /api/v2/me/state

// Send catch events to your app.
catch → webhook → your app
Public data No key requiredPlayer API Online + saved stateEvents Delivery history + replay

01 / Start here

Read the fish catalog

This request finds salmon in the fish catalog. You can also filter by location or rarity. Each result includes its bait and catch conditions.

curl 'https://fisshing.net/api/v2/catalog?q=salmon&limit=5'
Try it now. Open the catalog response ↗ or see the current world ↗. Both work without an API key.

02 / Connect your character

Get your API key

Start the game, open Profile → API Key, and copy your key. Keep it in an environment variable on your computer or server.

export FISSHING_API_KEY='your-key-here'
curl 'https://fisshing.net/api/v2/me/state' \
  -H "Authorization: Bearer $FISSHING_API_KEY"

Your key can read your character and send game inputs. Keep it out of public code, shared URLs, and browser apps. Use a server for apps that you share. To replace an exposed key, press Shift+R twice on the in-game API Key screen. This revokes the old key and closes its live overlays. Player reads work from saved state when you are offline; notifications and actions need an active game session.

03 / Examples

A few things you can build

Get a message when your build finishes

Send a short in-game message when a task finishes. Set your activity indicator while your agent works.

curl -X POST 'https://fisshing.net/api/v2/notify' \
  -H "Authorization: Bearer $FISSHING_API_KEY" \
  -H 'Content-Type: application/json' \
  -d '{"message":"Tests passed. Ready for review.","source":"build","alert_level":"success"}'
Read the full recipe ↗

Agent Desk

Answer your agent from the game

Open Profile → Agent Desk to check on your agents and answer their questions. The plugin sends each reply back to the question it belongs to.

Choose your plugin. There are plugins for Claude Code, Codex, and OpenCode. See the setup guides below for supported versions and how replies work. You still approve commands and file changes in the agent’s own app.
curl -fsSLO https://fisshing.net/integrations/fisshing-claude-plugin.tar.gz
tar -xzf fisshing-claude-plugin.tar.gz
export FISSHING_API_KEY='your-key-here'
claude --plugin-dir ./fisshing

Use the key from the character you play. The plugin sends the project name, task status, and questions. It does not upload your transcripts or command output. If you don’t answer in time, you can still answer in Claude.

Claude Code setup and supported hooks ↗

04 / API reference

Available endpoints

Use /api/v2 for new apps. Existing /api routes still work. The OpenAPI document lists request fields, responses, and errors.

GET
/catalog · /world

Public fish data and current conditions. No key required.

GET
/me/state · /me/fish · /me/collection

Your character, inventory, and collection. Works offline.

POST
/notify · /status

Send a message or set your agent activity indicator. Online only.

POST
/bot/enable · /actions

Enable the visible bot tag, then send game inputs. Online only.

GET
/webhooks · /deliveries

List your endpoints and recent delivery results.

POST
/webhooks · /webhooks/:id/test

Register an endpoint or send a test event.

POST
/deliveries/:id/replay

Request another attempt for a failed delivery.

DELETE
/webhooks/:id

Remove an endpoint and cancel its queued deliveries.

Check the result before you retry. Enable bot mode in each game session before sending actions. A successful response means the game has queued your input. Read the player state or wait for an event to find out what happened before sending it again.

Authenticated routes allow 20 requests per second per player; notifications allow two. Actions allow up to 10 requests per second in total, with lower limits for some inputs. A 429 response means slow down. A 404 on a live-only route means the player is offline. A 403 on actions means bot mode is not enabled.

Open the API reference ↗

05 / Webhooks

Receive game events

Register an HTTPS endpoint and choose the events you need. Save the signing secret from the create response. Fisshing signs each request body with HMAC-SHA256.

curl -X POST 'https://fisshing.net/api/v2/webhooks' \
  -H "Authorization: Bearer $FISSHING_API_KEY" \
  -H 'Content-Type: application/json' \
  -d '{"url":"https://your-app.example/events","events":["catch","new_species"]}'
  1. Verify before you parse. Check X-Fisshing-Signature against the exact request bytes. Use a constant-time comparison.
  2. Use the event ID. You may receive the same event more than once. Store its ID so your app can skip events it has already handled.
  3. Return a 2xx response promptly. Put long work in your own queue. Network failures, 429, and server errors can retry.
  4. Check failed deliveries. Use the delivery API to see failures, send a test event, and retry a failed delivery.
catch new_species achievement level_up sell world_record session_start session_end challenge_result

Up to three endpoints per player. Use public HTTPS destinations. Private network addresses and redirects are not supported. Fisshing keeps a limited delivery history. Save events in your own database if you need to keep them.

06 / Stream overlays

Show your catches on stream

Use the Phoenix overlay socket for live catch cards, fish art, and rarity colors. Use webhooks for a saved event feed or community service that must recover after a disconnect.

The overlay socket is a live feed. It does not replay missed events. Keep the key in your private streaming setup, and do not share the source URL.
Set up an OBS overlay ↗

07 / Downloads & reference

Code you can use