Skip to content
On this page and tools
AvailableGET

List resources

Returns the approved community resources your key is allowed to see, newest first: food, housing, health and other support that organizations on Bynefit publish for their communities. Use it to show a local directory or keep a copy in sync.

Request

Request
Method and pathGET /dash/api/v1/resources
NeedsA key that can read resources, sent as a bearer token
Permissionread:resources:public

Parameters

NameTypeWhat it does
categorystringFilter by slug: food, housing, health, employment, education, childcare, legal, mental, transport, finance, community, other. An unrecognized value is ignored.
sinceISO-8601 date-timeOnly entries registered at or after this moment, e.g. 2026-01-01T00:00:00Z. An unparseable value returns 400 with invalid_since.
limitintegerEntries per page. Defaults to 50; values above 200 are capped at 200.
cursorstringThe next_cursor from the previous page. Omit it to start from the newest entry. A malformed cursor returns 400 with invalid_cursor.
offsetintegerSkip this many entries, from 0 to 10000. An alternative to cursor for callers that page by position. Do not send both, or you get 400 with invalid_paging. Anything else returns 400 with invalid_offset.
sortstringnewest (the default) or popular, most upvoted first. popular pages with offset, not cursor. Anything else returns 400 with invalid_sort.

Example

curl "https://bynefit.com/dash/api/v1/resources?category=food&limit=5" \
  -H "Authorization: Bearer bapi_pk_your_key_here"

Response

200 OKapplication/json
{
  "data": [
    {
      "id": "res_3f9a1c07d2b84e55",
      "byn_id": "3f9a1c07d2b84e55",
      "type": "resource",
      "name": "Atlanta Community Food Bank",
      "description": "Food distribution for metro Atlanta",
      "category": "food",
      "address": "732 Joseph E. Lowery Blvd NW, Atlanta, GA",
      "phone": "(404) 892-9822",
      "website": "https://www.acfb.org",
      "hours": null,
      "upvote_count": 4,
      "go_website": "https://bynefit.com/go/r101w",
      "go_phone": "https://bynefit.com/go/r101p",
      "registered_on": "2026-04-21T19:45:02+00:00"
    }
  ],
  "count": 1,
  "total": 212,
  "next_cursor": "eyJjIjoiMjAyNi0wNC0yMSAxOTo0NTowMiIsImkiOjEwMX0",
  "has_more": true,
  "meta": {
    "source": "bynefit.com",
    "powered_by": "Bynefit Inc.",
    "license": "Public domain — free to use with attribution",
    "docs": "https://bynefit.com/docs/resources-read"
  }
}

Paging

Entries come back newest first. While has_more is true, request the next page by passing next_cursor back as cursor, keeping your other filters the same. On the last page has_more is false and next_cursor is null. Treat the cursor as an opaque string — don't build or parse it. count is how many entries are in this page, and total is how many match your filters across every page. total reads "10000+" when more than 10,000 match, and is left out when you page with offset, so use has_more to know when to stop.

curlnext page
curl "https://bynefit.com/dash/api/v1/resources?category=food&limit=5&cursor=NEXT_CURSOR" \
  -H "Authorization: Bearer bapi_pk_…"

Fields

FieldTypeNotes
idstringStable opaque identifier, prefixed res_.
byn_idstringThe same identifier without the prefix.
typestringAlways resource.
namestringDisplay name of the resource.
descriptionstringShort description of what it does.
categorystringOne of the category slugs above.
addressstringSingle-line street address.
phonestringContact phone as entered by the publisher.
websitestringPublic URL. Can be empty.
hoursstringFree-text hours. Can be empty.
upvote_countintegerHow many people have upvoted the entry.
go_website, go_phonestringTracked short links that open the entry's website or dial its phone. null when the entry has none.
registered_onstringISO-8601 time the entry was added.

Errors

Status and codeMeaning
400 invalid_sincesince is not an ISO-8601 date-time.
400 invalid_paging, invalid_offset, invalid_sortThe paging or sort parameters are not allowed together, or not valid on their own. See Parameters.
400 invalid_cursorThe cursor was not issued by this API. Start again without one.
401The key is missing, wrong or revoked.
429Too many requests. Wait for the time in Retry-After.
Only approved entries are returned. Submissions still in review are not exposed on this endpoint. See Resources — submit if you want to contribute a new entry.
Moving from the older ?key= endpoint? It was switched off on 11 October 2026; use the endpoint on this page. See Migrating from the legacy endpoint.
Rate limits. Every response carries X-RateLimit-Limit, X-RateLimit-Remaining and X-RateLimit-Reset (a Unix timestamp). A 429 includes Retry-After in seconds.