curl --request GET \
--url https://api.example.com/api/export/providers{
"root": [
{
"name": "<string>",
"code": "<string>",
"baseUrl": "<string>",
"authenticationType": {},
"apiKeyLocation": {},
"apiKeyName": "<string>",
"apiKeyValue": "<string>",
"isDynamicAuth": true,
"dynamicAuthUrl": "<string>",
"dynamicAuthMethod": {},
"dynamicAuthPayloadType": {},
"dynamicAuthPayloadLocation": {},
"dynamicAuthPayload": "<string>",
"dynamicAuthTokenExtractionPath": "<string>",
"dynamicAuthInvalidationKeywords": "<string>",
"customHeaders": {},
"tools": [
{
"name": "<string>",
"code": "<string>",
"description": "<string>",
"endpointPath": "<string>",
"httpMethod": {},
"parameters": [
{
"name": "<string>",
"type": "<string>",
"description": "<string>",
"required": true,
"defaultValue": "<string>"
}
]
}
]
}
]
}Export provider configurations with tools and parameters
curl --request GET \
--url https://api.example.com/api/export/providers{
"root": [
{
"name": "<string>",
"code": "<string>",
"baseUrl": "<string>",
"authenticationType": {},
"apiKeyLocation": {},
"apiKeyName": "<string>",
"apiKeyValue": "<string>",
"isDynamicAuth": true,
"dynamicAuthUrl": "<string>",
"dynamicAuthMethod": {},
"dynamicAuthPayloadType": {},
"dynamicAuthPayloadLocation": {},
"dynamicAuthPayload": "<string>",
"dynamicAuthTokenExtractionPath": "<string>",
"dynamicAuthInvalidationKeywords": "<string>",
"customHeaders": {},
"tools": [
{
"name": "<string>",
"code": "<string>",
"description": "<string>",
"endpointPath": "<string>",
"httpMethod": {},
"parameters": [
{
"name": "<string>",
"type": "<string>",
"description": "<string>",
"required": true,
"defaultValue": "<string>"
}
]
}
]
}
]
}GET /api/export/providers
?ids=1,2,3Show Provider Object
API_KEY, BEARER_TOKEN, BASIC_AUTH, NONEHEADER, QUERY_PARAM, IN_BODY<YOUR_API_KEY> when an API key exists, or null if no key is configured. Real API keys are never exposed in exports.GET, POST, PUT, PATCH, DELETEJSON, FORM_DATA, XMLBODY, QUERY_PARAMS, HEADERSShow Tool Object
/repos/{owner}/{repo}GET, POST, PUT, PATCH, DELETEShow Parameter Object
apiKeyValue field is always masked in export responses:
<YOUR_API_KEY>null<YOUR_API_KEY> value. The import endpoint will skip this placeholder and preserve existing API keys.Content-Disposition: attachment; filename=handsai_tools_export.json
curl http://localhost:8080/api/export/providers
curl "http://localhost:8080/api/export/providers?ids=1,3,5"
[
{
"name": "Resend API",
"code": "resend",
"baseUrl": "https://api.resend.com",
"authenticationType": "BEARER_TOKEN",
"apiKeyLocation": "HEADER",
"apiKeyName": "Authorization",
"apiKeyValue": "<YOUR_API_KEY>",
"isDynamicAuth": false,
"dynamicAuthUrl": null,
"dynamicAuthMethod": null,
"dynamicAuthPayloadType": null,
"dynamicAuthPayloadLocation": null,
"dynamicAuthPayload": null,
"dynamicAuthTokenExtractionPath": null,
"dynamicAuthInvalidationKeywords": null,
"customHeaders": {
"Content-Type": "application/json",
"User-Agent": "HandsAI/1.0"
},
"tools": [
{
"name": "Enviar Email (Resend)",
"code": "resend-send-email",
"description": "Envía un correo electrónico usando la API de Resend.",
"endpointPath": "/emails",
"httpMethod": "POST",
"parameters": [
{
"name": "from",
"type": "STRING",
"description": "Dirección de envío (ej. Acme <[email protected]>). Debe ser un dominio verificado.",
"required": true,
"defaultValue": ""
},
{
"name": "to",
"type": "STRING",
"description": "Dirección del destinatario.",
"required": true,
"defaultValue": ""
},
{
"name": "subject",
"type": "STRING",
"description": "Asunto del correo electrónico.",
"required": true,
"defaultValue": ""
},
{
"name": "html",
"type": "STRING",
"description": "Cuerpo del correo en formato HTML.",
"required": true,
"defaultValue": ""
}
]
}
]
},
{
"name": "GitHub REST API",
"code": "github",
"baseUrl": "https://api.github.com",
"authenticationType": "BEARER_TOKEN",
"apiKeyLocation": "HEADER",
"apiKeyName": "Authorization",
"apiKeyValue": "<YOUR_API_KEY>",
"isDynamicAuth": false,
"dynamicAuthUrl": null,
"dynamicAuthMethod": null,
"dynamicAuthPayloadType": null,
"dynamicAuthPayloadLocation": null,
"dynamicAuthPayload": null,
"dynamicAuthTokenExtractionPath": null,
"dynamicAuthInvalidationKeywords": null,
"customHeaders": {
"Accept": "application/vnd.github+json",
"X-GitHub-Api-Version": "2022-11-28",
"User-Agent": "HandsAI/1.0"
},
"tools": [
{
"name": "Crear Issue Github",
"code": "github-create-issue",
"description": "Crea un 'issue' o tarea nueva en un repositorio de GitHub.",
"endpointPath": "/repos/{owner}/{repo}/issues",
"httpMethod": "POST",
"parameters": [
{
"name": "owner",
"type": "STRING",
"description": "Dueño del repositorio (usuario u organización, ej. 'facebook').",
"required": true,
"defaultValue": ""
},
{
"name": "repo",
"type": "STRING",
"description": "Nombre del repositorio (ej. 'react').",
"required": true,
"defaultValue": ""
},
{
"name": "title",
"type": "STRING",
"description": "Título del Issue.",
"required": true,
"defaultValue": ""
},
{
"name": "body",
"type": "STRING",
"description": "Cuerpo/Descripción del issue (acepta Markdown).",
"required": false,
"defaultValue": ""
}
]
}
]
}
]
exportable in the database will be included/api/import/providers endpoint