Get a background job and its result
platform.jobs.get
Returns a background job (an export or an import started with crm.exports.create or crm.imports.create, or from the app's CSV import wizard, which shows as crm.imports.create): status (queued, running, done, failed), progress, what was asked and, when it is done, the result. For an export, result.url is a signed download link to the CSV, valid 24 hours (never longer than the job, kept 7 days): call this again for a fresh one. The link is signed with the caller's permissions of that moment: without the CRM's export_data permission, a finished export answers 403 crm_action_denied. For an import, result.summary has the counters (created_persons, duplicates, errors…) and result.row_errors the first 100 rows that failed. When it failed, error.code says why (job_creator_unavailable, crm_action_denied, module_access_denied, organization_archived, organization_not_found, quota_exceeded, platform_disabled, payment_required, internal_error). Jobs advance on their own, and reading one that stopped resumes it at once. Poll every few seconds, or subscribe a webhook to job.completed. Each person sees the jobs they started; owners and admins see all of the organization. Not found if it does not exist, expired, or belongs to someone else. Module: Organization (organizations), even though the id starts with platform.; the credential needs the read scope of the module that owns the record (for example crm:read for a deal). With Google Ads, LinkedIn or TikTok, their terms limit it through the API and the MCP: what they do not allow answers 403 platform_terms_restricted, and their fields are left out of the response (the permissions guide lists what each platform allows).
Instrucciones para agentes
While status is queued or running, wait a few seconds and ask again. When an export is done, hand the person result.url and say until when it works (result.url_expires_at). If the result has no url, the file is downloaded from the app's screen.
- Alcance
organizations:read- Permiso
- Ver el módulo
- Tool del MCP
platform_jobs_getEn la superficie completa; en la compacta,mb_execute_operationconid: "platform.jobs.get".
Costo declarado: hasta 2 lecturas y 0 escrituras por llamada (cuentan en el cupo diario).
Parámetros
job_idstringrutaThe job id (job_…), as crm.exports.create, crm.imports.create or platform.jobs.list return it.
Respuesta
idstringThe job id (job_…).
typeenumexport or import.
Valores: export, import
operation_idstringThe operation that created it (crm.exports.create, crm.imports.create).
modulestringThe module of the data: reading the job needs read access to it.
statusenumqueued, running, done or failed.
Valores: queued, running, done, failed
progressobjectHow far it is.
paramsobjectWhat was asked, without personal data (the entity and its filters; the destination and the number of rows).
created_byobjectWho started it.
created_atnumberWhen it was created (epoch ms).
expires_atnumberWhen it is deleted with its files (epoch ms): 7 days after it was created.
resultobjectWhen it is done.
errorobjectWhen it failed.
started_atnumberWhen it started running (epoch ms).
finished_atnumberWhen it finished (epoch ms).
Errores
Ejemplo
curl "https://api.mb-suite.com/v1/jobs/{job_id}" \
-H "Authorization: Bearer $MB_API_KEY"Probar con tu API key de prueba
Con una API key de prueba el pedido va siempre a tu organización de práctica: datos de ejemplo que puedes reiniciar.
curl "https://api.mb-suite.com/v1/jobs/{job_id}" \
-H "Authorization: Bearer $MB_TEST_KEY"