Version

Creator Tasks API

A creator task is a grant no connector can give.

A creator task is a grant no connector can give. When a purchase entitles a subscriber to a manual resource, a perk the creator hands over themselves, the access ledger records a creator_task grant in state pending and opens a task naming the member and the perk. The dashboard lists the open tasks on the members page; these endpoints do the same for integrations, and completing one issues the grant.

No new ability gates tasks: a task is a fact about a subscription's access, so the subscription abilities apply.

Endpoints

curl "https://api.subscriby.net/v1/projects/$PROJECT_ID/creator-tasks?status=open" \  -H "Authorization: Bearer $SUBSCRIBY_TOKEN"

status is open (the default: tasks not yet done whose grant still stands), completed, or all. Paged like every list but oldest first by default, so the longest-waiting member is at the top.

  • grant_id is the access ledger row the task belongs to; read it with the subscription's grants, where its mode is creator_task.
  • instructions is the sentence the dashboard shows the creator, in the creator's locale.
  • due_at is null for continuous access and the window's start for a dated pass.
  • completed_at and completed_by_user_id are set once the task is done.
GET
/v1/projects/{project}/creator-tasks

The token must hold this ability, or the call is refused with 403.

Runs the same action from an agent, behind the same ability.

Authorization

bearerToken
AuthorizationBearer <token>

A personal access token minted on the dashboard under Settings, then Tokens, sent as Authorization: Bearer sbt_live_…. The token carries the abilities each endpoint lists under Requires ability and is frozen to one team.

In: header

Path Parameters

project*string

The project, resolved by the route binder.

Formatuuid

Query Parameters

status?|

The tab: open (the default) lists tasks not yet done whose grant still stands, completed the ones marked done, all both.

page?integer

The 1-based page to return. A page past the last answers an empty data array with meta.total still filled, so a loop can stop without guessing.

Range1 <= value
Default1
per_page?integer

Rows per page, 1 to 100. A higher value clamps to the cap silently. Defaults to 25.

Range1 <= value <= 100
Default25
sort_by?string

The column to order by. Defaults to created_at; a column the endpoint does not offer falls back to the default rather than failing.

Default"created_at"
sort_direction?string

asc or desc. Defaults to asc.

Default"asc"

Value in

  • "asc"
  • "desc"

Responses

200OK

The page, oldest first by default.

401Unauthorized

The request carries no bearer token, or one that is revoked, malformed, or minted for another environment (an sbt_test_ token on production).

403Forbidden

The token is valid but does not carry the ability this endpoint requires; error.context.required_ability names the one to grant. An endpoint that also checks who owns a row or which tier the account is on answers FORBIDDEN, TEAM_TIER_REQUIRED or CONNECTOR_TIER_REQUIRED with the same status, and says so in its own description.

404Not found

An id in the path names nothing the token can see. TENANT_MISMATCH: the project sits outside the token's scope:project: allow-list, or the token carries no team scope. Both answer 404 rather than 403 so that existence outside the token's scope cannot be inferred.

422Validation failed

The payload broke a rule, and error.fields maps each offending key to its messages. A refusal from the domain, such as a plan that cannot go on sale or a member who cannot be removed, uses the same code with error.message saying why and no fields.

429Too many requests

The token has spent its 300 requests a minute or 10,000 an hour; Retry-After says when the next one is accepted.

Complete a creator task

POST
curl -X POST https://api.subscriby.net/v1/projects/$PROJECT_ID/creator-tasks/$TASK_ID/complete \  -H "Authorization: Bearer $SUBSCRIBY_TOKEN" \  -H "Idempotency-Key: $(uuidgen)"

Marks the task done by the token's user, moves the grant to granted, and raises creator_task.completed followed by member.resource_added for the same grant. Answers 200 with the completed task.

Nobody messages the member for you. A manual perk is yours to hand over. Completing the task records that you did and tells your integrations; it does not send the member anything.

POST
/v1/projects/{project}/creator-tasks/{task}/complete

The token must hold this ability, or the call is refused with 403.

Delivered to every endpoint subscribed to them once the change is made.

Runs the same action from an agent, behind the same ability.

Idempotent

Send the header on every call; the same key replays the original response for 24 hours.

Authorization

bearerToken
AuthorizationBearer <token>

A personal access token minted on the dashboard under Settings, then Tokens, sent as Authorization: Bearer sbt_live_…. The token carries the abilities each endpoint lists under Requires ability and is frozen to one team.

In: header

Path Parameters

project*string

The project, resolved by the route binder.

Formatuuid
task*string

The task, resolved within the project by the route binder.

Formatuuid

Header Parameters

Idempotency-Key*string

A key unique to this operation, such as a fresh UUID. The same key replays the original 2xx response for 24 hours (with Idempotent-Replay: true), so a retry after a timeout never repeats the write; the same key with a different body is refused with 409.

Formatuuid

Responses

200OK

200 with the completed task.

400Bad request

Every write needs an Idempotency-Key header. Send a fresh UUID per distinct operation.

401Unauthorized

The request carries no bearer token, or one that is revoked, malformed, or minted for another environment (an sbt_test_ token on production).

403Forbidden

The token is valid but does not carry the ability this endpoint requires; error.context.required_ability names the one to grant. An endpoint that also checks who owns a row or which tier the account is on answers FORBIDDEN, TEAM_TIER_REQUIRED or CONNECTOR_TIER_REQUIRED with the same status, and says so in its own description.

404Not found

An id in the path names nothing the token can see. TENANT_MISMATCH: the project sits outside the token's scope:project: allow-list, or the token carries no team scope. Both answer 404 rather than 403 so that existence outside the token's scope cannot be inferred.

409Conflict

The key was already used in the last 24 hours with a different request body.

422Validation failed

The payload broke a rule, and error.fields maps each offending key to its messages. A refusal from the domain, such as a plan that cannot go on sale or a member who cannot be removed, uses the same code with error.message saying why and no fields. On this endpoint: VALIDATION_FAILED: when the task is already done, or its purchase has since ended so there is nothing left to grant; error.context.task_id names it.

425Too early

The first request with this key is still running; retry in a few seconds and the original response is replayed.

429Too many requests

The token has spent its 300 requests a minute or 10,000 an hour; Retry-After says when the next one is accepted.

How is this guide?

Version

On this page

Subscriby is a product
designed by you — for you.
No boardroom full of executives deciding what we ships next. Our roadmap always shaped by you with your feedback.

Share feedback or a request