Quickstart
Discover how to use Notis through our public API for an easy integration with Zapier, Make, Pipedream, etc.
A synchronous / asynchronous endpoint for posting a user message to Notis and (optionally) receiving the assistant’s reply.
1. Purpose
/submit
lets you send the exact same payload Twilio sends to your webhook (so you can-reuse all your existing code).
/submit_async
does the same but returns immediately after the job is queued – useful for time-sensitive front-ends or background jobs.
2. Authentication
Header (required)
Plain Text
Authorization: Bearer <your-jwt>
Users retrieve this JWT by simply asking Notis “Give me my API key”.
3. End-points
Variant | Verb | Path | Behaviour |
Sync | POST | https://api.notis.ai/submit | Waits for Notis to finish and returns the answer. |
Async | POST | https://api.notis.ai/submit_async | Just enqueues the job, returns immediately. |
4. Request body
Exactly the object Twilio posts to a messaging webhook.
Key highlights the pipeline cares about:
Field | Example | Notes |
Body | “Hey Notis, what’s the weather?” | Text message (optional if you only send media). |
NumMedia | 1 | Number of media attachments. |
MediaUrl{0-9} | https://api.twilio.com/…/Media/MG123… | Up to 10 attachments. |
MediaContentType{0-9} | audio/ogg , image/png , application/pdf … | MIME type used for validation & conversion. |
Minimal text-only example
JSON
{
"Body": "Hello world!",
}
Audio message with transcript
JSON
{
"NumMedia": "1",
"MediaUrl0": "https://api.twilio.com/…/Media/MG456…",
"MediaContentType0": "audio/ogg",
"MessageType": "audio"
}
5. Response
5.1 /submit
HTTP status mirrors the internal processing status
200 OK
JSON
{
"message": "Hello 👋 How can I help today?",
"media_urls": [
"https://<supabase-public-url>/attachments/2025-03/…/reply.ogg"
]
}
Field meanings
• message
– Markdown-compatible text you can show directly to the user.
• media_urls
– Zero or more public URLs (audio TTS, images, files).
5.2 /submit_async
200 OK
JSON
{
"message": "Request accepted for processing"
}