API reference

Generated from the same schemas as openapi.json. Base URL: https://app.originpixel.in

Try it

Send real requests with your own key. Read-only scopes are safest for exploring.

Kept in this browser tab only. Use a test key with read scopes.

Contacts

People and businesses you talk to. Shared by every product.

Scope contacts:read / contacts:write

  • GET /api/v1/contacts
  • POST /api/v1/contacts
  • GET /api/v1/contacts/{id}
  • PATCH /api/v1/contacts/{id}
  • DELETE /api/v1/contacts/{id}
Contacts fields
FieldTypeDescription
iduuidUnique id (UUID).
namestring | nullFull name.
emailstring | nullEmail address (lower case).
phonestring | nullPhone number in E.164 form.
tagsarrayLower-case tags.
attributesobjectYour own key / value data.
sourcestring | nullWhere the contact came from.
consent_marketingbooleanMarketing consent given.
opted_out_atdate-time | nullWhen the contact opted out of messages.
created_atdate-timeWhen it was created.
updated_atdate-timeWhen it last changed.

Filters: email (eq, in) · phone (eq) · source (eq, in) · tags (contains) · name (search) · consent_marketing (eq) · created_at (gt, gte, lt, lte) · updated_at (gt, gte, lt, lte). Sort: created_at, updated_at. Writable on create: name, email, phone, tags, attributes, source, consent_marketing.

curl "https://app.originpixel.in/api/v1/contacts?limit=25&email=..." \
  -H "Authorization: Bearer $ORIGIN_API_KEY"
curl -X POST "https://app.originpixel.in/api/v1/contacts" \
  -H "Authorization: Bearer $ORIGIN_API_KEY" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: $(uuidgen)" \
  -d '{"name":"Priya Raman","email":"priya@example.com","phone":"+919840012345","tags":["vip"]}'

Leads

Sales opportunities in the AI Revenue Engine pipeline. New leads are scored and routed automatically.

Scope revenue_engine:read / revenue_engine:write

  • GET /api/v1/leads
  • POST /api/v1/leads
  • GET /api/v1/leads/{id}
  • PATCH /api/v1/leads/{id}
Leads fields
FieldTypeDescription
iduuidUnique id (UUID).
contact_iduuid | nullThe contact.
conversation_iduuid | nullThe conversation it came from.
namestringLead name.
stagenew | qualified | quoted | booked | won | lost | nurturePipeline stage.
value_estimatenumber | nullExpected value.
currencystringISO 4217 currency code.
sourcestring | nullSource, e.g. website, whatsapp.
tagsarrayLower-case tags.
owner_iduuid | nullTeam login that owns the lead.
scoreinteger | nullIntent score 0-100 (computed).
score_reasonsarrayWhy the score was given.
next_actionstring | nullNext step.
next_action_duedate-time | nullWhen the next step is due.
lost_reasonstring | nullWhy the lead was lost.
last_activity_atdate-timeLast activity.
stage_changed_atdate-timeLast stage change.
closed_atdate-time | nullWhen it was won or lost.
created_atdate-timeWhen it was created.
updated_atdate-timeWhen it last changed.

Filters: stage (eq, neq, in) · source (eq, in) · contact_id (eq) · owner_id (eq) · score (gte, lte, gt, lt) · tags (contains) · name (search) · created_at (gt, gte, lt, lte) · updated_at (gt, gte, lt, lte). Sort: created_at, updated_at, last_activity_at. Writable on create: name, contact_id, stage, value_estimate, currency, source, tags, next_action, next_action_due.

curl "https://app.originpixel.in/api/v1/leads?limit=25&stage=..." \
  -H "Authorization: Bearer $ORIGIN_API_KEY"
curl -X POST "https://app.originpixel.in/api/v1/leads" \
  -H "Authorization: Bearer $ORIGIN_API_KEY" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: $(uuidgen)" \
  -d '{"name":"Website enquiry - dental implant","source":"website","value_estimate":45000,"currency":"INR"}'

