Create a vendor
AI agents: read /llms.txt; add .md to any page URL. This page as Markdown: /reference/vendors/v1-vendor-store.md. Index of every page and the rules for every call: /llms.txt. Guides and concepts in one file: /llms-full.txt. OpenAPI: /openapi.json.
POST/
Creates a vendor, with its contacts, and returns it with contacts. The first contact you send becomes the primary contact.
A vendor is a supplier you buy from: purchase orders and your products name one.
Business rules
- Only the vendor's own fields are checked, as strings.
nameis not required, and contacts sent here are not checked at all: add a contact with Add a contact to a vendor when you want its fields checked. - Vendor names need not be unique.
Path parameters
Your team slug, shown as Team ID next to your API key in Profile.
- Example
your-team
- Example
Request body
application/json, required.
account_numberstringYour account number with this vendor.
contactarray of objectsThe vendor's contacts. The first one becomes primary.
Fields of each item (7)
emailstring (email)faxstringChecked as a real number for
fax_country.fax_countrystringfirst_namestringThe contact's first name.
last_namestringThe contact's last name.
phonestringphone_countrystringTwo-letter country code of
phone, such asUS. Required withphone.
default_vendor_notestringA note for the vendor, available on purchase order PDFs.
internal_notesstringNotes for your team only.
namestringThe vendor's name. Not required by the API (a vendor can be saved without one), but send it: it is how the vendor is shown everywhere.
websitestringThe website address.
Response
200Successful response.
Child fields (8)
True when the vendor is deleted.
account_numberstring | nullcontactsarray of objectsEvery contact, deleted ones included.
Fields of each item (18)
True when the contact is deleted.
customer_idstringCustomer contacts only.
default_receive_smsbooleanemailstring | nullexternal_typestring | nullfaxstring | nullfax_countrystring | nullis_externalbooleanTrue for a contact synced from Shopify; such contacts are read-only.
last_namestring | nullphonestring | nullphone_countrystring | nullsend_invoicebooleanCustomer contacts only.
vendor_idstringVendor contacts only.
default_vendor_notestring | nullinternal_notesstring | nullwebsitestring | null
Errors
401The API key is missing or wrong (
unauthenticated).403You are not allowed to do this.
api_access_not_in_plan: your team's plan doesn't include API access (Pro and above, with an active subscription or trial), so every request answers this until the team upgrades. When your role lacks the permission the operation needs, the body is only{"message": "Insufficient Permission"}. Other refusals use the error envelope, withunauthorizedoruser_is_not_authorized.- When
- Your role cannot create vendors. This 403 has a short body,
{"message": "Insufficient Permission"}, with nosuccessorerror. - Fix
- Ask a team owner to raise Manage Vendors for your role.
404Not found.
page_not_found: the team slug is unknown, you are not a member of the team, or an id in the path is not one of this team's.code: null, with a message that starts "No query results for": there is no record with that id.422The request was refused and changed nothing.
validation_failedlists what to fix inerror.fields; other codes name a business rule, explained inerror.message. A few checks answer with only{"message": "..."}. An operation that calls another service (a payment provider, a carrier, an accounting app) can answerconnect_timeout("Please retry again") when that service does not answer in time: the change may or may not have happened there, so read the record back before you retry.- When
- A field has the wrong type.
error.codeisvalidation_failed. - Fix
- Send text fields as strings.
Related
- POSTAdd a contact to a vendor
/v1/ api/ store/ {team_slug}/ vendor/ {hash_id}/ contact - PATCHUpdate a vendor (PATCH)
/v1/ api/ store/ {team_slug}/ vendor/ {hash_id}
