Husbandry.Pro API
Read and write everything in your account — animals, activities, breeding, medical, customers, environment, documents — from your own software. Scoped keys, cursor-paginated lists, webhooks when something changes, and an ingest path for any sensor. The OpenAPI description is generated from the same code that serves the requests.
Make your first request
From a fresh key to a recorded feeding in about five minutes.
https://next.husbandry.pro/api/v1. The host is https://next.husbandry.pro; paths in these docs are relative to /api/v1 on that host. The classic husbandry.pro domain is a separate, older system and does not serve this API.- 1
Create a key
Open your profile, choose the API tab, create a key, and tick the permissions it needs. Copy it — it is shown once.
Open your API settings → - 2
Check it works
GET /mereturns the account behind the key, the scopes it holds, and your rate limits — so you know what you can reach without probing for 403s. - 3
Read your data
GET /animals, filtered however you like. Every list is cursor-paginated: follownext_cursoruntilhas_moreis false. - 4
Write something
POST /activitiesrecords a feeding, weight, or shed. Send anIdempotency-Keyso a retry can never double-write.
Full curl examples and responses are in the guide.
Everything in the API
84 endpoints across 14 areas. This list is generated from the running code; click any row for its parameters, body fields, response, and errors.
Account
1 endpoint| GET | /me | Get the current account |
Animals
6 endpoints| GET | /animal-types | List species in this account |
| GET | /animals | List animals |
| POST | /animals | Create an animal |
| DELETE | /animals/{id} | Delete an animal |
| GET | /animals/{id} | Get an animal |
| PATCH | /animals/{id} | Update an animal |
Activities
6 endpoints| GET | /activities | List activities |
| POST | /activities | Record an activity |
| DELETE | /activities/{id} | Delete an activity |
| GET | /activities/{id} | Get an activity |
| PATCH | /activities/{id} | Update an activity |
| GET | /activity-types | List activity types |
Breeding
10 endpoints| GET | /breeding/clutches | List clutches |
| POST | /breeding/clutches | Create a clutch |
| DELETE | /breeding/clutches/{id} | Delete a clutch |
| GET | /breeding/clutches/{id} | Get a clutch |
| PATCH | /breeding/clutches/{id} | Update a clutch |
| GET | /breeding/records | List breeding records |
| POST | /breeding/records | Create a breeding record |
| DELETE | /breeding/records/{id} | Delete a breeding record |
| GET | /breeding/records/{id} | Get a breeding record |
| PATCH | /breeding/records/{id} | Update a breeding record |
Medical
5 endpoints| GET | /medical/conditions | List diagnosed conditions |
| POST | /medical/conditions | Record a diagnosed condition |
| DELETE | /medical/conditions/{id} | Delete a condition |
| GET | /medical/conditions/{id} | Get a diagnosed condition |
| PATCH | /medical/conditions/{id} | Update or resolve a condition |
Environment
7 endpoints| GET | /environment/environments | List environments |
| POST | /environment/environments | Create an environment |
| DELETE | /environment/environments/{id} | Delete an environment |
| GET | /environment/environments/{id} | Get an environment |
| PATCH | /environment/environments/{id} | Update an environment |
| GET | /environment/metrics | List available metrics |
| GET | /environment/readings | Query sensor readings |
Documents
5 endpoints| GET | /documents | List documents |
| POST | /documents | Upload a document |
| DELETE | /documents/{id} | Delete a document |
| GET | /documents/{id} | Get a document's metadata |
| PATCH | /documents/{id} | Retitle or refile a document |
Customers
11 endpoints| GET | /contacts | List contacts |
| POST | /contacts | Create a contact |
| DELETE | /contacts/{id} | Delete a contact |
| GET | /contacts/{id} | Get a contact |
| PATCH | /contacts/{id} | Update a contact |
| GET | /sales/invoices | List invoices |
| POST | /sales/invoices | Create an invoice |
| DELETE | /sales/invoices/{id} | Delete an invoice |
| GET | /sales/invoices/{id} | Get an invoice with its lines and payments |
| PATCH | /sales/invoices/{id} | Update or void an invoice |
| POST | /sales/invoices/{id}/payments | Record a payment |
Reference
1 endpoint| GET | /species | List species reference data |
Isopods
9 endpoints| GET | /isopod/availability | List sellable isopod availability |
| GET | /isopod/cultures | List isopod cultures |
| GET | /isopod/cultures/{id} | Get an isopod culture |
| GET | /isopod/cultures/{id}/observations | List observations for a culture |
| POST | /isopod/cultures/{id}/observations | Record an observation |
| GET | /isopod/issues | List isopod issues |
| GET | /isopod/lots | List isopod sale lots |
| GET | /isopod/sales | List isopod sales |
| GET | /isopod/sales/{id} | Get an isopod sale |
Feeder Farm
6 endpoints| GET | /feeder-farm/cultures | List feeder cultures |
| GET | /feeder-farm/cultures/{id} | Get a feeder culture |
| POST | /feeder-farm/cultures/{id}/care | Record a care event |
| GET | /feeder-farm/plan | Get the 14-day plan |
| GET | /feeder-farm/sales | List feeder orders |
| GET | /feeder-farm/stock | List linked feeder stock |
Webhooks
5 endpoints| GET | /webhooks/endpoints | List webhook endpoints |
| POST | /webhooks/endpoints | Create a webhook endpoint |
| DELETE | /webhooks/endpoints/{id} | Delete a webhook endpoint |
| GET | /webhooks/endpoints/{id} | Get a webhook endpoint |
| PATCH | /webhooks/endpoints/{id} | Update a webhook endpoint |
Sensors
11 endpoints| POST | /sensors/claim/start | Start pairing a headless device |
| GET | /sensors/claim/status | Poll for a pairing result (deprecated query-string form) |
| POST | /sensors/claim/status | Poll for a pairing result |
| GET | /sensors/devices | List sensor devices |
| POST | /sensors/devices | Register a sensor device |
| DELETE | /sensors/devices/{id} | Delete a device |
| GET | /sensors/devices/{id} | Get a device and its channel configuration |
| PATCH | /sensors/devices/{id} | Update a device |
| GET | /sensors/ping | Submit readings from constrained firmware |
| POST | /sensors/ping | Submit readings from constrained firmware |
| POST | /sensors/readings | Submit sensor readings |
Platform
1 endpoint| GET | /status | API status |
Conventions at a glance
Seven things that hold for every endpoint. Each links to the guide that covers it.
Connecting a sensor
Any device that can make an HTTPS request can push readings, using a device key that can do nothing else. Three guides cover it.
- — From nothing to a stored temperature in about five minutes.
- — A complete ESP32 sketch, plus the fallbacks for constrained firmware.
- — Why devices report channels rather than places, and what that buys you.