Conversations

Customer conversations on every channel (web chat, WhatsApp, email, voice).

Scope front_desk:read

  • GET /api/v1/conversations
  • GET /api/v1/conversations/{id}
Conversations fields
FieldTypeDescription
iduuidUnique id (UUID).
contact_iduuid | nullThe contact.
channel_iduuid | nullThe channel.
statusopen | pending | handover | closedStatus.
assigned_touuid | nullAssigned team login.
ai_enabledbooleanThe assistant answers.
subjectstring | nullSubject (email).
last_message_atdate-time | nullLast message.
tagsarrayLower-case tags.
created_atdate-timeWhen it was created.
updated_atdate-timeWhen it last changed.

Filters: status (eq, in) · contact_id (eq) · channel_id (eq) · tags (contains) · created_at (gt, gte, lt, lte) · updated_at (gt, gte, lt, lte). Sort: created_at, updated_at.

curl "https://app.originpixel.in/api/v1/conversations?limit=25&status=..." \
  -H "Authorization: Bearer $ORIGIN_API_KEY"

Messages

Messages inside conversations. Also available as /conversations/{id}/messages.

Scope front_desk:read

  • GET /api/v1/messages
  • GET /api/v1/messages/{id}
Messages fields
FieldTypeDescription
iduuidUnique id (UUID).
conversation_iduuidThe conversation.
directionin | outin = from the customer.
sender_kindcontact | ai | staff | systemWho wrote it.
bodystring | nullText.
attachmentsarrayAttachments.
created_atdate-timeWhen it was sent.

Filters: conversation_id (eq) · direction (eq) · sender_kind (eq, in) · created_at (gt, gte, lt, lte). Sort: created_at.

curl "https://app.originpixel.in/api/v1/messages?limit=25&conversation_id=..." \
  -H "Authorization: Bearer $ORIGIN_API_KEY"

Bookings

Appointments and reservations. Overlapping bookings on the same calendar are refused (409).

Scope front_desk:read / front_desk:write · needs front_desk.booking in the package

  • GET /api/v1/bookings
  • POST /api/v1/bookings
  • GET /api/v1/bookings/{id}
  • PATCH /api/v1/bookings/{id}
Bookings fields
FieldTypeDescription
iduuidUnique id (UUID).
contact_iduuid | nullThe contact.
service_iduuid | nullThe service.
resource_iduuid | nullThe booking calendar (person, room, table).
starts_atdate-timeStart.
ends_atdate-timeEnd.
statusrequested | confirmed | cancelled | no_show | doneStatus.
sourcestring | nullWhere it was made (api, web, voice...).
notesstring | nullNotes.
created_atdate-timeWhen it was created.
updated_atdate-timeWhen it last changed.

Filters: status (eq, in) · contact_id (eq) · service_id (eq) · resource_id (eq) · starts_at (gt, gte, lt, lte) · created_at (gt, gte, lt, lte) · updated_at (gt, gte, lt, lte). Sort: starts_at, created_at, updated_at. Writable on create: contact_id, service_id, resource_id, starts_at, ends_at, status, notes.

curl "https://app.originpixel.in/api/v1/bookings?limit=25&status=..." \
  -H "Authorization: Bearer $ORIGIN_API_KEY"
curl -X POST "https://app.originpixel.in/api/v1/bookings" \
  -H "Authorization: Bearer $ORIGIN_API_KEY" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: $(uuidgen)" \
  -d '{"starts_at":"2026-11-05T10:00:00+05:30","ends_at":"2026-11-05T10:30:00+05:30","status":"requested"}'

Tickets

Support tickets with SLA targets. Status changes stay in the app (agents and workflows).

Scope customer_experience:read / customer_experience:write · needs customer_experience.tickets in the package

  • GET /api/v1/tickets
  • POST /api/v1/tickets
  • GET /api/v1/tickets/{id}
  • PATCH /api/v1/tickets/{id}
