For AI agents: a documentation index is available at the root level at /llms.txt and /llms-full.txt. Append /llms.txt to any URL for a page-level index, or .md for the markdown version of any page.
Contact UsDashboard
DocumentationAPI ReferenceChangelog
DocumentationAPI ReferenceChangelog
  • API Reference
      • GETRetrieve a paginated list of accounting vendors
      • GETRetrieve a specific vendor by ID
      • POSTCreate a single new accounting vendor
      • POSTCreate or update multiple accounting vendors
LogoLogo
Contact UsDashboard
API ReferenceVendors

Create or update multiple accounting vendors

POST
/vendors/bulk
POST
/v1/vendors/bulk
$curl -X POST https://api.ottimate.com/v1/vendors/bulk \
> -H "X-Api-Key: your-api-key-here" \
> -H "X-API-Version: 1.0.0" \
> -H "Authorization: Bearer <token>" \
> -H "Content-Type: application/json" \
> -d '{
> "ottimate_company_id": 15196,
> "vendors": [
> {
> "erp_vendor_id": "LPC-001",
> "erp_vendor_name": "Local Produce Co",
> "email": "orders@localproduce.com",
> "phone": "+1-555-111-2222",
> "net_terms": "Net 15",
> "payment_method": "ach",
> "address_line_1": "100 Farm Road",
> "city": "Springfield",
> "state": "IL",
> "zipcode": "62701"
> },
> {
> "erp_vendor_id": "PML-001",
> "erp_vendor_name": "Premium Meats LLC",
> "email": "sales@premiummeats.com",
> "payment_method": "check"
> }
> ]
>}'
1{
2 "version": "1.0.0",
3 "success_count": 3,
4 "created_count": 2,
5 "updated_count": 1,
6 "error_count": 0,
7 "created": [
8 {
9 "id": 169860251,
10 "ottimate_company_id": 15196,
11 "erp_vendor_id": "LPC-001",
12 "erp_vendor_name": "Local Produce Co",
13 "email": "orders@localproduce.com",
14 "phone": "+1-555-111-2222",
15 "net_terms": "Net 15",
16 "payment_method": "ach",
17 "address_line_1": "100 Farm Road",
18 "address_line_2": null,
19 "city": "Springfield",
20 "state": "IL",
21 "zipcode": "62701"
22 },
23 {
24 "id": 169860252,
25 "ottimate_company_id": 15196,
26 "erp_vendor_id": "PML-001",
27 "erp_vendor_name": "Premium Meats LLC",
28 "email": "sales@premiummeats.com",
29 "phone": null,
30 "net_terms": null,
31 "payment_method": "check",
32 "address_line_1": null,
33 "address_line_2": null,
34 "city": null,
35 "state": null,
36 "zipcode": null
37 }
38 ],
39 "updated": [
40 {
41 "id": 169860239,
42 "ottimate_company_id": 15196,
43 "erp_vendor_id": "SYS-001",
44 "erp_vendor_name": "Sysco Foods Corp (Updated)",
45 "email": "orders@sysco.com",
46 "phone": "+1-555-999-8888",
47 "net_terms": "Net 30",
48 "payment_method": "wire_transfer",
49 "address_line_1": "1 Sysco Way",
50 "address_line_2": null,
51 "city": "Houston",
52 "state": "TX",
53 "zipcode": "77077"
54 }
55 ],
56 "errors": []
57}
Allows for the creation or updating of multiple vendors in a single request. Maximum 100 vendors per request.
Was this page helpful?
Previous

Retrieve a paginated list of dimensions

Next
Built with

Authentication

AuthorizationBearer
OAuth2 authentication flows. Auth server URLs will vary by environment

Headers

X-Api-KeystringRequired
API key for authentication
X-API-VersionenumOptional

API version to use (optional, defaults to latest)

Allowed values:
Idempotency-KeystringOptionalformat: "^[A-Za-z0-9._\-+=/]{1,128}$"1-128 characters
*(Beta — this header is available in sandbox and not yet in production.)* Client-generated unique key (UUID/ULID recommended). JSON requests: the first 2xx response is cached for 24h and replayed on a same-key retry with a matching body; a different body returns 422. Non-JSON requests (e.g. file uploads): the key is single-use — any same-key retry returns 422 regardless of body. See [Idempotency](https://docs.ottimate.com/idempotency) for full details.

Request

ottimate_company_idintegerRequired
vendorslist of objectsOptional

Response

Successfully created or updated
versionstring
success_countinteger
created_countinteger
updated_countinteger
error_countinteger
createdlist of objects
updatedlist of objects
errorslist of objects

Errors

400
Bad Request Error

(Beta — this header is available in sandbox and not yet in production.) Client-generated unique key (UUID/ULID recommended). JSON requests: the first 2xx response is cached for 24h and replayed on a same-key retry with a matching body; a different body returns 422. Non-JSON requests (e.g. file uploads): the key is single-use — any same-key retry returns 422 regardless of body. See Idempotency for full details.