This workflow follows the Google Drive → HTTP Request recipe pattern — see all workflows that pair these two integrations.
The workflow JSON
Copy or download the full n8n JSON below. Paste it into a new n8n workflow, add your credentials, activate. Full import guide →
{
"meta": {
"templateCredsSetupCompleted": true
},
"nodes": [
{
"id": "c499b8cc-7cc8-411d-9c22-d46c7654e169",
"name": "Mistral Upload",
"type": "n8n-nodes-base.httpRequest",
"position": [
700,
-20
],
"parameters": {
"url": "https://api.mistral.ai/v1/files",
"method": "POST",
"options": {},
"sendBody": true,
"contentType": "multipart-form-data",
"authentication": "predefinedCredentialType",
"bodyParameters": {
"parameters": [
{
"name": "purpose",
"value": "ocr"
},
{
"name": "file",
"parameterType": "formBinaryData",
"inputDataFieldName": "data"
}
]
},
"nodeCredentialType": "mistralCloudApi"
},
"credentials": {
"mistralCloudApi": {
"name": "<your credential>"
}
},
"typeVersion": 4.2
},
{
"id": "08cbe4b7-2adc-4ea0-8dfc-af107369b1dd",
"name": "When clicking \u2018Test workflow\u2019",
"type": "n8n-nodes-base.manualTrigger",
"position": [
-540,
-20
],
"parameters": {},
"typeVersion": 1
},
{
"id": "965f294a-5d77-4190-ad4f-ff191aba0948",
"name": "Mistral Signed URL",
"type": "n8n-nodes-base.httpRequest",
"position": [
900,
-20
],
"parameters": {
"url": "=https://api.mistral.ai/v1/files/{{ $json.id }}/url",
"options": {},
"sendQuery": true,
"sendHeaders": true,
"authentication": "predefinedCredentialType",
"queryParameters": {
"parameters": [
{
"name": "expiry",
"value": "24"
}
]
},
"headerParameters": {
"parameters": [
{
"name": "Accept",
"value": "application/json"
}
]
},
"nodeCredentialType": "mistralCloudApi"
},
"credentials": {
"mistralCloudApi": {
"name": "<your credential>"
}
},
"typeVersion": 4.2
},
{
"id": "7abfb1f8-f6c8-4fd0-a78e-9d4b97a4d6bc",
"name": "Import PDF",
"type": "n8n-nodes-base.googleDrive",
"position": [
480,
-20
],
"parameters": {
"fileId": {
"__rl": true,
"mode": "id",
"value": "15BcE6nXto9lQDHPmwjm7y9JPerAVEutY"
},
"options": {},
"operation": "download"
},
"credentials": {
"googleDriveOAuth2Api": {
"name": "<your credential>"
}
},
"typeVersion": 3
},
{
"id": "8942c6bf-4d86-4a95-aa4a-c819008e2534",
"name": "Import Image",
"type": "n8n-nodes-base.googleDrive",
"position": [
480,
200
],
"parameters": {
"fileId": {
"__rl": true,
"mode": "id",
"value": "1a2FcRDWHHncMO8CYxD80uNUBGH1Sy1k2"
},
"options": {},
"operation": "download"
},
"credentials": {
"googleDriveOAuth2Api": {
"name": "<your credential>"
}
},
"typeVersion": 3
},
{
"id": "94a1c3ca-1ca7-4bb1-9e7c-8314742423ab",
"name": "Mistral Upload1",
"type": "n8n-nodes-base.httpRequest",
"position": [
700,
200
],
"parameters": {
"url": "https://api.mistral.ai/v1/files",
"method": "POST",
"options": {},
"sendBody": true,
"contentType": "multipart-form-data",
"authentication": "predefinedCredentialType",
"bodyParameters": {
"parameters": [
{
"name": "purpose",
"value": "ocr"
},
{
"name": "file",
"parameterType": "formBinaryData",
"inputDataFieldName": "data"
}
]
},
"nodeCredentialType": "mistralCloudApi"
},
"credentials": {
"mistralCloudApi": {
"name": "<your credential>"
}
},
"typeVersion": 4.2
},
{
"id": "9d075eec-ba0e-41e1-8bdc-a732bc0f9229",
"name": "Mistral Signed URL1",
"type": "n8n-nodes-base.httpRequest",
"position": [
900,
200
],
"parameters": {
"url": "=https://api.mistral.ai/v1/files/{{ $json.id }}/url",
"options": {},
"sendQuery": true,
"sendHeaders": true,
"authentication": "predefinedCredentialType",
"queryParameters": {
"parameters": [
{
"name": "expiry",
"value": "24"
}
]
},
"headerParameters": {
"parameters": [
{
"name": "Accept",
"value": "application/json"
}
]
},
"nodeCredentialType": "mistralCloudApi"
},
"credentials": {
"mistralCloudApi": {
"name": "<your credential>"
}
},
"typeVersion": 4.2
},
{
"id": "f623f066-fc70-40fa-b608-f28a75a8ac8c",
"name": "Mistral DOC OCR",
"type": "n8n-nodes-base.httpRequest",
"position": [
1100,
-20
],
"parameters": {
"url": "https://api.mistral.ai/v1/ocr",
"method": "POST",
"options": {},
"jsonBody": "={\n \"model\": \"mistral-ocr-latest\",\n \"document\": {\n \"type\": \"document_url\",\n \"document_url\": \"{{ $json.url }}\"\n },\n \"include_image_base64\": true\n}",
"sendBody": true,
"specifyBody": "json",
"authentication": "predefinedCredentialType",
"nodeCredentialType": "mistralCloudApi"
},
"credentials": {
"mistralCloudApi": {
"name": "<your credential>"
}
},
"typeVersion": 4.2
},
{
"id": "15913796-e7c8-451a-8e7b-da7a3b10db02",
"name": "Mistral IMAGE OCR",
"type": "n8n-nodes-base.httpRequest",
"position": [
1100,
200
],
"parameters": {
"url": "https://api.mistral.ai/v1/ocr",
"method": "POST",
"options": {},
"jsonBody": "={\n \"model\": \"mistral-ocr-latest\",\n \"document\": {\n \"type\": \"image_url\",\n \"image_url\": \"{{ $json.url }}\"\n }\n}",
"sendBody": true,
"specifyBody": "json",
"authentication": "predefinedCredentialType",
"nodeCredentialType": "mistralCloudApi"
},
"credentials": {
"mistralCloudApi": {
"name": "<your credential>"
}
},
"typeVersion": 4.2
},
{
"id": "a79524ff-84f0-46db-bb8e-afc18f1ddd40",
"name": "Document URL",
"type": "n8n-nodes-base.set",
"position": [
-160,
-20
],
"parameters": {
"options": {},
"assignments": {
"assignments": [
{
"id": "1eb5f18b-eb06-48df-8491-d60de75b4855",
"name": "url",
"type": "string",
"value": "=https://pub-d4aa9be14ae34d6ebcebe06f13af667b.r2.dev/multimodal_bank_statement_scan.pdf"
}
]
}
},
"typeVersion": 3.4
},
{
"id": "72b89f33-a67c-4f73-9a78-e8ccd02fbc98",
"name": "Image URL",
"type": "n8n-nodes-base.set",
"position": [
-160,
200
],
"parameters": {
"options": {},
"assignments": {
"assignments": [
{
"id": "1eb5f18b-eb06-48df-8491-d60de75b4855",
"name": "url",
"type": "string",
"value": "=https://pub-d4aa9be14ae34d6ebcebe06f13af667b.r2.dev/multimodal_bank_statement_2.png"
}
]
}
},
"typeVersion": 3.4
},
{
"id": "808ccbb3-0dae-4e2c-9166-bf40c589824a",
"name": "Sticky Note",
"type": "n8n-nodes-base.stickyNote",
"position": [
-320,
-160
],
"parameters": {
"color": 7,
"width": 680,
"height": 580,
"content": "### Example 1. Publicly Hosted Files\nThe default way to use Mistral OCR is to give it a public URL of the file you want processed. Great for your own semi-private docs or other people's. If you rather not expose files due to privacy concerns, then you'd want to check out example 2."
},
"typeVersion": 1
},
{
"id": "b968d6ab-9582-495d-84af-f75833701e2a",
"name": "Sticky Note1",
"type": "n8n-nodes-base.stickyNote",
"position": [
400,
-160
],
"parameters": {
"color": 7,
"width": 920,
"height": 560,
"content": "### Example 2. Privately Hosted via Mistral Cloud\nGive Mistral OCR private and secure access to your files by uploading them to Mistral cloud first. Retrieve the file using a signed URL and pass this to Mistral OCR. Benefit of storing via Mistral could be faster cache access and reduced latency for repeat docs."
},
"typeVersion": 1
},
{
"id": "f2c0b30a-49be-4850-b102-f23d0feac0ec",
"name": "Mistral DOC OCR1",
"type": "n8n-nodes-base.httpRequest",
"position": [
60,
-20
],
"parameters": {
"url": "https://api.mistral.ai/v1/ocr",
"method": "POST",
"options": {},
"jsonBody": "={\n \"model\": \"mistral-ocr-latest\",\n \"document\": {\n \"type\": \"document_url\",\n \"document_url\": \"{{ $json.url }}\"\n }\n}",
"sendBody": true,
"specifyBody": "json",
"authentication": "predefinedCredentialType",
"nodeCredentialType": "mistralCloudApi"
},
"credentials": {
"mistralCloudApi": {
"name": "<your credential>"
}
},
"typeVersion": 4.2
},
{
"id": "64a28537-e70b-48bc-b580-cc9d5a5a1b80",
"name": "Mistral IMAGE OCR1",
"type": "n8n-nodes-base.httpRequest",
"position": [
60,
200
],
"parameters": {
"url": "https://api.mistral.ai/v1/ocr",
"method": "POST",
"options": {},
"jsonBody": "={\n \"model\": \"mistral-ocr-latest\",\n \"document\": {\n \"type\": \"image_url\",\n \"image_url\": \"{{ $json.url }}\"\n }\n}",
"sendBody": true,
"specifyBody": "json",
"authentication": "predefinedCredentialType",
"nodeCredentialType": "mistralCloudApi"
},
"credentials": {
"mistralCloudApi": {
"name": "<your credential>"
}
},
"typeVersion": 4.2
},
{
"id": "3caaa30b-21f2-4643-93dd-8dff6f3c1920",
"name": "Sticky Note2",
"type": "n8n-nodes-base.stickyNote",
"position": [
-740,
-440
],
"parameters": {
"width": 380,
"height": 640,
"content": "## Document Parsing with Mistral OCR\nUp your structured document parsing game with Mistral's latest release... **Mistral-OCR**!\n* Designed to specifically parse PDF and image files.\n* Handles multiple-page documents and images up to 10k pixels.\n* Each page is conveniently transcribed as markdown only - there is no plain text output.\n* Incredible pricing at only $0.001 per page!\n\n### Requirements\n* You'll need a Mistral Cloud API Key\n* This template only works with the Mistral Cloud API for Mistral OCR."
},
"typeVersion": 1
},
{
"id": "bd4d0c9f-f4a6-4527-8f9d-5af90a2858c2",
"name": "Sticky Note3",
"type": "n8n-nodes-base.stickyNote",
"position": [
1360,
-160
],
"parameters": {
"color": 7,
"width": 680,
"height": 580,
"content": "### Example 3. No need for Extraction? Talk Directly with the File!\nIt seems Mistral were also able to integrate OCR capabilities into its text models which allows you to carry out tasks such as document classification and sentiment analysis really quickly. Unfortunately, it doesn't work the same way with images - you have to use Pixtral but the results are really bad!"
},
"typeVersion": 1
},
{
"id": "c9a9d4bb-4ee6-413a-9f08-97fdcee22bf2",
"name": "Document URL1",
"type": "n8n-nodes-base.set",
"position": [
1520,
-20
],
"parameters": {
"options": {},
"assignments": {
"assignments": [
{
"id": "1eb5f18b-eb06-48df-8491-d60de75b4855",
"name": "url",
"type": "string",
"value": "=https://pub-d4aa9be14ae34d6ebcebe06f13af667b.r2.dev/multimodal_bank_statement_scan.pdf"
},
{
"id": "c639fce3-6967-444d-be18-6c9ce802ef22",
"name": "query",
"type": "string",
"value": "what is the total number of deposits?"
}
]
}
},
"typeVersion": 3.4
},
{
"id": "5de4d62c-af8f-4e6d-adbd-2f591a2165f7",
"name": "Document Understanding",
"type": "n8n-nodes-base.httpRequest",
"position": [
1740,
-20
],
"parameters": {
"url": "https://api.mistral.ai/v1/chat/completions",
"method": "POST",
"options": {},
"jsonBody": "={\n \"model\": \"mistral-small-latest\",\n \"messages\": [\n {\n \"role\": \"user\",\n \"content\": [\n {\n \"type\": \"text\",\n \"text\": \"{{ $json.query }}\"\n },\n {\n \"type\": \"document_url\",\n \"document_url\": \"{{ $json.url }}\"\n }\n ]\n }\n ],\n \"document_image_limit\": 8,\n \"document_page_limit\": 64\n}",
"sendBody": true,
"specifyBody": "json",
"authentication": "predefinedCredentialType",
"nodeCredentialType": "mistralCloudApi"
},
"credentials": {
"mistralCloudApi": {
"name": "<your credential>"
}
},
"typeVersion": 4.2
},
{
"id": "9a7bbff0-d446-469d-aa61-838e8c025ad5",
"name": "Image URL1",
"type": "n8n-nodes-base.set",
"position": [
1520,
200
],
"parameters": {
"options": {},
"assignments": {
"assignments": [
{
"id": "1eb5f18b-eb06-48df-8491-d60de75b4855",
"name": "url",
"type": "string",
"value": "=https://pub-d4aa9be14ae34d6ebcebe06f13af667b.r2.dev/multimodal_bank_statement_2.png"
},
{
"id": "639cd062-ebef-44ab-97a2-79ee388f8b41",
"name": "query",
"type": "string",
"value": "what is the total number of deposits?"
}
]
}
},
"typeVersion": 3.4
},
{
"id": "ca43d437-a373-4938-a0a8-8087a98d46a8",
"name": "Document Mis-Understanding?",
"type": "n8n-nodes-base.httpRequest",
"position": [
1740,
200
],
"parameters": {
"url": "https://api.mistral.ai/v1/chat/completions",
"method": "POST",
"options": {},
"jsonBody": "={\n \"model\": \"pixtral-large-latest\",\n \"messages\": [\n {\n \"role\": \"user\",\n \"content\": [\n {\n \"type\": \"text\",\n \"text\": \"{{ $json.query }}\"\n },\n {\n \"type\": \"image_url\",\n \"image_url\": \"{{ $json.url }}\"\n }\n ]\n }\n ],\n \"document_image_limit\": 8,\n \"document_page_limit\": 64\n}",
"sendBody": true,
"specifyBody": "json",
"authentication": "predefinedCredentialType",
"nodeCredentialType": "mistralCloudApi"
},
"credentials": {
"mistralCloudApi": {
"name": "<your credential>"
}
},
"typeVersion": 4.2
}
],
"connections": {
"Image URL": {
"main": [
[
{
"node": "Mistral IMAGE OCR1",
"type": "main",
"index": 0
}
]
]
},
"Image URL1": {
"main": [
[
{
"node": "Document Mis-Understanding?",
"type": "main",
"index": 0
}
]
]
},
"Import PDF": {
"main": [
[
{
"node": "Mistral Upload",
"type": "main",
"index": 0
}
]
]
},
"Document URL": {
"main": [
[
{
"node": "Mistral DOC OCR1",
"type": "main",
"index": 0
}
]
]
},
"Import Image": {
"main": [
[
{
"node": "Mistral Upload1",
"type": "main",
"index": 0
}
]
]
},
"Document URL1": {
"main": [
[
{
"node": "Document Understanding",
"type": "main",
"index": 0
}
]
]
},
"Mistral Upload": {
"main": [
[
{
"node": "Mistral Signed URL",
"type": "main",
"index": 0
}
]
]
},
"Mistral Upload1": {
"main": [
[
{
"node": "Mistral Signed URL1",
"type": "main",
"index": 0
}
]
]
},
"Mistral DOC OCR1": {
"main": [
[]
]
},
"Mistral Signed URL": {
"main": [
[
{
"node": "Mistral DOC OCR",
"type": "main",
"index": 0
}
]
]
},
"Mistral Signed URL1": {
"main": [
[
{
"node": "Mistral IMAGE OCR",
"type": "main",
"index": 0
}
]
]
},
"When clicking \u2018Test workflow\u2019": {
"main": [
[
{
"node": "Document URL",
"type": "main",
"index": 0
},
{
"node": "Image URL",
"type": "main",
"index": 0
}
]
]
}
}
}
Credentials you'll need
Each integration node will prompt for credentials when you import. We strip credential IDs before publishing — you'll add your own.
googleDriveOAuth2ApimistralCloudApi
For the full experience including quality scoring and batch install features for each workflow upgrade to Pro
How this works
This workflow transforms uploaded files like PDFs or images into editable digital stickynotes by leveraging OCR technology to extract and format text for easy reuse. It's ideal for researchers, students, or professionals who frequently capture ideas from documents but need quick, searchable notes without manual transcription. The key step involves sending the files to Mistral's API via httpRequest nodes for processing, followed by storing the results in Google Drive for seamless access and sharing.
Use this workflow when dealing with event-driven file uploads that require rapid text extraction, such as digitising scanned notes during meetings or archiving research materials. Avoid it for high-volume processing or non-text files like videos, where specialised tools would be more efficient. Common variations include adapting the OCR endpoint for different languages or integrating with email triggers for automated inbox scanning.
About this workflow
Http Stickynote. Uses httpRequest, manualTrigger, googleDrive, stickyNote. Event-driven trigger; 21 nodes.
Source: https://github.com/Zie619/n8n-workflows — original creator credit. Request a take-down →
Related workflows
Workflows that share integrations, category, or trigger type with this one. All free to copy and import.
AutoQoutesV2_template. Uses manualTrigger, httpRequest, stickyNote, googleSheets. Event-driven trigger; 28 nodes.
AutoClip – Automatically Generate Video Clips and Upload to YouTube. Uses manualTrigger, googleSheets, googleDrive, stickyNote. Event-driven trigger; 23 nodes.
n8n workflow deployer. Uses httpRequest, stickyNote, manualTrigger, extractFromFile. Event-driven trigger; 21 nodes.
Image-to-3D. Uses manualTrigger, httpRequest, scheduleTrigger, stickyNote. Event-driven trigger; 17 nodes.
💡🌐 Essential Multipage Website Scraper with Jina.ai. Uses stickyNote, manualTrigger, splitInBatches, limit. Event-driven trigger; 16 nodes.