Tickets fields
FieldTypeDescription
iduuidUnique id (UUID).
numberintegerTicket number per business.
subjectstringSubject.
descriptionstring | nullDescription.
statusnew | open | waiting_customer | resolved | closedStatus.
prioritylow | normal | high | urgentPriority.
categorystringCategory key.
sourcestringHow it was created.
channelstring | nullChannel.
contact_iduuid | nullThe contact.
conversation_iduuid | nullThe conversation.
assignee_iduuid | nullAssigned team login.
tagsarrayLower-case tags.
first_response_due_atdate-time | nullFirst response target.
resolution_due_atdate-time | nullResolution target.
first_responded_atdate-time | nullFirst response.
resolved_atdate-time | nullResolved.
closed_atdate-time | nullClosed.
first_response_breachedbooleanFirst response SLA missed.
resolution_breachedbooleanResolution SLA missed.
sentimentstring | nullCustomer mood.
csat_scoreinteger | nullCSAT 1-5.
ai_summarystring | nullAI summary.
created_atdate-timeWhen it was created.
updated_atdate-timeWhen it last changed.

Filters: status (eq, neq, in) · priority (eq, in) · category (eq) · contact_id (eq) · assignee_id (eq) · tags (contains) · created_at (gt, gte, lt, lte) · updated_at (gt, gte, lt, lte). Sort: created_at, updated_at, number. Writable on create: subject, description, priority, category, channel, contact_id, tags.

curl "https://app.originpixel.in/api/v1/tickets?limit=25&status=..." \
  -H "Authorization: Bearer $ORIGIN_API_KEY"
curl -X POST "https://app.originpixel.in/api/v1/tickets" \
  -H "Authorization: Bearer $ORIGIN_API_KEY" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: $(uuidgen)" \
  -d '{"subject":"Order arrived damaged","priority":"high","channel":"email"}'

Reviews

Customer reviews from Google, Facebook, Justdial and others. Negative reviews open alerts.

Scope customer_experience:read / customer_experience:write · needs customer_experience.reviews in the package

  • GET /api/v1/reviews
  • POST /api/v1/reviews
  • GET /api/v1/reviews/{id}
Reviews fields
FieldTypeDescription
iduuidUnique id (UUID).
source_iduuidThe review source.
ratinginteger1-5 stars.
bodystring | nullText.
author_displaystring | nullAuthor name as shown.
reviewed_atdate-timeWhen it was written.
source_urlstring | nullLink to the review.
external_idstring | nullId on the review site.
statusnew | replied | ignoredStatus.
reply_draftstring | nullReply draft.
replied_atdate-time | nullWhen it was replied to.
sentimentstring | nullpositive, neutral or negative.
ticket_iduuid | nullTicket opened for it.
consent_to_featurebooleanCustomer agreed to feature it.
created_atdate-timeWhen it was created.
updated_atdate-timeWhen it last changed.

Filters: rating (eq, gte, lte) · status (eq, in) · source_id (eq) · sentiment (eq, in) · reviewed_at (gt, gte, lt, lte) · created_at (gt, gte, lt, lte). Sort: reviewed_at, created_at, updated_at. Writable on create: source_id, rating, body, author_display, reviewed_at, source_url, external_id.

curl "https://app.originpixel.in/api/v1/reviews?limit=25&rating=..." \
  -H "Authorization: Bearer $ORIGIN_API_KEY"
curl -X POST "https://app.originpixel.in/api/v1/reviews" \
  -H "Authorization: Bearer $ORIGIN_API_KEY" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: $(uuidgen)" \
  -d '{"source_id":"2f1c0a9e-5b7d-4c3a-9e8f-1a2b3c4d5e6f","rating":5,"body":"Very kind staff.","author_display":"Karthik S"}'

Calls

Phone calls handled by the AI Voice Workforce, with summary, sentiment and outcome. Recordings are not exposed.

Scope voice:read

  • GET /api/v1/calls
  • GET /api/v1/calls/{id}
