Tiquo
Integrations OverviewAirtableAsanaSlackGoogle AnalyticsMetabaseMixpanelPendoSegmentTableau (PAT)ActiveCampaignBrevoEmarsys Core API (WSSE)EventbriteFacebookGoogle AdsHighLevelInstagramKlaviyoMailchimpMailgunMicrosoft AdsSendGridTwitter (v2)HubSpotNotionAcuity SchedulingAirtable (Personal Access Token)BasecampCal.com (v2)CalendlyClickUpCodaConfluence Data CenterExpensifyGoogle CalendarGoogle SheetHarvestLinearMicrosoft Power BIMicrosoft TeamsMindbodyMondayOpenAIPerplexityPingboardPivotal TrackerProductboardQuickbaseServiceM8ServiceNowTeamworkTickTickTimelyTodoistTrafftTrelloWrikefal.aixAIZendeskIntercomAircall (OAuth)DixaFreshDeskFreshserviceFrontPlainRingCentralZoho DeskBrazeDialpadGoogleMicrosoftOutlookPodiumSednaSharePoint OnlineTwilioWhatsApp BusinessZoho MailBambooHRADPDeelEmployment HeroGustoHibob Service UserNamelyOracle Fusion Cloud (HCM)PaychexPayfitPaylocityPersonioRipplingSAP SuccessFactorsSage HRTSheetsUKG ProUKG ReadyWorkdayZoho PeopleQuickBooksBuildiumExact OnlineFreshBooksIntuitNetSuitePennylaneSageSage IntacctTwinfieldUnanetWave AccountingXeroZoho BooksSalesforceAffinityAttioCopperFreshsalesGainsight CCInsightlyKustomerMedalliaPipedriveTwenty CRMZoomInfoApaleoMewsMicrosoft Business CentralOdooSAP ConcurZuoraAcceloCoupa CompassZoho InvoiceAnrokAvalaraDocuSignDropbox SignPandadocSignNowLinkedInSplitwiseTikTok AdsJotformQualtricsRefinerTypeformShopifyCin7 CoreGoogle MapsRingoverListrakRydooTalentLMSApple Business ManagerCrunchbaseRocketReachOcean.ioFreepikEnergy Performance Certificates (Gov.UK)JustworksGristSAP S/4HANA Cloud3CX8x8Adobe CommerceBirdCloudbedsConstant ContactBufferCustomer.ioCrispFreeAgentGreenhouseMeta Marketing APIMollienocrm.ioOomnitzaDigitsPylonSage 200ShopwareAnvilShippoEasyPostAltrataMicrosoft PeopleMicrosoft IntuneCloudTalkGoogle FormsMaximizerMicrosoft PlannerSalesmsgSellercloudTallyTimifyUpsalesCleverReachHeymarketMailjetPleoProvenExpertTelegramToggl TrackTenzoASSA ABLOY Vingcard VisionlineASSA ABLOY Vingcard VostioASSA ABLOY TESA HotelASSA ABLOY SMARTairSalto KSSalto Space OnlineDormakabaOmnitecHotekTT LockWebLockISEOKleverKeyAperioISONASHIDSouthcoThird MillenniumSTidAxis CommunicationsBooking.comExpediaHotels.comAirbnbGoogle HotelsTripadvisorAgodaHotelbedsTravelgateXHyperguestRoibosReconlineTraviaOpenGDS.comMG BedbankDidatravelHotelREZHRSHotelnetworkGetaroomWinkBookeasyVRBOInntopiaHookusbookusHipcampSpot2niteCamping VisionMinistry of VillasTrip.comTravelokaTiketMakeMyTripHoteripKlookeDreamsSzallasEmerging Travel GroupCheck24Bed-and-Breakfast.itWorld2Meet (W2M)Ctoutvert / SecureholidayDespegarPriceTravelRoombeastMitchell CorpHRS AustraliaResonlineHostelworldHostelhopTablet MichelinMr & Mrs SmithHopperHotel TonightPitchupMoveriiLocalOTAAlaricBooknpayCultbookingGuestTractionLevartWeSpeakMake.comZapierPricelabsPricepointRategenieElastic HotelRoom Price GenieTurbosuiteUber EatsDeliverooDoorDashBolt FoodGlovo
API and AuthenticationCustomer API

Enquiries

Retrieve enquiry history and create enquiries

Enquiries

Returns a paginated list of enquiries submitted by the authenticated customer.

Endpoint

GET /enquiries

Authentication

Requires a valid JWT access token.

Authorization: Bearer eyJhbGciOiJSUzI1NiJ9...

Query Parameters

