ShipStation's Partners API allows you to programmatically create ShipStation API accounts for your customers. You can then make ShipStation API calls on behalf of your customers.
You can optionally assign your own unique customer identifier to a ShipStation API account via the external_account_id field, so you can look up the account later.
ShipStation API accounts that are created via the Partners API cannot log in to the ShipStation API dashboard by default. Instead, everything that a user might normally do in the dashboard is done via the API. The most obvious example of this is connecting a carrier account.
You can specify an email and password that will allow direct login access to this account. The password must be at least 7 characters long. The email must be unique and not in use by any other accounts associated with ShipStation API - if the email is already in use by another account, you will receive an error.
The following table lists the properties required for this endpoint. To see a sample of a full request, see the Example Request section below.
| Name | Type | Max Length | Description |
|---|---|---|---|
first_name | string | 24 | First name of account owner. This will always be null in the response. (Optional) |
last_name | string | 24 | Last name of account owner. This will always be null in the response. (Optional) |
company_name | string | 50 | Company name of account owner. This will always be null in the response. (Optional) |
external_account_id | string | 128 | A unique ID that can be used to list the account. (Optional) |
origin_country_code | string | 2 | Must be capitalized. Valid values for this field can be found on our supported countries page. |
email | string | 50 | A unique email that can be used to log into the ShipStation API dashboard. This will always be null in the response. (Optional) |
password | string | 128 | Minimum 7 characters. A password that can be used to log into the ShipStation API dashboard. This is not in the response. (Optional) |
To create a ShipStation API account, you'll send a POST request to the /v1/partners/accounts endpoint containing information about your customer's account.
POST /v1/partners/accounts HTTP/1.1
Host: api.shipengine.com
API-Key: __PARTNER_API_KEY_HERE__
Content-Type: application/json
{
"first_name": "John",
"last_name": "Doe",
"company_name": "Acme Corp.",
"external_account_id": "819748723192",
"origin_country_code": "US",
"email": "john.doe@example.com",
"password": "pa55word"
}Example response:
{
"api_key": {
"encrypted_api_key": "__ACCOUNT_API_KEY_HERE__",
"created_at": "2024-01-01T00:00:00.000Z",
"description": "Account API Key",
"account_id": 123456,
"api_key_id": 1234
},
"account_id": 123456,
"external_account_id": "819748723192",
"created_at": "2024-01-01T00:00:00.000Z",
"modified_at": "2024-01-01T00:00:00.000Z",
"active": true,
"email": null,
"company_name": null,
"first_name": null,
"last_name": null,
"origin_country_code": "US"
}NOTE: The
encrypted_api_keycontains the account API key. Despite its name,encrypted_api_keydoes not need to be decrypted. Send it as-is in your API requests, and store it securely.
Each account is created with an API key you can begin using immediately. If this key is ever compromised, you can always disable it and then create a new one.