Unfortunately, this feature is not supported on mobile devices. For the best experience, please use a computer.

Core APIs (latest)

Introduction

The Rebilly API is built on HTTP and is RESTful. It has predictable resource URLs and returns HTTP response codes to indicate errors. It also accepts and returns JSON in the HTTP body. Use your favorite HTTP/REST library in your programming language when using this API, or use one of the Rebilly SDKs, which are available in PHP and JavaScript.

Every action in the Rebilly UI is supported by an API which is documented and available for use, so that you may automate any necessary workflows or processes. This API reference documentation contains the most commonly integrated resources.

Authentication

This topic describes the different forms of authentication that are available in the Rebilly API, and how to use them.

Rebilly offers four forms of authentication: secret key, publishable key, JSON Web Tokens, and public signature key.

  • Secret API key: Use to make requests from the server side. Never share these keys. Keep them guarded and secure.
  • Publishable API key: Use in your client-side code to tokenize payment information.
  • JWT: Use to make short-life tokens that expire after a set period of time.

Manage API keys

To create or manage API keys, select one of the following:

For more information on API keys, see API keys.

Errors

Rebilly follows the error response format proposed in RFC 9457, which is also known as Problem Details for HTTP APIs. As with any API responses, your client must be prepared to gracefully handle additional members of the response.

SDKs

Rebilly provides a JavaScript SDK and a PHP SDK to help interact with the Rebilly API. However, no SDK is required to use the API.

Rebilly also provides FramePay, a client-side iFrame-based solution, to help create payment tokens while minimizing PCI DSS compliance burdens and maximizing your customization ability. FramePay interacts with the payment tokens creation operation.

JavaScript SDK

For installation and usage instructions, see SDKs. All JavaScript SDK code examples are included in the API reference documentation.

PHP SDK

For installation and usage instructions, see SDKs. All SDK code examples are included in the API reference documentation. To use them, you must configure the $client as follows:

$client = new Rebilly\Client([
    'apiKey' => 'YourApiKeyHere',
    'baseUrl' => 'https://api.rebilly.com',
]);

Get started

The full Rebilly API has over 500 operations. This is likely more than you may need to implement your use cases. If you would like to implement a particular use case, contact Rebilly for guidance and feedback on the best API operations to use for the task.

To integrate Rebilly, and learn about related resources and concepts, see Get started.

Rate limits

Rebilly enforces rate limits on the API to ensure that no single organization consumes too many resources. Rate limits are applied to the organization, and not to the API key. In sandbox environment, rate limits are enforced for non-GET endpoints and are set at 3000 requests per 10 minutes. You can find the exact number of consumed requests in the X-RateLimit-Limit and X-RateLimit-Remaining headers in the response. If the rate limit is exceeded, the API returns a 429 Too Many Requests response and a X-RateLimit-Retry-After header that includes a UTC timestamp of when the rate limit resets.

Download OpenAPI description
Languages
Servers
Mock server
https://www.rebilly.com/_mock/docs/dev-docs/api/
Sandbox server
https://api-sandbox.rebilly.com/organizations/{organizationId}/
Live server
https://api.rebilly.com/organizations/{organizationId}/

Customers

Use these operations to manage customers. A customer is an entity that purchases goods or services from you (a merchant), and is the payee in any transaction that is credited to you. Customers are associated with payment instruments, subscriptions, invoices, and other related resources.

In other systems, customers may be referred to as accounts, clients, members, patrons, or players. For information on the customer resource, see Resources.

Operations

Customer authentication

Use these operations to validate the identity of users and manage authentication credentials.

Operations

Retrieve authentication options

Request

Retrieves customer authentication options.

curl -i -X GET \
  https://www.rebilly.com/_mock/docs/dev-docs/api/authentication-options \
  -H 'REB-APIKEY: YOUR_API_KEY_HERE'
Experience it firsthand in the API Explorer!

Responses

Authentication options retrieved.

Bodyapplication/json
passwordPatternstring or null

Allowed password pattern.

Example:

"/^[0-9]+$/"

credentialTtlinteger

Default credential lifetime, in seconds.

authTokenTtlinteger

