Suggest Edits

Registration

Registering a new account or linking an additional cloud storage provider.

 

General

Account registration is completed by connecting a Cloud Storage Provider. The email address from the Cloud Storage Provider becomes the email address for the account (this can be changed later). After account creation, users should set a password to control access. 2Factor Auth can also be added for additional security.

The registration API’s are the same as the Link Cloud Storage API’s. If you attempt to register with a Cloud Storage Provider that is already connected to an account, you will be logged in instead of creating a new account.

First, get a URL to redirect the user to by calling Get OAuth Link.

Second, complete linking the Cloud Storage Provider, which will create the account, by calling the Process OAuth Code with the parameters received from the Cloud Storage provider callback.

The Process OAuth Code endpoint will return the registration status of the account and the pairing status of the cloud storage.

 
Suggest Edits

Process OAuth Code

This endpoint accepts an OAuth response from Get OAuth Link.

 

Header Auth

 Authentication is required for this endpoint.
posthttps://go.fast.io/api/v1.x/storage/link/provider

Path Params

provider
string
required

The name of the cloud storage provider to process an oauth result for.

Body Params

code
string
required

The OAuth code field returned from the Cloud Storage Provider.

state
string

The OAuth state field returned from the Storage Provider.

id
string

The Installation id field returned from the Storage Provider instead of a state token.

Result Codes

HTTP Results
Description

200

A Cloud Storage Provider was successfully linked to the accounts current credentials.

Result JSON

Variable
Type
Description

result

boolean

true if a URL was returned that you can redirect the end-user to.

provider

string

The name of the Cloud Storage Provider that the URL is associated with. This will correspond to a listed Storage provider.

email

string

The email address associated with the linked account on Fast.

password

string | null

A password code to use with the Set Password endpoint, or null if a password is already set.

Installation or Authorization

If you provide a state token, the request will be treated as an OAuth 2 installation. If you provide the id token, it will be treated as an App Installation.

Password Field

The password field also indicates if the user is a newly created user, or was processed to the existing user-specified in email. Specifically, a null value indicates the email is a new user. A string value indicates a new user.

Set Password

If the password field is set to true, you should call the Set Password API to set a password next.

Failure to Authorize

A failure to authorize will result in an error code in the Error Object with the code 2[1-9]01.

Rate-Limited API

This is a rate-limited API, calling it too frequently will result in an HTTP 429 error response.

$ curl https://go.fast.io/api/v1.x/storage/link/googledrive \
   -X POST \
   -d "state: 0b204e980099a"
   -d "code: 123456"
A binary file was returned

You couldn't be authenticated

{
    "result": true,
    "provider": "googledrive",
    "email": "[email protected]",
    "password": null
}
 
Suggest Edits

Authentication

 

You can utilize our API by authenticating with either an API Key, a JSON Web Tokens or an Access Token which will provide a JSON Web Tokens. The JSON Web Token and an API Key are both valid forms of authentication in all API requests except the auth resources themselves.

auth_token referenced in this documentation can be populated with either your valid API Key or a valid JSON Web Token.

Disabled by default

API Keys are disabled by default for security and must be explicitly created.

HTTPs Only

Fast.io only supports requests over the HTTPs protocol. Any requests made via HTTP will be rejected or fail.

Server Side Only

The API key should never be publicly exposed. Its recommended you only use it in Server-Side applications where you can control access.

API Key

Once you login to your account, you can retrieve your API Key by performing the following steps.

  1. Go to your Account Settings.
  2. Click on Integrate.
  3. Click on Add API Key if it's not already enabled.
  4. Copy the API Key.

Key Length

API Keys are fixed at 36 characters in length.

API Key Expiration

API Keys do not expire but can be deleted at any time.

You can delete an API Key at any time using the Delete button. Once you delete an API Key it is immediately invalidated.

JSON Web Token

JSON Web Token (JWT) is an open standard (RFC 7519) that defines a compact and self-contained way for securely transmitting information between parties as a JSON object. This information can be verified and trusted because it is digitally signed. JWTs can be signed using a secret.

The user/token API provides a valid JSON Web Token which can be useful for an on-demand token generation.

Scopes

Your JWT includes scopes that indicate access. Before accessing a given API, ensure you have the proper scope. For this version of the API, there are only 3 scopes which makes it pretty easy. Additionally, in this version of the API, only 1 scope will be provided with your JWT and they are meant to be inclusive of previous scopes.

Scope
Desc

fast.io/auth

This scope indicates you have limited access to secondary authentication API's only, such as 2-Factor Authentication. You will need to complete further authentication before getting any additional scopes. Specifically, you can call Authorization Check to see if 2Factor is enabled or get the current credentials scope, and you can call Auth 2Factor to get an extended scope beyond auth.

fast.io/user

This scope indicates you have standard user access to the API including the auth API's.

fast.io/role

This scope is not used in this version of the API.

fast.io/admin

This scope is not used in this version of the API.

Password Change

A password change will immediately invalidate all JSON Web Tokens, after changing an account password previous tokens will be invalid. API Keys are not affected.

Supply Credentials

Credentials may be supplied through several formats for flexibility of development. In this documentation we will use an API Key for readability and include it as a header where applicable.

Method
Format
Desc

HTTP Header

Authorization: Bearer :auth_token

This form of authentication can be used for all API requests except for user/token itself.

HTTP Post

auth_token: :auth_token

You can include it as a parameter in any HTTP Post requests.

HTTP Get

?auth_token=:auth_token

You can include it in the URI in get requests. Note: This is not recommended, but it is supported for your flexibility.

Failure to supply credentials for any resource that is protected results in a 401 response.

2 Factor Authentication

Accounts may have 2-Factor authentication enabled. If you're using an API Key for authentication, 2-Factor authentication is not used. If you're using JSON Web Tokens via user/token then you may be subject to additional authentication through the 2-Factor API.

2-Factor authentication is implemented via Authy and supports its apps, SMS, and phone call. Only cellphones should be used. Before enabling 2Factor, associate a phone_number and phone_country with your User. When this feature is enabled, calling user/token will generate a limited JSON Web Token that can only be utilized with the user/2factor APIs.

Once authentication is completed through user/2factor a second JSON Web Token with full scope privileges is provided.

 
Suggest Edits

Access Token

This endpoint provides the user a JSON Web Token when valid plain text credentials are supplied via HTTP Authentication. Requesting a new token will not invalidate any previously issued tokens.

 
get/user/token/token

Path Params

token
string
required

Result Codes

HTTP Result
Description

200

The request was successful and a valid token has been supplied.

401

The user or password (or both) were not valid.

420

Login blocked because of too many attempts. Try again in a few.

Result JSON

Variable
Type
Desc

result

Boolean

true if the credentials were accepted and an auth_token is returned.

expires_in

Integer

The token is valid for this many seconds from the time its issued.

auth_token

String

This is a JSON Web Token you can use for API authorization.

2Factor

Boolean

Indicates if 2Factor is enabled or required to continue. If true you must continue authentication through the 2Factor API.

$ curl https://go.fast.io/api/current/user/token/:token \
  -u username:password
A binary file was returned

You couldn't be authenticated

{
  "result" : "true",
  "expires_in" : 1209600,
  "auth_token" :  "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzUxMiJ9.eyJzdWIiOiIxMjM0NTY3ODkwMTIzNDU2Nzg5Iiwic2NvcGUiOiJnby5mYXN0LmlvIiwicGFzc3dvcmQiOiIwMTIzNDUiLCJleHBpcmVzIjoxNDkzNjY2Mzc0LCJ2ZXJzaW9uIjoiMS4wIn0.EjXlk6ULnXFDYUUrh-JFe2Wr3DhTtO3541hhbTo7IGpPKLUFpay8rfKGnP0I_kM9K5e9rq-Fshik2k-dPiS1vA",
  "2factor" : false
}
 
Suggest Edits

Create Key

This endpoint creates an API Key which can be used for all subsequent requests.

 
post/user/key/

Body Params

memo
string

Add a note for referencing what this API Key is used for. Maximum length of 200 Characters.

Result Codes

HTTP Result
Description

200

The request was successful and a valid API Key has been returned.

Result JSON

Variable
Type
Desc

result

Boolean

true if the credentials were accepted and an auth_token is returned.

api_key

String

This is the API Key which can be used to access the origin account.

Memo

The Memo field must be between 2 and 128 characters and is optional. Invalid Memo's will cause the request to fail. Memo's cannot be updated.

Key Length

The key length is always 50 characters.

$ curl https://go.fast.io/api/v1.0/user/key/ \
	-X POST \
  -H "Authorization: yffaenajzny66mrdiuk6s6dvk6ef2gq7ia72" \
  -d "memo=Integration for Zapier"
A binary file was returned

You couldn't be authenticated

{
  "result" : "true",
  "api_key" :  "9an0ktpki2wnfxggnqn9w08n6mixxbni7fsiejlllwu948twlx"
}
 
Suggest Edits

Key Details

This endpoint gets the details of a key id associated with the current credentials.

 
get/user/key/id

Path Params

id
string
required

A 20 character API key id you wish to fetch details of. Omit this for all API Keys.

Result Codes

HTTP Result
Description

200

The request was successful and a valid API Key object has been returned.

Result JSON

Variable
Type
Desc

result

Boolean

true if the request was valid and a list of api_keys was returned.

api_key

array

An api_key object for the requested id.

One-Way

Keys are created one-way and cannot be retrieved once created. If you lose a key, please delete the key and create a new one.

$ curl https://go.fast.io/api/v1.0/user/key/v5i8dvjmx268v1xd71g1 \
 -H "Authorization: yffaenajzny66mrdiuk6s6dvk6ef2gq7ia72"
A binary file was returned

You couldn't be authenticated

{
    "result": true,
    "api_key": {
        "id": "v5i8dvjmx268v1xd71g1",
        "memo": "Automation Access for Zapier",
        "created": "2019-05-20 23:51:51 UTC",
        "api_key": "**********************************************p5pb"
    }
}
 
Suggest Edits

List Keys

This endpoint lists existing API keys registered to the current account.

 
get/user/keys/id

Path Params

id
string
required

A 20 character API key id you wish to fetch details of. Omit this for all API Keys.

Result Codes

HTTP Result
Description

200

A successful request was made that may or made not include any results.

Result JSON

Variable
Type
Desc

result

Boolean

true if the request was valid and a list of api_keys was returned.

results

int

The number of api_key returned in the api_keys array.

api_keys

array

An array of api_key for each of the API Keys created in this account.

Empty Result

If you have not created any API Keys the api_keys array will be empty and the results field will be 0.

One-Way

Keys are created one-way and cannot be retrieved once created. If you lose a key, please delete the key and create a new one.

API Key Limit

You are limited to 20 API Keys per account.

$ curl https://go.fast.io/api/v1.0/user/keys/ \
 -H "Authorization: yffaenajzny66mrdiuk6s6dvk6ef2gq7ia72"
A binary file was returned

You couldn't be authenticated

{
    "result": true,
    "results": 1,
    "api_keys": [
        {
            "id": "v5i8dvjmx268v1xd71g1",
            "memo": "Automation Access for Zapier",
            "created": "2019-05-20 23:51:51 UTC",
            "api_key": "**********************************************p5pb"
        }
    ]
}
 
Suggest Edits

Delete Key

This endpoint deletes an API Key permanently.

 
delete/user/key/id

Query Params

id
string

The 20 character API key id you want to delete obtained from the List Keys endpoint.

Result Codes

HTTP Result
Description

200

The request was successful and a valid API Key has been deleted.

404

The API Key was not found to delete.

Result JSON

Variable
Type
Desc

result

Boolean

true if the credentials were accepted and an api_key was deleted.

$ curl https://go.fast.io/api/v1.0/user/key/v5i8dvjmx268v1xd71g1 \
	-X DELETE
  -H "Authorization: 9an0ktpki2wnfxggnqn9w08n6mixxbni7fsiejlllwu948twlx"
A binary file was returned

You couldn't be authenticated

{
  "result" : "true"
}
 
Suggest Edits

2Factor Overview

An overview of how 2 Factor authentication works in the Fast.io API.

 

2Factor Authentication in this API is powered by Authy. Authy is a rotating token generation application available on the web, desktop, and all mobile platforms. Authy works like Google Authenticator and supports many websites by default. There is no cost to use 2-Factor authentication via Authy with Fast.io. Learn more about Authy on their website.

Cellphones Only

Only cell phones are supported for 2-Factor Authentication. Any non-cellular number will be rejected.

Rotating Tokens

Authy creates a 6-digit token that rotates every 20 seconds for each app. Once you login or try to perform a protected operation, you will be prompted for this code. You must enter the code that Authy provides in that 20-second window. This token, from the app, SMS or phone call, is referred to in this API as a token. Any API that requires a 2Factor token is referring to this 6-digit code provided by Authy.

How to enable 2-Factor

To enable 2-Factor, you must first have entered a valid phone number in the User Object. Once a phone number is accepted there, you can simply call the Add 2Factor API. One of two things will happen, 1) if you are already an Authy user, the Fast.io App will be added to your existing app, or 2) if you are not, you will receive instructions on adding the app via SMS to the phone number specified in your User Object.

Once you have successfully added via the Add 2Factor API, you must do a follow-up call to the Verify 2Factor API with the token from Authy.

When to use a Call or SMS

When you do not have access to the Authy app but need to authenticate a 2-Factor operation, you can receive a One Time Passcode ("OTP") from Authy via phone call, or via SMS. This should be a backup to the normal Authy App though only. The OTP does not have to be entered within 20 seconds but does have a limited lifespan and will be invalidated by further authentications.

When is a 2-Factor Code Required

The token is required in a number of operations when it's enabled, most prominently, logging in and any destructive operations such as closing an account, or deleting a Server.

Login

When you log in to an account with 2-Factor authentication, the scope of your token is limited to the Auth 2Factor API only. You must call this API with your JWT and the appropriate token. This API returns an updated JWT with a full scope JWT.

Login Via Link Cloud Storage

If you log in through your cloud storage provider, instead of via email and password, and 2Factor is enabled, you will still be given a limited in scope JWT that must be upgraded.

Certain API Calls

Some API calls require a token to be included with the request, but only if 2-Factor auth is enabled.

Checking 2-Factor Status

You can programmatically check 2-Factor Status via the User Details API, or via the recommended the method Authentication API (which details the current scope of the provided JWT).

 
Suggest Edits

Auth 2Factor

This endpoint authorizes a 2-Factor token and provides a JWT in return.

 
post/user/2factor/auth/token

Path Params

token
string
required

The token provided from Authy in a phone call, SMS, or through an application.

Result Codes

HTTP Results
Description

200

The token was validated and 2-Factor is now enabled on the account.

406

The token was not accepted.

429

Too many requests were made in too short a period of time.

Result JSON

Variable
Type
Desc

result

Boolean

true if the credentials were accepted and an auth_token is returned.

expires_in

Integer

The token is valid for this many seconds from the time its issued.

auth_token

String

This is a JSON Web Token you can use for API authorization.

General

This API is used to get a full scope JWT token after logging into an account that has 2-Factor Authentication enabled.

$ curl https://go.fast.io/api/v1.x/user/2factor/auth/8320489 \
   -X POST \
   -H "Authorization: yffaenajzny66mrdiuk6s6dvk6ef2gq7ia72"
A binary file was returned

You couldn't be authenticated

{
  "result" : true
}
 
Suggest Edits

Add 2Factor

This endpoint enables 2-Factor authentication for your user account.

 
post/user/2factor/

Authy

Fast.io uses Authy to provide its 2Factor authentication. They provide a variety of apps and you can use voice calls and SMS messages as well.

Cellphones Only

Only use cell phones with 2Factor authentication.

Requirements

To add 2Factor authentication, you must already have a valid phone_number and phone_country code in your User Object. 2factor must be false in the User Object as well.

Verification

Once you add 2Factor, you will have to verify the addition with a token response before it will be activated. This ensures you are not locked out of your account. The state will be unverified in Get 2Factor until it is verified.

Limited Time to Verify

You have limited time to verify your 2-Factor authentication. If you do not verify within 1 hour of the addition of 2Factor, it will be removed.

Result Codes

HTTP Results
Description

202

2Factor authentication request was accepted.

406

2Factor was not added to the account.

429

Too many requests were made in too short a period of time.

Result JSON

Variable
Type
Description

result

boolean

true if 2Factor authentication was added.

$ curl https://go.fast.io/api/v1.x/user/2factor/ \
   -X POST \
   -H "Authorization: yffaenajzny66mrdiuk6s6dvk6ef2gq7ia72"
A binary file was returned

You couldn't be authenticated

{
  "result" : true
}
 
Suggest Edits

Verify 2Factor

This endpoint enables 2-Factor authentication for your user account.

 
post/user/2factor/verify/token

Path Params

token
string
required

The token provided from Authy in a phone call, SMS, or through an application.

Result Codes

HTTP Results
Description

202

The token was validated and 2-Factor is now enabled on the account.

406

The token was not accepted.

429

Too many requests were made in too short a period of time.

Result JSON

Variable
Type
Description

result

boolean

true if 2Factor authentication was verified and is now fully enabled.

$ curl https://go.fast.io/api/v1.x/user/2factor/verify/8320489 \
   -X POST \
   -H "Authorization: yffaenajzny66mrdiuk6s6dvk6ef2gq7ia72"
A binary file was returned

You couldn't be authenticated

{
  "result" : true
}
 
Suggest Edits

Get 2Factor

This endpoint gets the current status of 2Factor for the current users account.

 
get/user/2factor/

Result Codes

HTTP Results
Description

200

2Factor authentication request was accepted.

429

Too many requests were made in too short a period of time.

Result JSON

Variable
Type
Description

result

boolean

true if 2Factor authentication was added.

state

string

The current state of 2Factor Auth for the provided credentials. See table below.

State
Desc

disabled

2Factor authentication is disabled.

enabled

2Factor authentication is enabled and verified.

unverified

2Factor authentication has been configured but not verified.

$ curl https://go.fast.io/api/v1.x/user/2factor/ \
   -H "Authorization: yffaenajzny66mrdiuk6s6dvk6ef2gq7ia72"
A binary file was returned

You couldn't be authenticated

{
    "result": true,
    "state": "disabled"
}
 
Suggest Edits

Remove 2Factor

This endpoint provides removes 2-factor authentication from a users account.

 
delete/user/2factor/token

Path Params

token
string
required

General

If 2Factor authentication is enabled, you must supply a token to disable it with your removal request. If 2Factor authentication is unverified no token must be supplied to remove it.

Result Codes

HTTP Results
Description

200

The request successfully removed 2-Factor authentication from your account or 2-Factor was not enabled.

429

Slow down, too many requests for authorization codes. Try again in a bit.

Result JSON

Variable
Type
Description

result

boolean

true if 2-Factor authentication was successfully removed or was already removed from your account.

$ curl https://go.fast.io/api/v1.x/user/2factor \
    -X DELETE \
    -H "Authorization: yffaenajzny66mrdiuk6s6dvk6ef2gq7ia72"
A binary file was returned

You couldn't be authenticated

{
  "result" : true
}
 
Suggest Edits

Send 2Factor Call

This endpoint sends an authorization token via a Phone Call to the users phone_number.

 
get/user/2factor/call/

General

Tokens are 6 digit numbers.

Result Codes

HTTP Results
Description

202

The authentication code was created and sent to the assigned device via a phone call.

429

Slow down, too many requests for authorization codes. Try again in a bit.

Result JSON

Variable
Type
Description

result

Boolean

true if the authentication code created and sent.

Rate Limit

This API is heavily rate-limited and may result in 429 responses if called too frequently.

$ curl https://go.fast.io/api/v1.x/user/2factor/call \
   -H "Authorization: yffaenajzny66mrdiuk6s6dvk6ef2gq7ia72"
A binary file was returned

You couldn't be authenticated

{
  "result" : true
}
 
Suggest Edits

Send 2Factor Code

This endpoint sends an authorization token via SMS to the users phone_number.

 
get/user/2factor/code/

General

Tokens are 6 digit numbers.

Result Codes

HTTP Results
Description

202

The authentication code was created and sent to the assigned device.

429

Slow down, too many requests for authorization codes. Try again in a bit.

Result JSON

Variable
Type
Description

result

Boolean

true if the authentication code created and sent.

Rate Limit

This API is heavily rate-limited and may result in 429 responses if called too frequently.

$ curl https://go.fast.io/api/v1.x/user/2factor/code \
   -H "Authorization: yffaenajzny66mrdiuk6s6dvk6ef2gq7ia72"
A binary file was returned

You couldn't be authenticated

{
  "result" : true
}
 
Suggest Edits

User Object

This object is contains the details of a single user account.

 
Field
Type
Description
Read Only

id

int

The user_Id of the account. This will always be a 20 digit number.

Yes

email_address

string

The email address for the user account. String length 6 and 100 characters.

No

country_code

string

The country code for the user account. Fixed string length of 2 characters.

Yes

tos_agree

string

The version of Terms of Service affirmatively accepted by user.

Yes

first_name

string

The first name of the user. String length between 2 and 30 characters.

No

last_name

string

The last name of the user. String length between 2 and 30 characters.

No

phone_country

int

The country code associated with the phone number.

No

phone_number

int

The phone number of the user excluding the country code and formatting.

No

2factor

boolean

True if two-factor authentication is enabled on this account.

Yes

subscriber

boolean

True if the user has a subscription.

Yes

valid_phone

boolean

True if the phone number has been validated by the user.

Yes

valid_email

boolean

True if the email has been validated by the user.

Yes

created

datetime

The date and time this record was created.

Yes

updated

datetime

The date and time this record was last updated.

Yes

locked

boolean

true if the users account is locked. This indicates it was disabled and certain resources will be unavailable.

Yes

suspended

boolean

true if the users account is suspended. This indicates no user resources will be available.

Yes

 
Suggest Edits

User Details

This endpoint gets the account details associated with the provided credentials.

 
get/user/details

2Factor Verification

If 2Factor Authorization is enabled on this account, you must supply the token parameter with your request or it will be rejected.

Result Codes

HTTP Results
Description

200

The request and resource are valid and the user details are returned in the body.

Result JSON

Variable
Type
Description

result

boolean

true if user details are returned.

user

user object

This object contains all the user details if the request result was true.

$ curl https://go.fast.io/api/current/user/details \
  -H "Authorization: yffaenajzny66mrdiuk6s6dvk6ef2gq7ia72"
A binary file was returned

You couldn't be authenticated

{
  "result" : true,
  "user" : {
    "id" : "8914921300623612769",
    "email_address" : "[email protected]",
    "country_code" : "US",
    "tos_agree" : true,
    "first_name" : "Henry",
    "last_name" : "Larson",
    "phone_country" : null,
    "phone_number" : null,
    "2factor" : false,
    "subscriber" : true,
    "valid_phone" : false,
    "valid_email" : true,
    "locked" : false,
    "suspended" : false,
    "updated": "2018-07-01 23:14:01 UTC",
    "created": "2017-06-16 23:14:42 UTC"
  }
}
 