Calls fields
FieldTypeDescription
iduuidUnique id (UUID).
directioninbound | outboundDirection.
agent_iduuid | nullVoice agent.
contact_iduuid | nullThe contact.
lead_iduuid | nullLead created or updated.
booking_iduuid | nullBooking made on the call.
campaign_iduuid | nullOutbound campaign.
from_numberstring | nullCaller number.
to_numberstring | nullCalled number.
statusstringCall status.
outcomestring | nullanswered, booked, message, transferred or missed.
languagestring | nullLanguage.
started_atdate-timeStart.
answered_atdate-time | nullAnswered.
ended_atdate-time | nullEnd.
duration_secondsinteger | nullDuration.
billed_minutesintegerBilled minutes.
summarystring | nullSummary.
sentimentstring | nullSentiment.
intentstring | nullIntent.
message_takenstring | nullMessage taken for the team.
is_testbooleanSimulated test call.
created_atdate-timeWhen it was created.
updated_atdate-timeWhen it last changed.

Filters: direction (eq) · status (eq, in) · outcome (eq, in) · contact_id (eq) · lead_id (eq) · campaign_id (eq) · is_test (eq) · started_at (gt, gte, lt, lte) · created_at (gt, gte, lt, lte). Sort: started_at, created_at, updated_at.

curl "https://app.originpixel.in/api/v1/calls?limit=25&direction=..." \
  -H "Authorization: Bearer $ORIGIN_API_KEY"

Campaigns

Old-lead and follow-up campaigns of the AI Revenue Engine.

Scope revenue_engine:read · needs revenue_engine.follow_ups in the package

  • GET /api/v1/campaigns
  • GET /api/v1/campaigns/{id}
Campaigns fields
FieldTypeDescription
iduuidUnique id (UUID).
namestringName.
sequence_iduuidFollow-up sequence.
segmentobjectWho is in the campaign.
statusstringStatus.
lead_countintegerLeads in the campaign.
created_atdate-timeWhen it was created.
updated_atdate-timeWhen it last changed.

Filters: status (eq, in) · sequence_id (eq) · created_at (gt, gte, lt, lte). Sort: created_at, updated_at.

curl "https://app.originpixel.in/api/v1/campaigns?limit=25&status=..." \
  -H "Authorization: Bearer $ORIGIN_API_KEY"

Call campaigns

Outbound call campaigns (calling windows, attempts, consent).

Scope voice:read · needs voice.outbound in the package

  • GET /api/v1/voice-campaigns
  • GET /api/v1/voice-campaigns/{id}
Call campaigns fields
FieldTypeDescription
iduuidUnique id (UUID).
namestringName.
agent_iduuidVoice agent.
sourcestringsegment or list.
purposestring | nullPurpose.
timezonestringCalling timezone.
window_startstringCalling window start (HH:MM:SS).
window_endstringCalling window end.
window_daysarrayCalling days.
max_attemptsintegerAttempts per person.
retry_minutesintegerMinutes between attempts.
statusstringStatus.
target_countintegerPeople to call.
created_atdate-timeWhen it was created.
updated_atdate-timeWhen it last changed.

Filters: status (eq, in) · agent_id (eq) · created_at (gt, gte, lt, lte). Sort: created_at, updated_at.

curl "https://app.originpixel.in/api/v1/voice-campaigns?limit=25&status=..." \
  -H "Authorization: Bearer $ORIGIN_API_KEY"

Prospects

B2B prospects of the AI Sales Workforce. A lawful basis is required; do-not-contact rules always apply.

Scope sales:read / sales:write · needs sales.prospecting in the package

  • GET /api/v1/prospects
  • POST /api/v1/prospects
  • GET /api/v1/prospects/{id}
  • PATCH /api/v1/prospects/{id}