Default auth-token lifetime, in seconds.

resetTokenTtlinteger

Default reset-token lifetime, in seconds.

otpRequiredboolean

Specifies if a One-Time Password (OTP) is required to exchange a token.

_linksArray of objects(SelfLink)read-only

Related links.

Response
application/json
{ "passwordPattern": "/^[0-9]+$/", "credentialTtl": 0, "authTokenTtl": 0, "resetTokenTtl": 0, "otpRequired": true, "_links": [ {} ] }

Change authentication options

Request

Changes customer authentication options.

Bodyapplication/jsonrequired

Authentication options resource.

passwordPatternstring or null

Allowed password pattern.

Example:

"/^[0-9]+$/"

credentialTtlinteger

Default credential lifetime, in seconds.

authTokenTtlinteger

Default auth-token lifetime, in seconds.

resetTokenTtlinteger

Default reset-token lifetime, in seconds.

otpRequiredboolean

Specifies if a One-Time Password (OTP) is required to exchange a token.

curl -i -X PUT \
  https://www.rebilly.com/_mock/docs/dev-docs/api/authentication-options \
  -H 'Content-Type: application/json' \
  -H 'REB-APIKEY: YOUR_API_KEY_HERE' \
  -d '{
    "passwordPattern": "/^[0-9]+$/",
    "credentialTtl": 0,
    "authTokenTtl": 0,
    "resetTokenTtl": 0,
    "otpRequired": true
  }'
Experience it firsthand in the API Explorer!

Responses

Authentication options updated.

Headers
X-RateLimit-Limitinteger

Total number of rate limit tokens for this request within a rate limit period. For more information, see Rate limits.

Example:

3600

X-RateLimit-Remaininginteger

Remaining number of rate limit tokens for this request within the rate limit period. For example, in the sandbox environment, rate limits for non-GET endpoints are set at 3000 requests per 10 minutes.

Example:

3600

Bodyapplication/json
passwordPatternstring or null

Allowed password pattern.

Example:

"/^[0-9]+$/"

credentialTtlinteger

Default credential lifetime, in seconds.

authTokenTtlinteger

Default auth-token lifetime, in seconds.

resetTokenTtlinteger

Default reset-token lifetime, in seconds.

otpRequiredboolean

Specifies if a One-Time Password (OTP) is required to exchange a token.

_linksArray of objects(SelfLink)read-only

Related links.

Response
application/json
{ "passwordPattern": "/^[0-9]+$/", "credentialTtl": 0, "authTokenTtl": 0, "resetTokenTtl": 0, "otpRequired": true, "_links": [ {} ] }

Retrieve authentication tokens

Request

Retrieves a list of customer authentication tokens.

Query
limitinteger[ 0 .. 1000 ]

Limits the number of collection items to be returned.

offsetinteger[ 0 .. 1000 ]

Specifies the starting point within the collection of items to be returned.

curl -i -X GET \
  'https://www.rebilly.com/_mock/docs/dev-docs/api/authentication-tokens?limit=1000&offset=1000' \
  -H 'REB-APIKEY: YOUR_API_KEY_HERE'
Experience it firsthand in the API Explorer!

Responses

List of auth tokens retrieved.

Headers
Pagination-Totalinteger

Total number of items.

Example:

332

Pagination-Limitinteger

Maximum number of items per page.

Example:

100

Pagination-Offsetinteger

Specifies the starting point within the collection of resource results. For example, a request with limit=20 retrieves and displays the first 20 results on a page. A following request with limit=20 and offset=20, retrieves the next page of 20 results.

Example:

2

Bodyapplication/jsonArray [
usernamestringrequired

Username of the customer who is associated with the authentication token.

customerIdstring<= 50 charactersread-only

ID of the customer resource.

Example:

"cus_0YV7DDSDD1C8DA64KHH2W33CPF"

tokenstringread-only

ID of the authentication token.

otpRequiredboolean

Specifies if a One-Time Password (OTP) is required to exchange the authentication token.

credentialIdstring(ResourceId)<= 50 charactersread-only

Unique resource ID.

expiredTimestring or null(date-time)

Date and time when the token expired.

_linksArray of objects(SelfLink)read-only

Related links.

]
Response
application/json
[ { "username": "string", "customerId": "cus_0YV7DDSDD1C8DA64KHH2W33CPF", "token": "string", "otpRequired": true, "credentialId": "4f6cf35x-2c4y-483z-a0a9-158621f77a21", "expiredTime": "2019-08-24T14:15:22Z", "_links": [] } ]

