Farmable API (2.0)

Download OpenAPI specification:

Welcome to the Farmable API v2.0

Farmable API enables seamless integration between Farmable’s farm management platform and external systems such as ERP software, farm machinery, and other agricultural tools.

What’s New in Version 2.0

  • Continued support for core retrieval endpoints (farms, fields, sales).
  • Enhancements for Spanish farms: regulatory IDs and compliance fields.
  • New endpoints for spray and fertilizer job logs, aligned with EU regulatory demands.

About Farmable

Farmable is a mobile-first farm management solution built by farmers for farmers. It simplifies daily operations with AI-powered features:

  • Crop identification & pest detection
  • Effortless record-keeping for sprays, fertilizers, and harvests
  • Secure data storage & traceable reporting

Why Farmable?

  • Integration-ready: connect with ERP, machinery, and compliance systems.
  • Compliance-focused: automate reporting to government portals.
  • Scalable: supports global operations with local regulations.
  • Sustainability: reduce administrative overhead and ensure regulatory traceability.

For support, contact support@farmable.tech.

Partner API

The Farmable API is a RESTful service built on OpenAPI principles. It provides read-only access for partners (e.g., companies connected via the Farmable app) and now extends to write capabilities for job submissions.

Key Features

  • Data Scope: farm locations, fields, sales, spray/fertilizer job logs
  • Rate Limiting: 60 requests/minute for sales and job-related endpoints
    • Check headers: Rate-Limit-Remaining, Rate-Limit-Retry-After-Seconds
  • Data Formats:
    • JSON for requests and responses
    • Dates follow ISO 8601 (e.g., 2025-07-11T17:15:00Z)
  • Security:
    • API key authentication
    • HTTPS required for all calls
  • Error Handling:
    • Standard HTTP codes (200 OK, 401 Unauthorized, 429 Too Many Requests)
    • JSON error messages included in responses

Retrieve causes

Retrieve causes to which partner has access.

Authorizations:
api-key

Responses

Response samples

Content type
application/json
[
  • {
    }
]

Retrieve equipments

Retrieve equipments to which partner has access.

Authorizations:
api-key

Responses

Response samples

Content type
application/json
[
  • {
    }
]

Retrieve farm members

Retrieve farm members to which partner has access.

Authorizations:
api-key

Responses

Response samples

Content type
application/json
[
  • {
    }
]

Retrieve farms

Retrieve farms to which partner has access.

Authorizations:
api-key

Responses

Response samples

Content type
application/json
[
  • {
    }
]

Create fertilizer job

Create a new fertilizer job for fields.

Authorizations:
api-key
Request Body schema: application/json
required
completedDate
string <date> ^\d{4}-\d{2}-\d{2}$

Job completion date

documentOnSewageSludge
any

Document on sewage sludge (required for Spanish locations)

farmId
required
any <int32>

Farm ID

fields
required
Array of any <int32> [ items <int32 > ]

List of field IDs

memberId
required
any <int32>

Member ID

startDate
required
string <date> ^\d{4}-\d{2}-\d{2}$

Job start date

required
Array of objects (TreatmentInputV1)

List of treatments to apply

Responses

Request samples

Content type
application/json
{
  • "completedDate": "2024-01-16",
  • "documentOnSewageSludge": null,
  • "farmId": null,
  • "fields": [
    ],
  • "memberId": null,
  • "startDate": "2024-01-15",
  • "treatments": [
    ]
}

Response samples

Content type
application/json
{
  • "id": null
}

Retrieve fields

Retrieve fields to which partner has access.

Authorizations:
api-key

Responses

Response samples

Content type
application/json
[
  • {
    }
]

Retrieve justifications

Retrieve justifications to which partner has access.

Authorizations:
api-key

Responses

Response samples

Content type
application/json
[
  • {
    }
]

Retrieve sales

Retrieve sales to which partner has access.

Authorizations:
api-key

Responses

Response samples

Content type
application/json
[
  • {
    }
]

Create spray job

Create a new spray job for fields.

Authorizations:
api-key
Request Body schema: application/json
required
causeIds
required
Array of any <uuid> [ items <uuid > ]

List of cause IDs

completedDate
any

Job completion date

equipmentId
required
any <int32>

Equipment ID

farmId
required
any <int32>

Farm ID

fields
required
Array of any <int32> [ items <int32 > ]

List of field IDs

justificationIds
required
Array of any <uuid> [ items <uuid > ]

List of justification IDs

memberId
required
any <int32>

Member ID

startDate
required
any

Job start date

required
Array of objects (TreatmentInputV1)

List of treatments to apply

Responses

Request samples

Content type
application/json
{
  • "causeIds": [
    ],
  • "completedDate": "2024-01-16",
  • "equipmentId": null,
  • "farmId": null,
  • "fields": [
    ],
  • "justificationIds": [
    ],
  • "memberId": null,
  • "startDate": "2024-01-15",
  • "treatments": [
    ]
}

Response samples

Content type
application/json
{
  • "id": null
}

Retrieve treatments

Retrieve treatments to which partner has access. Optionally filter by field IDs.

Authorizations:
api-key
query Parameters
fieldIds
string^$|^[1-9][0-9]*(,[1-9][0-9]*)*$
Example: fieldIds=12,45,78

CSV of field IDs. If omitted or empty, returns all treatments.

Responses

Response samples

Content type
application/json
[
  • {
    }
]