Skip to main content
Browse docs

Customer Portal API

22 endpoints — authenticate with a workspace access token via Authorization: Bearer. See the API introduction for base URLs, pagination, and rate limits.

Get Customer

GET/api/customer-portal/customers/me

Get authenticated customer. **Scopes**: `customer_portal:read` `customer_portal:write`

Returns 200 with CustomerPortalCustomer.

curl -X GET \
  https://api.rapidly.tech/api/customer-portal/customers/me \
  -H "Authorization: Bearer $RAPIDLY_ACCESS_TOKEN"

Update Customer

PATCH/api/customer-portal/customers/me

Update authenticated customer.

Request body CustomerPortalCustomerUpdate

billing_namestring | null

Billing Name

billing_addressAddressInput | null

Returns 200 with CustomerPortalCustomer.

curl -X PATCH \
  https://api.rapidly.tech/api/customer-portal/customers/me \
  -H "Authorization: Bearer $RAPIDLY_ACCESS_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{ ... }'

Get Authenticated Portal User

GET/api/customer-portal/customer-session/user

Return info about the currently authenticated portal user. **Scopes**: `customer_portal:read` `customer_portal:write`

Returns 200 with PortalAuthenticatedUser.

curl -X GET \
  https://api.rapidly.tech/api/customer-portal/customer-session/user \
  -H "Authorization: Bearer $RAPIDLY_ACCESS_TOKEN"

Introspect Customer Session

GET/api/customer-portal/customer-session/introspect

Introspect the current session and return its information. **Scopes**: `customer_portal:read` `customer_portal:write`

Returns 200 with CustomerCustomerSession.

curl -X GET \
  https://api.rapidly.tech/api/customer-portal/customer-session/introspect \
  -H "Authorization: Bearer $RAPIDLY_ACCESS_TOKEN"

Customer Portal.Customer Session.Request

POST/api/customer-portal/customer-session/request

Request body CustomerSessionCodeRequest

emailstringrequired

Email

workspace_idstringrequired

Workspace Id

customer_idstring | null

Optional customer ID for disambiguation when multiple customers share the same email.

Returns 202 with object.

curl -X POST \
  https://api.rapidly.tech/api/customer-portal/customer-session/request \
  -H "Authorization: Bearer $RAPIDLY_ACCESS_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{ ... }'

Customer Portal.Customer Session.Authenticate

POST/api/customer-portal/customer-session/authenticate

Request body CustomerSessionCodeAuthenticateRequest

codestringrequired

Code

Returns 200 with CustomerSessionCodeAuthenticateResponse.

curl -X POST \
  https://api.rapidly.tech/api/customer-portal/customer-session/authenticate \
  -H "Authorization: Bearer $RAPIDLY_ACCESS_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{ ... }'

List File Sharing Sessions

GET/api/customer-portal/file-sharing/sessions

List file sharing sessions for the authenticated member's workspace. **Scopes**: `customer_portal:read` `customer_portal:write`

Query parameters

pageinteger

Page number, defaults to 1.

limitinteger

Size of a page, defaults to 10. Maximum is 100.

sorting"created_at" | "-created_at" | "status" | "-status" | "download_count" | "-download_count"[] | null

Sorting criterion. Several criteria can be used simultaneously and will be applied in order. Add a minus sign `-` before the criteria name to sort by descending order.

Returns 200 with PaginatedList_FileShareSessionSchema_.

curl -X GET \
  https://api.rapidly.tech/api/customer-portal/file-sharing/sessions \
  -H "Authorization: Bearer $RAPIDLY_ACCESS_TOKEN"

Get File Sharing Session

GET/api/customer-portal/file-sharing/sessions/{id}

Get a file sharing session by ID. **Scopes**: `customer_portal:read` `customer_portal:write`

Path parameters

idstringrequired

Returns 200 with FileShareSessionSchema.

curl -X GET \
  https://api.rapidly.tech/api/customer-portal/file-sharing/sessions/{id} \
  -H "Authorization: Bearer $RAPIDLY_ACCESS_TOKEN"

List Session Downloads

GET/api/customer-portal/file-sharing/sessions/{id}/downloads

List downloads for a file sharing session. **Scopes**: `customer_portal:read` `customer_portal:write`

Path parameters

idstringrequired

Returns 200 with FileShareDownloadSchema[].

curl -X GET \
  https://api.rapidly.tech/api/customer-portal/file-sharing/sessions/{id}/downloads \
  -H "Authorization: Bearer $RAPIDLY_ACCESS_TOKEN"

List Session Payments

GET/api/customer-portal/file-sharing/sessions/{id}/payments

List payments for a file sharing session. **Scopes**: `customer_portal:read` `customer_portal:write`

Path parameters

idstringrequired

Returns 200 with FileSharePaymentSchema[].

curl -X GET \
  https://api.rapidly.tech/api/customer-portal/file-sharing/sessions/{id}/payments \
  -H "Authorization: Bearer $RAPIDLY_ACCESS_TOKEN"

List Members

GET/api/customer-portal/members

List all members of the customer's team. Only available to owners and billing managers of team customers.

Returns 200 with CustomerPortalMember[].

curl -X GET \
  https://api.rapidly.tech/api/customer-portal/members \
  -H "Authorization: Bearer $RAPIDLY_ACCESS_TOKEN"

Add Member

POST/api/customer-portal/members

