Documentation Index
Fetch the complete documentation index at: https://embed.usesticker.com/llms.txt
Use this file to discover all available pages before exploring further.
Overview
The Organization Setup endpoint is your one-stop shop for provisioning customer data in Sticker. Call it when a customer enables procurement in your platform—it creates the organization, user profile, shipping locations, and even sets up billing with Stripe.Data Model: Organizations and Profiles
Sticker models organizations and profiles as a many-to-one relationship:- Organization: the business, company, practice, store, school, or legal entity buying supplies.
- Profile: an employee or user who belongs to that business.
- Relationship: many profiles can belong to one organization, but each distinct business should have its own organization.
If a business has only one user, it still needs its own unique
internalOrgId. Additional employees from the same business should reuse that same internalOrgId and use their own unique internalUserId.When to Call This Endpoint
What Gets Created
When you call the setup endpoint, Sticker automatically:- Creates a Stripe Customer - For billing and payment method storage
- Creates the Organization - Linked to your
internalOrgId - Creates Shipping Locations - For order delivery
- Creates an Auth User - For secure authentication
- Creates a User Profile - Linked to the org and auth user
API Endpoint
https://api.usesticker.com
Authentication
Include your Partner API Key in the Authorization header:Request Format
Request Parameters
Required Fields
| Field | Type | Description |
|---|---|---|
internalOrgId | string | Your unique identifier for the business organization. Do not reuse this across unrelated businesses. |
organizationName | string | Display name for the organization |
internalUserId | string | Your internal user identifier |
user.firstName | string | User’s first name |
user.lastName | string | User’s last name |
user.email | string | User’s email (must be valid format) |
Optional Fields
| Field | Type | Description |
|---|---|---|
user.phoneNumber | string | User’s phone number |
userAddress | object | User’s personal address |
shippingLocations | array | Organization’s shipping locations |
billingAddress | object | Organization’s billing address |
organizationEmail | string | Organization’s contact email |
organizationPhone | string | Organization’s phone number |
Address Object
| Field | Type | Required | Description |
|---|---|---|---|
line1 | string | Yes | Street address |
line2 | string | No | Apt/Suite/Unit |
city | string | Yes | City |
province | string | Yes | State (e.g., “CA” or “California”) |
postalCode | string | Yes | ZIP code |
country | string | No | Defaults to “United States” |
State Normalization: The API accepts both abbreviations (“CA”) and full names (“California”). Internally, all values are stored as full state names.
Shipping Location Object
| Field | Type | Required | Description |
|---|---|---|---|
internalShippingLocationId | string | Yes | Your internal location ID |
name | string | Yes | Location name (e.g., “Main Office”) |
nickname | string | No | Short nickname |
address | object | Yes | Address object (see above) |
contact.name | string | No | Contact person name |
contact.phone | string | No | Contact phone |
contact.email | string | No | Contact email |
isDefault | boolean | No | Is this the default location? |
deliveryInstructions | string | No | Notes for delivery drivers |
Response Format
Success (200 OK)
Key Response Fields
| Field | Description |
|---|---|
organization.id | Sticker’s UUID for the org (store this if needed) |
organization.stripeCustomerId | Stripe customer for billing |
profile.id | User profile UUID (use in handshake if needed) |
profile.internal_user_id | Your internal user ID (echoed back) |
isNewOrganization | true if org was created, false if user was added to existing |
Adding Users to Existing Organizations
Call the same endpoint with the sameinternalOrgId but a different internalUserId:
isNewOrganization: false, and the new user will have access to the existing organization’s shipping locations and shared payment methods.
Common Mapping Mistake
Do not model every customer under one shared organization ID:Error Handling
400 Validation Error
400 Validation Error
- Invalid email format
- Invalid state/province (must be valid US state)
- Missing required fields
401 Unauthorized
401 Unauthorized
409 User Already Exists
409 User Already Exists
profileId for handshake.Code Examples
Best Practices
Use Your Internal IDs
Use Your Internal IDs
Always use your own internal IDs for
internalOrgId, internalUserId, and internalShippingLocationId. internalOrgId must uniquely identify the customer business, while internalUserId must uniquely identify a user or employee.One Business, One Organization ID
One Business, One Organization ID
Use the same
internalOrgId only for users who belong to the same business. Use a different internalOrgId for every distinct customer business, even if that business currently has only one user.Include Shipping Locations
Include Shipping Locations
Always include at least one shipping location when creating a new organization. This ensures users can complete checkout immediately.
Handle the 409 Response
Handle the 409 Response
If you get a 409 (User Already Exists), don’t treat it as an error—the user is already set up! Just use the returned profile ID.
Store the Profile ID
Store the Profile ID
Store the returned
profile.id in your database. While you can use internal_user_id for handshake, having the profile ID is useful for debugging.Next Steps
User Handshake
Authenticate users for each session
API Reference
Complete API specification