ParameterTypeDefaultDescription
limitinteger50Number of enquiries to return (1 to 100)
cursorstring-Enquiry ID to paginate from
statusstring-Filter by the organization's enquiry status value

Common Status Values

Organizations can configure their enquiry workflow statuses. Common values include:

StatusDescription
newEnquiry has been submitted and not yet reviewed
openEnquiry is being looked at
pendingWaiting for additional information or action
resolvedEnquiry has been resolved
closedEnquiry is closed

Example Request

curl -X GET "https://edge.tiquo.app/api/client/v1/enquiries?status=open&limit=10" \
  -H "Authorization: Bearer eyJhbGciOiJSUzI1NiJ9..."

Response

{
  "success": true,
  "data": {
    "enquiries": [
      {
        "id": "enq_123",
        "enquiryNumber": "ENQ-001234",
        "type": "general",
        "subject": "Question about services",
        "message": "I have a question about your consultation packages.",
        "category": "Sales",
        "status": "resolved",
        "priority": "medium",
        "source": "website",
        "responseCount": 2,
        "createdAt": "2025-01-30T12:00:00Z",
        "updatedAt": "2025-01-30T14:00:00Z",
        "customerRole": "primary"
      }
    ],
    "hasMore": false
  }
}

Enquiry Object

FieldTypeDescription
idstringEnquiry document ID
enquiryNumberstringHuman-readable enquiry number (e.g. ENQ-001234)
typestringType of enquiry (e.g. general, support)
subjectstringSubject line
messagestringThe enquiry message content
categorystringEnquiry category (e.g. Sales, Support)
statusstringEnquiry status (see values above)
prioritystringOne of: low, medium, high, urgent
sourcestringWhere the enquiry came from (e.g. website, email)
responseCountintegerNumber of responses to this enquiry
createdAtstringISO 8601 timestamp when the enquiry was created
updatedAtstringISO 8601 timestamp of the last update
firstResponseAtstring or omittedISO 8601 timestamp of the first response
resolvedAtstring or omittedISO 8601 timestamp when the enquiry was resolved
customerRolestringThe customer's role (e.g. primary)

Pagination

When hasMore is true, pass the response's nextCursor as the cursor parameter to fetch the next page.

Create an Enquiry

POST /enquiries

Authenticated customers can create an enquiry with their bearer token. An unauthenticated website integration can instead send its public integration key in the publicKey field or X-Public-Key header, subject to its configured allowed origins.

The request body contains customer and enquiry objects. customer.email is required, and the enquiry must include at least one of message or subject.

curl -X POST "https://edge.tiquo.app/api/client/v1/enquiries" \
  -H "Authorization: Bearer eyJhbGciOiJSUzI1NiJ9..." \
  -H "Content-Type: application/json" \
  -d '{
    "customer": {
      "firstName": "John",
      "lastName": "Smith",
      "email": "john@example.com",
      "phone": "+441234567890"
    },
    "enquiry": {
      "subject": "Question about services",
      "message": "Please send me more information.",
      "priority": "medium",
      "source": "website"
    }
  }'

A successful request returns 201 Created. The canonical result is in data, and enquiry and customer are also repeated at the top level for SDK compatibility.

{
  "success": true,
  "data": {
    "enquiry": {
      "id": "enq_123",
      "enquiryNumber": "ENQ-001234",
      "status": "new",
      "priority": "medium",
      "source": "website"
    },
    "customer": {
      "id": "cust_456",
      "customerNumber": "CUST-000001",
      "email": "john@example.com"
    }
  },
  "enquiry": { "id": "enq_123", "enquiryNumber": "ENQ-001234" },
  "customer": { "id": "cust_456", "customerNumber": "CUST-000001" }
}

For unauthenticated submissions, the returned customer contains only stable identifiers and the contact values submitted in this request; it does not expose an existing matched customer's stored profile or financial data.

Errors

StatusDescription
400Missing or invalid customer or enquiry fields
401Invalid or expired access token
403The origin is not allowed for an unauthenticated submission
500Internal server error

Code Examples

JavaScript

async function getEnquiries(accessToken, options = {}) {
  const params = new URLSearchParams();
  if (options.limit) params.set('limit', options.limit);
  if (options.cursor) params.set('cursor', options.cursor);
  if (options.status) params.set('status', options.status);

  const response = await fetch(
    `https://edge.tiquo.app/api/client/v1/enquiries?${params}`,
    {
      headers: { 'Authorization': `Bearer ${accessToken}` },
    }
  );

  return response.json();
}

const result = await getEnquiries(token, { status: 'open' });
console.log(`You have ${result.data.enquiries.length} open enquiries`);

On this page