Login a customer

Request

Logs in a customer.

Bodyapplication/jsonrequired

AuthenticationToken resource.

usernamestringrequired

Username associated with the authentication token.

passwordstring(password)write-onlyrequired

Password associated with the authentication token.

modestringwrite-only

Specifies the authentication verification method. The password token requires the user to enter a password to log in. The passwordless token, requires a secret API key to log in. To obtain an API key, see Manage API keys.

Value"password"
Discriminator
otpRequiredboolean

Specifies if a One-Time Password (OTP) is required to exchange the authentication token.

expiredTimestring(date-time)

Date and time when the token expired.

curl -i -X POST \
  https://www.rebilly.com/_mock/docs/dev-docs/api/authentication-tokens \
  -H 'Content-Type: application/json' \
  -H 'REB-APIKEY: YOUR_API_KEY_HERE' \
  -d '{
    "username": "string",
    "password": "pa$$word",
    "mode": "password",
    "otpRequired": true,
    "credentialId": "4f6cf35x-2c4y-483z-a0a9-158621f77a21",
    "expiredTime": "2019-08-24T14:15:22Z"
  }'
Experience it firsthand in the API Explorer!

Responses

Login successful.

Headers
Locationstring(uri)

Location of the related resource.

Example:

"https://api.rebilly.com/example"

X-RateLimit-Limitinteger

Total number of rate limit tokens for this request within a rate limit period. For more information, see Rate limits.

Example:

3600

X-RateLimit-Remaininginteger

Remaining number of rate limit tokens for this request within the rate limit period. For example, in the sandbox environment, rate limits for non-GET endpoints are set at 3000 requests per 10 minutes.

Example:

3600

Bodyapplication/json
usernamestringrequired

Username of the customer who is associated with the authentication token.

customerIdstring<= 50 charactersread-only

ID of the customer resource.

Example:

"cus_0YV7DDSDD1C8DA64KHH2W33CPF"

tokenstringread-only

ID of the authentication token.

otpRequiredboolean

Specifies if a One-Time Password (OTP) is required to exchange the authentication token.

credentialIdstring(ResourceId)<= 50 charactersread-only

Unique resource ID.

expiredTimestring or null(date-time)

Date and time when the token expired.

_linksArray of objects(SelfLink)read-only

Related links.

Response
application/json
{ "username": "string", "customerId": "cus_0YV7DDSDD1C8DA64KHH2W33CPF", "token": "string", "otpRequired": true, "credentialId": "4f6cf35x-2c4y-483z-a0a9-158621f77a21", "expiredTime": "2019-08-24T14:15:22Z", "_links": [ {} ] }

Verify an authentication token

Request

Verifies a customer's authentication token.

Path
tokenstringrequired

ID of the authentication token.

curl -i -X GET \
  'https://www.rebilly.com/_mock/docs/dev-docs/api/authentication-tokens/{token}' \
  -H 'REB-APIKEY: YOUR_API_KEY_HERE'
Experience it firsthand in the API Explorer!

Responses

Authentication token verified.

Bodyapplication/json
usernamestringrequired

Username of the customer who is associated with the authentication token.

customerIdstring<= 50 charactersread-only

ID of the customer resource.

Example:

"cus_0YV7DDSDD1C8DA64KHH2W33CPF"

tokenstringread-only

ID of the authentication token.

otpRequiredboolean

Specifies if a One-Time Password (OTP) is required to exchange the authentication token.

credentialIdstring(ResourceId)<= 50 charactersread-only

Unique resource ID.

expiredTimestring or null(date-time)

Date and time when the token expired.

_linksArray of objects(SelfLink)read-only

Related links.

