Mount the agent in your product.
Arqivon Embed gives your app the same agent your users already have. Same user across apps, jobs that outlive your screen, and approvals before anything irreversible.
Rolling out. Credentials are issued on request.
X-Arqivon-App-Id: docfila
X-Arqivon-App-Secret: (server only)
{ "external_user_id": "u_42",
"text": "What are the key dates?",
"context": { "type": "document",
"title": "lease.pdf" } }
→ text show this in your UI
→ job_id still running after they leave
→ approval_id wait for a tap before any send
Integrate in a day.
Five steps. The client lives on your server, and the app secret never goes to a phone.
Get credentials
Ask for an app_id and app_secret. They stay on your backend.
Link the user
On first login, POST /v1/embed/users with your user id. Pass firebase_uid if they already have an Arqivon account.
Send what they say
POST /v1/embed/messages with text and optional context, like the open document.
Render jobs and approvals
Poll GET /v1/embed/jobs and GET /v1/embed/approvals. Show Approve and Deny. Don't invent a second inbox.
Keep the secret server-side
X-Arqivon-App-Secret belongs on your backend only.
# Python, on your server (copy backend/embed/client.py) from embed.client import ArqivonEmbedClient arqivon = ArqivonEmbedClient( base_url="https://arqivon-backend-653546103163.us-central1.run.app", app_id="docfila", app_secret=os.environ["ARQIVON_DOCFILA_SECRET"], ) arqivon.link_user(user.id, firebase_uid=user.firebase_uid, language=user.locale) turn = arqivon.message( user.id, "What are the key dates?", firebase_uid=user.firebase_uid, language=user.locale, context={"type": "document", "title": pdf.filename, "document_id": pdf.id}, ) # turn["text"] show this in your UI # turn["job_id"] still there after they leave the scanner # turn["approval_id"] if they asked to send mail, wait for a tap
// Dart, on your server or a cloud function. Not on the phone.
final res = await http.post(
Uri.parse('$base/v1/embed/messages'),
headers: {
'X-Arqivon-App-Id': appId,
'X-Arqivon-App-Secret': appSecret,
'Content-Type': 'application/json',
},
body: jsonEncode({
'external_user_id': uid,
'firebase_uid': firebaseUid,
'text': prompt,
'context': {'type': 'document', 'title': title},
}),
);
The auth model.
Your server authenticates as your app. Your users authenticate as themselves, or as a person Arqivon mints for them.
Headers
- X-Arqivon-App-Id
- your app id
- X-Arqivon-App-Secret
- your app secret, server only
Never ship the secret in a mobile binary, and never auto-approve a send because the model sounded sure.
firebase_uid set
That Firebase user is Arqivon. Your product, the Arqivon app and any paired chat are one person with the same jobs.
firebase_uid omitted
Arqivon mints embed:{app_id}:{external_user_id}. No Arqivon login is required for your user.
Endpoints.
| Endpoint | What it does |
|---|---|
| GET/v1/embed/about | The public contract: what Arqivon is, and why it isn't a bot. Use it as the copy in your UI. |
| POST/v1/embed/users | Link your user id to a person. Pass firebase_uid to join an existing account. |
| POST/v1/embed/messages | Send text and optional context. Returns the reply, a job id and an approval id when one is needed. |
| GET/v1/embed/jobs | The person's jobs, including ones that kept running after your screen closed. |
| GET/v1/embed/approvals | Pending approvals to render as Approve and Deny. |
| POST/v1/embed/approvals/{id}/{approved|denied} | Record the person's decision. |
Same user. Jobs outlive your screen.
The point of Embed is that you are not adding another assistant. You are mounting the one your user already has.
- SessionJobs outlive the host screen. Closing your app does not cancel work.
- IdentityPass firebase_uid and your app, the Arqivon app and chat apps are one person.
- ActionIt does work in the world: inbox, calendar, documents. It doesn't only chat.
- RiskSend, pay, delete and login always wait for a tap. The host never auto-sends mail.
Request app credentials.
Embed is rolling out. Leave an email and we'll send an app id and secret when your slot opens. There is no public price yet, and nothing is charged.
Or write to emmanuel.veranyuy@gmail.com.