New · Record a meeting in any language and get the minutes on your phone. Get the Android app India · ₹Global · $
Intexting
API v1.0 · Operational 135+ languages Zero data retention

Put Intexting inside your product.

One REST API for speech, audio, YouTube, image and PDF — with speaker separation and ready-made document templates. Built for CRMs, legal software, HR tools and partners.

Base URL
https://app.intexting.com/api/V1
curl -X POST https://app.intexting.com/api/V1/audio-to-text \
  -H "Authorization: Bearer $TOKEN" \
  -F "file=@meeting.m4a" \
  -F "diarization=1" \
  -F "document_type=minutes_of_meeting"
Authentication

Bearer token on every request.

Copy your personal access token from Dashboard › API Documentation, or generate one with the login endpoint. Send it with every call. Tokens can be revoked from the dashboard at any time.

Authorization: Bearer <YOUR_PERSONAL_ACCESS_TOKEN>
Accept: application/json
Programmatic login

Get a token from email and password.

POST/login
Field Type Description
email string · required Your account email
password string · required Your account password
{
  "data": {
    "token": "1|aB3x…",
    "token_type": "Bearer",
    "user": { "id": 42, "name": "Priya Mehta", "email": "priya@firm.com" }
  }
}
Quick start

Turn a recording into minutes in one call.

Upload an audio file with diarization=1 and a document_type — you get the transcript, speakers and a structured document back.

curl -X POST https://app.intexting.com/api/V1/audio-to-text \
  -H "Authorization: Bearer $TOKEN" \
  -F "file=@meeting.m4a" \
  -F "diarization=1" \
  -F "document_type=minutes_of_meeting"
import requests

res = requests.post(
    "https://app.intexting.com/api/V1/audio-to-text",
    headers={"Authorization": f"Bearer {TOKEN}", "Accept": "application/json"},
    files={"file": open("meeting.m4a", "rb")},
    data={"diarization": 1, "document_type": "minutes_of_meeting"},
)
print(res.json()["data"]["document"])
const form = new FormData();
form.append("file", await fs.openAsBlob("meeting.m4a"), "meeting.m4a");
form.append("diarization", "1");
form.append("document_type", "minutes_of_meeting");

const res = await fetch("https://app.intexting.com/api/V1/audio-to-text", {
  method: "POST",
  headers: { Authorization: `Bearer ${TOKEN}`, Accept: "application/json" },
  body: form,
});
console.log((await res.json()).data.document);
$res = Http::withToken($token)
    ->acceptJson()
    ->attach("file", fopen("meeting.m4a", "r"), "meeting.m4a")
    ->post("https://app.intexting.com/api/V1/audio-to-text", [
        "diarization" => 1,
        "document_type" => "minutes_of_meeting",
    ]);

$document = $res->json("data.document");
Audio to text

Transcribe recordings with speakers.

MP3, WAV, M4A, OGG, FLAC or AAC up to 100 MB. Language is auto-detected across 135+ languages.

POST/audio-to-textUpload and process
GET/audio-to-text/historyPast jobs
Parameter Type Description
file file · required MP3, WAV, M4A, OGG, FLAC, AAC · max 100 MB
language string Optional — auto-detected if omitted
diarization integer 1 to separate speakers (default 0)
document_type string Optional — see document templates
curl -X POST https://app.intexting.com/api/V1/audio-to-text \
  -H "Authorization: Bearer $TOKEN" \
  -H "Accept: application/json" \
  -F "file=@call.mp3" \
  -F "diarization=1" \
  -F "document_type=client_meeting"
Live dictation

Send voice chunks from your app.

Stream short WebM, WAV, MP3 or OGG chunks from a browser or mobile mic and receive text and documents.

POST/speech-to-textProcess a voice chunk
GET/speech-to-text/historyPast jobs
Parameter Type Description
file file · required WebM, WAV, MP3, OGG
language string Optional
document_type string Optional
curl -X POST https://app.intexting.com/api/V1/speech-to-text \
  -H "Authorization: Bearer $TOKEN" \
  -H "Accept: application/json" \
  -F "file=@note.webm" \
  -F "document_type=field_visit_report"
YouTube & live video

Transcribe videos and live streams.

Send a YouTube video or live URL. Jobs run asynchronously — poll status every 3–5 seconds, or stop a live stream to finalise it.

POST/youtube-to-textStart a job (200 or 202)
GET/youtube-to-text/status/{id}Poll progress
POST/youtube-to-text/stop/{id}Stop a live stream
Parameter Type Description
url string · required YouTube video or live URL
language string Optional
document_type string Optional
curl -X POST https://app.intexting.com/api/V1/youtube-to-text \
  -H "Authorization: Bearer $TOKEN" \
  -H "Accept: application/json" \
  -F "url=https://youtube.com/watch?v=…" \
  -F "document_type=media_article"
Image to text

Extract text from photos and scans.

JPG, PNG, WEBP, BMP or GIF up to 25 MB. Add notes to guide the extraction.

POST/image-to-textExtract text
GET/image-to-text/historyPast jobs
Parameter Type Description
file file · required JPG, JPEG, PNG, WEBP, BMP, GIF · max 25 MB
language string Optional — auto-detected
notes string Optional extraction instructions
curl -X POST https://app.intexting.com/api/V1/image-to-text \
  -H "Authorization: Bearer $TOKEN" \
  -H "Accept: application/json" \
  -F "file=@whiteboard.jpg" \
  -F "notes=Keep the table layout"
PDF to text

Read multi-page PDFs and summarise them.

PDFs up to 50 MB. Choose all pages or a range.

POST/pdf-to-textExtract and summarise
GET/pdf-to-text/historyPast jobs
Parameter Type Description
file file · required PDF · max 50 MB
page_range string all, 1-5 or 3,7 (default all)
language string Optional
curl -X POST https://app.intexting.com/api/V1/pdf-to-text \
  -H "Authorization: Bearer $TOKEN" \
  -H "Accept: application/json" \
  -F "file=@contract.pdf" \
  -F "page_range=1-5"
Document templates

Pass a document_type, get a finished document.

document_type Output
minutes_of_meeting Minutes of Meeting
client_meeting Client Meeting Notes
interview_report Interview Report
legal_case_report Legal Case Report
field_visit_report Field Visit Report
media_article Media Article
school_notes School & Lecture Notes
Errors

Status codes.

Errors return status, code, message and field-keyed errors. On 429, retry with exponential backoff.

Code Status Meaning
200 OK Request succeeded
202 Accepted Asynchronous processing started
401 Unauthorized Token missing, malformed or revoked
422 Unprocessable Validation failed — see errors
429 Too many requests Rate limit reached — retry with backoff
500 Server error Processing failed — safe to retry
Security

Built for confidential audio.

TLS 1.3 in transit

Every request is encrypted end to end.

Files purged

Uploaded media is deleted once the transcript is finalised.

No model training

Your data is never used to train AI models.

Partners

Resell, integrate or white-label.

For software companies, implementation partners and agencies who want documents from conversations inside their own products. Tell us your use case and volume.

Apply to partner