Response
application/json
{ "username": "string", "customerId": "cus_0YV7DDSDD1C8DA64KHH2W33CPF", "token": "string", "otpRequired": true, "credentialId": "4f6cf35x-2c4y-483z-a0a9-158621f77a21", "expiredTime": "2019-08-24T14:15:22Z", "_links": [ {} ] }

Logout a customer

Request

Logs out a customer.

Path
tokenstringrequired

ID of the authentication token.

curl -i -X DELETE \
  'https://www.rebilly.com/_mock/docs/dev-docs/api/authentication-tokens/{token}' \
  -H 'REB-APIKEY: YOUR_API_KEY_HERE'
Experience it firsthand in the API Explorer!

Responses

Customer logged out.

Headers
X-RateLimit-Limitinteger

Total number of rate limit tokens for this request within a rate limit period. For more information, see Rate limits.

Example:

3600

X-RateLimit-Remaininginteger

Remaining number of rate limit tokens for this request within the rate limit period. For example, in the sandbox environment, rate limits for non-GET endpoints are set at 3000 requests per 10 minutes.

Example:

3600

Response
application/json
{ "status": 401, "type": "http://example.com", "title": "string", "detail": "string", "instance": "string" }

Exchange an authentication token

Request

Exchanges an authentication token for a JWT.

By default, this operation invalidates the exchanged authentication token.

Path
tokenstringrequired

ID of the authentication token.

Bodyapplication/jsonrequired
invalidatebooleanwrite-only

Specifies whether to invalidate a token after an exchange is performed.

Default true
Example:

true

oneTimePasswordstring^[0-9]{6}$write-only

One time password that sent by email. This value must contain digits only.

Example:

"123456"

aclArray of objects(Acl)

Access Control List (ACL) information.

customClaimsobject
Example:

{"documents":["identity-proof","address-proof"],"redirectUrl":"https://mywebsite.com"}

expiredTimestring(date-time)

Date and time when the session expires. The default value is one hour after the createdTime value.

curl -i -X POST \
  'https://www.rebilly.com/_mock/docs/dev-docs/api/authentication-tokens/{token}/exchange' \
  -H 'Content-Type: application/json' \
  -H 'REB-APIKEY: YOUR_API_KEY_HERE' \
  -d '{
    "invalidate": true,
    "oneTimePassword": "123456",
    "acl": [
      {
        "scope": {
          "organizationId": [
            "organizationId-id-1"
          ]
        },
        "permissions": [
          "PostFile",
          "StorefrontGetAccount",
          "StorefrontGetWebsite",
          "StorefrontGetKycDocumentCollection",
          "StorefrontGetKycDocument",
          "StorefrontPostKycDocument"
        ]
      }
    ],
    "customClaims": {
      "documents": [
        "identity-proof",
        "address-proof"
      ],
      "redirectUrl": "https://mywebsite.com"
    },
    "expiredTime": "2019-08-24T14:15:22Z"
  }'
Experience it firsthand in the API Explorer!

Responses

Authentication token exchanged for a JWT.

Headers
Locationstring(uri)

Location of the related resource.

Example:

"https://api.rebilly.com/example"

X-RateLimit-Limitinteger

Total number of rate limit tokens for this request within a rate limit period. For more information, see Rate limits.

Example:

3600

X-RateLimit-Remaininginteger

Remaining number of rate limit tokens for this request within the rate limit period. For example, in the sandbox environment, rate limits for non-GET endpoints are set at 3000 requests per 10 minutes.

Example:

3600

Bodyapplication/json
idstring<= 50 charactersread-only

ID of the session.

Example:

"jwt_0YV7DEJX80CDRAKVTV478ZNJDR"

typestringread-only

Type of session.

Value"customer"
tokenstringread-only

Token used for authentication.

customerIdstring<= 50 charactersread-only

ID of the customer resource.

Example:

"cus_0YV7DDSDD1C8DA64KHH2W33CPF"

aclArray of objects(Acl)

Access Control List (ACL) information.

customClaimsobject
Example:

{"documents":["identity-proof","address-proof"],"redirectUrl":"https://mywebsite.com"}

createdTimestring(date-time)(CreatedTime)read-only

Date and time which is set automatically when the resource is created.