Skip to main content
POST
/
members
/
access
curl --request POST \
  --url https://api.kardow.com/members/access \
  --header 'Content-Type: application/json' \
  --header 'x-api-key: <api-key>' \
  --data '
{
  "email": "member@example.com",
  "action": "expire_now",
  "stripeSubscriptionId": "sub_123"
}
'
{
  "data": {
    "id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
    "organizationId": 123,
    "userId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
    "planId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
    "status": "<string>",
    "stripeSubscriptionId": "<string>",
    "currentPeriodStart": "2023-11-07T05:31:56Z",
    "currentPeriodEnd": "2023-11-07T05:31:56Z",
    "cancelAt": "2023-11-07T05:31:56Z",
    "canceledAt": "2023-11-07T05:31:56Z",
    "jobsRemaining": 123,
    "metadata": {}
  }
}

Documentation Index

Fetch the complete documentation index at: https://kardow.com/docs/llms.txt

Use this file to discover all available pages before exploring further.

Use this endpoint when the member already exists and you need to change access state or fully remove the member from this board.

Supported Actions

action
string
required
activate, expire_now, cancel_now, cancel_at_period_end, reactivate, mark_past_due, or delete_member.
delete_member removes the member’s job_board_users row for this organization and deletes their org-scoped user_subscriptions so paywall access is revoked immediately. It does not delete the shared Supabase auth.users account.
email
string
Member email. Required if userId is not provided.
userId
string
Member UUID. Required if email is not provided.
stripeSubscriptionId
string
Existing external subscription identifier to target. Not needed for delete_member.
planId
string
Needed for activate if you do not send another plan identifier.
effectiveAt
string
Optional timestamp for a scheduled cancel or expiration. Ignored for delete_member.

Examples

Expire access immediately

cURL
curl --request POST \
  --url https://api.kardow.com/members/access \
  --header "Content-Type: application/json" \
  --header "x-api-key: your-api-key-here" \
  --data '{
    "email": "member@example.com",
    "action": "expire_now",
    "stripeSubscriptionId": "sub_123"
  }'

Cancel at period end

cURL
curl --request POST \
  --url https://api.kardow.com/members/access \
  --header "Content-Type: application/json" \
  --header "x-api-key: your-api-key-here" \
  --data '{
    "email": "member@example.com",
    "action": "cancel_at_period_end",
    "stripeSubscriptionId": "sub_123",
    "effectiveAt": "2026-04-09T12:00:00.000Z"
  }'

Activate a new plan

cURL
curl --request POST \
  --url https://api.kardow.com/members/access \
  --header "Content-Type: application/json" \
  --header "x-api-key: your-api-key-here" \
  --data '{
    "email": "member@example.com",
    "action": "activate",
    "stripePriceId": "price_paywall_monthly",
    "startsAt": "2026-03-10T12:00:00.000Z"
  }'

Reactivate a paused or canceled subscription

cURL
curl --request POST \
  --url https://api.kardow.com/members/access \
  --header "Content-Type: application/json" \
  --header "x-api-key: your-api-key-here" \
  -d '{
    "email": "member@example.com",
    "action": "reactivate",
    "stripeSubscriptionId": "sub_123"
  }'

Delete a member from this board

cURL
curl --request POST \
  --url https://api.kardow.com/members/access \
  --header "Content-Type: application/json" \
  --header "x-api-key: your-api-key-here" \
  --data '{
    "email": "member@example.com",
    "action": "delete_member"
  }'

Response Shape

data
object
required
The updated subscription record after a subscription action, or a deletion summary after delete_member.

Example response

{
  "data": {
    "id": "22222222-2222-2222-2222-222222222222",
    "organizationId": 42,
    "userId": "11111111-1111-1111-1111-111111111111",
    "planId": "33333333-3333-3333-3333-333333333333",
    "status": "active",
    "stripeSubscriptionId": "sub_123",
    "currentPeriodStart": "2026-03-10T12:00:00.000Z",
    "currentPeriodEnd": "2026-04-10T12:00:00.000Z",
    "cancelAt": null,
    "canceledAt": null,
    "jobsRemaining": null,
    "metadata": null
  }
}

Example delete response

{
  "data": {
    "deleted": true,
    "userId": "11111111-1111-1111-1111-111111111111",
    "organizationId": 42,
    "removedSubscriptionCount": 1
  }
}

Authorizations

x-api-key
string
header
required

API key for authentication. Get yours from Settings > API Keys in the Kardow dashboard.

Body

application/json
action
enum<string>
required
Available options:
activate,
delete_member,
expire_now,
cancel_now,
cancel_at_period_end,
reactivate,
mark_past_due
email
string<email>
userId
string<uuid>
planId
string<uuid>
stripePriceId
string
paypalPlanId
string
planName
string
subscriptionId
string<uuid>
stripeSubscriptionId
string
effectiveAt
string<date-time>
startsAt
string<date-time>
endsAt
string<date-time>
jobsRemaining
integer | null
metadata
object

Response

Subscription updated or member removed

data
object
required