API

Using Circuit·
3 min read

API

Submit feedback to Circuit programmatically. Useful for piping data from support tools, CRMs, in-app forms or any internal system.

Authentication

Use your API key from Settings → Integrations → Surface. Pass it as a Bearer token:

Authorization: Bearer YOUR_API_KEY

Submit Feedback

Single item

POST https://api.withcircuit.com/feedback
{
  "text": "The export is too slow on large datasets",
  "customer_name": "Jane Smith",
  "customer_email": "jane@example.com",
  "revenue_band": "enterprise",
  "source": "api"
}

Batch

{
  "items": [
    {
      "text": "Can't find the export button",
      "customer_email": "alex@example.com",
      "revenue_band": "paid"
    },
    {
      "text": "Love the new dashboard layout",
      "customer_name": "Sam Lee"
    }
  ]
}

Fields

FieldTypeRequiredDescription
textstringYesThe feedback content
customer_namestringNoCustomer's name (appears in Customer Voice quotes)
customer_emailstringNoCustomer's email (enables close-the-loop notifications)
revenue_bandstringNoenterprise, paid or free
skustringNoProduct tier or plan identifier
external_idstringNoYour internal ID for the record (for deduplication and tracking)
sourcestringNoDefaults to api

Deduplication

Duplicate feedback is skipped by text hash. Submitting the same text twice produces one feedback item.

Use external_id to pass your own unique identifier — if the same external ID is submitted twice, the second is skipped regardless of text.

Response

{
  "id": "fb_a1b2c3d4",
  "status": "accepted",
  "deduplicated": false
}

For batch submissions, the response includes a result for each item.

Rate Limits

  • 100 requests per minute per API key
  • 1,000 items per batch request

Source Types

Setting source helps with filtering in the Activity Log:

SourceUse For
apiProgrammatic submissions (default)
widgetWidget embed (set automatically)
csvCSV imports (set automatically)
slackSlack integration (set automatically)

Submitting Transcripts via API

POST https://api.withcircuit.com/transcripts/upload

Accepts the same auth header. Body should include text (transcript content) and optionally transcript_type (interview, sales_call, support, other) and customer metadata.

Questions?

Email support@withcircuit.com

Can't find what you're looking for?

Contact support