Skip to content
Docs
Esc
↑↓navigate↵open⌘Jpreview

Get a team join link

Returns the team behind a join link and the email domains that can join it. When the request is signed in, also returns the caller’s verified emails and whether the caller can join now. Joining uses POST /v1/teams/{teamId}/join.

GET/v1/join-links/{token}
Authorization
AuthorizationBearer token · headerrequired

Better Auth session, OAuth access token, OAuth client-credentials token, or sfm_ Space machine credential.

Path parameters
tokenstringrequired

The token from the join link.

min length 1 · max length 64
Responses
200

Response for status 200

$schemastring<uri>

Canonical JSON Schema URL for this response body. The server also sends it in the Link: rel="describedby" response header.

dataobjectrequired
Show properties
teamobjectrequired
Show properties
idstringrequired

Team id.

namestringrequired

Team display name.

slugstring | nullrequired

Team slug.

logostring | nullrequired

Team logo URL.

domainsstring[]required

Email domains that may join, sorted. Invitations and system-team offers can also permit joining when this list is empty.

viewerobject | nullrequired

The signed-in person reading the link, or null when signed out.

Show properties
Any of:
object
emailstringrequired

The viewer's primary email address.

verifiedEmailsstring[]required

Every verified email address of the viewer.

statestringrequired

What the signed-in viewer can do: can_join (join now), member (already in the team), email_mismatch (no verified email at the team's domains), two_factor_required (turn on two-factor first), self_join_blocked (an admin removed them; they need an invitation), no_domains (the team has no email domains and the viewer has no invitation or system-team offer).

Allowed:can_joinmemberemail_mismatchtwo_factor_requiredself_join_blockedno_domains
null
null
default

Problem details (RFC 9457). Any 4xx/5xx response is one application/problem+json document.

$schemastring<uri>

Canonical JSON Schema URL for this response body. The server also sends it in the Link: rel="describedby" response header.

typestringrequired

Problem type URI resolving to the error docs page. The server derives it mechanically from code against the docs origin.

titlestringrequired

Short human-readable summary of the problem type. The server derives it mechanically from code.

statusintegerrequired

HTTP status code of this response, repeated in the body.

min -9007199254740991 · max 9007199254740991
detailstringrequired

Human-readable failure explanation for this occurrence.

codestringrequired

Stable snake_case error code naming the failed public contract.

pointerstring

RFC 6901 JSON Pointer into the failing request field, for example "/files/37/path", on validation failures.

detailsobject

Machine-readable context for the error code.

fixstring

One sentence on what to do about this error code, the same text as the type page. Read it before retrying.

suggestionsstring[]

Actionable recovery steps safe to show in dashboards, SDKs, and CLI output.

nextstring[]

Copy-pasteable commands or API requests an agent can run next.

requestIdstringrequired

The request id to quote when contacting support.

Try it
Server
Authorization
Parameters
Request
curl -X GET 'https://api.spacefast.com/v1/join-links/string' \
  -H 'Authorization: Bearer YOUR_TOKEN' \
  -H 'Accept: application/json'
Response
{
  "$schema": "http://example.com",
  "data": {
    "team": {
      "id": "string",
      "name": "string",
      "slug": "string",
      "logo": "string"
    },
    "domains": [
      "string"
    ],
    "viewer": {
      "email": "string",
      "verifiedEmails": [
        "string"
      ],
      "state": "can_join"
    }
  }
}

Was this page helpful?