When to use this endpoint

Use to show existing quote links for a known Job. This does not verify the caller may read that Job.

Authentication and permissions

Authenticate with signed API-key fields or a CRM session. Requires Quotes View (pageQuotes_view); non-admin users blocked by legacy crm_access bit 32 are denied. Client administrators inherit page permissions.

Quote visibility follows the account’s department/account-manager customer filters for non-admin users, including signed keys. Export routes additionally require pageMain_exportTableData. Linked Jobs require Jobs View and their TeamAccess scope; invoice enrichment requires Invoices View and the legacy invoice access check.

Parameters

ParameterTypeRequiredDescription
job_idPositive integer-compatible Job IDYesPositive Job ID. Requires Jobs View and TeamAccess permission; only an active joined Job can supply results.

Example request

$links = FM_api('Quotes_listByJobId', ['job_id'=>'2042']);

Example response

[{"id":"1042","quote_num":"QT-1042","customer_id":"1088"}]

Errors and unusual responses

ResponseCondition
{"error":"not logged in"}No authenticated tenant context is available. Invalid signed credentials can be rejected by the dispatcher before the handler runs.
{"error":"missing or invalid parameter: job_id"}Missing/nonpositive Job ID.
{"error":"permission denied"}Required Quotes/Export permission is absent or legacy access restrictions apply.

Legacy application errors may be returned with HTTP 200. Check the decoded response for error, not only the HTTP status.

Behaviour and edge cases

  • Requires a positive Job ID, Jobs View and permission to that Job through TeamAccess. Joins the active Job to distinct active visible quotes through type-2 relations.
  • Returns id/quote_num/customer_id, without a result-order guarantee or pagination. The CRM1 new-Invoice picker now uses Quotes_list instead of submitting the invalid constant Job ID zero.
  • No direct caller for this endpoint was found in the mobile app or its m-service intermediary.

Side effects

  • Reads active permitted records without quote cost, history, email or derived Job-cache writes.

See it in Fieldmotion

CRM1

The new Invoice chooser uses Quotes_list. Job-specific callers can use Quotes_listByJobId only after obtaining a positive permitted Job ID.

CRM2

No direct caller found. Current Job link widgets use Quotes_list and Quote_get/Quote_getRequestedDetails.

Related endpoints