# Manage your directory

For organization staff: add, update, and remove entries in your own community-resource directory. This requires a *team key* with the directory management scope — developer keys don't have access here.

> **Who this is for.** Organization managers and admins who want to sync their directory from a spreadsheet, CRM, or another system. If you just want to propose one new resource, use [Resources — submit](https://bynefit.com/docs/resources-submit) instead.

## Getting access

The directory management permission is approved for one Space at a time. An admin of the Space opens [/dash/integrations/api-tokens](https://bynefit.com/dash/integrations/api-tokens), chooses **Request access** next to *Manage your directory*, and says which site or app will use it and why. Bynefit reviews the request, usually within one business day, and emails the answer. Once it is approved, an admin can tick the permission when making a team key, and that key can call the endpoints below. Only a manager or admin of the space can hold it, and it stops applying if that person loses the role. If a request is declined, you can ask again after 7 days.

You do not have to wait to start building. A test key (`bapi_tk_test_…`) can hold this permission straight away. Every call below checks your request exactly as it would live and answers the same way, but the entries go to a private sandbox that lasts a day, never to your directory. See [Test mode](https://bynefit.com/docs/test-mode).

> **Employee tokens were switched off on 11 October 2026.** If you manage your directory with an older employee token, it now gets a 410 error: switch to a team key. See [Migrating from the legacy endpoint](https://bynefit.com/docs/legacy-sunset).

## Endpoint base

**Base (bynefit.com)**

```
https://bynefit.com/dash/api/resources
Authorization: Bearer bapi_tk_…
Content-Type: application/json
```

## List entries

**GET (/dash/api/resources)**

```http
curl "https://bynefit.com/dash/api/resources?status=approved&limit=50" \
  -H "Authorization: Bearer bapi_tk_…"
```

Returns every resource owned by your organization, including pending and rejected rows. Supports `status`, `category`, `limit`, and `offset`.

## Add one

**POST (/dash/api/resources)**

```http
curl -X POST https://bynefit.com/dash/api/resources \
  -H "Authorization: Bearer bapi_tk_…" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "Atlanta Community Food Bank",
    "description": "Food distribution for metro Atlanta",
    "category": "food",
    "address": "732 Joseph E. Lowery Blvd NW",
    "phone": "(404) 892-9822",
    "website": "https://www.acfb.org"
  }'
```

The entry is added as approved immediately — you're its publisher.

## Bulk import

**POST (/dash/api/resources/import)**

```http
curl -X POST https://bynefit.com/dash/api/resources/import \
  -H "Authorization: Bearer bapi_tk_…" \
  -H "Content-Type: application/json" \
  -d '{
    "resources": [
      { "name": "Food Bank", "purpose": "Meals for families", "category": "food" },
      { "name": "Legal Aid Society", "phone": "(555) 555-0199" }
    ]
  }'
```

Rows with no `name` are skipped. Exact duplicates (same name inside your directory) are skipped. `purpose` is accepted as a spreadsheet-friendly alias for `description`. Any row failing validation rolls back the whole batch.

## Update

**PUT (/dash/api/resources)**

```http
curl -X PUT https://bynefit.com/dash/api/resources \
  -H "Authorization: Bearer bapi_tk_…" \
  -H "Content-Type: application/json" \
  -d '{ "id": 142, "hours": "Mon–Fri 9–5" }'
```

Patch any subset of `name`, `description`, `category`, `address`, `phone`, `website`, `hours`, `status`, `is_active`.

## Delete

**DELETE (/dash/api/resources)**

```http
curl -X DELETE https://bynefit.com/dash/api/resources \
  -H "Authorization: Bearer bapi_tk_…" \
  -H "Content-Type: application/json" \
  -d '{ "id": 142 }'
```

Removes the row and its associated upvotes, saves, and comments.

## Categories

Leave `category` off and Bynefit will infer one from the name and description. Recognized categories: `food`, `housing`, `health`, `employment`, `education`, `childcare`, `legal`, `mental`, `transport`, `finance`, `community`, `other`.

## Errors

| Status | When |
| --- | --- |
| `401` | Missing or unknown bearer. |
| `403` | Your key doesn't have the directory management scope, or the entry belongs to a different organization. |
| `404` | Entry not found. |
| `422` | Required field missing or the bulk array is empty. |

---

Source: https://bynefit.com/docs/resources-write
Checked against the live API on October 10, 2026.
