Tukang.com: SteelHub Partner API (1.0.0-draft)

Download OpenAPI specification:

Describes the SteelHub partner integration as it maps to Tukang.com's existing order system.

Every request needs X-API-Key and X-Signature headers — see the Authorization panel on each endpoint below for how to compute X-Signature.

Last updated: 2026-07-08

vendor-match

Match nearby vendors for an installation request

Returns up to 5 nearby vendors with profile, reviews, and site-visit cost, pre-filtered to vendors available at the requested slot.

Authorizations:
(ApiKeyAuthSignatureAuth)
Request Body schema: application/json
required
required
object
material_type
required
string
qty
required
integer
contact_number
required
string
preferred_slot
required
string <date-time>
renovation_or_new_build
required
string

Responses

Request samples

Content type
application/json
{
  • "location": {
    },
  • "material_type": "Light Steel",
  • "qty": 12,
  • "contact_number": "+6281234567890",
  • "preferred_slot": "2026-07-10T09:00:00+07:00",
  • "renovation_or_new_build": "Bangun Baru"
}

Response samples

Content type
application/json
{
  • "message": "",
  • "result": [
    ]
}

site-visit

Create a site-visit order

Called once the customer's site-visit fee payment succeeds. Payment amount is fixed on Tukang.com's side and not accepted from this request.

Authorizations:
(ApiKeyAuthSignatureAuth)
Request Body schema: application/json
required
order_id
required
string

SteelHub's own order id.

vendor_id
required
string

Vendor selected by the customer from the match response.

name
required
string
email
required
string <email>
phone
required
string
renovation_or_new_build
required
string
material_type
required
string
qty
required
integer
city
required
string

City name (kota/kabupaten).

district
required
string

District name (kecamatan).

village
required
string

Village name (desa/kelurahan).

job_location
required
string
job_location_lat
required
number <float>
job_location_lng
required
number <float>
job_location_detail
string or null
job_time
required
string <date-time>
photo_url_1
string or null
photo_url_2
string or null
notes
string or null

Responses

Request samples

Content type
application/json
{
  • "order_id": "SH-000123456",
  • "vendor_id": "VND0001122",
  • "name": "Andi Wijaya",
  • "email": "andi.wijaya@example.com",
  • "phone": "81234567890",
  • "renovation_or_new_build": "Bangun Baru",
  • "material_type": "Light Steel",
  • "qty": 12,
  • "city": "Jakarta Selatan",
  • "district": "Kebayoran Baru",
  • "village": "Senayan",
  • "job_location": "Jl. Merdeka No. 1",
  • "job_location_lat": -6.2088,
  • "job_location_lng": 106.8456,
  • "job_location_detail": "Belakang gudang",
  • "job_time": "2026-07-10T09:00:00+07:00",
  • "photo_url_1": "https://.../photo1.jpg",
  • "photo_url_2": null,
  • "notes": "Renovasi"
}

Response samples

Content type
application/json
{
  • "message": "Success create order",
  • "result": {
    }
}

Notify that material has been received

Called once material for the order has been marked received. Notifies the assigned vendor to prepare for the job.

Authorizations:
(ApiKeyAuthSignatureAuth)
Request Body schema: application/json
required
order_id
required
string

SteelHub's own order id (same value sent to /site-visits).

received_at
required
string <date-time>

Responses

Request samples

Content type
application/json
{
  • "order_id": "SH-000123456",
  • "received_at": "2026-07-10T09:00:00+07:00"
}

Response samples

Content type
application/json
{
  • "message": "Success log material received",
  • "result": {
    }
}

Check the current status of a site-visit order

Optional status check, callable anytime for an order that exists in the system. rab is only present once a cost estimate exists for the order.

Authorizations:
(ApiKeyAuthSignatureAuth)
path Parameters
id
required
string

Responses

Response samples

Content type
application/json
{
  • "message": "",
  • "result": {
    }
}

site-visit-decision

Reject the vendor's cost estimate

Called when the customer rejects the estimate/quotation.

Authorizations:
(ApiKeyAuthSignatureAuth)
path Parameters
id
required
string
Request Body schema: application/json
optional
reject_notes
string or null

Free-text reason for rejection (optional).

Responses

Request samples

Content type
application/json
{
  • "reject_notes": "Harga terlalu tinggi"
}

Response samples

Content type
application/json
{
  • "message": "Success reject estimate",
  • "result": {
    }
}

Accept the vendor's cost estimate

Called once the customer accepts the estimate/quotation and payment succeeds. Payment amount is fixed on Tukang.com's side and not accepted from this request.

Authorizations:
(ApiKeyAuthSignatureAuth)
path Parameters
id
required
string
Request Body schema: application/json
optional
object (AcceptRequest)

No fields required.

Responses

Request samples

Content type
application/json
{ }

Response samples

Content type
application/json
{
  • "message": "Success accept estimate",
  • "result": {
    }
}