Ranch.Bot
Skip to reference

Farm memory API

HTTP reference for farm memory. Read authentication and access before using these operations. All examples use made-up data and placeholder credentials.

GET /v1/farm/{farm_id}/memory

Get Memories

Current farm memory HTTP operation. External credential scopes: read:records. Minimum farm role: READER. Production rate limit: 100 requests per 15-minute window, per legacy key, otherwise per client IP. RateLimit headers report the current window; respect Retry-After on 429. HTTP memory creation and deletion are browser-only and reject both device credentials and legacy API keys. CLI/MCP tool availability must not be inferred from this HTTP read endpoint.

ParameterInRequiredSchema
farm_idpathYes{"type":"string","format":"uuid"}
groupedqueryNo{"type":"string","enum":["true","false"]} Only the literal true selects grouped versions; otherwise returns current memories.

Request example

bash example
curl --fail-with-body -X GET \
  'https://api.ranch.bot/v1/farm/<farm_id>/memory' \
  -H "Authorization: Bearer $RANCHBOT_TOKEN"

Responses

StatusMeaningContent type
200Successapplication/json
400Request validation failed.application/json
401Missing/invalid authentication or insufficient farm role.application/json
403Missing required scope or credential type is disallowed.application/json
404Resource or active farm membership not found.application/json
429Rate limit exceeded. Retry after the indicated delay.application/json
500Unexpected server failure.application/json

200 response schema (application/json)

FieldTypePresenceConstraints
(variant 1)objectRequired
(variant 1).memoriesarrayRequired
(variant 1).memories[]objectRequired
(variant 1).memories[].keystringRequired
(variant 1).memories[].currentobjectRequired
(variant 1).memories[].current.idstringRequired
(variant 1).memories[].current.farm_idstringRequired
(variant 1).memories[].current.keystringRequired
(variant 1).memories[].current.valueJSONRequired
(variant 1).memories[].current.provenanceJSONOptional
(variant 1).memories[].current.source (variant 1)nullRequired
(variant 1).memories[].current.source (variant 2)stringRequired
(variant 1).memories[].current.confidence (variant 1)nullRequired
(variant 1).memories[].current.confidence (variant 2)numberRequired
(variant 1).memories[].current.created_atstringRequiredformat: "date-time"
(variant 1).memories[].current.updated_atstringRequiredformat: "date-time"
(variant 1).memories[].versionsarrayRequired
(variant 1).memories[].versions[]objectRequired
(variant 1).memories[].versions[].idstringRequired
(variant 1).memories[].versions[].valueJSONRequired
(variant 1).memories[].versions[].source (variant 1)nullRequired
(variant 1).memories[].versions[].source (variant 2)stringRequired
(variant 1).memories[].versions[].provenanceJSONRequired
(variant 1).memories[].versions[].confidence (variant 1)nullRequired
(variant 1).memories[].versions[].confidence (variant 2)numberRequired
(variant 1).memories[].versions[].created_atstringRequiredformat: "date-time"
(variant 1).memories[].versions[].updated_atstringRequiredformat: "date-time"
(variant 2)objectRequired
(variant 2).memoriesarrayRequired
(variant 2).memories[]objectRequired
(variant 2).memories[].idstringRequired
(variant 2).memories[].keystringRequired
(variant 2).memories[].valueJSONRequired
(variant 2).memories[].source (variant 1)nullRequired
(variant 2).memories[].source (variant 2)stringRequired
(variant 2).memories[].confidence (variant 1)nullRequired
(variant 2).memories[].confidence (variant 2)numberRequired
(variant 2).memories[].created_atstringRequiredformat: "date-time"
(variant 2).memories[].updated_atstringRequiredformat: "date-time"
json example
{
  "memories": []
}

Error body

Validation and authentication errors generally use this envelope. Rate-limit errors omit data; OAuth polling also has protocol-specific errors shown in its reference.

json example
{
  "success": false,
  "errors": [
    {
      "code": 400,
      "name": "ValidationError",
      "message": "Example validation failure"
    }
  ]
}