Suggest Edits

Update User Details

This endpoint updates the account details associated with the provided credentials.

 
post/user/

Body Params

email_address
string

The email address of the account to be updated. The string must be a valid email address between 6 and 100 characters in length.

password
string

The password to set for the new account. The string must be between 6 and 30 characters in length.

first_name
string

The first name of the user. The string must be between 2 and 30 characters in length.

last_name
string

The last name of the user. The string must be between 2 and 30 characters in length.

phone_country
int32

The users phone country code. This must be a int value between 1 and 4 digits in length.

phone_number
int32

The users phone number excluding the country code. This must be an int value between 7 and 15 digits in length.

Updating Password

When you update the password and are using a JWT for authentication (obtained from the Access Token API), you will need to get a new access token as your JWT will have been invalidated. API Keys are not impacted by changing the account password.

Phone Numbers for Verification

It is recommended you only use cellular phones for your phone_number field, they are used for verification of account services and are not compatible with non-SMS enabled devices.

ISO 3166-1

Country Codes are two-character alpha-codes indicating the origin country of the user and should adhere to the ISO 3166-1 standard.

Result Codes

HTTP Results
Description

202

The updates to the user details were accepted.

400

The request was invalid and could not be serviced. This could result from missing fields or exceeding character limits.

409

The email_address or phone_number you supplied available.

Result JSON

Variable
Type
Description

result

boolean

true if the account details were accepted.

$ curl https://go.fast.io/api/current/user \
  -X POST \
  -H "Authorization: yffaenajzny66mrdiuk6s6dvk6ef2gq7ia72" \
  -d email_address="[email protected]" \ 
  -d first_name="Derek" \
  -d last_name="Labian"
A binary file was returned

You couldn't be authenticated

{
  "result" : true
}
 
Suggest Edits

Send Validation Email

This endpoint sends a validation email to the currently configured email address.

 
get/user/email/validate

Overview

This is the first part of a two-part process to validate an email address. Once this API call is completed, an email is generated to the currently registered email address for the authorized account. The email will include an email_token which can be used in the second step, Validate Email.

Email addresses need to be re-validated after signup or any change to a verified email address.

Accounts with un-verified emails may be restricted from a variety of functionality and may automatically limit the scope.

Result Codes

HTTP Results
Description

202

The validation email was sent to the address specified by the account holder.

Result JSON

Variable
Type
Description

result

boolean

true if the email_address a validation email is sent.

Invalidating Previous Tokens

Requests to this API will invalidate any previous codes.

Time to Live

Tokens are only valid for 3 hours from time of generation.

Validating a validated address

If your email is already validated, your request will fail with a not acceptable response.

$ curl https://go.fast.io/api/v1.0/user/email/validate/ \
  -H "Authorization: yffaenajzny66mrdiuk6s6dvk6ef2gq7ia72"
A binary file was returned

You couldn't be authenticated

{
  "result" : true
}
 
Suggest Edits

Validate Email

This endpoint validates an email with a code previously sent via email.

 
post/user/email/validate/email

Path Params

email
string
required

The email address of the account you are verifying.

Query Params

email_token
string

This is the token provided in email to validate an email.

Overview

Email validation is the second step of the email validation process. The first step is to get a validation email, as shown in Send Validation Email. That email will include the email_token needed for this API.

The email of the user account will receive a link that points to the APP_DOMAIN at the path /user/email/verify/.

Result Codes

HTTP Results
Description

202

The email_token was accepted and the password has been updated.

Result JSON

Variable
Type
Description

result

boolean

true if the email_address is validated. false for all other responses.

$ curl https://go.fast.io/api/v1.0/user/email/validate/[email protected] \
  -X POST \
  -H "Authorization: yffaenajzny66mrdiuk6s6dvk6ef2gq7ia72" \
  -d "email_token=0y6zgw34izjqx61mo78ni9zck2ikef"
A binary file was returned

You couldn't be authenticated

{
  "result" : true
}
 
Suggest Edits

Check Email

This endpoint checks to see if an email address is valid and its availability. This resource is restricted.

 
get/user/email/email_address

Path Params

email_address
string
required

The email_address to check if its both valid and available. This string must be between 4 and 50 characters in length.

Restricted Resource

This resource is rate limited to a few requests to prevent abuse. Only call this endpoint when you have a fully formed email you need to check. Calling this endpoint too frequently will result in a 429 error for a period of time.

Result Codes

HTTP Results
Description

202

The email address is valid and available.

400

The request was invalid and could not be serviced. This could result from missing fields or exceeding character limits.

403

Your authentication credentials do not provide access to this resource.

406

The email_address you supplied is not available or acceptable.

Result JSON

Variable
Type
Description

result

boolean

true if the email_address is valid and available.

$ curl https://go.fast.io/api/v1.0/user/email/[email protected] \
  -H "Authorization: yffaenajzny66mrdiuk6s6dvk6ef2gq7ia72"
A binary file was returned

You couldn't be authenticated

{
  "result" : true
}
 
Suggest Edits

Check Phone

This endpoint checks to see if a phone number is valid to use with an account.

 
get/user/phone/:phone_country-:phone_check

Path Params

phone_check
string
required

The phone_country and phone_number to check if valid. This string must be between 8 and 16 characters in length.

Result Codes

HTTP Results
Description

202

The phone_number is valid and is acceptable.

406

The phone_number is not valid or acceptable.

429

Too many requests were made in too short a period of time.

Result JSON

Variable
Type
Description

result

boolean

true if the phone_country and phone_number is valid. false if the phone number is invalid.

Formatting

The format of the phone_check field is the phone_country followed by a - followed by the numeric-only phone_number.

Rate Limited Resource

This resource is rate limited and frequent requests will result in a 429 error.

$ curl https://api.fast.io/v1/user/phone/1-7015555555 \
  -H "Authorization: yffaenajzny66mrdiuk6s6dvk6ef2gq7ia72"
A binary file was returned

You couldn't be authenticated

{
  "result" : true
}
 
Suggest Edits

Check Password Code

This endpoint checks a password the provided code for validity and returns the associated email.

 
get/user/password/email/code

Path Params

code
string
required

A 30 character code used to identify the account credentials to set the password of. Codes have a limited lifespan.

Restricted Resource

This is a rate-limited and restricted resource.

Result Codes

HTTP Results
Description

200

The code was valid and the associated email was returned.

Result JSON

Variable
Type
Description

result

boolean

true if the code was valid.

email

string

The email of the account associated with the code.

$ curl https://go.fast.io/api/v1.x/user/password/email/tq7lyt3xyichbagqta6di4ata5st2x
A binary file was returned

You couldn't be authenticated

{
  "result" : true,
  "email" : "[email protected]"
}
 
Suggest Edits

Set Password

This endpoint sets a password for the account related to the provided code.

 
post/user/password/code

Path Params

code
string
required

A 30 character code used to identify the account credentials to set the password of. Codes have a limited lifespan.

Body Params

password1
string
required

The password to set on the account provided by the code.

password2
string
required

The password to set on the account provided by the code. This must match password1.

Overview

This API endpoint is typically used to reset a lost password or to set a password when you don't otherwise have credentials. The code is obtained through several mechanisms, including email, and the Process OAuth Code API.

This API should not be used when you have a valid API key or other credentials to set a password, use the Update User Details instead.

Restricted Resource

This is a rate-limited and restricted resource.

Result Codes

HTTP Results
Description

202

The code was valid and accepted.

Result JSON

Variable
Type
Description

result

boolean

true if the password was accepted and updated.

$ curl https://go.fast.io/api/v1.x/user/password/tq7lyt3xyichbagqta6di4ata5st2x \
  -X POST \
	-d password1="go8idusa" \
	-d password2="go8idusa"
A binary file was returned

You couldn't be authenticated

{
  "result" : true
}
 
Suggest Edits

Lost Password

This endpoint checks to see if an email address is valid and its availability. This resource is restricted.

 
get/user/email/reset/email_address

Body Params

email_address
string
required

The email_address to reset the password of. This string must be between 4 and 50 characters in length.

Restricted Resource

This resource is rate limited to 1 request per second, 2 requests per minute and 5 per hour, so on and so forth.

Result Codes

HTTP Results
Description

202

The email address is valid and a reset email was sent.

400

The request was invalid and could not be serviced. This could result from missing fields or exceeding character limits.

406

The email_address you supplied is not in use or acceptable.

Result JSON

Variable
Type
Description

result

boolean

true if the email_address was found and a reset request was sent.

$ curl https://go.fast.io/api/v1.x/user/email/reset/[email protected] \
  -X POST \
	-d email_address="[email protected]"
A binary file was returned

You couldn't be authenticated

{
  "result" : true
}
 
Suggest Edits

Close Account

This endpoint locks the account associated with the provided credentials.

 
post/user/close/

Body Params

email_address
string

The email address of the account to be closed. The string must be a valid email address between 4 and 30 characters in length.

Account Closure

Once an account is closed, it cannot be re-opened as this is a permanent action.

Some account meta-data is retained for legality purposes. See our privacy policy for information on data-retention.

https://fast.io/privacy-policy/

2Factor Verification

If 2Factor Authorization is enabled on this account, you must supply the token parameter with your request or it will be rejected.

Result Codes

HTTP Results
Description

202

The account close request was accepted for processing.

Result JSON

Variable
Type
Description

result

boolean

true if the account is closed.

$ curl https://go.fast.io/api/v1.x/user/close \
  -X POST \
  -H "Authorization: yffaenajzny66mrdiuk6s6dvk6ef2gq7ia72" \
  -d email_address="[email protected]"
A binary file was returned

You couldn't be authenticated

{
  "result" : true
}
 
Suggest Edits

Authorization Check

This endpoint checks can be polled to ensure your credentials are still valid.

 
get/user/auth/

Result Codes

HTTP Results
Description

202

The credentials provided are valid and accepted.

401

The credentials provided are not valid or expired.

429

Too many requests were made in too short a period of time.

Result JSON

Variable
Type
Description

result

boolean

true if the authorization credentials are valid and acceptable.

id

string

The user_Id of the provided credentials.

scope

string | null

The scope of the current credentials or null if there is no specific limitation on the provided credentials.

Authentication Types

This endpoint accepts all authorization methods compatible with this API. It can be used to test API keys but it is also rated limited.

Rate Limited API

This API endpoint is rate limited, overly aggressive requests will result in a 429 result.

$ curl https://go.fast.io/api/current/user/auth/
A binary file was returned

You couldn't be authenticated

{
  "result" : true,
  "id" : "8914921300623612769",
  "scope" : "fast.io/user"
}
 
Suggest Edits

Support Pin

This endpoint gets the current account support pin.

 
get/user/pin/

Result Codes

HTTP Results
Description

200

The request and resource are valid and the user details are returned in the body.

Result JSON

Variable
Type
Description

result

boolean

true if support pin is returned.

pin

string

A 4-digit string that can be used to validate your identity with support.

Limited Lifespan

A support pin is temporary, only valid for briefly. You should call this endpoint each time you need a support pin to get the then-current value.

$ curl https://go.fast.io/api/current/user/pin \
  -H "Authorization: yffaenajzny66mrdiuk6s6dvk6ef2gq7ia72"
A binary file was returned

You couldn't be authenticated

{
  "result" : true,
  "pin": "2446"
}
 
Suggest Edits

Storage Overview

An overview of how the provider system works and supported providers.

 

Supported Providers

Fast currently several major Cloud Storage Providers listed in the table below. All providers share the same common functionality on Fast. You can use multiple providers at the same time but only one provider is allowed per Server.

Supported Providers
API Name
Type

Dropbox

dropbox

cloud storage

Google Drive

googledrive

cloud storage

Microsoft OneDrive

onedrive

cloud storage

Box

box

cloud storage

MediaFire

mediafire

cloud storage

GitHub

github

version control system

Missing Provider?

Want us to support a provider not listed here? Contact us at [email protected]

Pairing Cloud Storage

You can pair all supported Cloud Storage Providers with a single account. Each server may only have one provider however you can have multiple servers for each Provider.

Server Origin

Your Cloud Storage Provider serves as the backend for your Fast CDN Server. In your Cloud Storage, Fast creates a folder for all your Server origins. When you create a new server, a folder of the same name is created in the chosen Cloud Storage provider. Content in the folder will be made available on the Server.

Changing Providers

You can change the Cloud Storage Provider for a Server after the initial configuration to any paired Cloud Storage Provider. Content will not be transferred between providers by Fast. You must put whatever contents you want into the new provider either before or after changing it over.

Cached contents of a Server will be immediately flushed once a provider is updated.

Permissions

Any special permissions or restrictions you place on files in your Server folder will be ignored and the content will be accessible. Only place contents you wish to be accessible in your Server folder on your Cloud Storage Provider.

Options

Fancy Indexing

You can turn on automatic indexing of your Server contents where Fast automatically generates a list of the contents for easy access. This is enabled by default. If you would like to obscure the contents of your Server, disable this option.

Index Files

If you would like to provide your own index files, you can put default index files in the root of folders. Supported index files names are listed under the Server Object.

Protected Storage

Protected storage providers will only be visible if they are available to you. The protected field in the Storage Object will only be true if the Storage Overview is restricted or protected. In practical terms, this is typically used for pre-release providers and beta users.

Google Apps Files

Google Apps files will be converted to application/pdf when possible and not accessible when a conversion is not possible.

Google Apps Files Auto Updates

Google Rate Limits the rate of automatic updates to Google Apps Files. As such, rapid updates will not be picked up automatically as there is a delay, set by Google, as to how quickly updates can be exported.

 
Suggest Edits

Storage Object

This object contains Storage providers details.

 

Fixed Fields

The object used to describe Cloud Storage Providers linked to a user account.

Field
Type
Description
Read-Only

id

int

The id is statically set for this provider, and is not unique to your user.

Yes

name

string

The API name of the Provider which you can use with Server and other API calls.

Yes

display

string

The display name for use in human-readable applications.

Yes

type

string

The type of storage provider; see below table.

Yes

provider_id

mixed

This is the ID provided to us by your Cloud Storage Provider to identify your user.

Yes

username

Mixed

This is the username associated with the storage provider. null if the storage provider doesn't support this feature.

Yes

email

string

The email address associated with the linked account. This is the address you registered on the Storage Provider with.

Yes

authenticated

boolean

true if the authentication for this Cloud Storage Provider is currently believed to be valid.

Yes

expired

boolean

true if the current credentials are expired.

Yes

enabled

boolean

true if the Storage Provider is enabled for use.

Yes

protected

boolean

true if the Storage Provider is a protected or otherwise restricted provider.

Yes

autoupdate

string

A string indicating the status of auto updates for all servers using this storage provider.

Yes

origin_url

string

A non-server specific url to the cloud storage provider. null if none is available.

Yes

installable

boolean

true if the Storage Provider has a specific installable app.

Yes

install_url

string

A non-server specific url to install the cloud storage provider. null if the storage provider doesn't support installations.

Yes

error

error object

If an error is present an Error Object will be returned. Otherwise this field will be null.

Yes

updated

datetime

The date time this object was last updated.

Yes

Email Field

The email field is only available via the Storage Details API call and reflects the current email address, not the email address at the time of registration.

Install URL

Some providers have granular controls beyond the standard OAuth permissions. If the installable field is set to true the storage provider supports a secondary application install. You must install the storage provider before using it in conjunction with a Servers.

Authentication and Errors

The most common type of issue is a failure to Authenticate with the Cloud Storage Provider. If you remove credentials from Fast, or if our token is invalidated in some other way this field will be false. To resolve you must re-add the provider through the "Add Provider" option on http://go.fast.io/app/.

Do Not Remove to Resolve Errors

Removing a Cloud Storage Provider will flush the cache and disable Servers. If your Server has errors, try re-authenticating through the "Add Provider" option before anything else.

Authenticated and Expired Fields

Accounts may have both authenticated and expired set to true. As long as the credentials are believed to be renewable, authenticated will be true even if expired. Once the storage provider rejects authorization 'token', the authenticated field will become false.

Updated Field

The updated field reflects the last time the storage object was updated. It is automatically set when updates to this provider are made or credentials are renewed.

Storage Types

Some API endpoints may only be available to certain types of storage.

Type
Description

cloud storage

Indiciates a traditional cloud storage service such as Dropbox.

version control system

Indicates a structured and controlled versioning system, such as Git, or SVN.

Auto Update

This field indicates the status of auto-updates for this storage provider. Automatic updates are controlled on a per-server basis, but the underlying storage provider must support automatic updates. The following table indicates the possible states.

State
Desc

available

This status indicates that automatic updates are supported and working on this storage provider and ready to use.

unavailable

This status indicates that automatic updates are supported but not currently working on this storage provider. Contact customer service.

unsupported

This status indicates that automatic updates are not supported for this storage provider.

Errors

Only the last error is kept on a storage provider. Re-authenticating a storage provider will clear current errors.

Common Errors

Code
Desc

32000

Permanent Cloud Storage Provider Authorization Error. Re-add storage.

32001

Permanent Cloud Storage Provider Authorization Error. Re-add storage.

32002

Temporary Cloud Storage Provider Authorization Error. Re-add storage.

 
Suggest Edits

VCS Object's

Objects related to storage providers that are Version Control Systems.

 

Repo Object

The object used to describe the repositories of Storage Providers.

Field
Type
Description
Read-Only

id

int

The id of the repository set by the Storage Provider.

Yes

owner

string | int

The string or integer that identifies the repository owner on the Storage Provider.

Yes

name

string

The name of the repository on the Storage Provider.

Yes

full_name

string

The full name of the repository to be used with other endpoints in this API.

Yes

private

boolean

true if the repository on theStorage Provider is private. false if the repository is public.

Yes

origin_url

string

A non-server specific url to the repository on the Storage Provider. null if not available.

Yes

 
Suggest Edits

List Storage

Get a list of all storage providers available to the currently authorized account.

 
get/storage/providers/list/

Result Codes

HTTP Results
Description

200

Storage Providers were found and returned in the providers field.

Result JSON

Variable
Type
Description

result

boolean

true if the request was satisfied appropriately.

results

integer

The number of results returned in the storage field.

providers

array of Storage Object's

Contains a list of storage providers available to the current account. This field may be null if the results field is 0.

Storage Object

The providers field is a partial Storage Object, reference it for details on the values.

Connected providers

To get details on which Storage Providers are connected to the current account, query the list of connected Storage Providers via List My Storage.

Connecting a Provider

Connecting a provider must be done through the application website at https://go.fast.io/providers/add/.

$ curl https://go.fast.io/api/v1.x/storage/providers/list/ \
  -H "Authorization: yffaenajzny66mrdiuk6s6dvk6ef2gq7ia72"
A binary file was returned

You couldn't be authenticated

{
    "result": true,
    "results": 5,
    "providers": [
        {
            "id": "1",
            "name": "googledrive",
            "display": "Google Drive",
            "enabled": true,
            "origin_url": "https://drive.google.com/"
        },
        {
            "id": "2",
            "name": "dropbox",
            "display": "Dropbox",
            "enabled": true,
            "origin_url": "https://www.dropbox.com/"
        },
        {
            "id": "3",
            "name": "box",
            "display": "Box",
            "enabled": true,
            "origin_url": "https://www.box.com/"
        },
        {
            "id": "4",
            "name": "onedrive",
            "display": "Microsoft OneDrive",
            "enabled": true,
            "origin_url": "https://onedrive.live.com/"
        },
        {
            "id": "5",
            "name": "mediafire",
            "display": "MediaFire",
            "enabled": true,
            "origin_url": "https://www.mediafire.com/"
        }
    ]
}
 
Suggest Edits

List Linked Storage

Get a list of storage providers linked to the current account.

 
get/storage/providers/list/linked/

Path Params

provider
string
required

Result Codes

HTTP Results
Description

200

A successful request was made that may or made not include any results.

Result JSON

Variable
Type
Description

result

boolean

true if the request was satisfied appropriately.

results

integer

The number of results returned in the storage field.

providers

array of Storage Object's

Contains a list of storage providers connected to the current account. This field may be null if the results field is 0.

Storage Object

The providers field is a partial Storage Object, reference it for details on the values.

Details

Call the Get Storage API to retrieve details on a given provider. Use the id or name as provided in the storage field.

Connecting a Provider

Connecting a provider must be done through the application website at https://go.fast.io/providers/add/.

Disabled Providers

Disabled Storage Providers cannot be connected to accounts. Storage Providers may show up in connected Storage Providers though if they were connected before the Storage Provider was disabled.

$ curl https://go.fast.io/api/v1.0/storage/providers/list/linked/ \
  -H "Authorization: yffaenajzny66mrdiuk6s6dvk6ef2gq7ia72"
A binary file was returned

You couldn't be authenticated


{
    "result": true,
    "results": 3,
    "storage": [
        {
            "id": "1",
            "name": "googledrive",
            "display": "Google Drive",
            "enabled": true,
            "protected": false,
            "origin_url": "https://drive.google.com/"
        },
        {
            "id": "2",
            "name": "dropbox",
            "display": "Dropbox",
            "enabled": true,
            "protected": false,
            "origin_url": "https://www.dropbox.com/"
        },
        {
            "id": "4",
            "name": "onedrive",
            "display": "Microsoft OneDrive",
            "enabled": true,
            "protected": false,
            "origin_url": "https://onedrive.live.com/"
        }
    ]
}
 
Suggest Edits

Storage Details

Get details of a Storage Provider linked to the current credentials.

 

Header Auth

 Authentication is required for this endpoint.
gethttps://go.fast.io/api/v1.x/storage/providers/details/provider

Path Params

provider
string
required

The name of the Storage Provider you wish to fetch details of.

Query Params

user
boolean

Get the storage providers current user details in the response. Set to yes to retrieve.

Result Codes

HTTP Results
Description

200

The provider was found and the details returned in the provider field.

404

The provider is not linked to your account or you specified an invalid provider.

Result JSON

Variable
Type
Description

result

boolean

true if the provider is valid and the details are returned. false if the provider is not valid or not linked to the current credentials.

provider

storage object of the requested provider.

Authentication

Re-authenticated Cloud Storage Providers that have lost credentials by adding the provider again to your account through the web interface. Do not remove the Server or the Provider first. Re-adding will update and fix the credentials.

$ curl https://go.fast.io/api/v1.0/storage/providers/details/dropbox \
  -H "Authorization: yffaenajzny66mrdiuk6s6dvk6ef2gq7ia72"
A binary file was returned

You couldn't be authenticated