Prospects fields
FieldTypeDescription
iduuidUnique id (UUID).
account_iduuid | nullTarget account.
contact_iduuid | nullLinked contact.
namestringName.
titlestring | nullJob title.
emailstring | nullEmail.
phonestring | nullPhone.
linkedin_urlstring | nullLinkedIn profile.
timezonestring | nullTimezone.
regionin | us | ca | eu | uk | ae | sa | br | au | otherRegion (decides the privacy rules).
lawful_basislegitimate_interest | consent | noneLawful basis for contact.
statusstringStatus.
opted_out_atdate-time | nullOpted out.
last_contacted_atdate-time | nullLast contacted.
last_replied_atdate-time | nullLast reply.
sourcestring | nullSource.
owner_iduuid | nullOwner.
created_atdate-timeWhen it was created.
updated_atdate-timeWhen it last changed.

Filters: status (eq, in) · region (eq, in) · account_id (eq) · email (eq) · owner_id (eq) · name (search) · created_at (gt, gte, lt, lte) · updated_at (gt, gte, lt, lte). Sort: created_at, updated_at. Writable on create: name, title, email, phone, linkedin_url, timezone, region, lawful_basis, basis_note, account_id, source, notes.

curl "https://app.originpixel.in/api/v1/prospects?limit=25&status=..." \
  -H "Authorization: Bearer $ORIGIN_API_KEY"
curl -X POST "https://app.originpixel.in/api/v1/prospects" \
  -H "Authorization: Bearer $ORIGIN_API_KEY" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: $(uuidgen)" \
  -d '{"name":"Anand Iyer","title":"Head of Operations","email":"anand@acme.example","region":"in","lawful_basis":"consent"}'

Documents

Back-office document metadata (no file contents, no extracted values). Bank statements and KYC are never listed.

Scope back_office:read · needs back_office.documents in the package

  • GET /api/v1/documents
  • GET /api/v1/documents/{id}
Documents fields
FieldTypeDescription
iduuidUnique id (UUID).
doc_type_iduuidDocument type.
file_namestringFile name.
mime_typestringMIME type.
size_bytesintegerSize.
sha256string | nullSHA-256 of the file.
statusstringProcessing status.
scan_statusstringVirus scan status.
extraction_modestring | nullai, rules or manual.
extracted_fieldsinteger | nullFields read.
corrected_fieldsinteger | nullFields corrected in review.
record_iduuid | nullRecord created from it.
uploaded_atdate-time | nullUploaded.
reviewed_atdate-time | nullReviewed.
created_atdate-timeWhen it was created.
updated_atdate-timeWhen it last changed.

Filters: status (eq, in) · doc_type_id (eq) · scan_status (eq) · created_at (gt, gte, lt, lte) · updated_at (gt, gte, lt, lte). Sort: created_at, updated_at.

curl "https://app.originpixel.in/api/v1/documents?limit=25&status=..." \
  -H "Authorization: Bearer $ORIGIN_API_KEY"

Records

Approved bills, invoices, expenses, purchase orders and quotations (sensitive records excluded).

Scope back_office:read · needs back_office.data_entry in the package

  • GET /api/v1/records
  • GET /api/v1/records/{id}
Records fields
FieldTypeDescription
iduuidUnique id (UUID).
kindstringbill, invoice, expense, purchase_order or quote.
statusstringStatus.
document_iduuid | nullSource document.
party_iduuid | nullVendor or customer.
party_namestring | nullVendor or customer name.
numberstring | nullDocument number.
issue_datedate | nullIssue date.
due_datedate | nullDue date.
currencystringCurrency.
subtotalnumber | nullSubtotal.
tax_amountnumber | nullTax.
totalnumberTotal.
categorystring | nullCategory.
notesstring | nullNotes.
flagsarrayFlags.
approved_atdate-time | nullApproved.
scheduled_fordate | nullPayment scheduled for.
paid_atdate-time | nullMarked paid.
created_atdate-timeWhen it was created.
updated_atdate-timeWhen it last changed.

Filters: kind (eq, in) · status (eq, in) · party_id (eq) · issue_date (gte, lte) · due_date (gte, lte) · created_at (gt, gte, lt, lte) · updated_at (gt, gte, lt, lte). Sort: created_at, updated_at.