Add a new member to the customer's team. Only available to owners and billing managers of team customers. Rules: - Cannot add a member with the owner role (there must be exactly one owner) - If a member with this email already exists, the existing member is returned

Request body CustomerPortalMemberCreate

emailstringrequired

The email address of the new member.

namestring | null

Display name (optional).

role"owner" | "billing_manager" | "member"

Hierarchical role within a customer team.

Returns 201 with CustomerPortalMember.

curl -X POST \
  https://api.rapidly.tech/api/customer-portal/members \
  -H "Authorization: Bearer $RAPIDLY_ACCESS_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{ ... }'

Update Member

PATCH/api/customer-portal/members/{id}

Update a member's role. Only available to owners and billing managers of team customers. Rules: - Cannot modify your own role (to prevent self-demotion) - Customer must have exactly one owner at all times

Path parameters

idstringrequired

Request body CustomerPortalMemberUpdate

role"owner" | "billing_manager" | "member" | null

The new role for the member.

Returns 200 with CustomerPortalMember.

curl -X PATCH \
  https://api.rapidly.tech/api/customer-portal/members/{id} \
  -H "Authorization: Bearer $RAPIDLY_ACCESS_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{ ... }'

Remove Member

DELETE/api/customer-portal/members/{id}

Remove a member from the team. Only available to owners and billing managers of team customers. Rules: - Cannot remove yourself - Cannot remove the only owner

Path parameters

idstringrequired

Returns 204 with unknown.

curl -X DELETE \
  https://api.rapidly.tech/api/customer-portal/members/{id} \
  -H "Authorization: Bearer $RAPIDLY_ACCESS_TOKEN"

Customer Portal.Oauth Accounts.Authorize

GET/api/customer-portal/oauth-accounts/authorize

**Scopes**: `customer_portal:write`

Query parameters

platform"microsoft" | "discord"required

Platforms a customer may link for single sign-on.

customer_idstringrequired
return_tostring | null

Returns 200 with AuthorizeResponse.

curl -X GET \
  https://api.rapidly.tech/api/customer-portal/oauth-accounts/authorize \
  -H "Authorization: Bearer $RAPIDLY_ACCESS_TOKEN"

Customer Portal.Oauth Accounts.Callback

GET/api/customer-portal/oauth-accounts/callback

**Scopes**: `customer_portal:write`

Query parameters

statestringrequired
codestring | null
errorstring | null

Returns 200 with object.

curl -X GET \
  https://api.rapidly.tech/api/customer-portal/oauth-accounts/callback \
  -H "Authorization: Bearer $RAPIDLY_ACCESS_TOKEN"

List Payment Methods

GET/api/customer-portal/payment-methods

List all saved payment methods for the authenticated customer.

Returns 200 with PaymentMethodSchema[].

curl -X GET \
  https://api.rapidly.tech/api/customer-portal/payment-methods \
  -H "Authorization: Bearer $RAPIDLY_ACCESS_TOKEN"

Add Payment Method

POST/api/customer-portal/payment-methods

Add a new payment method via Stripe SetupIntent. Returns ``succeeded`` with the saved payment method, or ``requires_action`` with a ``client_secret`` for 3D Secure.

Request body PaymentMethodCreate

confirmation_token_idstringrequired

Stripe.js confirmation token for the new payment method

set_defaultboolean

Whether to set this as the default payment method

return_urlstringrequired

URL to redirect to after 3D Secure verification

Returns 201 with PaymentMethodCreateSucceededResponse | PaymentMethodCreateRequiresActionResponse.

curl -X POST \
  https://api.rapidly.tech/api/customer-portal/payment-methods \
  -H "Authorization: Bearer $RAPIDLY_ACCESS_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{ ... }'

Confirm Payment Method

POST/api/customer-portal/payment-methods/confirm

Complete the add-card flow after 3D Secure verification.

Request body PaymentMethodConfirm

setup_intent_idstringrequired

The SetupIntent ID returned from the requires_action step

set_defaultboolean

Whether to set this as the default payment method

Returns 201 with PaymentMethodCreateSucceededResponse | PaymentMethodCreateRequiresActionResponse.

curl -X POST \
  https://api.rapidly.tech/api/customer-portal/payment-methods/confirm \
  -H "Authorization: Bearer $RAPIDLY_ACCESS_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{ ... }'

Delete Payment Method

DELETE/api/customer-portal/payment-methods/{id}

Remove a saved payment method.

Path parameters

idstringrequired

Returns 204 with unknown.

curl -X DELETE \
  https://api.rapidly.tech/api/customer-portal/payment-methods/{id} \
  -H "Authorization: Bearer $RAPIDLY_ACCESS_TOKEN"

Set Default Payment Method

POST/api/customer-portal/payment-methods/{id}/default

Set a payment method as the customer's default.

Path parameters

idstringrequired

Returns 200 with PaymentMethodSchema.

curl -X POST \
  https://api.rapidly.tech/api/customer-portal/payment-methods/{id}/default \
  -H "Authorization: Bearer $RAPIDLY_ACCESS_TOKEN"

Get Workspace

GET/api/customer-portal/workspaces/{slug}

Get a customer portal's workspace by slug.

Path parameters

slugstringrequired

The workspace slug.

Returns 200 with CustomerWorkspaceData.

curl -X GET \
  https://api.rapidly.tech/api/customer-portal/workspaces/{slug} \
  -H "Authorization: Bearer $RAPIDLY_ACCESS_TOKEN"