Me
Tells an integration or agent who it is, what it may do and how fast. Costs one request like any other.
Works with any valid API key.
Authorization
bearerAuth AuthorizationBearer <token>
API key starting with fh_
In: header
Response Body
application/json
application/json
application/json
application/json
curl -X GET "https://feedhorizon.com/api/v1/me"{
"data": {
"organization": {
"id": "org_0195f0a27b3c7d4e8f5a1b2c3d4e5f60",
"name": "string"
},
"plan": "string",
"rateLimit": {
"limit": 0,
"windowSeconds": 0
},
"apiKey": {
"id": "key_0195f0a27b3c7d4e8f5a1b2c3d4e5f60",
"name": "string",
"keyPrefix": "string",
"scopes": [
"profiles:read"
],
"fullAccess": true,
"profileIds": [
"prof_0195f0a27b3c7d4e8f5a1b2c3d4e5f60"
],
"expiresAt": "2026-11-10T08:00:00.000Z"
},
"serverTime": "2026-11-10T08:00:00.000Z"
}
}{
"error": {
"type": "authentication_error",
"code": "missing_api_key",
"message": "No Authorization: Bearer header",
"docUrl": "https://feedhorizon.com/docs/api/errors#authentication_error",
"requestId": "req_m2x81a0kfd3h9s"
}
}{
"error": {
"type": "rate_limit_error",
"code": "rate_limited",
"message": "Too many requests. Wait the seconds in Retry-After",
"docUrl": "https://feedhorizon.com/docs/api/errors#rate_limit_error",
"requestId": "req_m2x81a0kfd3h9s"
}
}{
"error": {
"type": "api_error",
"code": "internal_error",
"message": "Something failed on our side. Retry with backoff, using the same Idempotency-Key for writes",
"docUrl": "https://feedhorizon.com/docs/api/errors#api_error",
"requestId": "req_m2x81a0kfd3h9s"
}
}Versioning
How the API changes, what counts as a breaking change, and how you hear about changes.
List posts GET
Newest first. With `from` or `to` the list becomes a calendar range: posts whose publish time (published, else scheduled) falls in [from, to), oldest first. Pages by cursor: pass `nextCursor` back as `cursor` until it is null. Requires `posts:read`.