curl "https://app.originpixel.in/api/v1/records?limit=25&kind=..." \
  -H "Authorization: Bearer $ORIGIN_API_KEY"

Posts

AI Content Studio posts. Posts created through the API are drafts; approval and publishing stay in the app.

Scope content:read / content:write · needs content.posts in the package

  • GET /api/v1/posts
  • POST /api/v1/posts
  • GET /api/v1/posts/{id}
  • PATCH /api/v1/posts/{id}
Posts fields
FieldTypeDescription
iduuidUnique id (UUID).
plan_iduuid | nullContent plan.
channelstringChannel.
statusstringidea, draft, in_review, approved, scheduled, published_manually or archived.
titlestring | nullTitle.
captionstring | nullCaption or body.
hashtagsarrayHashtags.
alt_textstring | nullImage alt text.
link_urlstring | nullLink.
languageen | ta | hi | arLanguage.
publish_datedate | nullPlanned date.
publish_timestring | nullPlanned time (HH:MM:SS).
variant_ofuuid | nullOriginal post of a variant.
sourcestringHow it was made.
versionintegerVersion number.
approved_atdate-time | nullApproved.
published_atdate-time | nullMarked published.
published_urlstring | nullPublished link.
created_atdate-timeWhen it was created.
updated_atdate-timeWhen it last changed.

Filters: status (eq, in) · channel (eq, in) · plan_id (eq) · publish_date (gte, lte) · created_at (gt, gte, lt, lte) · updated_at (gt, gte, lt, lte). Sort: created_at, updated_at. Writable on create: channel, title, caption, hashtags, alt_text, link_url, language, publish_date, publish_time.

curl "https://app.originpixel.in/api/v1/posts?limit=25&status=..." \
  -H "Authorization: Bearer $ORIGIN_API_KEY"
curl -X POST "https://app.originpixel.in/api/v1/posts" \
  -H "Authorization: Bearer $ORIGIN_API_KEY" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: $(uuidgen)" \
  -d '{"channel":"instagram","caption":"Diwali offer: 20% off cleaning this week."}'

Knowledge articles

Knowledge base used by the AI assistants and the public help centre. Articles are indexed for search when saved.

Scope front_desk:read / front_desk:write

  • GET /api/v1/knowledge-articles
  • POST /api/v1/knowledge-articles
  • GET /api/v1/knowledge-articles/{id}
  • PATCH /api/v1/knowledge-articles/{id}
  • DELETE /api/v1/knowledge-articles/{id}
Knowledge articles fields
FieldTypeDescription
iduuidUnique id (UUID).
titlestringTitle.
source_kindtext | url | file | faqKind.
contentstring | nullText.
statusstringpending, processing, ready or error.
publishedbooleanShown in the public help centre.
slugstring | nullHelp centre URL slug.
published_atdate-time | nullPublished.
created_atdate-timeWhen it was created.
updated_atdate-timeWhen it last changed.

Filters: status (eq, in) · published (eq) · source_kind (eq) · title (search) · created_at (gt, gte, lt, lte) · updated_at (gt, gte, lt, lte). Sort: created_at, updated_at. Writable on create: title, content, source_kind, published, slug.

curl "https://app.originpixel.in/api/v1/knowledge-articles?limit=25&status=..." \
  -H "Authorization: Bearer $ORIGIN_API_KEY"
curl -X POST "https://app.originpixel.in/api/v1/knowledge-articles" \
  -H "Authorization: Bearer $ORIGIN_API_KEY" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: $(uuidgen)" \
  -d '{"title":"Parking","content":"Free parking is available behind the clinic from 9 am to 9 pm."}'

Metrics

The Business Intelligence engine over every product, in the business's timezone. Scope business_intelligence:read.

GET /api/v1/metrics
GET /api/v1/metrics/revenue.leads?from=2026-10-01&to=2026-10-31&grain=week&compare=true