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.

POST /v1/embed/messagesfrom your server
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.

  1. Get credentials

    Ask for an app_id and app_secret. They stay on your backend.

  2. Link the user

    On first login, POST /v1/embed/users with your user id. Pass firebase_uid if they already have an Arqivon account.

  3. Send what they say

    POST /v1/embed/messages with text and optional context, like the open document.

  4. Render jobs and approvals

    Poll GET /v1/embed/jobs and GET /v1/embed/approvals. Show Approve and Deny. Don't invent a second inbox.

  5. 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.

Arqivon Embed endpoints
EndpointWhat it does
GET/v1/embed/aboutThe public contract: what Arqivon is, and why it isn't a bot. Use it as the copy in your UI.
POST/v1/embed/usersLink your user id to a person. Pass firebase_uid to join an existing account.
POST/v1/embed/messagesSend text and optional context. Returns the reply, a job id and an approval id when one is needed.
GET/v1/embed/jobsThe person's jobs, including ones that kept running after your screen closed.
GET/v1/embed/approvalsPending 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.
What not to build. A second bot with its own memory. The embed secret inside a mobile binary. Auto-approval of a send because the model sounded sure. Unofficial WhatsApp Web or scraped inboxes.

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.

Arqivon Embed

Not a login and not a charge.