{
    "result": true,
    "provider": {
        "id": 2,
        "name": "dropbox",
        "display": "Dropbox",
        "type": "cloud strorage",
        "provider_id": "dbid:AAC78bxPQsZz_iY7Wb431kdbAgKBGG58k98",
        "username": "dbid:AAC78bxPQsZz_iY7Wb431kdbAgKBGG58k98",
        "email": null,
        "display_name": null,
        "authenticated": true,
        "expired": false,
        "enabled": true,
        "protected": false,
        "autoupdate": "available",
        "origin_url": "https://www.dropbox.com/",
        "installable": false,
        "install_url": null,
        "error": null,
        "updated": "2019-09-25 18:17:16 UTC"
    }
}
 
Suggest Edits

Storage Repositories

Get a list of the Repositories associated with the provider. For use with version control systems.

 

Header Auth

 Authentication is required for this endpoint.
gethttps://go.fast.io/api/v1.x/storage/providers/repos/provider

Path Params

provider
string
required

The name of the Storage Provider you wish to fetch details of.

Result Codes

HTTP Results
Description

200

The provider was found, is a vcs and the associated repositories were returned.

Result JSON

Variable
Type
Description

result

boolean

true if the provider is valid and the repositories list is returned. false if the provider is not valid or not linked to the current credentials.

results

int

The number of repos listed in the repos object.

repos

array of Repo Objects

An array of Repo Objects available through the Storage Provider.

Missing Repos

If the repo your looking for does now show up, you should check the permissions of your VCS to make sure you have granted appropriate permissions to the repository your looking for.

$ curl https://go.fast.io/api/v1.0/storage/providers/repos/github \
  -H "Authorization: yffaenajzny66mrdiuk6s6dvk6ef2gq7ia72"
A binary file was returned

You couldn't be authenticated

{
    "result": true,
    "results": 1,
    "repos": [
        {
            "id": 203177413,
            "owner": "gituser",
            "name": "mywebsite",
            "full_name": "gituser/mywebsite",
            "private": false,
            "origin_url": "https://github.com/repos/gituser/mywebsite"
        }
    ]
}
 
Suggest Edits

Storage Branches

Get a list of Repositories branches associated with a storage repository. For use with version control systems.

 

Header Auth

 Authentication is required for this endpoint.
gethttps://go.fast.io/api/v1.x/storage/providers/repos/branches/provider/full_name

Path Params

provider
string
required

The name of the Storage Provider you wish to fetch details of.

full_name
string
required

The full name of the repository from the repository object.

Result Codes

HTTP Results
Description

200

The provider was found, is a vcs and the associated repositories branches were returned.

Result JSON

Variable
Type
Description

result

boolean

true if the provider is valid and the repositories was found. false if the provider is not valid or not linked to the current credentials or the repository was not found.

results

int

The number of branches listed in the branches node.

branches

array of strings

An array of strings inclusive of the branches in the specified repository.

$ curl https://go.fast.io/api/v1.0/storage/providers/repos/branches/github/gituser/mysite \
  -H "Authorization: yffaenajzny66mrdiuk6s6dvk6ef2gq7ia72"
A binary file was returned

You couldn't be authenticated

{
    "result": true,
    "results": 3,
    "repo": "gituser/mysite",
    "branches": [
        "dev",
        "master",
        "release"
    ]
}
 
Suggest Edits

Analytics Providers

A list of supported analytics providers you can integrate with Fast.

 
Provider
Identifier
Description
Enabled

Google Analytics

googleanalytics

A Free analytics suite by Google. More Information is available on Googles Website.

Yes

Mixpanel

mixpanel

Mixpanel is a business analytics service and company. More Information is available on Mixpanel's Website.

No

Webhook

webhook

If you want to process analytics yourself, you can get a HTTP callback. Contact us for more details.

No

General Information

General information including fields mappings related to Google Analytics is located in the Analytics section of documents.

Something Missing?

Looking for an analytics provider that isn't listed? Tell us about it! [email protected].

 
Suggest Edits

Analytics Object

This object contains an analytics configuration.

 

Fixed Fields

Field
Type
Description
Read-Only
Default

name

string

The name used to assign, access, and identify this Analytics Profile.

Yes after creation.

-

provider

string

An identifier indicating the type of Provider this configuration this is for. See Analytics Support for a listing.

No

-

token

string

The reporting token or tracking ID used when reporting data. String length between 3 and 40 characters.

No

-

event_name

string

The event name that file transfers are logged under in the analytics provider. String length between 3 and 30 characters.

No

Download

user_agent

boolean

true if you want to report the user's agent.

No

true

referrer

boolean

true if you want to report the referring URL (if one exists).

No

true

filter_mode

int

Determines the filtering mode for analytics which can be a preset mode or a custom include or exclude regex.

No

0

filter

regex

Regex which includes or excludes transfers from being reported to your Analytics Provider. The default regex matches everything.

No

null

filter_mode_country

int

Determines the filtering mode for analytics which can be a preset mode or a custom include or exclude regex.

No

0

filter_country

regex

Regex which includes or excludes transfers from being reported to your Analytics Provider. The default regex matches everything.

No

null

provider_url

string

The URL to the provider which may or may not point to a specific profile.

Yes

-

updated

datetime

The date time this object was last updated.

Yes

-

Fancy Indexing

Fancy Indexing requests are never reported to your Analytics Provider.

Token/Tracking ID Provacy

Tokens and Tracking ID's stored in this object are never presented to the public. You can provide private ID's.

Updated Field

The updated field reflects the last time the analytics configuration was updated. It is automatically set when updates to this provider are made.

Name

Names used in Analytics Profiles only need be unique in the account namespace.

Analytics Filters

Analytics Filters allow you to prevent request spamming to your Analytics Provider for content not relevant to your application. For example, if you are serving a static web page, you may only want to report the HTML request and NOT image, CSS, or Javascript requests. Alternatively, if you were serving a software package, you may want to exclude all HTML and Images.

There are pre-defined modes you can choose or set custom include or exclude REGEX string. The available modes are detailed below. 0 is the default mode.

Filtering can be done based on the URL or the Country Code.

Filter and Filter Country

filter_mode and filter are used for URL filtering. This parses the regex based on the full request URL, including protocol and FQDN.

filter_mode_country and filter_country are used for client origin filtering. This filter applies the filter_country to the ISO country code of the client connection.

ISO-3166

We use ISO-3166-1 Alpha-2 codes. Each country is identified by 2 Latin digits and is not case sensitive.

Mode
Include
Exclude
Description

0

Everything

Nothing

The default filter includes all requests and excludes no requests.

1

Include Regex

Nothing

Includes only content that matches the filter fields regex.

2

Nothing

Exclude Regex

Excludes only content that matches the filter fields regex.

Include and Exclude Filters

When the filter_mode is set to include or exclude, only content matching/missing the filter will be sent to the analytics provider.

For example, if your filter finds entries ending in .jpg and your filter is set to include, any requests ending in .jpg will be transmitted. All other requests will be excluded.

Consequently, if you use an exclude filter, only entries matching the filter will be excluded, all other entries will be included.

Filters

Filters can be an effective tool to eliminate noise either by only including the data you want or by excluding the noise itself. Regular expressions are powerful tools that can be written to exclude or include many types of files or URL's). The regex is applied to the full request URL including protocol.

More details on regex available at this Regex guide.

 
Suggest Edits

List Providers

This endpoint gets a list of the available analytics providers.

 
get/analytics/providers/list/

Provider List

The Provider list is of all available providers, not of configured providers. GET the individual providers to see if they are configured or not.

Result Codes

HTTP Results
Description

200

A successful request was made that may or made not include any results.

Result JSON

Variable
Type
Description

result

boolean

true if Provider details are returned.

results

integer

Indicates the number of providers returned in the providers array.

providers

array of Analytics Object's

This is an array of Analytics Object's providers.

Empty Result

If no providers are available, the results field is set to 0 and providers field is set to null.

$ curl https://go.fast.io/api/v1.0/analytics/providers/list \
  -H "Authorization: yffaenajzny66mrdiuk6s6dvk6ef2gq7ia72"
A binary file was returned

You couldn't be authenticated

{
    "result": true,
    "results": 2,
    "providers": [
        {
            "id": "1",
            "name": "googleanalytics",
            "display": "Google Analytics",
            "provider_url": "https://analytics.google.com/analytics/web/",
            "enabled": true
        },
        {
            "id": "2",
            "name": "mixpanel",
            "display": "Mixpanel",
            "provider_url": "https://mixpanel.com/report",
            "enabled": true
        }
    ]
}
 
Suggest Edits

Provider Details

This endpoint gets the details of a specific Analytics provider.

 
get/analytics/providers/details/name

Path Params

name
string
required

The named of the provider to get details of.

Result Codes

HTTP Results
Description

200

The request and resource are valid and the provider details are returned in the provider field.

Result JSON

Variable
Type
Description

result

boolean

true if Provider details are returned.

provider

An analytics object with the details of the provider supplied in name.

$ curl https://go.fast.io/api/v1.0/analytics/providers/details/mixpanel \
  -H "Authorization: yffaenajzny66mrdiuk6s6dvk6ef2gq7ia72"
A binary file was returned

You couldn't be authenticated

{
    "result": true,
    "provider": {
        "id": "2",
        "name": "mixpanel",
        "display": "Mixpanel",
        "provider_url": "https://mixpanel.com/report",
        "enabled": false,
        "updated": "2019-05-28 21:40:39 UTC",
        "created": "2019-05-28 21:40:39 UTC"
    }
}
 
Suggest Edits

Validate Filter

This endpoint validates a filter to be used with an analytics profile.

 
post/analytics/validate/filter/

Body Params

filter
string

The analytics filter to verify is acceptable.

Result Codes

HTTP Results
Description

202

The filter was valid and acceptable.

406

The filter was not valid and acceptable.

Result JSON

Variable
Type
Description

result

boolean

true if the filter was valid and acceptable.

$ curl https://go.fast.io/api/v1.0/analytics/validate/filter/ \
  -X POST \
  -H "Authorization: yffaenajzny66mrdiuk6s6dvk6ef2gq7ia72" \
  -d "filter=/([A-Z]{3}|[0-9]{4})/i"
A binary file was returned

You couldn't be authenticated

