Want the full platform? Book a demo
API Reference

RFQs

A rate request that arrived as an email, the structured fields AI pulled out of it, the cost components that went into pricing it, and the quote that went back.

RFQ fields are snake_case

Unlike bookings, which come back in camelCase, RFQ rows are returned in the database's own snake_case — from_email, quantity_unit, extraction_confidence. Worth knowing before you write your mapping layer.

Lifecycle

An RFQ moves through these statuses as it is parsed, costed and answered. Filter the list endpoint with ?status= to watch one stage — failed is the one worth alerting on.

  • newEmail received, not yet parsed.
  • parsingAI extraction in flight.
  • parsedFields extracted and ready for costing.
  • costingCost components being assembled.
  • quotedA quote has been drafted but not sent.
  • sentQuote emailed back to the enquirer.
  • failedExtraction could not complete.
GET/api/v1/rfqsBearer key

List your organization's rate requests, oldest-updated first, each with its quote summary.

Query parameters

  • sincestring (ISO 8601)optional

    Only return RFQs updated strictly after this timestamp. Omit on the first call, then pass the previous response’s meta.nextSince.

  • limitinteger 1–100optional

    Rows per page. Defaults to 50; values outside the range are clamped.

  • statusstringoptional

    Filter to one lifecycle status: new, parsing, parsed, costing, quoted, sent or failed.

Request

curl -G https://www.cargomo.de/api/v1/rfqs \
  -d status=sent \
  -d limit=50 \
  -H "Authorization: Bearer cm_live_YOUR_API_KEY"

Response

200 OK
{
  "data": [
    {
      "id": "4d19b7c8-51ae-4a02-b6f3-9c7d02e1f884",
      "organization_id": "1f0a...",
      "from_email": "trading@example-buyer.com",
      "from_name": "Maria Okafor",
      "subject": "RFQ - 5000 MT White Sugar CIF Jebel Ali",
      "received_at": "2026-09-02T08:41:19Z",
      "status": "sent",
      "commodity": "White Refined Sugar ICUMSA 45",
      "quantity": 5000,
      "quantity_unit": "MT",
      "incoterms": "CIF",
      "destination": "Jebel Ali",
      "origin": "Brazil",
      "payment_terms": "Irrevocable LC at sight",
      "required_date": "2026-10-15",
      "extraction_confidence": 0.94,
      "buyer_role": "broker",
      "pricing_mechanism": "fixed",
      "missing_critical": ["packing"],
      "extraction_v2": { "line_items": [ /* ... */ ] },
      "parsed_at": "2026-09-02T08:41:26Z",
      "updated_at": "2026-09-02T11:03:55Z",
      "rfq_quotes": [
        {
          "id": "9b2e...",
          "sent_at": "2026-09-02T11:03:55Z",
          "total_price": 2810000,
          "unit_price": 562,
          "currency": "USD"
        }
      ]
    }
  ],
  "meta": { "count": 50, "limit": 50, "nextSince": "2026-09-02T11:03:55Z" }
}
GET/api/v1/rfqs/:idBearer key

Fetch one RFQ in full — the complete structured extraction, every cost component considered (not just the ones chosen), and the quote detail.

Path parameters

  • idstring (uuid)required

    The RFQ id. Path parameter. Must belong to your organization.

Request

curl
curl https://www.cargomo.de/api/v1/rfqs/4d19b7c8-51ae-4a02-b6f3-9c7d02e1f884 \
  -H "Authorization: Bearer cm_live_YOUR_API_KEY"

Response

200 OK
{
  "id": "4d19b7c8-51ae-4a02-b6f3-9c7d02e1f884",
  "status": "sent",
  "commodity": "White Refined Sugar ICUMSA 45",
  "extraction_v2": {
    "line_items": [
      {
        "commodity": "White Refined Sugar ICUMSA 45",
        "quantity_min": 5000,
        "quantity_max": 5000,
        "quantity_unit": "MT",
        "incoterms": "CIF",
        "destination": "Jebel Ali"
      }
    ]
  },
  "rfq_cost_sources": [
    {
      "id": "aa10...",
      "component": "ocean_freight",
      "source": "liner_api",
      "value": 48.5,
      "currency": "USD",
      "unit": "per_MT",
      "selected": true,
      "created_at": "2026-09-02T09:15:02Z"
    },
    {
      "id": "aa11...",
      "component": "insurance",
      "source": "manual",
      "value": 3.2,
      "currency": "USD",
      "unit": "per_MT",
      "selected": true,
      "created_at": "2026-09-02T09:18:40Z"
    }
  ],
  "rfq_quotes": [
    {
      "id": "9b2e...",
      "sent_at": "2026-09-02T11:03:55Z",
      "draft_saved_at": "2026-09-02T10:44:12Z",
      "total_price": 2810000,
      "unit_price": 562,
      "currency": "USD",
      "email_subject": "Re: RFQ - 5000 MT White Sugar CIF Jebel Ali"
    }
  ]
}

Cost sources are the audit trail.rfq_cost_sources lists every rate that was on the table for each component, where it came from, and which one was selected. That's how you reconstruct why a quote was priced the way it was — months later, when someone asks.