This workflow follows the Dropbox → 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 →
{
"nodes": [
{
"id": "f4b1bdd8-654d-4643-a004-ff1b2f32b5ae",
"name": "When clicking \u2018Test workflow\u2019",
"type": "n8n-nodes-base.manualTrigger",
"position": [
580,
1100
],
"parameters": {},
"typeVersion": 1
},
{
"id": "d6b1c410-81c3-486d-bdcb-86a4c6f7bf9e",
"name": "Create Asset",
"type": "n8n-nodes-base.httpRequest",
"position": [
1940,
580
],
"parameters": {
"url": "https://pdf-services.adobe.io/assets",
"method": "POST",
"options": {
"redirect": {
"redirect": {}
}
},
"sendBody": true,
"sendHeaders": true,
"authentication": "genericCredentialType",
"bodyParameters": {
"parameters": [
{
"name": "mediaType",
"value": "application/pdf"
}
]
},
"genericAuthType": "httpHeaderAuth",
"headerParameters": {
"parameters": [
{
"name": "Authorization",
"value": "=Bearer {{ $json.access_token }}"
}
]
}
},
"credentials": {
"httpHeaderAuth": {
"name": "<your credential>"
}
},
"typeVersion": 4.1
},
{
"id": "9e900a45-d792-4dc5-938c-0d5cdfd2e647",
"name": "Execute Workflow Trigger",
"type": "n8n-nodes-base.executeWorkflowTrigger",
"position": [
1140,
440
],
"parameters": {},
"typeVersion": 1
},
{
"id": "859f369d-f36f-4c3f-a50d-a17214fef2a3",
"name": "Sticky Note",
"type": "n8n-nodes-base.stickyNote",
"position": [
20,
140
],
"parameters": {
"color": 5,
"width": 667.6107231291055,
"height": 715.2927406867177,
"content": "# Adobe API Wrapper\n\nSee Adobe documentation:\n- https://developer.adobe.com/document-services/docs/overview/pdf-services-api/howtos/\n- https://developer.adobe.com/document-services/docs/overview/pdf-extract-api/gettingstarted/\n\nIn short, this workflow does the following steps :\n\n- Authentication\n- Upload an asset (pdf) to adobe\n- Wait for the asset to be processed by Adobe\n- Download the result\n\n## Credential\n\nCredentials are not \"predefined\" and you'll have to create 2 custom credentials, detailed in the workflow.\n\n## Result\n\nThe result will depend on the transformation requested. It could be 1 of various files (json, zip...) accessible via download URL returned by the workflow.\n\nWorkflow can be tested with a PDF filed fetched with Dorpbox for example or any storage provider. "
},
"typeVersion": 1
},
{
"id": "450199c5-e588-486d-81cf-eb69cf729ab1",
"name": "Sticky Note1",
"type": "n8n-nodes-base.stickyNote",
"position": [
560,
900
],
"parameters": {
"width": 857.2064431277577,
"height": 463.937514110429,
"content": "## Testing for development"
},
"typeVersion": 1
},
{
"id": "311a75d6-4fbe-4d8f-89b3-d4b0ee21f7ae",
"name": "Adobe API Query",
"type": "n8n-nodes-base.set",
"position": [
900,
1000
],
"parameters": {
"options": {},
"assignments": {
"assignments": [
{
"id": "62bb6466-acf4-41e5-9444-c9ef608a6822",
"name": "endpoint",
"type": "string",
"value": "extractpdf"
},
{
"id": "0352f585-1434-4ab7-a704-a1e187fffa96",
"name": "json_payload",
"type": "object",
"value": "={{ \n{\n \"renditionsToExtract\": [\n \"tables\"\n ],\n \"elementsToExtract\": [\n \"text\",\n \"tables\"\n ]\n }\n}}"
}
]
}
},
"typeVersion": 3.4
},
{
"id": "abf20778-db50-4787-a5f4-7af5d5c76efe",
"name": "Load a test pdf file",
"type": "n8n-nodes-base.dropbox",
"position": [
900,
1180
],
"parameters": {
"path": "/valerian/w/prod/_freelance/ADEZIF/AI/Source data/Brochures pour GPT/Brochure 3M/3M_doc_emballage VERSION FINALE.pdf",
"operation": "download",
"authentication": "oAuth2"
},
"credentials": {
"dropboxOAuth2Api": {
"name": "<your credential>"
}
},
"typeVersion": 1
},
{
"id": "8bb2ae0c-df61-4110-af44-b1040b4340a2",
"name": "Query + File",
"type": "n8n-nodes-base.merge",
"position": [
1180,
1080
],
"parameters": {
"mode": "combine",
"options": {},
"combinationMode": "mergeByPosition"
},
"typeVersion": 2.1
},
{
"id": "92afa6d6-daf8-4358-8c95-36473b810dc2",
"name": "Query + File + Asset information",
"type": "n8n-nodes-base.merge",
"position": [
2180,
580
],
"parameters": {
"mode": "combine",
"options": {},
"combinationMode": "mergeByPosition"
},
"typeVersion": 2.1
},
{
"id": "5d88b8e4-0b0a-463a-88db-c45d5e87e823",
"name": "Process Query",
"type": "n8n-nodes-base.httpRequest",
"position": [
2640,
580
],
"parameters": {
"url": "=https://pdf-services.adobe.io/operation/{{ $('Query + File + Asset information').item.json.endpoint }}",
"method": "POST",
"options": {
"redirect": {
"redirect": {}
},
"response": {
"response": {
"fullResponse": true
}
}
},
"jsonBody": "={{ \n{\n...{ \"assetID\":$('Query + File + Asset information').first().json.assetID },\n...$('Query + File + Asset information').first().json.json_payload\n}\n}}",
"sendBody": true,
"sendHeaders": true,
"specifyBody": "json",
"authentication": "genericCredentialType",
"genericAuthType": "httpHeaderAuth",
"headerParameters": {
"parameters": [
{
"name": "Authorization",
"value": "=Bearer {{ $('Authenticartion (get token)').first().json[\"access_token\"] }}"
}
]
}
},
"credentials": {
"httpHeaderAuth": {
"name": "<your credential>"
}
},
"typeVersion": 4.1
},
{
"id": "47278b2f-dd04-4609-90ab-52f34b9a0e72",
"name": "Wait 5 second",
"type": "n8n-nodes-base.wait",
"position": [
2860,
580
],
"parameters": {
"unit": "seconds",
"amount": 5
},
"typeVersion": 1
},
{
"id": "691b52ae-132a-4105-b1e4-bb7d55d0e347",
"name": "Try to download the result",
"type": "n8n-nodes-base.httpRequest",
"position": [
3080,
580
],
"parameters": {
"url": "={{ $('Process Query').item.json[\"headers\"][\"location\"] }}",
"options": {},
"sendHeaders": true,
"authentication": "genericCredentialType",
"genericAuthType": "httpHeaderAuth",
"headerParameters": {
"parameters": [
{
"name": "Authorization",
"value": "=Bearer {{ $('Authenticartion (get token)').first().json[\"access_token\"] }}"
}
]
}
},
"credentials": {
"httpHeaderAuth": {
"name": "<your credential>"
}
},
"typeVersion": 4.1
},
{
"id": "277dea14-de8d-4719-aff1-f4008d6d5c67",
"name": "Switch",
"type": "n8n-nodes-base.switch",
"position": [
3260,
580
],
"parameters": {
"rules": {
"values": [
{
"outputKey": "in progress",
"conditions": {
"options": {
"leftValue": "",
"caseSensitive": true,
"typeValidation": "strict"
},
"combinator": "and",
"conditions": [
{
"operator": {
"type": "string",
"operation": "equals"
},
"leftValue": "={{ $json.status }}",
"rightValue": "in progress"
}
]
},
"renameOutput": true
},
{
"outputKey": "failed",
"conditions": {
"options": {
"leftValue": "",
"caseSensitive": true,
"typeValidation": "strict"
},
"combinator": "and",
"conditions": [
{
"id": "6d6917f6-abb9-4175-a070-a2f500d9f34f",
"operator": {
"name": "filter.operator.equals",
"type": "string",
"operation": "equals"
},
"leftValue": "={{ $json.status }}",
"rightValue": "failed"
}
]
},
"renameOutput": true
}
]
},
"options": {
"fallbackOutput": "extra"
}
},
"typeVersion": 3
},
{
"id": "8f6f8273-43ed-4a44-bb27-6ce137000472",
"name": "Forward response to origin workflow",
"type": "n8n-nodes-base.set",
"position": [
3820,
600
],
"parameters": {
"options": {},
"assignments": {
"assignments": []
},
"includeOtherFields": true
},
"typeVersion": 3.4
},
{
"id": "00e2d7e3-94cd-49e5-a975-2fdc1a7a95fd",
"name": "Sticky Note2",
"type": "n8n-nodes-base.stickyNote",
"position": [
2780,
480
],
"parameters": {
"width": 741.3069226712129,
"height": 336.57433650102917,
"content": "## Wait for file do be processed"
},
"typeVersion": 1
},
{
"id": "3667b1ba-b9a6-4e1a-94b1-61b37f1e7adc",
"name": "Sticky Note3",
"type": "n8n-nodes-base.stickyNote",
"position": [
1324.6733934850213,
147.59707015795897
],
"parameters": {
"color": 5,
"width": 402.63171535688423,
"height": 700.9473619571734,
"content": "### 1- Credential for token request\n\nCreate a \"Custom Auth\" credential like this :\n\n```\n{\n \"headers\": {\n \"Content-Type\":\"application/x-www-form-urlencoded\"\n }, \n \"body\" : {\n \"client_id\": \"****\", \n \"client_secret\":\"****\"\n }\n}\n```"
},
"typeVersion": 1
},
{
"id": "718bb738-8ce4-4b38-94e4-6ccac1adf9ec",
"name": "Sticky Note4",
"type": "n8n-nodes-base.stickyNote",
"position": [
1800,
152.6219700851708
],
"parameters": {
"color": 5,
"width": 1752.5923360342827,
"height": 692.0175575715904,
"content": "### 2- Credential for all other Queries\n\nCreate a \"Header Auth\" credential like this : \n\n```\nX-API-Key: **** (same value as client_id)\n```"
},
"typeVersion": 1
},
{
"id": "d6bc8011-699d-4388-82f5-e5f90ba8672a",
"name": "Sticky Note5",
"type": "n8n-nodes-base.stickyNote",
"position": [
740,
140
],
"parameters": {
"color": 5,
"width": 529.7500231395039,
"height": 718.8735380890446,
"content": "## Workflow Input\n\n- endpoint: splitpdf, extractpdf, ...\n- json_payload : all endpoint payload except assetID which is handled in current workflow\n- **PDF Data as n8n Binary**\n\n\n### Example for **split** : \n\n```\n{\n \"endpoint\": \"splitpdf\",\n \"json_payload\": {\n \"splitoption\": \n { \"pageRanges\": [{\"start\": 1,\"end\": 2}]}\n }\n }\n}\n```\n\n### Example for **extractpdf**\n\n```\n{\n \"endpoint\": \"splitpdf\",\n \"json_payload\": {\n \"renditionsToExtract\": [\n \"tables\"\n ],\n \"elementsToExtract\": [\n \"text\",\n \"tables\"\n ]\n }\n}\n```"
},
"typeVersion": 1
},
{
"id": "2bbf6d9d-8399-49ba-94ea-b90795ef44ba",
"name": "Authenticartion (get token)",
"type": "n8n-nodes-base.httpRequest",
"position": [
1500,
580
],
"parameters": {
"url": "https://pdf-services.adobe.io/token",
"method": "POST",
"options": {},
"sendBody": true,
"contentType": "form-urlencoded",
"authentication": "genericCredentialType",
"bodyParameters": {
"parameters": [
{}
]
},
"genericAuthType": "httpCustomAuth"
},
"credentials": {
"httpCustomAuth": {
"name": "<your credential>"
}
},
"typeVersion": 4.1
},
{
"id": "be4e87e8-6e56-408f-b932-320023382f98",
"name": "Upload PDF File (asset)",
"type": "n8n-nodes-base.httpRequest",
"position": [
2440,
580
],
"parameters": {
"url": "={{ $json.uploadUri }}",
"method": "PUT",
"options": {
"redirect": {
"redirect": {}
}
},
"sendBody": true,
"sendQuery": true,
"contentType": "binaryData",
"queryParameters": {
"parameters": [
{}
]
},
"inputDataFieldName": "data"
},
"typeVersion": 4.1
}
],
"connections": {
"Switch": {
"main": [
[
{
"node": "Wait 5 second",
"type": "main",
"index": 0
}
],
[
{
"node": "Forward response to origin workflow",
"type": "main",
"index": 0
}
],
[
{
"node": "Forward response to origin workflow",
"type": "main",
"index": 0
}
]
]
},
"Create Asset": {
"main": [
[
{
"node": "Query + File + Asset information",
"type": "main",
"index": 1
}
]
]
},
"Query + File": {
"main": [
[
{
"node": "Authenticartion (get token)",
"type": "main",
"index": 0
},
{
"node": "Query + File + Asset information",
"type": "main",
"index": 0
}
]
]
},
"Process Query": {
"main": [
[
{
"node": "Wait 5 second",
"type": "main",
"index": 0
}
]
]
},
"Wait 5 second": {
"main": [
[
{
"node": "Try to download the result",
"type": "main",
"index": 0
}
]
]
},
"Adobe API Query": {
"main": [
[
{
"node": "Query + File",
"type": "main",
"index": 0
}
]
]
},
"Load a test pdf file": {
"main": [
[
{
"node": "Query + File",
"type": "main",
"index": 1
}
]
]
},
"Upload PDF File (asset)": {
"main": [
[
{
"node": "Process Query",
"type": "main",
"index": 0
}
]
]
},
"Execute Workflow Trigger": {
"main": [
[
{
"node": "Authenticartion (get token)",
"type": "main",
"index": 0
},
{
"node": "Query + File + Asset information",
"type": "main",
"index": 0
}
]
]
},
"Try to download the result": {
"main": [
[
{
"node": "Switch",
"type": "main",
"index": 0
}
]
]
},
"Authenticartion (get token)": {
"main": [
[
{
"node": "Create Asset",
"type": "main",
"index": 0
}
]
]
},
"Query + File + Asset information": {
"main": [
[
{
"node": "Upload PDF File (asset)",
"type": "main",
"index": 0
}
]
]
},
"When clicking \u2018Test workflow\u2019": {
"main": [
[
{
"node": "Load a test pdf file",
"type": "main",
"index": 0
},
{
"node": "Adobe API Query",
"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.
dropboxOAuth2ApihttpCustomAuthhttpHeaderAuth
For the full experience including quality scoring and batch install features for each workflow upgrade to Pro
How this works
Easily manipulate PDFs by uploading files to Dropbox and applying transformations like merging or querying content via the Adobe Developer API, saving hours of manual editing for content creators and document managers. This workflow suits teams handling reports, contracts, or marketing materials who need automated processing without desktop software. The key step merges the uploaded PDF with API queries to generate custom outputs, integrating seamlessly with Dropbox for file handling and Adobe for precise manipulations.
Use this workflow when you require event-driven PDF adjustments triggered by new Dropbox uploads, such as batch processing client documents or extracting data for analysis. Avoid it for simple viewing tasks or when lacking Adobe API credentials, as it demands setup for authentication. Common variations include adding email notifications post-processing or chaining to other workflows for multi-step document pipelines.
About this workflow
Manipulate Pdf With Adobe Developer Api. Uses manualTrigger, httpRequest, executeWorkflowTrigger, stickyNote. Event-driven trigger; 20 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.
Generate Leads with Google Maps - AlexK1919. Uses manualTrigger, scheduleTrigger, executeWorkflowTrigger, stopAndError. Event-driven trigger; 42 nodes.
Http Stickynote. Uses httpRequest, executeWorkflowTrigger, stickyNote, sendInBlue. Event-driven trigger; 22 nodes.
[2/2] KNN classifier (lands dataset). Uses httpRequest, stickyNote, executeWorkflowTrigger. Event-driven trigger; 18 nodes.
[3/3] Anomaly detection tool (crops dataset). Uses stickyNote, httpRequest, executeWorkflowTrigger. Event-driven trigger; 17 nodes.
airflow dag_run. Uses httpRequest, stopAndError, executeWorkflowTrigger. Event-driven trigger; 12 nodes.