{
  "result" : true
}
{
    "result": false,
    "error": {
        "code": 10059,
        "text": "An invalid filter was supplied."
}
 
Suggest Edits

Create Profile

This endpoint adds a provider to the current user account.

 
post/analytics/

Body Params

name
string

The name of this profile used for UI display, and updating, and assigning to Servers. Names between 3 and 30 characters are valid.

provider
string

The provider to use for this analytics profile.

token
string

The token provided by the analytics provider you wish to track file downloads under. Strings between 3 and 40 characters are valid.

event_name
string

The name of the event you wish file downloads to be reported as. Strings between 3 and 30 characters are valid.

referrer
boolean

Enable reporting of the HTTP referrer.

filter_mode
int32

The filter mode to set for analytics entries.

filter
string

The regex to use in combination with the filter_mode to include or exclude reporting data. Up to 200 characters.

Result Codes

HTTP Results
Description

202

The request and resource are valid and the analytics Provider was added to the user account.

Result JSON

Variable
Type
Description

result

boolean

true if Provider was added to the account.

id

string

The id of the newly created Analytics Profile which can be assigned to Servers, updated or deleted.

$ curl https://go.fast.io/api/v1.0/analytics/ \
  -X POST \
  -H "Authorization: yffaenajzny66mrdiuk6s6dvk6ef2gq7ia72" \
  -d name=MyGoogleProfile \
  -d type=GoogleAnalytics \
  -d token=UA-2349520-1 \
  -d "event_name=MySoftware Downloads"
A binary file was returned

You couldn't be authenticated

{
  "result" : true
}
 
Suggest Edits

Profile Details

This endpoint gets the details for a provided Analytics profile for the provided credentials.

 
get/analytics/details/profile

Path Params

profile
string
required

The name of the analytics profile to get the details of.

Result Codes

HTTP Results
Description

200

The request and resource are valid and the profile details are returned in the body.

Result JSON

Variable
Type
Description

result

boolean

true if Analytics Profile list is returned. true even if the results is set to 0.

profile

object

An Analytics Objects that was requested in the path.

$ curl https://go.fast.io/api/v1.0/analytics/details/MyGoogleProfile \
  -H "Authorization: yffaenajzny66mrdiuk6s6dvk6ef2gq7ia72"
A binary file was returned

You couldn't be authenticated

{
    "result": true,
    "profile": {
        "name": "MyGoogleProfile",
        "provider": "googleanalytics",
        "token": "UA-2309520-1",
        "event_name": "MySoftware Downloads",
        "referrer": false,
        "filter_mode": "0",
        "filter": null,
        "filter_mode_country": 0,
        "filter_country": null,
        "provider_url": "https://analytics.google.com/analytics/web/",
        "updated": "2018-04-23 15:22:58 UTC"
      }
}
 
Suggest Edits

List Profiles

This endpoint gets a list of all analytics profiles associated with the provided credentials.

 
get/analytics/list

Sort

By default, the Analytics profile list is sorted by name in an ascending (ASC) order. No alternative sorting is supported.

Result Codes

HTTP Results
Description

200

A successful request was made that may or made not include any results.

Result JSON

Variable
Type
Description

result

boolean

true if Analytics Profile list is returned. true even if the results is set to 0.

results

integer

Indicates the number of Analytics Profiles returned in the analytics list.

profiles

array

An array of Analytics Objects that exist in the account. See below for detail on returned fields.

Empty Array

If no Analytics Profiles are found, results will be set to 0 and analytics will be set to null.

Maximum Results

This version of the API never allows for more than 100 results from this resource.

$ curl https://go.fast.io/api/v1.0/analytics/list \
  -H "Authorization: yffaenajzny66mrdiuk6s6dvk6ef2gq7ia72"
A binary file was returned

You couldn't be authenticated

{
    "result": true,
    "results": 2,
    "profiles": [
        {
            "name": "MyGoogleProfile",
            "provider": "googleanalytics",
            "token": "UA-2309520-1",
            "event_name": "MySoftware Downloads",
            "referrer": false,
            "filter_mode": "0",
            "filter": null,
            "filter_mode_country": "0",
            "filter_country": null,
            "provider_url": "https://analytics.google.com/analytics/web/",
            "updated": "2018-04-23 15:22:58 UTC"
        },
        {
            "name": "MyMixpanelProfile",
            "provider": "mixpanel",
            "token": "iDm36Dab601",
            "event_name": "MySoftware Downloads",
            "referrer": false,
            "filter_mode": "0",
            "filter": null,
            "filter_mode_country": "0",
            "filter_country": null,
            "provider_url": "https://mixpanel.com/report",
            "updated": "2018-04-24 15:22:58 UTC"
        }
    ]
}
 
Suggest Edits

Update Profile

This endpoint updates the details of an analytics Provider configuration.

 
post/analytics/update/:profile

Path Params

name
string
required

The nameof the profile you wish to update.

Body Params

name
string
required

The name of this profile used for UI display, and updating, and assigning to Servers.

provider
string
required

The provider to use for this analytics profile.

token
string
required

The token provided by the analytics provider you wish to track file downloads under. Strings between 3 and 40 characters are valid.

event_name
string

The name of the event you wish file downloads to be reported as. Strings between 3 and 30 characters are valid.

referrer
boolean

Enable reporting of the HTTP referrer.

filter_mode
int32

The filter mode to set for log entries URLs.

filter
string

The regex to use in combination with the filter_mode to include or exclude reporting data by URL. Up to 200 characters.

filter_mode_country
int32

The filter mode to set for log entries client country codes.

filter_country
string

The regex to use in combination with the filter_mode to include or exclude reporting data by client country code. Up to 200 characters.

Token Required

The analytics configuration cannot be enabled if the token field has not been previously populated or is provided in the same request.

Rename Unsupported

This version of the API does not support profile renaming, do not include the name field in your POST body.

Result Codes

HTTP Results
Description

202

The Analytics Profile configuration was accepted for an update.

Result JSON

Variable
Type
Description

result

boolean

true if the Analytics Profile configuration was updated.

$ curl https://go.fast.io/api/v1.0/analytics/MyGoogleProfile \
  -X POST \
  -H "Authorization: yffaenajzny66mrdiuk6s6dvk6ef2gq7ia72" \
  -d token=UA-2309520-1 \
  -d "event_name=MySoftware Downloads"
A binary file was returned

You couldn't be authenticated

{
  "result" : true
}
{
  "result" : false,
  "error" : {
    "error_code" : 3499,
    "error_text" : "The [event_name] was invalid."
  }
}
{
  "result" : false,
  "error" : {
    "error_code" : 3499,
    "error_text" : "The [provider] was not found."
  }
}
{
  "result" : false,
  "error" : {
    "error_code" : 8499,
    "error_text" : "The [provider] was not found but in use; its name cannot be updated."
  }
}
 
Suggest Edits

Delete Profile

This endpoint gets the details of an analytics Provider configuration.

 
delete/analytics/profile

Path Params

profile
string
required

The Analytics Profile name to delete the configuration of.

Result Codes

HTTP Results
Description

200

The request and resource are valid and the analytics provider configuration has been deleted.

404

The provided Analytics Profile was not found or was already deleted.

409

The Analytics Profile was already in use. You must remove it from active Servers before deleting the profile.

Result JSON

Variable
Type
Description

result

boolean

true if the profile was deleted.

$ curl https://go.fast.io/api/v1.0/analytics/MyGoogleProfile \
  -X DELETE \
  -H "Authorization: yffaenajzny66mrdiuk6s6dvk6ef2gq7ia72"
A binary file was returned

You couldn't be authenticated

{
  "result" : true
}
{
  "result" : false,
  "error" : {
    "error_code" : 3499,
    "error_text" : "The [provider] was not found or already deleted."
  }
}
{
  "result" : false,
  "error" : {
    "error_code" : 4999,
    "error_text" : "The [profile] was in use by a Server."
  }
}
 
Suggest Edits

CDN Overview

An overview of Content Delivery Networks and how they work.

 

Introduction

Content Delivery Networks are networks of servers that deliver the content in the last mile. They are located globally and attempt to deliver the content to end users as quickly as possible. Fast has support for multiple CDN's which have different performance levels and price points. You can only use one CDN per Server but you can use different CDNs for different Servers.

Supported CDN

The list of available CDN's is below. The Default CDN Provider is auto.

CDN Name
API Name
Description
Tier

Akamai

akamai

Akamai Global Network utilizing thousands of global points of presence.

1

CloudFlare

cloudflare

CloudFlare's Global Network uses a Megapop model for content delivery with 150+ points of presence globally.

1

Tier

CDN Tiers are tied to the cost and performance of the provider. The tier is fixed to the provider.

Domains and DNS

Only providers that have domains set to true can be used with Domains and DNS API's. If you bind your Server to a CDN that does not support domains all requests to the Domains and DNS API's will error.

Changing CDN's

This version of the API does not support changing the CDN on a Server once the server is created.

 
Suggest Edits

CDN Object

This object contains a CDN providers details.

 
Field
Type
Description

id

integer

A unique identifier for the CDN.

name

string

The usable name of the CDN which may be used with other API's which require the a cdn parameter.

display

string

A "pretty" version of the name field that can be used when displaying the name of the CDN.

pricing

integer

The pricing tier associated with this CDN which adjusts the price per GB of bandwidth up or down.

enabled

boolean

true when the provider can be used in combination with a Server.

domains

boolean

true if the CDN has support for 1 or more top level domains bindings and DNS.

minify_html

boolean

true if the CDN has suppor minify to HTML.

minify_css

boolean

true if the CDN has support minify to CSS.

minify_js

boolean

true if the CDN has support to minify Javascript.

image_mirage

boolean

true if the CDN has support to optimize images for size based on device.

image_polish

boolean

true if the CDN has support to compress (lossless) and have metadata such as location stripped before serving.

rocket_load

boolean

true if the CDN has support to chunk/order web requests to speed up load time. This may not work with all frameworks.

scrape_shield

boolean

true if the CDN has the support for a Scrape Shield to prevent 3rd parties from scraping website content..

email_obfs

boolean

true if the CDN has the support for email addresses to be obfuscated to prevent scraping.

byte_range

boolean

true if the the CDN has support for partial requests.

price

float

The price per GB of data transfer on this CDN.

updated

datetime

The date and time this object was last updated.

 
Suggest Edits

List CDNs

Get a list of all CDN providers available to the currently authorized account.

 
get/cdn/providers/list/

Result Codes

HTTP Results
Description

200

A successful request was made that may or made not include any results.

Result JSON

Variable
Type
Description

result

boolean

true if the request was satisfied appropriately.

results

integer

The number of results returned in the CDN field.

providers

array of CDN Object's

Contains an array of CDN providers available to the current account. This field may be null if the results field is 0.

$ curl https://go.fast.io/api/v1.0/cdn/providers/list/ \
  -H "Authorization: yffaenajzny66mrdiuk6s6dvk6ef2gq7ia72"
A binary file was returned

You couldn't be authenticated

{
    "result": true,
    "results": 2,
    "providers": [
        {
            "id": 1,
            "name": "akamai",
            "display": "Akamai",
            "pricing": 1,
            "enabled": true,
            "domains": false,
            "minify_html": false,
            "minify_css": false,
            "minify_js": false,
            "image_mirage": false,
            "image_polish": false,
            "rocket_load": false,
            "email_obfs": false,
            "scrape_shield": false,
            "byte_range": true,
            "max_size": 10737418240,
            "price": 0.03,
            "updated": "2019-05-17 22:53:03 UTC"
        },
        {
            "id": 2,
            "name": "cloudflare",
            "display": "CloudFlare",
            "pricing": 1,
            "enabled": true,
            "domains": true,
            "minify_html": true,
            "minify_css": true,
            "minify_js": true,
            "image_mirage": true,
            "image_polish": true,
            "rocket_load": true,
            "email_obfs": true,
            "scrape_shield": true,
            "byte_range": true,
            "max_size": 524287999,
            "price": 0.03,
            "updated": "2019-05-17 22:51:26 UTC"
        }
    ]
}
 
Suggest Edits

CDN Details

This endpoint gets the details of a single CDN available to the provided credentials.

 
get/cdn/providers/details/name

Path Params

name
string
required

The name of the CDN to get details of.

Result Codes

HTTP Results
Description

200

The request and resource are valid and the CDN details are in the provider field.

Result JSON

Variable
Type
Description

result

boolean

true if CDN object is returned.

provider

CDN Object

The CDN Object for the provided name.

$ curl https://go.fast.io/api/v1.0/cdn/providers/details/cloudflare \
		-H "Authorization: yffaenajzny66mrdiuk6s6dvk6ef2gq7ia72"
A binary file was returned

You couldn't be authenticated

{
    "result": true,
    "provider": {
        "id": 1,
        "name": "akamai",
        "display": "Akamai",
        "pricing": 1,
        "enabled": true,
        "domains": false,
        "minify_html": false,
        "minify_css": false,
        "minify_js": false,
        "image_mirage": false,
        "image_polish": false,
        "rocket_load": false,
        "email_obfs": false,
        "scrape_shield": false,
        "byte_range": true,
        "max_size": 10737418240,
        "price": 0.03,
        "updated": "2019-05-17 22:53:03 UTC"
    }
}
 
Suggest Edits

Server Overview

An overview of Servers and how they work.

 

Introduction

Each Server configured uses a Cloud Storage backend, a CDN to distribute the data, and an Analytics Provider to collect and analyze analytics data.

The Cloud Storage Provider and the Analytics Providers are configured separately from configuring the Server. The Cloud Storage Provider is required when creating the server, but the Analytics Providers may be set at any time, or not at all.

Server Names

Server names are unique in a global namespace, cannot be changed once created, and cannot be reused if you delete a server. This is done to ensure that names are not reused and traffic for a previous user transferred to a new user. It also allows us to keep accurate analytics for you even after a Server is deleted.

Server names are also used as unique subdomains to access your content. Currently, only Latin Character domains are supported with the characters A through Z and the numbers 0 through 9. Additionally, dashes, and underscores, are also supported. All domains are case insensitive.

Server names cannot have more than 4 dashes or underscores (special characters). Special characters cannot be next to each other and your name cannot start or end with a special character.

Each server is assigned a domain name. This API supports domain names but not the ability to set or change them. As such, domains are typically optional.

Future Domain Support

Future versions of this API will fully support the ability to select and change domain names. In this version of the API, you can include or omit the domain name with each request except for Server Create or Update.

Renaming Servers

Servers cannot be renamed after creation in this version of the API.

Deleted Servers

Once a Server is deleted it cannot be restored. Additionally, the name of the server cannot be reused in this version of the API. Do not casually delete Servers.

Supported CDN

CDN stands for Content Distribution Network and is a global collection of Servers designed to deliver content as quickly as possible to end users. Fast utilizes CDN servers to ensure as Fast of delivery as possible.

The list of available CDN's for a users account is available through the List CDNs API.

International Domain Name Support

This version of the API does not support UTF-8 domain and server names. Do you need support for this? Let Us Know!

Maxium Number of Servers

You may only have a maximum of 128 Servers. Deleted Servers do count against your total count.

Pre Caching and Automatic Updates

Automatic Updates read changes from your storage provider and automatically flush cached data from the CDN. Pre-caching moves data from your storage provider to the CDN cache ahead of any user requests. Pre-caching and automatic updates can be stacked so data is flushed as soon as its updated and re-cached automatically.

If automatic updates are enabled, you must manually flush data when an update is made to cached data.

If pre-caching is disabled, caching of data happens on demand of end-users which may slow the initial request.

Pre Caching Transfer Fees

Normal costs and fees apply to data transfer under pre-caching. These transfers will show up under your account usage as a normal transfer. If you're storing large amounts of data, charges will apply. We make best efforts to only pre-cache data that is changed, and a pre-cache request for data that was already pre-cached usually results in no or minimal additional usage charges.

Pre Caching Analytics

No transfers from pre-caching events will show up in your analytics reports. They will, however, show up in your usage/billing reports.

 
Suggest Edits

Server Password

Instructions on how to get a password key for a Server that is password protected.

 

Overview

When a site or server is password protected, you must get a key from the server and set a cookie before submitting any requests to the production URL. The password has no effect on the API itself. All requests without a password cookie being set will result in an access denied response.

Server Object

Passwords are only enabled when a password is set on the Server Object. If no password is set you will get a false response.

Getting a Key

Getting a password key is pretty easy, you just issue an HTTP POST with a URL Encoded Form that contains the proper password.

You always post to the same URL, POST /fst_get_password_key with the HTTP Header Content-Type: application/x-www-form-urlencoded; charset=utf-8 and a body of password=<password>.

This will return the below JSON with either a true or false result. If the password is correct and the format of the request is correct, you will get a true result with a key field. This key field is the usable password for this site.

{
 "result": true,
 "key": "fb38f294272a6af766038b062ae5e25d",
 "text": "Correct password, key returned."
}

Setting the Cookie

Take the value of the key returned and set a cookie for the current domain at the root level with the cookie key fixed to fst_site_key and the cookie value fixed to the key value of the obtained response.

Further Requests

Once the cookie has been set, all subsequent requests should be validated and approved. If you run into any issue, please let us know.

Secure and None Secure

You can set the cookie for either or both, but it must be set for requests to be authenticated.

 
Suggest Edits

Server Object

This object contains is used for server details.

 

Fixed Fields

These fields are required with every server object response or request.

Field
Type
Description
Read Only
Default

name

string

The name of the server. Strings between 3 and 50 characters are valid. Names are converted to lower case.

Yes

-

domain

string

The domain name associated with this server. Strings between 3 and 30 characters are valid. Names are converted to lower case.

Yes

imfast.io

desc

string | null

The descriptive name associated with this server. This is just used to help you identify the purpose of the Server. Strings between 3 and 128 characters are valid. If no desc is entered, this value is null.

No

-

team

int

The ID of the team associated with this Server or null if no team is set.

No

-

server

string

The fqdn which is the name and the domain of the server.

Yes

-

storage

string

The Cloud Storage Provider name to serve as the backend for this Server.

No

-

storage_config

object

The storage configurations options for the storage provider. See the object below.

No

-

analytics

string

The analytics profile to assign to this server.

No

-

cdn

string

name of the CDN Provider to use for this server.

No

-

enabled

boolean

true if the Server is enabled for production traffic.

No

false

password

string | null

The password to use for HTTP Basic Authentication in requests to this Server. Strings between 3 and 20 characters are valid. If no password is entered, this value is null.

No

-

filter_mode

int

Determines the filtering mode for analytics which can be a preset mode or a custom include or exclude regex.

No

2

filter

regex

Regex which includes or excludes contents from your storage provider. The default regex blocks system and temporary files.

No

(below)

error

error object

An error object containing the current Server error or null if no error exists.

Yes

null

error_path

string

A path, on the current Server, to be used instead of the default 404 File Not Found error page. Strings between 3 and 200 characters are valid.

No

null

locked

boolean

true if the server is locked and will not accept any further operations.

Yes

false

fancyindexing

boolean

true enables fancy indexing when a request is made for a directory without an indexfiles or if indexfiles are disabled.

No

false

indexfiles

boolean

true to look for a file to return when a directory request is made.

No

false

autoupdate

boolean

true if automatic updates are enabled for this server.

No

true

precache

boolean

true if pre-caching of your cloud storage to the CDN is enabled.

No

true

precachedata

boolean

true if pre-caching will transfer data as well as metadata.

No

true

search

boolean

true to allow search engines to index content and pages.

No

true

expires

int

The time, in seconds, for browsers to cache content.

No

43200

favorite

boolean

true if the user has flagged this Server as a favorite.

No

false

minify_html

boolean

true if HTML served from this Server is automatically minified and obfuscated.

No

false

minify_css

boolean

true if CSS served from this Server is automatically minified and obfuscated.

No

false

minify_js

boolean

true if JS served from this Server is automatically minified and obfuscated.

No

false

rocket_load

boolean

true if website content is ordered, cached, and loaded via Rocket Loader.

No

false

image_mirage

boolean

true if images are optimized and resized based on the device type before serving.

No

false

image_polish

boolean

true if images will be compressed and have metadata such as location stripped before serving.

No

false

email_obfs

boolean

true if email addresses in HTML will be wrapped in an obfuscation technology to prevent

No

false

scrape_shield

boolean

true if Scrape Shield is activated to prevent 3rd parties from scraping website content.

No

false

tags

array of string

A array of string based hints indicating the intended uses of the Server.

No

null

deleted

boolean

true if the Server has been previously deleted.

Yes

null

updated

datetime

The date and time the Server was last updated. This is always populated by the API.

Yes

-

created

datetime

The date and time the Server was created. This is always populated by the API.

Yes

-

Storage Config

These fields may be present depending on the storage provider and the configuration of the server.

Field
Type
Description
VCS Only

storage_root

string

An artificial root appended to the actual server root.

No

storage_repo

string

The repository to use for this server. Only valid for VCS storage types.

Yes

storage_branch

string

The branch of the storage_repository to be used for this server. Only valid for VCS storage types.

Yes

Server Name Valid Characters

The only characters that are valid for a Server name are a-z, 0-9, _, and -. Names are not case-sensitive.

Names must start and end with a-z or 0-9

Locked Accounts

Server requests to locked, suspended, or disabled accounts will result in 423 Locked responses.

Domain

The domain field is static in this version of the API.

Cloud Storage Provider

A Folder matching the name of the Server will be created on the corresponding Cloud Storage Provider in the Fast Application folder. If one already exists, it will be used.

Precaching

The precaching options are provided to ensure your CDN responds as quickly as possible. If pre-caching is disabled, requests will be cached on demand which will cause the initial request to be slower, but all subsequent requests will be quick.

We offer two different options for pre-caching, metadata only, and metadata and data. The metadata pre-caching stores all data except the actual file, such as file names, folder lists, etc. If you enable precaching with data, all the metadata is cached and the physical data is cached to the edge. This ensures the first request to your CDN is as fast as every subsequent request. As such, normal usage and transfer rates apply, and these transfers will show up in your account usage.

The option precachedata is only applied if precache is enabled, so if you do not enable precache, no pre-caching actions will be taken regardless of the state of precachedata.

See the API for Pre Cache for more information on how pre-caching works.

AutoUpdating

Auto-updating automatically watches the underlying cloud storage provider for changes. When content is changed, all relevant content is flushed so your Server stays in sync with your underlying cloud storage.

This option can be stacked with pre-caching which results in Fast automatically recognizing changes, flushing out changed content, and re-caching it.

See the API for Flushing for more information on how flushing works.

Expires

The expires time is relayed to the end user's browser indicating how long, in seconds, they should cache this content for before revalidating it. Set this to a lower value to ensure end-users revalidate content more often or a high value to cache for long periods of time. The valid range of expires times is 60 seconds to 3 years. Always submit expires time in seconds.

Frequent Updates

If you make frequent updates you should set this value to a lower value. Modern web-browsers will revalidate content before re-requesting it which will limit usage fees if the content has not changed.

Search

When search is true, requests to the Server will return the X-Robots-Tag header will be returned with all, and if it's disabled, the X-Robots-Tag header will be returned with noindex, nofollow.

Password

The password protecting any requests to this server, implemented via HTTP Basic Authentication. If no password is entered, the password protection is disabled. Once a password is entered, password protection is enabled for all URL's on the Server.

Full Server Flush

Changing the server's password will cause a full site flush. Use this setting with caution.

Content Filter Mode

Filtering allows you to include or exclude only certain content from a storage provider which are rendered to a Server. This can help you prevent hidden files that may be synced to your folder from showing up only or only render certain types of content, such as Images.

The mode that is set in filter_mode determines how the filter_regex is interpreted.

Mode
Include
Exclude
Description

0

Everything

Nothing

The default filter includes all content and excludes no content.

1

Include Regex

Nothing

Includes only content that matches the filter fields regex.

2

Nothing

Exclude Regex

Excludes only content that matches the filter fields regex.

Include and Exclude Filters

When the filter_mode is set to include or exclude, only content matching/missing the filter will be visible.

For example, if your filter finds entries ending in .jpg and your filter is set to include, any requests ending in .jpg will be rendered. All other requests will be excluded.

Consequently, if you use an exclude filter, only entries matching the filter will be excluded, all other entries will be included.

Content Filter

Filters can be an effective tool to eliminate noise either by only including the data you want or by excluding the noise itself. Regular expressions are powerful tools that can be written to exclude or include many types of files or URL's). The regex is applied to the full path excluding the protocol, domain or Server name and domain.

Default Regex: (^\.|^~|.*(\n|\r).*)|(^desktop.ini$|^thumbs\.db|icon\r)

More details on regex available at this Regex guide.

Default Filter

The default filter value is designed to ignore hidden and temporary files that you probably don't want to be accessible through your server and may have been automatically picked up by your syncing client (when using desktop syncing).

Example of blocked files:

.DS_store
.git
~index.html
desktop.ini
thumbs.db
icon\r

By default, all files starting with a . or a ~ are ignored along with specific files as listed above.

Length

The regex used in the filter cannot exceed 384 characters.

Errors

If the Server currently has an error, the error field will be populated with an Error Object. If no error exists, the error field will be null.

Authentication Errors

The most common type of error is a storage authentication error which occurs when we lose access to your cloud storage provider. See Storage Object for more details.

Multiple Errors

In the event there are multiple errors present, only one error object will be returned and it will be the most serious error. If that error is resolved, the next error, by priority, is returned.

Common Errors

Below is a table of the most common errors you might encounter:

Code
Desc

24000

Unable to contact Cloud Storage Provider. Check status page.

24003

Server/CDN has been locked. Contact Support.

Provider Error Codes

In the event, and the underlying platform has an issue, such as the cloud storage provider, or the analytics provider, those errors will be returned. Please reference those objects for error details.

Options Array

There are a few flags that can be set on a configured server.

Name
Description
Default

FancyIndexing

Set if you want to allow the server to automatically create index files of content (if IndexFiles files are disabled or missing).

If IndexFiles are enabled and FancyIndexing is enabled, the index file will be rendered.

true

IndexFiles

Looks for index files at a given path which are returned when the folder is accessed directly without a filename.

true

AutoUpdate

Automatically reads changes made to your cloud storage and updates your CDN.

true

Precache

Automatically pre-caches metadata from you cloud storage to your CDN before any end user request.

false

PrecacheData

Pre-caches both metadata and actual data. Warning: Normal usage/transfer rates apply.

false

Search

Returns an HTTP header with requests from your server indicating Search Indexing is allowed or disallowed.

false

Fancy Indexing

Fancy Indexing only has one style by default currently and cannot be customized. Let us know if you want something else by emailing us at [email protected].

Index Files

Priority
Filename

1

index.html

2

index.htm

3

default.html

4

default.htm

Requests to Disabled Servers

Requests made to a disabled server will be redirected to a Fast.io 403 Forbidden Page.

Tags

The tags field is used to indicate the likely purpose of the Server and is represented in a comma-separated list of strings.

Tag

web

ftp

dls

These tags have no functional purpose other than to inform the user interface of the likely purpose of the Server. In our implementation, there is a recommended set of Server defaults for each tag detailed below. An example of a valid hint array [ "web", "ftp" ] which, in our implementation, indicates the intended purpose is both for web hosting and an FTP replacement.

Website

Recommended default overrides for Servers hosting a website.

Setting
Default

indexfiles

true

expires

300

image_polish

true

FTP Replacement

Recommended default overrides for Servers used as an FTP / File Indexing replacement.

Setting
Default

indexfiles

false

fancyindexing

true

expires

3600

Downloads

Recommended default overrides for Servers used for directly linking to hosted files.

Setting
Default

indexfiles

true

expires

86400

Performance and Security

There are a number of options available for a Server that affect how content is rendered when it's delivered to the end user. None of these options change, or can ever change, the original content in your Cloud Storage Provider. These features are created and managed by CloudFlare and applied to Servers only when configured.

Performance

Option
Description

minify_html

On-the-fly removal of unnecessary characters from HTML. Saves 20% of a file’s size and works without caching so it can support even fully dynamic pages.

minify_css

On-the-fly removal of unnecessary characters from CSS. Saves 20% of a file’s size and works without caching so it can support even fully dynamic pages.

minify_js

On-the-fly removal of unnecessary characters from Javascript. Saves 20% of a file’s size and works without caching so it can support even fully dynamic pages.

rocket_load

Automatically bundles JavaScript files optimizing your pages to minimize the number of network connections and ensure even third-party resources won’t slow down page rendering.

image_mirage

Mirage accelerates image delivery for your visitors based on their device. Mirage detects screen size and connection speed to optimally deliver images for the current browser window, mobile or desktop.

image_polish

Polish automatically applies both “lossless” and “lossy” image optimization to remove unnecessary bytes from images. On average, image sizes are reduced by 35%.

Security

Option
Description

scrape_shield

ScrapeShield has different elements to help you detect when your content is scraped, defend your site against content scrapers, and even deter content scrapers from targeting you in the first place. If you enable ScrapeShield, we will automatically insert invisible tracking beacons in your content. When automated bots scrape your content, they pull the beacons along with them. we detect these beacons when they ping from sites that aren't your own.

email_obfs

Email addresses on your web page will be obfuscated (hidden) from bots while keeping them visible to humans. In fact, there are no visible changes to your website for visitors. Content must have a MIME type (Content-Type) of "text/html" or "application/xhtml+xml".

 
Suggest Edits

Check Server Name

This endpoint checks to see if a Server name is valid and available.

 
get/server/check/server

Path Params

server
string
required

The name and domain name combined to check if its both valid and available. This string must meet the requirements for a valid name and domain.

Fully Qualified Domain Names are Unique

Server server, usually represented in the server field, are unique in the global namespace. Server names cannot be reused, even if a Server is deleted, and names cannot be changed. A false result indicates the name is in use, previously used, or reserved.

Result Codes

HTTP Results
Description

202

The fqdn is valid and is acceptable.

406

The fqdn is not valid, reserved, in use, or otherwise not acceptable.

Result JSON

Variable
Type
Description

result

boolean

true if the fqdn is valid and available.

$ curl https://go.fast.io/api/v1.x/server/check/MyDropboxServer.imfast.io \
		-H "Authorization: yffaenajzny66mrdiuk6s6dvk6ef2gq7ia72"
A binary file was returned

You couldn't be authenticated

{
  "result" : true
}
{
  "result" : false
}
 
Suggest Edits

Validate Filter

This endpoint validates a filter to be used with a Server.

 
post/server/validate/filter/

Body Params

filter
string

The analytics filter to verify is acceptable.

Result Codes

HTTP Results
Description

202

The filter was valid and acceptable.

406

The filter was not valid and acceptable.

Result JSON

Variable
Type
Description

result

boolean

true if the filter was valid and acceptable.

$ curl https://go.fast.io/api/v1.0/server/validate/filter/ \
  -X POST \
  -H "Authorization: yffaenajzny66mrdiuk6s6dvk6ef2gq7ia72" \
  -d "filter=/([A-Z]{3}|[0-9]{4})/i"
A binary file was returned

You couldn't be authenticated

{
  "result" : true
}
{
    "result": false,
    "error": {
        "code": 10059,
        "text": "An invalid filter was supplied."
}
 
Suggest Edits

Create Server

This endpoint updates the details of a Server.

 

Header Auth

 Authentication is required for this endpoint.
posthttps://go.fast.io/api/v1.x/server/

Body Params

name
string
required

The name of the Server. A string length of 3 to 50 characters is supported.

domain
string

The domain name to use for this server. Combined with the name this creates the fqdn to be used for the server.

storage
string
required

The name of the Cloud Storage Provider to use for this Server.

cdn
string
required

The name of the CDN to use for this Server. See Server overview for a list of CDN Providers and API Names.

analytics
string
required

The name of the Analytics Profile to report analytics to. You can set this to null if you do not wish external reporting.

desc
string

The descriptive name associated with this server. This is just used to help you identify the purpose of the Server. Strings between 3 and 128 characters are valid. If no desc is entered, this value is null.

team
int32

The ID of the team associated with this Server or null if no team is set.

enabled
string

Set to true if you want the Server to be publicly accessible.

fancyindexing
boolean

Set to true if you want Fancy Indexing enabled for directory access without an index.

indexfiles
boolean

Set to true if you want to look for index files when a directory is accessed.

autoupdate
boolean

Set to true if you want automatic updates done to your cloud storage to be applied to your CDN.

precache
boolean

Set to true if you want pre-caching of your cloud storage metadata to be enabled.

precachedata
boolean

Set to true if you want to pre-cache actual data from your cloud storage as well as metadata. Normal usage rates/fees apply.

search
string

Set to true if you want a indexable response to be returned for requests to this Server.

favorite
boolean

true if the user has flagged this Server as a favorite.

expires
int32

The amount of time, in seconds, you want content to be cached in a users browser before they revalidate to your Server. Set low for frequently updated content.

error_path
string

A path, on the current Server, to be used instead of the default 404 File Not Found error page.

password
string

The password to use for HTTP Basic Authentication in requests to this Server. Strings between 3 and 20 characters are valid. If no password is entered, this value is null.

filter_mode
int32

Determines the filtering mode for analytics which can be a preset mode or a custom include or exclude regex.

filter
string

Regex which includes or excludes contents from your storage provider. The default regex blocks system and temporary files.

minify_html
boolean

Set to true if you want to automatically minify HTML before it's delivered.

minify_css
boolean

Set to true if you want to automatically minify CSS before it's delivered.

minify_js
boolean

Set to true if you want to automatically minify JS before it's delivered.

rocket_load
boolean

Set to true if you want to use Rocket Loader to cache and deliver webpages.

image_mirage
boolean

Set to true if you want to automatically resize images and optimize them based on the end-user device type.

image_polish
boolean

Set to true if you want to compress images (lossless) and remove location data.

email_obfs
boolean

Set to true if you want to obfuscate email address in HTML files.

scrape_shield
boolean

Set to true if you want to add security against hot linking and other types of content scraping.

Result Codes

HTTP Results
Description

200

The request was valid and the Server was created.

Result JSON

Variable
Type
Description

result

boolean

true if the Server was created.

Flags

The options field uses flags for each option as listed on the Server Object page. Set each bit for each option you want. Set to 0 to disable all options.

Server Name

The Server name is always lower case, any input is converted to lower case.

CDN Selection

If you submit auto for the cdn field the best choice for CDN will be selected for you.

Domains

This version of the API does not support the configuration of a custom domain name in this API call. You can submit it but it will be ignored and the domain field is forced to imfast.io.

If the CDN Overview supports Domains you can use the Domains API set once the Server is created to bind additional domains to the primary <server>.imfast.io hostname.

Tags

To add or delete one of the supported tags listed in the Server Object, specify it in the POST body set to either true or false prefixed with the tag_ string. An example to add the web tag would be tag_web=true.

$ curl https://go.fast.io/api/v1.x/server/ \
    -X POST \
		-H "Authorization: yffaenajzny66mrdiuk6s6dvk6ef2gq7ia72" \
    -d name=MyDropboxServer \
    -d storage=box \
    -d enabled=true \
    -d analytics=MyGoogleProfile \
    -d cdn=akamai
A binary file was returned

You couldn't be authenticated

{
  "result" : true
}
 
Suggest Edits

List Servers

This endpoint gets a list and configuration of all Servers associated with the provided credentials.

 

Header Auth

 Authentication is required for this endpoint.
gethttps://go.fast.io/api/v1.x/server/list

Query Params

nodeleted
boolean

If nodeleted is set, only servers that are not deleted are returned.

Sort

By default, the Server list is sorted by name in an ascending (ASC) order. name is the only sortable field.

Flags

Provide the nodeleted flag in the query string to avoid returning servers that have a deleted value not equal to null. For example: https://go.fast.io/api/v1.x/server/list?nodeleted is a valid value.

Result Codes

HTTP Results
Description

200

A successful request was made that may or made not include any results.

Result JSON

Variable
Type
Description

result

boolean

true if Server list is returned. true even if the results is set to 0.

results

integer

Indicates the number of server objects returned in the servers list.

servers

array

An array of server objects that exist in the account. See below for detail on returned fields.

Deleted Servers in List

Once a Server is deleted, it will continue to appear in your list of Servers. The deleted field will no longer be null and no more operations are allowed.

Deleted Servers Count

Deleted Servers in this API still count against the maximum number of Servers an account may have. There is no way to permanently remove a Server configuration.

Empty Array

If no servers are found, results will be set to 0 and servers will be set to null.

Maximum Results

This version of the API never allows for more than 100 results from this resource.

$ curl https://go.fast.io/api/v1.x/server/list \
		-H "Authorization: yffaenajzny66mrdiuk6s6dvk6ef2gq7ia72"
A binary file was returned

You couldn't be authenticated

{
    "result": true,
    "results": 2,
    "servers": [
        {
            "name": "MyServer",
            "domain": "imfast.io",
            "server": "myserver.imfast.io",
            "storage": "dropbox",
            "storage_config": {
              "root": "/src"
            },
            "analytics": "mygoogleprofile",
            "cdn": "akamai",
            "desc": "My First Dropbox Server",
            "team": null,
            "enabled": true,
            "locked" : false,
            "fancyindexing": true,
            "indexfiles": true,
            "autoupdate" : true,
            "precace" : true,
            "precachedata" : false,
            "search": true,
            "favorite": true,
            "minify_html": false,
            "minify_css": false,
            "minify_js": false,
            "rocket_load": false,
            "image_mirage": false,
            "image_polish": true,
            "email_obfs": false,
            "scrape_shield": false,
            "expires": "43200",
            "password": null,
            "filter_mode": 2,
            "filter": "/(^\\.|^\\~|.*(\\n|\\r).*)|(^desktop\\.ini$|^thumbs\\.db|icon\\r)/",
            "error_path": null,
            "tags": null,
            "error": null,
            "deleted": null,
            "updated": "2018-04-24 15:22:58 UTC",
            "created": "2018-04-24 15:22:58 UTC"
        },
        {
            "name": "MyServer2",
            "domain": "imfast.io",
            "server": "myserver2.imfast.io",
            "storage": "dropbox",
            "analytics": "mygoogleprofile",
            "cdn": "akamai",
            "desc": "My Second Dropbox Server",
            "team": null,
            "enabled": true,
            "locked" : false,
            "fancyindexing": false,
            "indexfiles": true,
            "autoupdate" : true,
            "precache" : true,
            "precachedata" : false,
            "search": true,
            "favorite": true,
            "minify_html": false,
            "minify_css": false,
            "minify_js": false,
            "rocket_load": false,
            "image_mirage": false,
            "image_polish": true,
            "email_obfs": false,
            "scrape_shield": false,
            "expires": "43200",
            "password": null,
            "filter_mode": 2,
            "filter": "/(^\\.|^\\~|.*(\\n|\\r).*)|(^desktop\\.ini$|^thumbs\\.db|icon\\r)/",
            "error_path": null,
            "tags": null,
            "error": null,
            "deleted": null,
            "updated": "2018-04-23 15:22:58 UTC",
            "created": "2018-04-23 15:22:58 UTC"
        }
    ]
}
 
Suggest Edits

Server Details

This endpoint gets the configuration of a single Server associated with the provided credentials.

 

Header Auth

 Authentication is required for this endpoint.
gethttps://go.fast.io/api/v1.x/server/details/server

Path Params

server
string
required

The name and domain name combined with a period separating them. This string must meet the requirements for a valid name and domain.

Result Codes

HTTP Results
Description

200

The request and resource are valid and the server details are returned in the body.

Result JSON

Variable
Type
Description

result

boolean

true if Server details are returned.

server

server object

The server object for the requested server.

$ curl https://go.fast.io/api/v1.x/server/details/MyDropboxServer.imfast.io \
		-H "Authorization: yffaenajzny66mrdiuk6s6dvk6ef2gq7ia72"
A binary file was returned

You couldn't be authenticated

{
    "result": true,
    "server": {
        "name": "mydropboxserver",
        "domain": "imfast.io",
        "server": "mydropboxserver.imfast.io",
        "storage": "dropbox",
        "storage_config": {
           "root": "/src"
         },
        "analytics": "MyGoogleAnalytics",
        "cdn": "akamai",
        "desc": "My First Dropbox Server",
        "team": null,
        "enabled": true,
        "locked" : false,
        "fancyindexing": true,
        "indexfiles": true,
        "autoupdate" : true,
        "precache" : true,
        "precachedata" : false,
        "search": true,
        "favorite": true,
        "minify_html": false,
        "minify_css": false,
        "minify_js": false,
        "rocket_load": false,
        "image_mirage": false,
        "image_polish": true,
        "email_obfs": false,
        "scrape_shield": false,
        "expires": "43200",
        "password": null,
        "filter_mode": 2,
        "filter": "/(^\\.|^\\~|.*(\\n|\\r).*)|(^desktop\\.ini$|^thumbs\\.db|icon\\r)/",
        "error_path": null,
        "tags": [],
        "error": null,
        "deleted": null,
        "updated": "2018-04-23 15:22:58 UTC",
        "created": "2018-04-23 15:22:58 UTC"
    }
}
 
Suggest Edits

Get Preview

This endpoint gets a screenshot of the root path of a provided server.

 
get/server/preview/server

Path Params

server
string
required

The name and domain name combined with a period separating them. This string must meet the requirements for a valid name and domain.

Result Codes

HTTP Results
Description

200

The request and resource are valid and the server preview URL are returned in the body.

Result JSON

Variable
Type
Description

result

boolean

true if Server preview_url are returned. false on errors and if there is no content to preview.

server

string

The name of the Server the preview_url will generate a preview for.

modified

string

The date and time the server was last modified.

url

string

A URL that will return a PNG for the root of the specified Server.

options

int

A unique identifier of the current server configuration.

Image Output

The image will be returned in PNG format, at a maximum width of 720px by 504px when optimal. The width will always be 720px. The viewport the screenshot is taken at is always 1480x1037px.

Realtime Generation

The image is cached if not available. When the image is not available, it is rendered realtime and output, then cached. As such, there may be a delay for the first request of up to a few seconds to generate the initial screenshot.

Don't Block

We recommend including this image in your application in a way that doesn't block loading or usage of your implementation.

Modified Time

The modified field indicates when the path and server were last updated. Use this date to determine if you need to request a new preview or not. You can use the Poll API to see if a server is modified, however, a modification to content may not be reflected as the requested path may not have changed. We recommend you use the poll API to determine when to check this API for a possible change.

Preview URL CDN

The preview URL passed through Fast.ly for performance.

Error States

The Preview URL may return a variety of error codes that may change from time to time. In the event a 200 OK is returned, a valid PNG image should also be returned.

Modification Restricted

You cannot modify the preview_url. If you modify the preview_url in any way, it will return a 401 Unauthorized response.

$ curl https://go.fast.io/api/v1.x/server/preview/MyDropboxServer.imfast.io \
		-H "Authorization: yffaenajzny66mrdiuk6s6dvk6ef2gq7ia72"
A binary file was returned

You couldn't be authenticated

{
    "result": true,
    "server": "mydropboxserver.imfast.io",
    "url": "https://api.url2png.com/v6/P505C53A2310F73/d0a0f209d515ece0e609b6c6d277bded/png/?url=https%3A%2F%2Fmydropboxserver.imfast.io&unique=1552929837&fullpage=false&thumbnail_max_width=720&viewport=1480x1037",
    "modified": "2019-03-13 16:18:43 UTC",
    "options": 4061410453
}
 
Suggest Edits

Update Server

This endpoint updates the configuration of a Server.

 

Header Auth

 Authentication is required for this endpoint.
posthttps://go.fast.io/api/v1.x/server/update/server

Path Params

server
string
required

The name and domain name combined with a period separating them. This string must meet the requirements for a valid name and domain.

Body Params

storage
string

The name of the Server. A string length of 3 to 50 characters is supported.

analytics
string

The name of the Cloud Storage Provider to use for this Server.

cdn
string

The name of the CDN to use for this Server.

desc
string

A string that describes the the purpose of the Server. Strings between 3 and 128 characters are valid.

team
int32

The ID of the team associated with this Server or null if no team is set.

enabled
boolean

Set to true if you want the Server to be publicly accessible.

fancyindexing
boolean

Set to true if you want Fancy Indexing enabled for directory access without an index.

indexfiles
boolean

Set to true if you want to look for index files when a directory is accessed.

autoupdate
boolean

Set to true if you want automatic updates done to your cloud storage to be applied to your CDN.

precache
boolean

Set to true if you want pre-caching of your cloud storage to your CDN to be enabled.

precachedata
boolean

Set to true if you want to pre-cache actual data from your cloud storage as well as metadata. Normal usage rates/fees apply.

search
boolean

Set to true if you want a indexable response to be returned for requests to this Server.

favorite
boolean

Set to true if you want this Server to be flagged as a favorite.

expires
int32

The amount of time, in seconds, you want content to be cached in a users browser before they revalidate to your Server. Set low for frequently updated content.

error_path
string

A path, on the current Server, to be used instead of the default 404 File Not Found error page.

password
string

A string that is used for HTTP Basic authentication to the Server. Strings between 3 and 20 characters are valid.

filter_mode
string

Determines the filtering mode for analytics which can be a preset mode or a custom include or exclude regex.

filter
string

Regex which includes or excludes contents from your storage provider. The default regex blocks system and temporary files.

minify_html
boolean

Set to true if you want to automatically minify HTML before it's delivered.

minify_css
boolean

Set to true if you want to automatically minify CSS before it's delivered.

minify_js
boolean

Set to true if you want to automatically minify JS before it's delivered.

rocket_load
boolean

Set to true if you want to use Rocket Loader to cache and deliver webpages.

image_mirage
boolean

Set to true if you want to automatically resize images and optimize them based on the end-user device type.

image_polish
boolean

Set to true if you want to compress images (lossless) and remove location data.

email_obfs
boolean

Set to true if you want to obfuscate email address in HTML files.

scrape_shield
boolean

Set to true if you want to add security against hot linking and other types of content scraping.

Result Codes

HTTP Results
Description

200

The request and resource are valid and the request was completed.

Result JSON

Variable
Type
Description

result

boolean

true if Server is updated.

Tags

To add or delete one of the supported tags listed in the Server Object, specify it in the POST body set to either true or false prefixed with the tag_ string. An example to add the web tag would be tag_web=true.

Flush Cache

When Server updates change the Storage Provider, the cache will be automatically flushed for the entire Server. If you have pre-caching with data enabled, all data will be flushed and reached. Normal usage fees will apply.

Enabled Toggle

If you disable an active server, the CDN cache will be flushed and all future requests to that Server will result in a 405 Disabled response.

$ curl https://go.fast.io/api/v1.x/server/update/MyDropboxServer.imfast.io \
    -X POST \
		-H "Authorization: yffaenajzny66mrdiuk6s6dvk6ef2gq7ia72" \
    -d indexfiles=false \
    -d analytics=MyMixpanelProfile
A binary file was returned

You couldn't be authenticated

{
  "result" : true
}
 
Suggest Edits

Disable All Servers

This endpoint disables all Servers in the current users account.

 
post/server/disable_all/

2Factor Verification

If 2Factor Authorization is enabled on this account, you must supply the token parameter with your request or it will be rejected.

Result Codes

HTTP Results
Description

200

The request and resource were valid and at least some servers have been disabled.

Result JSON

Variable
Type
Description

result

boolean

true if at least one Server is in account is disabled.

$ curl -X POST https://go.fast.io/api/v1.x/server/disable_all/ \
		-H "Authorization: yffaenajzny66mrdiuk6s6dvk6ef2gq7ia72"
A binary file was returned

You couldn't be authenticated

{
  "result" : true
}
 
Suggest Edits

Delete Server

This endpoint deletes a Server and all its contents.

 
delete/server/server

Path Params

server
string
required

The name and domain name combined with a period separating them. This string must meet the requirements for a valid name and domain.

2Factor Verification

If 2Factor Authorization is enabled on this account, you must supply the token parameter with your request or it will be rejected.

Result Codes

HTTP Results
Description

200

The request and resource were valid and have been deleted.

Result JSON

Variable
Type
Description

result

boolean

true if the Server is deleted.

Deletes are Final

Delete operations are permanent and immediate. They cannot be reversed. The file and folder contents of a deleted server are flushed immediately as well. Server Names cannot be reused.

We Never Delete Data

Data is never deleted from your Cloud Storage Provider, if you delete a server, the contents in your Provider will be unchanged. If you want to delete that content, you will need to delete it yourself.

$ curl -X DELETE https://go.fast.io/api/v1.x/server/MyDropboxServer.imfast.io \
		-H "Authorization: yffaenajzny66mrdiuk6s6dvk6ef2gq7ia72"
A binary file was returned

You couldn't be authenticated

{
  "result" : true
}
 
Suggest Edits

Folder Object

This object contains a single folders details.

 

Fixed Fields

This object is used to describe Folders used in all API calls that interact with Folders.

Field
Type
Description
Read Only

name

string

The name of the Folder. Strings between 1 and 50 characters are valid.

Yes

path

string

The path to the Folder on the cloud Storage Provider.

Yes

id

string

The id of the folder as specified by the cloud Storage Provider.

Yes

url

string

A public URL that can be used to access this folder.

Yes

origin_url

string

A private URL that can be used to access the origin on the cloud of this folder object.

Yes

filtered

boolean

true if the file is filtered according to the filter_mode and filter of the parent server.

Yes

modified

datetime

The date and time the Folder was created or last updated depending on the provider.

Yes

cached

datetime

The date and time the Folder metadata being returned was cached at.

Yes

Folder URL

The folder URL will be provided even if indexing is not turned on, as such a user may get an error accessing this URL. Check server configuration before utilizing.

Root Request

When you request the root of your server /, the name will be a null value and the path will be /.

Path

The path is relative to the Fast application root which varies from Storage Provider.

Origin URL Permissions

The origin_url is only accessible by a permissioned user of the Cloud Storage Provider. This URL does not provide any new access or public access, just a quick reference link for modifying, adding, or removing content from it.

Cached Responses

If metadata is not cached or cache metadata is not available, the cached_at field may return null. You should treat null responses as unknown, not as uncached.

Its also notable that in a Folder List response, a folder may have a cache time that differs from the equivalent Path Details response.

 
Suggest Edits

File Object

This object contains single files details.

 

Fixed Fields

These fields are required with every file object response or request.

Field
Type
Description
Read Only

name

string

The name of the File. Strings between 1 and 150 characters are valid.

Yes

size

unsigned integer

The size of the File. This value defaults to 0.

Yes

state

string

The current state of the file. See table below for details.

Yes

mime

string

The mime type of the file determined by the API. This is a string from 5 to 30 characters in length.

Yes

category

int

The category based on mime that we believe this file to be.

Yes

url

string

A public URL that can be used to access and download this file.

Yes

origin_url

string

A private URL that can be used to access the origin on the cloud of this file object.

Yes

filtered

boolean

true if the file is filtered according to the filter_mode and filter of the parent server.

Yes

toobig

boolean

true if the file is too large for the current CDN storage provider and will not be available through the CDN.

Yes

modified

datetime

The date and time the File was created or updated as determined by the Cloud Storage Provider.

Yes

cached

datetime

The date and time the File metadata being returned was cached at.

Yes

URL based on Server

The url is a combination of the Server name and the path. The url includes the relative path from the Server root. If the file or folder is moved, or the Server is deleted or disabled, the URL will cease to work.

Origin URL Permissions

The origin_url is only accessible by a permissioned user of the Cloud Storage Provider. This URL does not provide any new access or public access, just a quick reference link for modifying, adding, or removing content from it.

Null Fields

A number of fields are set to null depending on what is provided by the Cloud Storage Provider including:

  • mime
  • category
  • modified
  • cached_at

Mime Types & Category

Mime Types are based on the name of the file and not by the content. Content that is named incorrectly will show the incorrect mime type.

Cached Responses

If metadata is not cached or cache metadata is not available, the cached_at field may return null. You should treat null responses as unknown, not as uncached.

It's also notable that in a Folder List response may have File Object's with a cache time that differs from the equivalent Path Details response for that File Object.

States

State
Description

ready

Indicates the file is ready and in a normal state.

locked

Indicates the file has been locked by our systems. Contact customer service.

Categories
Category
Description

1

Unknown Binary

2

Text

3

Image

4

Document

5

Archive

6

Executable

8

Video

9

CSS

10

Audio

11

HTML

12

Javascript

 
Suggest Edits

Path Details

This endpoint gets a single File or Folder details at the specified path and associated with the provided credentials.

 
get/server/details/server?path

Path Params

server
string
required

The name and domain name combined with a period separating them. This string must meet the requirements for a valid name and domain.

path
string
required

The path to the File or Folder to get details of. A string length of 1 to 1024 characters is supported.

Query Params

path
string

The path to the File or Folder to get the details of. A string length of 1 to 1024 characters is supported.

General

A valid path must start with a / and be the absolute path on the Server.

If no path is supplied, but a name is, the request will be processed as a Server Details request instead.

Results only include folders at the exact path specified, you will need to walk the tree to get sub-folders.

Result Codes

HTTP Results
Description

200

The request and resource are valid and the Folder details is returned in the body.

406

Errors including Storage Object authorization errors. Check the error object for code 10097.

Result JSON

Variable
Type
Description

result

boolean

true if path was found.

name

string

The name of the Server associated with this response.

domain

string

The domain of the Server associated with this response.

server

string

The fqdn of the server, which is the name and the domain.

storage

string

The name of the Storage Object associated with this response.

type

string

Either file or folder depending on which object is provided in details.

details

folder object or File Object object

A folder object if the path is a folder or a File Object object if the path is a file.

details and type fields will be omitted if the result is false.

Root Directory

To get details on the root Folder, set the path to /.

Files and Folders

Both a folder and file node are included but the result will be either a folder or a file object based on the path. The unused node will be null.

$ curl https://go.fast.io/api/v1.x/server/details/MyDropboxServer.imfast.io?/MyFolder/test.png \
		-H "Authorization: yffaenajzny66mrdiuk6s6dvk6ef2gq7ia72"
A binary file was returned

You couldn't be authenticated

{
  "result" : true,
  "type": "file",
  "name" : "MyDropboxServer",
  "domain" : "imfast.io",
  "server" : "mydropboxserver.imfast.io",
  "storage" : "dropbox",
  "details": {
     "id": "id:qSZH8F7zKAAAAAAAAAAAHQ",
     "name": "test.png",
     "size": 211522,
     "path": "/MyFolder/test.png",
     "mime": "image/png",
     "category": 3,
     "url": "https://MyDropboxServer.imfast.io/MyFolder/test.png",
     "origin_url" : "https://www.dropbox.com/file/1KOaj_tpd98",
     "filtered": false,
     "toobig": false,
     "modified": "2018-04-23 15:22:58 UTC",
     "cached" : "2018-04-23 15:29:32 UTC"
  }
}
 
Suggest Edits

Folder List

This endpoint gets a list of all files and folders at the specified path and associated with the provided credentials.

 
get/server/list/server?path

Path Params

server
string
required

The name and domain name combined with a period separating them. This string must meet the requirements for a valid name and domain.

Query Params

path
string

The path to the Folder to get the list of files and folders from. A string length of 1 to 1024 characters is supported.

Result Codes

HTTP Results
Description

200

The request and resource are valid and the Folder list is returned in the body.

404

The requested Server name was not found or the Folder path does not exist, is not accessible, or is not a folder.

406

Errors including Storage Object authorization errors. Check the error object for code 10097.

Result JSON

Variable
Type
Description

result

boolean

true if path was found.

results

integer

Indicates the number of File Object and folder objects returned in the list.

name

string

The name of the Server associated with this response.

domain

string

The domain of the Server associated with this response.

server

string

The fqdn of the server, which is the name and the domain.

storage

string

The name of the Storage Object associated with this response.

path

string

The path of the folder which the list corresponds to.

list

array

A array of File Object and folder objects that exist at the specified path.

Results only include files and folders at the exact path specified, you will need to walk the tree to get sub-folders contents.

File Object and Folder Object objects include an additional field in the list result of type which can be either file or folder depending on the type of object set.

Sorting

The list is sorted by name in an ascending (ASC) order.

Empty Array

If no objects are found, results will be set to 0 and list will be empty.

Maximum Results

This version of the API is limited to 1000 results per request to this resource.

Root Directory

For a listing of objects in the root directory, the path should be set to /.

$ curl https://go.fast.io/api/v1.x/server/list/MyDropboxServer.imfast.io?/images/ \
		-H "Authorization: yffaenajzny66mrdiuk6s6dvk6ef2gq7ia72"
A binary file was returned

You couldn't be authenticated

{
  "result" : true,
  "results" : 1,
  "name" : "MyDropboxServer",
  "domain" : "imfast.io",
  "server" : "mydropboxserver.imfast.io",
  "storage" : "dropbox",
  "path" : "/images/",
  "list" : [
    {
      "type": "file",
      "id": "id:qSZH8137zKAAAAAAAABAAAIK",
      "name": "picture.png",
      "size": 211522,
      "path": "/images/picture.png",
      "mime": "image/png",
      "category": 3,
      "url": "https://mydropboxserver.imfast.io/images/picture.png",
      "origin_url" : "https://www.dropbox.com/file/1KOaj_tpd134",
      "filtered": false,
      "toobig": false,
      "modified": "2018-04-23 15:22:58 UTC",
      "cached" : "2018-04-23 15:29:32 UTC"
    } ]
}
 
Suggest Edits

Usage Statistics

General information on usage statistics API's.

 

General

Usage statistics are a way to understand costs associated with the account. Analytics should be done through Analytics Object API's.

Logs are delayed anywhere from 5 hours to 24 hours. Analytics reported to 3rd party providers will be available before usage statistics are updated.

The stats API's will automatically calculate the interval in hourly increments based on the period provided. We always attempt to give you 30 results. This value may not always be divisible by hours, and as such, you may get slightly more or less than 30 results.

Requested periods will be rounded to the nearest hours.

Recent stats cover a period of 15 hours in 30-minute increments.

Valid Timeframes

You can request usage timeframes up to 1 year and go back as far as 3 years.

Transfers Object

The transfers object is returned by stats API's to indicate the volume (bytes) and instances (transfers) that occurred during the period (between the start and end times). These stats include any data accumulated due to Pre Cache settings.

Fixed Fields

This object is read-only.

Field
Type
Description

bytes

unsigned integer

The number of bytes transferred or null if no transfers occurred.

transfers

unsigned integer

The number of transfers, including partial or multipart transfers.

Transfer Count

Any HTTP transfer on a file will result in an increment of this transfers field. If a user does a multi-part transfer where they simultaneously download chunks of a file for performance, each part will be counted. Each HTTP or HTTPs connection will count as a transfer.

Reporting to analytics can have transferred from the same user aggregated.

Optional Fields

start

date

The start of the date range for bytes and transfers reporting.

end

date

The end of the date range for bytes and transfers reporting.

 
Suggest Edits

Account Stats

This endpoint gets the transfer statistics for the current account for a given period.

 

Header Auth

 Authentication is required for this endpoint.
gethttps://go.fast.io/api/v1.x/stats/?interval=:interval&start=start&end=end

Query Params

start
string
required

The start datetime to use when retrieving transfer statistics.

end
string

The end datetime to use when retrieving transfer statistics.

Result Codes

HTTP Results
Description

200

The request and resource are valid and the user stats are returned in the body.

Result JSON

Variable
Type
Description

result

boolean

true if user stats were returned.

results

unsigned int

The number of Transfers Object's returned in transfers.

interval

unsigned int

The interval in seconds that splits the start and end datetime's.

transfers

This transfer stats for the requested timeframe if the request result was true.

Minimum Interval

Account stats are calculated and stored in 1-hour intervals. As such, the minimum interval is 1 hour, specifying a start and end range less than 3600 seconds apart will result in an error.

$ curl https://go.fast.io/api/v1.x/stats/?start=2018-04-10+13%3A26%3A09+UTC \
		-H "Authorization: yffaenajzny66mrdiuk6s6dvk6ef2gq7ia72"
A binary file was returned

You couldn't be authenticated

{
    "result": true,
    "results": 5,
    "interval": 192000,
    "transfers": [
        {
            "transfers": "12892",
            "bytes": "92246456",
            "start": "2018-04-10 13:26:09 UTC",
            "end": "2018-04-12 18:46:09 UTC"
        },
        {
            "transfers": "12822",
            "bytes": "91954060",
            "start": "2018-04-12 18:46:09 UTC",
            "end": "2018-04-15 00:06:09 UTC"
        },
        {
            "transfers": "12831",
            "bytes": "92089128",
            "start": "2018-04-15 00:06:09 UTC",
            "end": "2018-04-17 05:26:09 UTC"
        },
        {
            "transfers": "12900",
            "bytes": "92219487",
            "start": "2018-04-17 05:26:09 UTC",
            "end": "2018-04-19 10:46:09 UTC"
        },
        {
            "transfers": "6459",
            "bytes": "46339529",
            "start": "2018-04-19 10:46:09 UTC",
            "end": "2018-04-20 13:36:09 UTC"
        }
    ]
}
{
    "result": false,
    "error": {
        "code": 46197,
        "text": "Too many requests made. Enhance your calm."
    }
}
 
Suggest Edits

Account Stats Recent

This endpoint gets the recent 15 elements of stats for your entire account.

 
get/stats/recent

Non-Authorative Results

Results may change from in Recent stats as more data is aggregated. Do not use stats provided by this API as authoritative or for billing purposes.

Result Codes

HTTP Results
Description

200

The request and resource are valid and Transfers Object's are returned.

Variable
Type
Description

result

boolean

true if transfers are returned.

results

unsigned integer

The number of interval Transfers Object's returned in transfers.

interval

unsigned integer

The time in seconds each transfer object covers.

transfers

list of Transfers Object's

List of Transfers Object's for the recent period.

Rate Limit

Because of the cost of this resource, calls are rate limited.

$ curl https://go.fast.io/api/v1.x/stats/recent \
		-H "Authorization: yffaenajzny66mrdiuk6s6dvk6ef2gq7ia72"
A binary file was returned

You couldn't be authenticated

{
    "result": true,
    "results": 30,
    "interval": 1800,
    "transfers": [
        {
            "transfers": 129,
            "bytes": 995662,
            "start": "2018-07-09 02:00:00 UTC",
            "end": "2018-07-09 02:30:00 UTC"
        },
        {
            "transfers": 2,
            "bytes": 15416,
            "start": "2018-07-09 02:30:00 UTC",
            "end": "2018-07-09 03:00:00 UTC"
        },
        {
            "transfers": 1,
            "bytes": 7702,
            "start": "2018-07-09 03:00:00 UTC",
            "end": "2018-07-09 03:30:00 UTC"
        },
        {
            "transfers": 13,
            "bytes": 100243,
            "start": "2018-07-09 03:30:00 UTC",
            "end": "2018-07-09 04:00:00 UTC"
        },
        {
            "transfers": 71,
            "bytes": 547929,
            "start": "2018-07-09 04:00:00 UTC",
            "end": "2018-07-09 04:30:00 UTC"
        },
        {
            "transfers": 145,
            "bytes": 1119094,
            "start": "2018-07-09 04:30:00 UTC",
            "end": "2018-07-09 05:00:00 UTC"
        },
        {
            "transfers": 151,
            "bytes": 1165783,
            "start": "2018-07-09 05:00:00 UTC",
            "end": "2018-07-09 05:30:00 UTC"
        },
        {
            "transfers": 151,
            "bytes": 1165664,
            "start": "2018-07-09 05:30:00 UTC",
            "end": "2018-07-09 06:00:00 UTC"
        },
        {
            "transfers": 151,
            "bytes": 1165611,
            "start": "2018-07-09 06:00:00 UTC",
            "end": "2018-07-09 06:30:00 UTC"
        },
        {
            "transfers": 151,
            "bytes": 1165589,
            "start": "2018-07-09 06:30:00 UTC",
            "end": "2018-07-09 07:00:00 UTC"
        },
        {
            "transfers": 115,
            "bytes": 887748,
            "start": "2018-07-09 07:00:00 UTC",
            "end": "2018-07-09 07:30:00 UTC"
        },
        {
            "transfers": 145,
            "bytes": 1119242,
            "start": "2018-07-09 07:30:00 UTC",
            "end": "2018-07-09 08:00:00 UTC"
        },
        {
            "transfers": 151,
            "bytes": 1165552,
            "start": "2018-07-09 08:00:00 UTC",
            "end": "2018-07-09 08:30:00 UTC"
        },
        {
            "transfers": 151,
            "bytes": 1165589,
            "start": "2018-07-09 08:30:00 UTC",
            "end": "2018-07-09 09:00:00 UTC"
        },
        {
            "transfers": 151,
            "bytes": 1165589,
            "start": "2018-07-09 09:00:00 UTC",
            "end": "2018-07-09 09:30:00 UTC"
        },
        {
            "transfers": 151,
            "bytes": 1165636,
            "start": "2018-07-09 09:30:00 UTC",
            "end": "2018-07-09 10:00:00 UTC"
        },
        {
            "transfers": 151,
            "bytes": 1165577,
            "start": "2018-07-09 10:00:00 UTC",
            "end": "2018-07-09 10:30:00 UTC"
        },
        {
            "transfers": 151,
            "bytes": 1165703,
            "start": "2018-07-09 10:30:00 UTC",
            "end": "2018-07-09 11:00:00 UTC"
        },
        {
            "transfers": 151,
            "bytes": 1165569,
            "start": "2018-07-09 11:00:00 UTC",
            "end": "2018-07-09 11:30:00 UTC"
        },
        {
            "transfers": 151,
            "bytes": 1165619,
            "start": "2018-07-09 11:30:00 UTC",
            "end": "2018-07-09 12:00:00 UTC"
        },
        {
            "transfers": 151,
            "bytes": 1165705,
            "start": "2018-07-09 12:00:00 UTC",
            "end": "2018-07-09 12:30:00 UTC"
        },
        {
            "transfers": 76,
            "bytes": 586640,
            "start": "2018-07-09 12:30:00 UTC",
            "end": "2018-07-09 13:00:00 UTC"
        },
        {
            "transfers": 92,
            "bytes": 710238,
            "start": "2018-07-09 13:00:00 UTC",
            "end": "2018-07-09 13:30:00 UTC"
        },
        {
            "transfers": 101,
            "bytes": 779667,
            "start": "2018-07-09 13:30:00 UTC",
            "end": "2018-07-09 14:00:00 UTC"
        },
        {
            "transfers": 103,
            "bytes": 795280,
            "start": "2018-07-09 14:00:00 UTC",
            "end": "2018-07-09 14:30:00 UTC"
        },
        {
            "transfers": 150,
            "bytes": 1157928,
            "start": "2018-07-09 14:30:00 UTC",
            "end": "2018-07-09 15:00:00 UTC"
        },
        {
            "transfers": 151,
            "bytes": 1165815,
            "start": "2018-07-09 15:00:00 UTC",
            "end": "2018-07-09 15:30:00 UTC"
        },
        {
            "transfers": 151,
            "bytes": 1165831,
            "start": "2018-07-09 15:30:00 UTC",
            "end": "2018-07-09 16:00:00 UTC"
        },
        {
            "transfers": 148,
            "bytes": 1142463,
            "start": "2018-07-09 16:00:00 UTC",
            "end": "2018-07-09 16:30:00 UTC"
        },
        {
            "transfers": 134,
            "bytes": 1034656,
            "start": "2018-07-09 16:30:00 UTC",
            "end": "2018-07-09 17:00:00 UTC"
        }
    ]
}
 
Suggest Edits

Server Stats

This endpoint gets the transfer statistics for a server for a given period.

 

Header Auth

 Authentication is required for this endpoint.
gethttps://go.fast.io/api/v1.x/stats/server/server?interval=:interval&start=start&end=end

Path Params

server
string
required

The name and domain name combined with a period separating them. This string must meet the requirements for a valid name and domain.

Query Params

start
string
required

The start datetime to use when retrieving transfer statistics.

end
string

The end datetime to use when retrieving transfer statistics.

Result Codes

HTTP Results
Description

200

The request and resource are valid and the user stats are returned in the body.

Result JSON

Variable
Type
Description

result

boolean

true if user stats were returned.

results

unsigned int

The number of Transfers Object's returned in transfers.

server

string

The Server name and domain in FQDN format the returned statistics are for.

interval

unsigned int

The interval in seconds that splits the start and end datetime's.

transfers

This transfer stats for the requested timeframe if the request result was true.

$ curl https://go.fast.io/api/v1.x/stats/server/MyDropboxServer.imfast.io?start=2018-04-10+13%3A26%3A09+UTC \
		-H "Authorization: yffaenajzny66mrdiuk6s6dvk6ef2gq7ia72"
A binary file was returned

You couldn't be authenticated

{
    "result": true,
    "results": 5,
    "server": "mydropboxserver.imfast.io",
    "interval": 192000,
    "transfers": [
        {
            "transfers": 3204,
            "bytes": "23030832",
            "start": "2018-04-10 13:26:09 UTC",
            "end": "2018-04-12 18:46:09 UTC"
        },
        {
            "transfers": "3193",
            "bytes": "22965245",
            "start": "2018-04-12 18:46:09 UTC",
            "end": "2018-04-15 00:06:09 UTC"
        },
        {
            "transfers": "3200",
            "bytes": "23009946",
            "start": "2018-04-15 00:06:09 UTC",
            "end": "2018-04-17 05:26:09 UTC"
        },
        {
            "transfers": "3211",
            "bytes": "23072252",
            "start": "2018-04-17 05:26:09 UTC",
            "end": "2018-04-19 10:46:09 UTC"
        },
        {
            "transfers": "1609",
            "bytes": "11576125",
            "start": "2018-04-19 10:46:09 UTC",
            "end": "2018-04-20 13:36:09 UTC"
        }
    ]
}
 
Suggest Edits

Server Stats Recent

This endpoint gets the recent 15 elements for a particular Server.

 
get/stats/server/recent/server

Path Params

server
string
required

The name and domain name combined with a period separating them. This string must meet the requirements for a valid name and domain.

Non-Authorative Results

Results may change from in Recent stats as more data is aggregated. Do not use stats provided by this API as authoritative or for billing purposes.

Result Codes

HTTP Results
Description

200

The request and resource are valid and Transfers Object's are returned.

Variable
Type
Description

result

boolean

true if transfers are returned.

results

unsigned integer

The number of interval Transfers Object's returned in transfers.

server

string

The Server name and domain in FQDN format the returned statistics are for.

interval

unsigned integer

The time in seconds each transfer object covers.

transfers

list of Transfers Object's

List of Transfers Object's for the recent period.

Rate Limit

Because of the cost of this resource, calls are rate limited.

$ curl https://go.fast.io/api/v1.x/stats/server/recent/MyDropboxServer.imfast.io \
		-H "Authorization: yffaenajzny66mrdiuk6s6dvk6ef2gq7ia72"
A binary file was returned

You couldn't be authenticated

{
    "result": true,
    "results": 30,
    "server": "mydropboxserver.imfast.io",
    "interval": 1800,
    "transfers": [
        {
            "transfers": 24,
            "bytes": 185126,
            "start": "2018-07-09 02:00:00 UTC",
            "end": "2018-07-09 02:30:00 UTC"
        },
        {
            "transfers": 0,
            "bytes": 0,
            "start": "2018-07-09 02:30:00 UTC",
            "end": "2018-07-09 03:00:00 UTC"
        },
        {
            "transfers": 0,
            "bytes": 0,
            "start": "2018-07-09 03:00:00 UTC",
            "end": "2018-07-09 03:30:00 UTC"
        },
        {
            "transfers": 0,
            "bytes": 0,
            "start": "2018-07-09 03:30:00 UTC",
            "end": "2018-07-09 04:00:00 UTC"
        },
        {
            "transfers": 16,
            "bytes": 123438,
            "start": "2018-07-09 04:00:00 UTC",
            "end": "2018-07-09 04:30:00 UTC"
        },
        {
            "transfers": 30,
            "bytes": 231421,
            "start": "2018-07-09 04:30:00 UTC",
            "end": "2018-07-09 05:00:00 UTC"
        },
        {
            "transfers": 30,
            "bytes": 231468,
            "start": "2018-07-09 05:00:00 UTC",
            "end": "2018-07-09 05:30:00 UTC"
        },
        {
            "transfers": 30,
            "bytes": 231412,
            "start": "2018-07-09 05:30:00 UTC",
            "end": "2018-07-09 06:00:00 UTC"
        },
        {
            "transfers": 30,
            "bytes": 231369,
            "start": "2018-07-09 06:00:00 UTC",
            "end": "2018-07-09 06:30:00 UTC"
        },
        {
            "transfers": 30,
            "bytes": 231457,
            "start": "2018-07-09 06:30:00 UTC",
            "end": "2018-07-09 07:00:00 UTC"
        },
        {
            "transfers": 21,
            "bytes": 162087,
            "start": "2018-07-09 07:00:00 UTC",
            "end": "2018-07-09 07:30:00 UTC"
        },
        {
            "transfers": 29,
            "bytes": 223717,
            "start": "2018-07-09 07:30:00 UTC",
            "end": "2018-07-09 08:00:00 UTC"
        },
        {
            "transfers": 30,
            "bytes": 231466,
            "start": "2018-07-09 08:00:00 UTC",
            "end": "2018-07-09 08:30:00 UTC"
        },
        {
            "transfers": 30,
            "bytes": 231460,
            "start": "2018-07-09 08:30:00 UTC",
            "end": "2018-07-09 09:00:00 UTC"
        },
        {
            "transfers": 30,
            "bytes": 231376,
            "start": "2018-07-09 09:00:00 UTC",
            "end": "2018-07-09 09:30:00 UTC"
        },
        {
            "transfers": 30,
            "bytes": 231416,
            "start": "2018-07-09 09:30:00 UTC",
            "end": "2018-07-09 10:00:00 UTC"
        },
        {
            "transfers": 30,
            "bytes": 231470,
            "start": "2018-07-09 10:00:00 UTC",
            "end": "2018-07-09 10:30:00 UTC"
        },
        {
            "transfers": 30,
            "bytes": 231555,
            "start": "2018-07-09 10:30:00 UTC",
            "end": "2018-07-09 11:00:00 UTC"
        },
        {
            "transfers": 30,
            "bytes": 231472,
            "start": "2018-07-09 11:00:00 UTC",
            "end": "2018-07-09 11:30:00 UTC"
        },
        {
            "transfers": 30,
            "bytes": 231482,
            "start": "2018-07-09 11:30:00 UTC",
            "end": "2018-07-09 12:00:00 UTC"
        },
        {
            "transfers": 30,
            "bytes": 231543,
            "start": "2018-07-09 12:00:00 UTC",
            "end": "2018-07-09 12:30:00 UTC"
        },
        {
            "transfers": 13,
            "bytes": 100268,
            "start": "2018-07-09 12:30:00 UTC",
            "end": "2018-07-09 13:00:00 UTC"
        },
        {
            "transfers": 17,
            "bytes": 131178,
            "start": "2018-07-09 13:00:00 UTC",
            "end": "2018-07-09 13:30:00 UTC"
        },
        {
            "transfers": 18,
            "bytes": 138904,
            "start": "2018-07-09 13:30:00 UTC",
            "end": "2018-07-09 14:00:00 UTC"
        },
        {
            "transfers": 20,
            "bytes": 154469,
            "start": "2018-07-09 14:00:00 UTC",
            "end": "2018-07-09 14:30:00 UTC"
        },
        {
            "transfers": 29,
            "bytes": 223794,
            "start": "2018-07-09 14:30:00 UTC",
            "end": "2018-07-09 15:00:00 UTC"
        },
        {
            "transfers": 30,
            "bytes": 231578,
            "start": "2018-07-09 15:00:00 UTC",
            "end": "2018-07-09 15:30:00 UTC"
        },
        {
            "transfers": 30,
            "bytes": 231587,
            "start": "2018-07-09 15:30:00 UTC",
            "end": "2018-07-09 16:00:00 UTC"
        },
        {
            "transfers": 27,
            "bytes": 208418,
            "start": "2018-07-09 16:00:00 UTC",
            "end": "2018-07-09 16:30:00 UTC"
        },
        {
            "transfers": 27,
            "bytes": 208402,
            "start": "2018-07-09 16:30:00 UTC",
            "end": "2018-07-09 17:00:00 UTC"
        }
    ]
}
 
Suggest Edits

Log Record Object

This object contains a transfer log records.

 

Fixed Fields

A corresponding object is created and stored for each transfer from your account. All records are read-only and permanent. Older records may be archived offline but are never flushed.

Field
Type
Description

entry_id

string

A permanent unique id string to describe this entry. Strings is 20 characters in length.

server

string

The Server that served the requests fqdn.

server_vanity

string

The fqdn of the vanity domain that actually received the request served by server.

cdn

string

The CDN Provider that fulfilled the request.

client_uuid

string | null

A string assigned to each downloader to uniquely identify them. String length is between 5 and 35 characters. null on empty.

client_referer

string | null

The HTTP referer provided by the client for the request.
Strings range from 3 to 384 characters. null on empty.

client_user_agent

string | null

The HTTP User Agent provided by the client for the request. Strings range from 1 to 64 characters. null on empty.

client_ip

string | null

The IP Address of the client. Strings range between 7 and 45 characters may be returned.

client_country

string | null

The ISO country code of client at the time of the request.

request_path

string

The URI that was requested. Strings range from 10 to 1024 characters.

request_method

string

The method of the transfer. The only supported method in this version of the API is GET.

request_secure

boolean

true if the request was done over an encrypted connection.

transfer_code

integer

The HTTP status code returned to the user.

transfer_result

boolean

true if the requested transfer was completed successfully.

transfer_size_total

integer

The size in bytes of the entire transfer which includes headers and the content returned.

transfer_size

integer

The size in bytes of the content requested and returned.

transfer_start

datetime

The time the transfer started.

transfer_seconds

integer | null

The elapsed time of the transfer. null if the time is not available. Time is in milliseconds.

request_url

string

The complete URL of the request.

UUID

The uuid is automatically assigned to each unique user so you can track transfers by multiple users. The uuid is not guaranteed to be unique depending on the user's browser, settings, computer, internet provider, and country of origin.

Country Code

Country codes are in ISO-3166-1 format and are determined at the time of the transfer. IP blocks and country codes for IP's may switch over time, so the supplied country code may be more accurate than using a secondary database after time has elapsed.

 
Suggest Edits

Logs Retrieve

This endpoint gets the account logs for a time range for a particular Server.

 

Header Auth

 Authentication is required for this endpoint.
gethttps://go.fast.io/api/v1.x/log/server?start=start&end=end&format=format

Path Params

server
string
required

The name and domain name combined to check if its both valid and available. This string must meet the requirements for a valid name and domain.

Query Params

start
date
required

The start datetime to use when retrieving log records.

end
date

The end datetime to use when retrieving log records.

format
string

The response format you would like from this API.

The start and end times are in datetime format. date format is also accepted for ease of use. limit and offset fields are both supported for this resource for chunked transfers.

The end datetime must always be later than the start datetime. If the end date is not specified, the current datetime is used.

There must be at least five (5) minutes between the start and the end time.

Result Codes

HTTP Results
Description

200

The request and resource are valid and the log records are returned in the body.

Record Availability

Records are only available for no more than 90 days after the creation date. To access older records, contact customer service.

404 Response

The 404 response will only indicate theserver is not found. If no log records are found in the time period, a 200 will be returned, the records list will be null and the result will be false.

Response Formats

This API supports responses in multiple formats. The default format is a standard API JSON response.

json

A standard API response including the log data in JSON format.

csv

A comma-separated log format as a file attachment that includes the fields in the Log Record Object in a comma-separated log.

CSV Response

The CSV Response will include a content-disposition header incidcating an attachment, this file should be saved for offline processing.

No JSON is returned with CSV results, if no rows are found, an empty CSV will be returned.

Result JSON

Results for records are ordered in ascending time from the start date.

Variable
Type
Description

result

boolean

true if logs are returned.

records

list of log record object

List of log record objects for transfers matching the timeframe.

Log Limits

Each response format has specific limits for the number of records it may return. If your logs exceed this amount, additional records will be truncated. We suggest using an appropriate datetime window based on the expected size of your data-set. Be cognizant of the Rate Limit restrictions on this API.

JSON

In a given response, the number of response records will not exceed 10,000 records.

CSV

In a given response, the number of response records will not exceed 1,000,000 records.

Rate Limit

Because of the cost of this resource, calls are rate limited.

Data Retention

For specific details regarding data retention, please see our privacy policy.

$ curl https://go.fast.io/api/v1.x/log/MyDropboxServer.imfast.io?start=2018-04-20&end=2018-04-21 \
		-H "Authorization: yffaenajzny66mrdiuk6s6dvk6ef2gq7ia72"
A binary file was returned

You couldn't be authenticated

{
    "result": true,
    "results": 2,
    "records": [
        {
            "entry_id": "ec94fbf7f68a2ee",
            "server": "mydropboxserver.imfast.io",
            "server_vanity": "www.dropboxlove.com",
            "cdn": "akamai",
            "client_uuid": "23.212.108.46.304741539955611311",
            "client_referer": null,
            "client_user_agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/37.0.2062.124 Safari/537.36",
            "client_ip": "109.123.101.103",
            "client_country": "GB",
            "client_region": "EN",
            "client_city": "LONDON",
            "client_long": "-0.12",
            "client_lat": "51.5",
            "client_asn": 13213,
            "content_type": "image/png",
            "content_lastmod": "2018-10-19 13:27:21",
            "transfer_code": "200",
            "request_path": "/fast.io.png",
            "request_method": "GET",
            "request_secure": "Yes",
            "request_proto": "1.1",
            "transfer_result": "Success",
            "transfer_size": 7100,
            "transfer_size_total": 7407,
            "transfer_start": "2018-10-19 13:26:49 GMT",
            "transfer_seconds": 1859,
            "request_url": "https://mydropboxserver.imfast.io/fast.io.png"
        },
        {
            "entry_id": "234154560",
            "server": "mydropboxserver.imfast.io",
            "server_vanity": "www.dropboxlove.com",
            "cdn": "akamai",
            "cdn": "akamai",
            "client_uuid": "2.20.132.76.185501539955669416",
            "client_referer": null,
            "client_user_agent": "Mozilla/5.0 (Windows NT 5.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/35.0.2117.157 Safari/537.36",
            "client_ip": "188.138.40.20",
            "client_country": "FR",
            "client_region": "GES",
            "client_city": "STRASBOURG",
            "client_long": "7.79",
            "client_lat": "48.6",
            "client_asn": 8972,
            "content_type": "image/png",
            "content_lastmod": "2018-10-19 13:28:19",
            "transfer_code": "200",
            "request_path": "/fast.io.png",
            "request_method": "GET",
            "request_secure": "Yes",
            "request_proto": "1.1",
            "transfer_result": "Success",
            "transfer_size": 7100,
            "transfer_size_total": 7405,
            "transfer_start": "2018-10-19 13:27:49 GMT",
            "transfer_seconds": 351,
            "request_url": "https://mydropboxserver.imfast.io/fast.io.png"
        }
    ]
}
{
    "result": false,
    "error": {
        "code": 46197,
        "text": "Too many requests made. Enhance your calm."
    }
}
 
Suggest Edits

Cache Management

General Information about how caching, changes are collecting, how/when flushing occurs, and pre-caching works.

 

The caching API's and functionality are designed to ensure that data stored in your storage cloud are available at the CDN and up to date. There are a wide variety of possible configurations and interactions. As such, this overview focuses only on the core concepts.

Changes

Changes are received from the Cloud Storage providers which allow us to determine if the contents of your CDN has changed. We collect changes while activity is happening before processing them. We may collect changes for an extended period of time if you're making many changes at once. Alternatively, you can manually flush and precache changes if you don't want to wait for us to finish collecting changes automatically.

Once changes are collected, flushing and pre-caching occur as configured.

Flushing

Flushing allows you to delete or "flush" the cache at a given path. That path may be a file or a folder, and it affects all children. In other words, if you flush /, everything on the server will be flushed from the cache.

Flush History is only tracked for the actual object flushed, so if you flush /, the history for any children of / will not reflect when / was flushed. If you want to determine when data was last cached, look at the cached_at field of the File Object or Folder Object.

Flushes are immediately completed in the API at the time of the request, however, may take up to 30 seconds to be visible at the CDN.

If you have pre-caching enabled, flushing a path will generate a pre-caching operation for that path.

PreCaching

Precaching replicates data from your cloud storage to the CDN edge to ensure the first request is as quick as every subsequent request. There are two basic modes for pre-caching, with or without data. If you pre-cache with data, files will be cached to the CDN edge. If you pre-cache without data, only metadata will be cached to the CDN edge.

Sessions

Preaching is done on a session basis where jobs are assigned to a session. Sessions are per-server, as there is only one session for each server. Additional jobs added for a given server will result in the jobs being added to the existing sessions stack.

History

Precache history is kept for 24-hours from the last update of a given Server.

Fees

Standard usage fees apply to pre-caching data.

Limits

Preaching, in this version of the API, will only allow 500 folders and 2,000 files to be preached in a single job. If you have more data that needs to be pre-cached, perform sequential smaller jobs.

Concurrency

Only one pre-cache operation on a Server configuration may be performed at once. If a superseding operation is made, the superseded operation will be canceled and replaced. You can follow the chain of how jobs are replaced by following the preempt field of the Pre Cache Object.

Concurrent Escalation

In the event that there is a conflict between operations, the lowest common path will be used as the pre-cache root. This may cause the entire server to be pre-cached if two different folders in the root of a Server attempt to run concurrent pre-cache jobs.

Automatic Updates

Automatic Updates are triggered when your underlying cloud storage contents are changed. The effect of Automatic Updates is to generate a flush on the changed object set. The flush itself may generate a pre-cache operation.

Precache Size

Precache is limited to 2GiB of data in any given operation. Any data transfers are limited to the first 250MB of data. Please contact us if this poses a problem for you.

Best Efforts

When Pre-caching with data, we make our best effort to not pre-cache data that is already cached and valid. Typically this results in no usage charges when data is already pre-cached.

 
Suggest Edits

Changes Object

An object containing job information of pending / recent changes that have been received.

 

This object is used to indicate changes that are being received from a storage provider but have not yet been processed. There is a variable delay in processing based on the cadence of changes to avoid thrashing.

Completed/Stale Jobs TTL

Once jobs are stale or completed, they are kept for up to 1 day after which they are flushed out. Only one job per server configuration is kept. New jobs will over-write previous completed or stale jobs.

Fixed Fields

This object is read-only.

Field
Type
Description

name

string

The name of the server configuration this job applies to.

domain

string

The domain this configuration is assigned to.

server

string

The fqdn which is the name and the domain of the server.

waited

int

The amount of time in seconds that we have been waiting for changes to come in.

remaining

int

The estimated time in seconds remaining before these changes are processed.

extensions

int

The number of times the remaining time has been extended.

changes

array of strings

An array of strings of content paths that have recently changed.

complete

bool

Indicates if the changes have finished being received and have been sent for processing.

stale

bool

Indicates if the change processing has gone stale and should be manually processed by the user.

started

datetime

The date and time when the changes started being processed.

last

datetime

The date and time when the last change was received.

updated

datetime

The date and time when the status were last updated which should be at about 1-2 second intervals until a job is completed.

Stale Jobs

Stale jobs may happen from time to time. The next change received will pick up the stale job however if you want the changes to process immediately, call the related Cache Management API's manually.

Remaining Time Changes

When rendering current status for pending changes, note that the remaining time is subject to extensions if the platform determines we should wait long for more changes to settle.

States of Changes Object

There are three basic states to monitor for.

State
Completed
Stale
Desc

Waiting

FALSE

FALSE

We are waiting for additional changes to be received before processing.

Processed

TRUE

FALSE

We have received all changes and have processed them.

Stale

FALSE

TRUE

We received changes however we stopped waiting before processing them. You may want to process them manually or wait for additional changes.

 
Suggest Edits

Changes List

This endpoint provides a list of all known changes status.

 
get/server/changes/list/

Only one status job is returned per server configuration when available. If a new set of changes are received, they will over-write the previous changes.

Result Codes

HTTP Results
Description

200

A successful request was made that may or made not include any results.

Result JSON

Variable
Type
Description

result

boolean

true if the request was valid.

results

int

The number of Server Names returned in changes.

pending

bool

true if there are pending changes that have not yet been rendered into a Changes Object.

changes

array

An array of Server names and Domains that have changes for the current credentials.

Pending Expires

The pending field self expires after 10s of inactivity. You will get an activity update when its set, however, you will not get an activity update when it expires. You need to expire the state locally after 10s of inactivity.

$ curl https://go.fast.io/api/v1.x/server/changes/list/ \
    -H "Authorization: yffaenajzny66mrdiuk6s6dvk6ef2gq7ia72"
A binary file was returned

You couldn't be authenticated

{
    "result": true,
    "results": 2,
    "pending": true,
    "jobs": [
        "mydropboxserver.imfast.io",
        "mygoogledrive.imfast.io"
    ]
}
 
Suggest Edits

Changes Status

This endpoint provides the full status of all known Change statuses.

 
get/server/changes/status/

Result Codes

HTTP Results
Description

200

The request and resource are valid and the status is returned in the changes node.

Result JSON

Variable
Type
Description

result

boolean

true if the request was valid.

results

int

The number of changes objects returned in changes.

pending

bool

true if there are pending changes that have not yet been rendered into a Changes Object.

changes

array of Changes Object's

An array of Changes Object's associated with the account credentials.

Pending Expires

The pending field self expires after 10s of inactivity. You will get an activity update when its set, however, you will not get an activity update when it expires. You need to expire the state locally after 10s of inactivity.

$ curl https://go.fast.io/api/v1.x/server/changes/status/ \
    -H "Authorization: yffaenajzny66mrdiuk6s6dvk6ef2gq7ia72"
A binary file was returned

You couldn't be authenticated

{
    "result": true,
    "results": 1,
    "pending": true,
    "changes": [
        {
            "name": "mydropboxserver",
            "domain": "imfast.io",
            "server": "mydropboxserver.imfast.io",
            "waited": 12,
            "remaining": 0,
            "extensions": 5,
            "changes": [
                "/"
            ],
            "complete": true,
            "stale": false,
            "started": "2018-11-24 01:14:38 UTC",
            "last": "2018-11-24 01:14:45 UTC",
            "updated": "2018-11-24 01:14:50 UTC"
        }
    ]
}
 
Suggest Edits

Changes Status Server

This endpoint provides details on a Changes Status for a given Server.

 
get/server/changes/status/server

Path Params

server
string
required

The name and domain name combined with a period separating them. This string must meet the requirements for a valid name and domain.

Result Codes

HTTP Results
Description

200

true if the request was valid and processed.

404

No changes were found for the provided credentials.

Result JSON

Variable
Type
Description

result

boolean

true if the status was found and returned.

change

object | null

A Change Object related to the Server.

Rate Limited API

This API is rate limited and may result in a 429 response if you call it too frequently.

$ curl https://go.fast.io/api/v1.x/server/changes/status/MyDropboxServer.imfast.io
    -H "Authorization: yffaenajzny66mrdiuk6s6dvk6ef2gq7ia72"
A binary file was returned

You couldn't be authenticated

{
    "result": true,
    "change": {
        "name": "mydropboxserver",
        "domain": "imfast.io",
        "server": "mydropboxserver.imfast.io",
        "waited": 12,
        "remaining": 0,
        "extensions": 5,
        "changes": [
            "/"
        ],
        "complete": true,
        "stale": false,
        "started": "2018-11-24 01:14:38 UTC",
        "last": "2018-11-24 01:14:45 UTC",
        "updated": "2018-11-24 01:14:50 UTC"
    }
}
 
Suggest Edits

Changes Run Stale

This endpoint processes Changes received but not processed automatically, yet.

 
post/server/changes/runstale/server

Path Params

server
string
required

The name and domain name combined to check if its both valid and available. This string must meet the requirements for a valid name and domain.

Result Codes

HTTP Results
Description

202

true if the request was valid, the server was found with stale changes, and the request was accepted.

404

No changes were found for the provided server.

423

The changes were found but the changes are not stale and cannot be manually processed.

Only On Stale

You cannot call this API on non-stale Changes jobs. Changes jobs may become active at any moment so you must handle 423 errors when implementing this API.

Result JSON

Variable
Type
Description

result

boolean

true if the status was stale and the job completed manually.

Rate Limited API

This API is rate limited and may result in a 429 response if you call it too frequently.

$ curl https://go.fast.io/api/v1.x/server/changes/runstale/MyDropboxServer.imfast.io
    -H "Authorization: yffaenajzny66mrdiuk6s6dvk6ef2gq7ia72"
A binary file was returned

You couldn't be authenticated

{
    "result": true
}
 
Suggest Edits

Flush Object

Lookup the last time a path was flushed on a Server.

 

Flush Object

The flush object is used in Lookups and History results.

Variable
Type
Description

name

string

The name of the Server Config name associated with this flush.

domain

string

The domain this Server is assigned to.

server

string

The fqdn which is the name and the domain of the server.

path

string

The path that was flushed on the server.

flushed

datetime

The date and time the path on the server was last flushed.

 
Suggest Edits

Flush Cache

Flushes the cache for a Server or part of a Server

 
post/server/flush/server?path

Path Params

server
string
required

The name and domain name combined with a period separating them. This string must meet the requirements for a valid name and domain.

Query Params

path
string

The path to the File or Folder to flush. A string length of 1 to 1024 characters is supported.

Result Codes

HTTP Results
Description

202

The request and resource are valid and the request was accepted but will be completed asynchronously.

429

Too many requests were made in too short a period of time.

Result JSON

Variable
Type
Description

result

boolean

true if the flush request was accepted and will be processed.

Flush Request

Flush requests are processed asynchronously. The actual flush time may vary from CDN to CDN but generally, flush requests are completed within 1 minute, and usually, much faster.

Cache Flush is Recursive

When you specify a path, all contents under the path, if any, are also flushed. To flush the entire server, specify the root path /.

Cloud Storage

When contents in the cloud storage change and the provider supports notifications, contents are automatically flushed as needed.

Rate Limited API

This API is rate limited and may result in a 429 response if you call it too frequently.

$ curl https://go.fast.io/api/v1.x/server/flush/MyDropboxServer.imfast.io?/folder/ \
			-H "Authorization: yffaenajzny66mrdiuk6s6dvk6ef2gq7ia72"
A binary file was returned

You couldn't be authenticated

{
  "result" : true
}
 
Suggest Edits

Flush Lookup

Lookup the last time a path was flushed on a Server.

 
get/server/flush/lookup/:fqdn?path

Path Params

server
string
required

The name and domain name combined to check if its both valid and available. This string must meet the requirements for a valid name and domain.

Query Params

path
string

The path to the File or Folder to get the last flush date of. A string length of 1 to 1024 characters is supported.

Result Codes

HTTP Results
Description

200

The request was valid and the last time this path was flushed is returned.

Result JSON

Variable
Type
Description

result

boolean

true if the flush lookup time was provided.

flush

object

A Flush Object with the requested path result.

Flush Lookup is Exact Path

The flush time of the path is specifically for the provided path, not for any parents or children.

$ curl https://go.fast.io/api/v1.x/server/flush/lookup/MyDropboxServer.imfast.io?/folder/ \
			-H "Authorization: yffaenajzny66mrdiuk6s6dvk6ef2gq7ia72"
A binary file was returned

You couldn't be authenticated

{
    "result": true,
    "flush": {
        "name": "MyDropboxServer",
      	"domain": "imfast.io",
        "server": "mydropboxserver.imfast.io",
        "path": "/folder",
        "flushed": "2018-03-29 22:00:40 UTC"
    }
}
 
Suggest Edits

Flush History

Get the Flush history of paths on a Server.

 
get/server/flush/history/server

Path Params

server
string
required

The name and domain name combined to check if its both valid and available. This string must meet the requirements for a valid name and domain.

Result Codes

HTTP Results
Description

200

The request was valid and the last time this path was flushed is returned.

Result JSON

Variable
Type
Description

result

boolean

true if the flush lookup time was provided.

results

int

The number of Flush Object's returned.

flushes

object

An array of Flush Object showing the history of the servers CDN flushing.

Ordering of Results

This API shows the last 50 flush events to the specified server. This includes flushes initiated by the API or through automatic processes.

$ curl https://go.fast.io/api/v1.x/server/flush/history/MyDropboxServer.imfast.io \
			-H "Authorization: yffaenajzny66mrdiuk6s6dvk6ef2gq7ia72"
A binary file was returned

You couldn't be authenticated

{
    "result": true,
    "results": 2,
    "flushes": [
        {
            "name": "MyDropboxServer",
            "domain": "imfast.io",
            "server": "mydropboxserver.imfast.io",
            "path": "/Folder1",
            "flushed": "2018-06-11 22:20:39 UTC"
        },
        {
            "name": "MyDropboxServer",
            "domain": "imfast.io",
            "server": "mydropboxserver.imfast.io",
            "path": "/folder2/FOLDER3",
            "flushed": "2018-06-11 22:20:24 UTC"
        }
    ]
}
 
Suggest Edits

Pre Cache Objects

Information on objects used for Pre-caching data to the CDN.

 

Overview

There are two types of objects associated with Pre-Cache work, a session object and a jobs object. Sessions are containers of one or more jobs that can be chained together to propagate a complex series of changes. Sessions are server specific, and while a session is active, any pre-cache jobs that are created for that server will be added to the existing session and processed First in First out (FIFO).

The basic framework of a job is a path and a depth which indicates how many sub-folders deep should be pre-cached.

Session Object

This object is read-only.

Field
Type
Description

key

string

A 5-char alphanumeric identifier for a unique session. Keys are case sensitive.

name

string

The name of the server configuration this session applies to.

domain

string

The domain this server configuration is assigned to.

server

string

The fqdn which is the name and the domain of the server.

status

string

The current status of the session. See table below.

jobs

int

The number of jobs processed through this key.

queued

int

The number of jobs queued to process in the future.

folders

int

The total number of folders process in this session, inclusive of all completed jobs.

files

int

The total number of files process in this session, inclusive of all completed jobs.

bytes

int

The total number of bytes pre-cached for files, inclusive of all completed jobs.

stale

boolean

true when a pre-cache session has failed in a catastrophic way. Restart the pre-cache session manually.

current

Jobs object

The full Jobs object of the current or last job processed.

started

datetime

The date and time when the session started being processed, or, if another session was resumed, the time the original session was started.

updated

datetime

The date and time when the session object was last updated.

ended

datetime

The date and time when the session was completed. This field is null if the session has not completed.

keys

array of strings

All individual Job key's processed by this session.

Queued Updates

The queued field is only updated between jobs, adding new jobs to a session will not be reflected until the current job is completed.

Current and Keys Fields

The current field is omitted when the session object is accessed through the Session Details API. The keys API is only included when accessing the session object through the Session Details API.

Status Fields

Status
Desc

completed

The session has completed. No further updates will occur to this session.

running

The session is currently running. See the current object for details on the current job.

unknown

The status of the session is unknown. Please contact support.

Jobs Object

Fixed Fields

This object is read-only.

Field
Type
Description

key

string

A 5-char alphanumeric identifier for a unique job. Keys are case sensitive.

name

string

The name of the server configuration this job applies to.

domain

string

The domain this server configuration is assigned to.

server

string

The fqdn which is the name and the domain of the server.

status

string

The current status of the job. See table below.

path

array of strings and depths

An array of strings and depths to be completed by this pre-cache job. Each job will be completed in order.

depth

string

path_curr

string

The current path being processed which will differ from the path when the path is a folder with children. In effect this indicates the progress of the job. This value will be null when at the start and end of the job and only contain a value when a path is being actively processed.

data

boolean

true if the data is being preached, false if only the metadata is preached.

flush

boolean

true if a flush proceeded this pre-cache job.

event

boolean

true if an event will be sent to the user when this job is completed.

files

integer

The number of files processed. This will increment during the runtime of the job as files are processed.

folders

integer

The number of folders processed. This will increment during the runtime of the job as folders are processed.

bytes

integer

The number of bytes transferred to pre-cache data which will count towards your service usage. If data is false this field will be 0.

stale

bool

true when a pre-cache job has failed in a catastrophic way. Restart the pre-cache job manually.

started

datetime

The date and time when the job started being processed, or, if another job was pre-empted, the time the original job was started.

updated

datetime

The date and time when the job status was last updated. This usually occurs at about a ~1 second cadence.

ended

datetime

The date and time when the job was completed. This field is null if the job is not completed.

Status

Status
Description

auth error

There has been an authorization error during the job run and it was canceled and failed. Retry the job.

limit reached

A job limit was reached, the job was too large and cannot be processed in full. Try smaller jobs.

network error

A network error was encountered and the job could not be completed. Retry the job.

stopped

This job was stopped for maintenance; the next precache job started will resume the previous session.

canceled

The job was canceled. No more updates will occur.

session_cancelled

The session was canceled which stopped the job.

completed

The job has completed successfully, see the completed field for the date and time of completion. No more updates will occur.

running

The job is currently being progressed. Updates will occur until completion.

missing

The target path of the job was not found.

unknown

The state of the job is currently unknown.

Depth

The value of each node in the path field indicates the depth for that path to be pre-cached.

Depth
Description

myself

This depth only caches the direct object and no children of that object.

children

This depth caches the direct object and any immediate descendants of that object.

all_children

This depth caches the direct object and all descendants of the direct object.

 
Suggest Edits

Pre Cache

Populates the cache for a Server or a given path for a Server and depth.

 
post/server/precache/server?path

Path Params

server
string
required

The name and domain name combined to check if its both valid and available. This string must meet the requirements for a valid name and domain.

Query Params

path
string

The path to the File or Folder to precache. A string length of 1 to 1024 characters is supported.

Body Params

event
boolean

Create an event when pre-caching is complete or fails.

data
boolean

Cache the data as well as the metadata.

flush
boolean

Flush the path before pre-caching it.

depth
string

The depth from the specified path to pre-cache data. See table below.

Result Codes

HTTP Results
Description

202

The request and resource are valid and the request was accepted but will be completed asynchronously.

429

Too many requests were made in too short a period of time.

Result JSON

Variable
Type
Description

result

boolean

true if the precache request was accepted and will be processed.

General

Precaching allows content to be stored at the CDN edge ahead of an end user requests, this ensures all requests, including the first one, are serviced as quickly as possible. If you do not pre-cache data, data will be cached on-demand which will be slower for the first request. Additionally, pre-caching is region specific, so accesses from the specific region may not be preached even if preached in another.

Only one request per server may be processed at a given time, subsequent requests will be queued.

In this version of the API, only Secure HTTP URL's are precached. If you explicitly need pre-caching of non-Secure HTTP URL's, please contact us.

Precache Request

Precache requests are processed asynchronously and in the order, they were added to a session.

Cloud Storage

When contents in the cloud storage change and the provider supports notifications, contents are automatically flushed as needed.

Data Rates Apply

If you specify to pre-cache data, normal charges will be associated with all data pre-cached. In other words, if you have 1GB of data in your cloud storage provider, and you specify to pre-cache the entire path, you will be charged at least 1GB of data plus the size of the headers.

Rate Limited API

This API is rate limited and may result in a 420 response if you call it too frequently.

Depth

See the Pre Cache Object Depth chart for more details on this field.

$ curl https://go.fast.io/api/v1.x/server/precache/MyDropboxServer.imfast.io?/folder/ \
    -X POST \
    -H "Authorization: yffaenajzny66mrdiuk6s6dvk6ef2gq7ia72" \
    -d event=true \
    -d data=false
A binary file was returned

You couldn't be authenticated

{
  "result" : true
}
 
Suggest Edits

Pre Cache List

This endpoint provides a list of all known pre-cache jobs.

 
get/server/precache/list/

Result Codes

HTTP Results
Description

200

A successful request was made that may or made not include any results.

Result JSON

Variable
Type
Description

result

boolean

true if the request was valid and processed.

results

int

The full name of all servers that have pre-cache job status.

jobs

array

An array of Server names and Domains that have pre-cache job status for the current credentials.

$ curl https://go.fast.io/api/v1.x/server/precache/list/ \
    -H "Authorization: yffaenajzny66mrdiuk6s6dvk6ef2gq7ia72"
A binary file was returned

You couldn't be authenticated

{
    "result": true,
    "results": 2,
    "jobs": [
        "mydropboxserver.imfast.io",
        "mygoogledrive.imfast.io"
    ]
}
 
Suggest Edits

Pre Cache Status

This endpoint provides full status of all known pre-cache sessions.

 
get/server/precache/status/

Result Codes

HTTP Results
Description

200

The request and resource are valid and the status is returned in the jobs node.

Result JSON

Variable
Type
Description

result

boolean

true if the request was valid and returned.

results

int

The number of job objects returned in jobs.

sessions

array of Session Object's

An array of Session Object's associated with the account credentials.

$ curl https://go.fast.io/api/v1.x/server/precache/status/ \
    -H "Authorization: yffaenajzny66mrdiuk6s6dvk6ef2gq7ia72"
A binary file was returned

You couldn't be authenticated

{
    "result": true,
    "results": 1,
    "sessions": [
        {
            "key": "fC3Pf",
            "name": "mydropboxserver",
            "domain": "imfast.io",
            "server": "mydropboxserver.imfast.io",
            "status": "completed",
            "stale": false,
            "jobs": 1,
            "queued": 0,
            "folders": 0,
            "files": 1,
            "bytes": 299271,
            "current": {
                "key": "X0NXs",
                "session": "fC3Pf",
                "name": "mydropboxserver",
                "domain": "imfast.io",
                "server": "mydropboxserver.imfast.io",
                "status": "completed",
                "path": "/fast.io.jpg",
                "path_curr": null,
                "depth": "all_children",
                "data": true,
                "flush": true,
                "event": true,
                "folders": 0,
                "files": 1,
                "bytes": 299271,
                "stale": false,
                "started": "2018-12-14 00:46:09 UTC",
                "updated": "2018-12-14 00:46:10 UTC",
                "ended": "2018-12-14 00:46:09 UTC"
            },
            "started": "2018-12-14 00:46:09 UTC",
            "ended": "2018-12-14 00:46:10 UTC"
        }
    ]
}
 
Suggest Edits

Pre Cache Status Server

This endpoint provides details on a precache session for a given Server.

 
get/server/precache/status/server

Path Params

server
string
required

The name and domain name combined with a period separating them. This string must meet the requirements for a valid name and domain.

Result Codes

HTTP Results
Description

200

The request and resource are valid and the request was accepted but will be completed asynchronously.

404

No jobs for the given server was found for the provided credentials.

Result JSON

Variable
Type
Description

result

boolean

true if the request was accepted and returned.

job

object | null

A jobs object related to the server.

Rate Limited API

This API is rate limited and may result in a 429 response if you call it too frequently.

$ curl https://go.fast.io/api/v1.x/server/precache/status/mydropboxserver.imfast.io
    -H "Authorization: yffaenajzny66mrdiuk6s6dvk6ef2gq7ia72"
A binary file was returned

You couldn't be authenticated

{
    "result": true,
    "session": {
        "key": "EqtvU",
        "name": "mydropboxserver",
        "domain": "imfast.io",
        "server": "mydropboxserver.imfast.io",
        "status": "completed",
        "stale": false,
        "jobs": 1,
        "folders": 0,
        "files": 1,
        "bytes": 299271,
        "current": {
            "key": "UAYkP",
            "session": "EqtvU",
            "name": "mydropboxserver",
            "domain": "imfast.io",
            "server": "mydropboxserver.imfast.io",
            "status": "completed",
            "path": "/fast.io.jpg",
            "path_curr": null,
            "depth": "all_children",
            "data": true,
            "flush": true,
            "event": true,
            "folders": 0,
            "files": 1,
            "bytes": 299271,
            "stale": false,
            "started": "2018-12-13 17:31:30 UTC",
            "updated": "2018-12-13 17:31:31 UTC",
            "ended": "2018-12-13 17:31:30 UTC"
        },
        "started": "2018-12-13 17:31:30 UTC",
        "ended": "2018-12-13 17:31:31 UTC"
    }
}
 
Suggest Edits

Pre Cache Session Details

This endpoint provides the full status of a pre-cache session.

 
get/server/precache/details/key

Path Params

key
string
required

The 5 character alphanumeric session key to get the details of. Case sensitive.

Result Codes

HTTP Results
Description

200

The request and resource are valid and the details are returned to the job node.

404

No job matching the key and provided credentials as found.

Result JSON

Variable
Type
Description

result

boolean

true if the request was valid and returned.

session

A [Session Object]'s (ref:job-object) related to the provided key.

Current and Keys FIelds

With this API endpoint, the current field is omitted and the keys field is included.

$ curl https://go.fast.io/api/v1.x/server/precache/details/0TdIf \
    -H "Authorization: yffaenajzny66mrdiuk6s6dvk6ef2gq7ia72"
A binary file was returned

You couldn't be authenticated

{
    "result": true,
    "session": [
        {
            "key": "0TdIf",
            "name": "mydropboxserver",
            "domain": "imfast.io",
            "server": "mydropboxserver.imfast.io",
            "status": "completed",
            "stale": false,
            "jobs": 1,
            "queued": 0,
            "folders": 0,
            "files": 1,
            "bytes": 299271,
            "started": "2018-12-14 00:19:57 UTC",
            "ended": "2018-12-14 00:19:59 UTC",
            "keys": [
                "L4CE5"
            ]
        }
    ]
}
 
Suggest Edits

Pre Cache Job Details

This endpoint provides the status of a specific pre-cache job.

 
get/server/precache/details/job/key

Path Params

key
string
required

The 5 character alphanumeric job key to get the details of. Case sensitive.

Result Codes

HTTP Results
Description

200

The request and resource are valid and the details are returned to the job node.

404

No job matching the key and provided credentials as found.

Result JSON

Variable
Type
Description

result

boolean

true if the request was valid and returned.

job

A [Job Object]'s (ref:job-object) related to the provided key.

$ curl https://go.fast.io/api/v1.x/server/precache/job/details/L4CE5 \
    -H "Authorization: yffaenajzny66mrdiuk6s6dvk6ef2gq7ia72"
A binary file was returned

You couldn't be authenticated

{
    "result": true,
    "job": {
        "key": "L4CE5",
        "session": "qvCtU",
        "name": "mydropboxserver",
        "domain": "imfast.io",
        "server": "mydropboxserver.imfast.io",
        "status": "completed",
        "path": "/fast.io.jpg",
        "path_curr": null,
        "depth": "all_children",
        "data": true,
        "flush": true,
        "event": true,
        "folders": 0,
        "files": 1,
        "bytes": 299271,
        "stale": false,
        "started": "2018-12-13 17:37:16 UTC",
        "updated": "2018-12-13 17:37:17 UTC",
        "ended": "2018-12-13 17:37:16 UTC"
    }
}
 
Suggest Edits

Pre Cache Session Cancel

This endpoint cancels an in-progress pre-cache session and all related jobs.

 
post/server/precache/cancel/server

Path Params

server
string
required

The name and domain name combined to check if its both valid and available. This string must meet the requirements for a valid name and domain.

Result Codes

HTTP Results
Description

200

The request and resource are valid and the session was canceled.

404

No job was found to cancel.

405

The job was not in a valid state to cancel.

Result JSON

Variable
Type
Description

result

boolean

true if an active session was found and canceled.

General

This endpoint will cancel the current job and subsequent session if its active. This endpoint only works for non-single entry pre-cache jobs.

$ curl https://go.fast.io/api/v1.x/server/precache/cancel/MyDropboxServer.imfast.io \
    -X POST \
    -H "Authorization: yffaenajzny66mrdiuk6s6dvk6ef2gq7ia72"
A binary file was returned

You couldn't be authenticated

{
  "result" : true
}
 
Suggest Edits

Domain Overview

General Information about how domains are link to and/or registered, and how domains and subdomains are bound to Servers.

 

The Domain set of API's allows you to use locally or externally registered domains to your Servers. There are several valid scenarios for domains used with Fast.

  1. A locally registered domain.
  2. An externally registered domain you point to the Fast DNS servers.
  3. An externally registered domain with external DNS servers.

Adding a domain to your account will not connect it to any Servers. Once you add a domain to your account, you can then bind it to a Server. You can bind the Apex or any TLD to one or more Servers.

The number of domains you can add may be limited by your plan.

Binding Overview

Binding is the process of attaching a vanity domain (or subdomain) to a server. For example, if you had a Fast server, google.imfast.io and you wanted to link your domain, google.com to it, you would bind google.com to google.imfast.io and google.com would then load the contents of google.imfast.io.

You can bind the apex, as in the example above, or you can bind subdomains. You can bind multiple subdomains to the same Server, such as www.google.com and google.com can both load google.imfast.io. You can also bind multiple subdomains to different servers, such as binding about.google.com to about-google.imfast.io.

The number of domains bindings to a single domain or in your overall account may be limited by your plan.

Binding's Require SSL Certs

Each binding requires an SSL cert, so you must have available SSL certs in your account to create a binding. See your plan and reference SSL Certs for Domains.

DNS

You can add and remove bindings at any time, if DNS is hosted locally, records will be created automatically. If DNS is managed externally, you will need to create the appropriate records. For a subdomain, you will use a CNAME and for the apex (i.e. google.com), you will use an A record.

Registration

Fast supports domain registration directly for a wide variety of TLD's. You can register a domain directly with us and it's automatically configured and paired to your account. There is no requirement to use Fast for domain registration; external DNS is fully supported in the scenarios documented below.

Transfer Out

If you register a domain with us, it will use our public information, not yours. In other words, it will be registered to Fast Technologies. Fast does not provide an endpoint for transferring domains in this version; however, we will assist you in transferring your domain if you contact us via support.

Transfering Domains To Us

You cannot transfer a domain registered from an external domain registrar to Fast. You can still use the domain with Fast though, just configure it as an external domain and point the nameservers to Fast as specified in the Domain Details response.

Globally Unique

Domains are unique to accounts in the global namespace and are allocated on a first-come, first-serve basis. This is true regardless of if the domain is registered locally or is an external domain.

Domain Conflict

If a domain you own is in use and you are unable to add it to Fast, please contact us ([email protected]) and we'll verify your ownership as well as transfer it to your account.

DNS

Fast supports both internal an external DNS, in other words, you can use our integrated DNS or a 3rd party hosting providers DNS with Fast. There is no charge for DNS on Fast however the number of records you can create may be limited by your plan.

Locally Hosted

You can locally host a domain either by registering it on Fast or by pointing it to our name-servers. If you register a domain on Fast, it's automatically configured with our nameservers. If you already own the domain, you can host its DNS locally by going to your domain registrar and change the configuration to the domain to the nameservers below.

For more information on managing locally hosted DNS, see the DNS Overview.

Externally Hosted

If you already have DNS setup and are not going to host the apex domain with Fast, you can simply create a CNAME record for the subdomain of your domain you wish to host on Fast and point it to a Server you have created. Below is the order of operations:

  1. Create a Server (if one isn't already created).
  2. Add the domain to the server as externally hosted.
  3. Create the CNAME record from your DNS provider to the shared domain name of the Server you created in step 1. (Or if you want to host an Apex, you must use an A record that points to the IP provided by the Binding)

Nameservers

If you want Fast to host the DNS of your domain you will need to set the nameservers to the servers listed in the Domain Details API after you Create Domain.

 
Suggest Edits

Domain Provider Object

This object contains a Domain Provider details.

 
Field
Type
Description

id

integer

A unique identifier for the Domain Provider.

name

string

The usable name of the Domain Provider which may be used with other API's which require the a domain_provider parameter.

display

string

A "pretty" version of the name field that can be used when displaying the name of the Domain Provider.

enabled

boolean

true when the provider can be used in combination with Domain Endpoints.

domains

boolean

true if the Domain Provider has support for 1 or more top level domains bindings.

dns

boolean

true if this Domain Provider has support for DNS.

registry

boolean

true if this Domain Provider has support for domain registration and renewal.

ssl

boolean

true if this Domain Provider has support for generating SSL certificates.

updated

datetime

The date and time this object was last updated.

created

datetime

The date and time this object was created.

 
Suggest Edits

Domain Object

This object contains a single domains details.

 

Fixed Fields

These fields are required with every file object response or request.

Field
Type
Description

name

string

The name of the domain. Strings between 4 and 100 characters are valid. The only valid characters for a domain name are letters, numbers and a hyphen (-). The TLD cannot be more than 15 characters.

user

int

The User ID that owns this domain.

team

int

The Team ID that has permissions to work with this domain.

registry

string

The name of the domain provider to use for registering this domain. null if not registered.

dns

string

The name of the domain provider to use for DNS on this domain. null if DNS is not hosted by Fast.

autorenew

bool

Indicates if the domain will be automatically renewed before expiration. null if the domain is not registered with us.

renew

datetime | null

The date and time the domain is scheduled to be renewed. null if the registry field is false.

status

object

An object containing the status of the dns and registry providers.

updated

datetime

The date and time the domain object was last updated.

created

datetime

The date and time the domain object was added to this account.

Whois Database

The fields in this object are related only to the record of the domain inside of Fast and do not correlate to the domain record at the registrar or in the Whois database.

Status

If the status variables for dns or registry are null but the dns and registry fields are set, it indicates the status for that provider is corrupted or otherwise unavailable.

DNS Status

Status
Desc

creating

The DNS zone has not yet been created and is pending.

pending

DNS is waiting for name servers to update to become active.

active

DNS is ready and should be working properly.

paused

DNS has been paused.

initializing

DNS is initializing.

deactivated

DNS has been shut down for a variety of reasons. The domain nor DNS will work.

unknown

DNS is in an unknown state. Please contact support.

Registry Object

If the locked field is set to true, it indicates the domain is currently locked and cannot be transferred. If you need to transfer this domain, please contact support.

Slow TLD's

Certain TLD's may take up to 24 hours to be created. Popular TLD's are usually available within 30 seconds, and most others within an hour. While we are creating the Zone, the status field will reflect creating. If your domain is stuck in creating for longer than 24 hours, please contact us.

DNS field while Creating

While the status is creating, the dns field may reflect a null value. Once the zone is created, the dns field will reflect the appropriate dns provider.

 
Suggest Edits

List Domain Providers

Get a list of all Domain Providers available to the currently authorized account.

 
get/domains/providers/list/

Result Codes

HTTP Results
Description

200

A successful request was made that may or made not include any results.

Result JSON

Variable
Type
Description

result

boolean

true if the request was satisfied appropriately.

results

integer

The number of results returned in the providers field.

providers

array of Domain Provider Object Provider Object] 's

Contains an array of Domain Providers available to the current account. This field may be null if the results field is 0.

$ curl https://go.fast.io/api/v1.0/domains/providers/list/ \
  -H "Authorization: yffaenajzny66mrdiuk6s6dvk6ef2gq7ia72"
A binary file was returned

You couldn't be authenticated

{
    "result": true,
    "results": 2,
    "providers": [
        {
            "id": "1",
            "name": "cloudflare",
            "display": "CloudFlare",
            "enabled": true,
            "domains": true,
            "registry": false,
            "dns": true,
            "ssl": true,
            "updated": "2019-05-29 16:50:41 UTC",
            "created": "2019-05-29 16:50:41 UTC"
        },
        {
            "id": "2",
            "name": "namecheap",
            "display": "Namecheap",
            "enabled": true,
            "domains": false,
            "registry": true,
            "dns": false,
            "ssl": false,
            "updated": "2019-05-29 16:50:41 UTC",
            "created": "2019-05-29 16:50:41 UTC"
        }
    ]
}
 
Suggest Edits

Domain Provider Details

This endpoint gets the details of a single Domain Provider available to the provided credentials.

 
get/domains/providers/details/name

Path Params

name
string
required

The name of the Domain Provider to get details of.

Result Codes

HTTP Results
Description

200

The request and resource are valid and the Domain Provider details are in the provider field.

Result JSON

Variable
Type
Description

result

boolean

true if Domain Provider details are returned.

provider

The Domain Provider Object for the provided name.

$ curl https://go.fast.io/api/v1.0/domains/providers/details/cloudflare \
		-H "Authorization: yffaenajzny66mrdiuk6s6dvk6ef2gq7ia72"
A binary file was returned

You couldn't be authenticated

{
    "result": true,
    "provider": {
        "id": "1",
        "name": "cloudflare",
        "display": "CloudFlare",
        "enabled": true,
        "domains": true,
        "registry": false,
        "dns": true,
        "ssl": true,
        "updated": "2019-05-29 16:50:41 UTC",
        "created": "2019-05-29 16:50:41 UTC"
    }
}
 
Suggest Edits

Check Domain

This endpoint checks to see if a Domain name is valid and available.

 
get/domains/check/domain

Path Params

domain
string
required

The name of the domain to check for registration. A string length of 2 to 150 characters is supported.

Result Codes

HTTP Results
Description

202

The domain is valid and available.

406

The domain is not valid, reserved, in use, or otherwise not acceptable.

Result JSON

Variable
Type
Description

result

boolean

true if the domain is valid and available to use on Fast.

registered

boolean

true if the domain is already registered.

purchasable

boolean

true if you can use the Create Domain endpoint to purchase this domain. A domain that is not registered must be purchasable in order to use with Create Domain.

purchasePrice

float

The price in US dollars to purchase the domain for 1 year.

`renewalPrice

float

The price in US dollars to renew a previously purchased domain after the first year if auto-renew is enabled.

Rate Limited API

This a rate-limit limited API, too many calls in too short a period of time will result in a temporary block.

$ curl https://go.fast.io/api/v1.x/domain/check/my.site \
		-H "Authorization: yffaenajzny66mrdiuk6s6dvk6ef2gq7ia72"
A binary file was returned

You couldn't be authenticated

{
    "result": true,
    "registered": true,
    "purchasable": false,
    "purchasePrice": 0.0,
    "renewalPrice": 0.0
}
{
  "result" : false
}
 
Suggest Edits

Create Domain

This endpoint creates a new domain configuration to an object in the currently authorized credentials account.

 

Header Auth

 Authentication is required for this endpoint.
posthttps://go.fast.io/api/v1.x/domains/name

Path Params

name
string
required

The name of the domain to create a config for.

Body Params

dns
string

The name of the domain provider to use for DNS or null to use external DNS.

registry
string

The name of the domain provider to use for registration or null to use an already registered domain.

payment_token
string

If registering a domain, provide the stripe token generated by Stripe Elemental collection.

autorenew
boolean

If your registering the domain with us, do you want it to automatically renewal before expiration? Only supply if registry is set.

Result Codes

HTTP Results
Description

201

The request was valid and the config was created.

Result JSON

Variable
Type
Description

result

boolean

true if the domain config was created.

registered

boolean

true if the domain was registered and your payment was charged.

status

string

A description of the current state of the registration. See table below.

DNS and Registry Fields

If you plan to use Fast DNS or register a domain, you should populate these fields with the string version of a domain provider that has the required feature flag enabled. So to use Fast DNS, you would supply the name of a DNS provider from Domain Provider Object that has the dns capability, for example, cloudflare.

Registration

If you supplied a registration provider in the registry field, a payment_token must be provided. When this endpoint is submitted, the payment_token will be charged the appropriate amount for the domain. If you supply a registry provider, you must also provide a dns provider as DNS is required for domains hosted on Fast.

Length

All registrations are done for 1-year terms.

Auto-Renew

If you are registering a domain with us, you can set the auto-renew field to enable renewing of domains on the anniversary of their expiration.

Status

The status field indicates the ongoing status of a domain creation request.

Status
Description

completed

The domain create was completed, there are no ongoing processes and the domain is ready to use.

in-progress

The domain creation request was received and is still being processed. An event and email will be generated when the domain is ready to use.

Billing Provider

The billing provider is automatically selected as stripe in this version of the API. Future versions may require you to supply a billing_provider name, in this case, stripe.

Rate Limited

This API endpoint is heavily rated limited. Too many creations or deletion requests in a short of a timeframe will result in 429 responses for a period of time.

Potentially Slow Response

This API endpoint may take an extended period of time to respond based on the request type. Responses could be in excess of 60 seconds, set your timeouts accordingly.

In the event this endpoint times out, or your client is disconnected early, you may receive an error response, however, the process should be completed in the background.

Avoid Multiple Calls

Avoid making multiple simultaneous calls to this endpoint.

$ curl https://go.fast.io/api/v1.x/domain/mydomain.com \
    -X POST \
		-H "Authorization: yffaenajzny66mrdiuk6s6dvk6ef2gq7ia72" \
    -d dns=cloudflare
A binary file was returned

You couldn't be authenticated

{
    "result": true,
    "registered": false,
    "status": "complete"
}
 
Suggest Edits

Verify Activation

This endpoint initiates a check to see if the domain is properly configured and activated.

 

Header Auth

 Authentication is required for this endpoint.
posthttps://go.fast.io/api/v1.x/domains/verify/domain

Path Params

domain
string
required

The name of the domain to verify the binding of. A string length of 2 to 150 characters is supported.

Result Codes

HTTP Results
Description

202

The request was valid and the binding verification request was accepted.

Result JSON

Variable
Type
Description

result

boolean

true if the domain was found in the account and has been scheduled for verification. false on failure or when the domain is not eligible for an activation check.

Once Per Hour

You should only request an activation check once per hour. If you request we check more than once in an hour, you will receive an error. This will automatically be tried periodically regardless of this API call, so this call itself is optional.

Rate Limited API

This a rate-limit limited API, too many calls in too short a period of time will result in a temporary block.

Verification

This endpoint only restarts an activation check for Domains that have DNS hosted on Fast but are registered somewhere else. You can call this when the Domain Details status is in pending AFTER you have corrected your name server configuration.

$ curl https://go.fast.io/api/v1.x/domain/binding/verify/my.site \
    -X POST \
		-H "Authorization: yffaenajzny66mrdiuk6s6dvk6ef2gq7ia72"
A binary file was returned

You couldn't be authenticated

{
  "result" : true
}
 
Suggest Edits

Domain List

This endpoint gets a list of domains associated with the current credentials.

 
get/domains/list/

Result Codes

HTTP Results
Description

200

A successful request was made that may or made not include any results.

Result JSON

$ curl https://go.fast.io/api/v1.x/domain/list/
    -H "Authorization: yffaenajzny66mrdiuk6s6dvk6ef2gq7ia72"
A binary file was returned

You couldn't be authenticated

{
    "result": true,
    "results": 1,
    "configs": [
        {
            "name": "my.site",
            "user": 4315509680231292903,
            "team": null,
            "registry": "namecom",
            "dns": "cloudflare",
            "autorenew"