Menú

Referencia de la API · Organización

Trabajos

organizations · jobs · 2 operaciones

GET/v1/jobs/{job_id}

Get a background job and its result

platform.jobs.get

LecturaIdempotenteDesde 2026-11-01

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_operation con id: "platform.jobs.get".

Costo declarado: hasta 2 lecturas y 0 escrituras por llamada (cuentan en el cupo diario).

Parámetros

job_idstringrutarequerido

The job id (job_…), as crm.exports.create, crm.imports.create or platform.jobs.list return it.

Respuesta

idstring

The job id (job_…).

typeenum

export or import.

Valores: export, import

operation_idstring

The operation that created it (crm.exports.create, crm.imports.create).

modulestring

The module of the data: reading the job needs read access to it.

statusenum

queued, running, done or failed.

Valores: queued, running, done, failed

progressobject

How far it is.

paramsobject

What was asked, without personal data (the entity and its filters; the destination and the number of rows).

created_byobject

Who started it.

created_atnumber

When it was created (epoch ms).

expires_atnumber

When it is deleted with its files (epoch ms): 7 days after it was created.

resultobject

When it is done.

errorobject

When it failed.

started_atnumber

When it started running (epoch ms).

finished_atnumber

When 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"
GET/v1/jobs

List background jobs

platform.jobs.list

LecturaIdempotenteDesde 2026-11-01

Lists the background jobs of the organization, newest first, paginated by cursor: exports and imports (also the ones started from the app's CSV import wizard) with their status, progress and result counters. Each person sees the jobs they started; owners and admins see all. Filter by type (export, import) or status (queued, running, done, failed). The download link of an export is not in the list: get it with platform.jobs.get. A credential only sees the jobs of modules it can read. Jobs are kept 7 days; expired ones are left out, so a page can bring fewer than limit while has_more is true. Module: Organization (organizations), even though the id starts with platform.; any valid credential can read it. 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).

Alcance
organizations:read
Permiso
Ver el módulo
Tool del MCP
platform_jobs_listEn la superficie completa; en la compacta, mb_execute_operation con id: "platform.jobs.list".

Costo declarado: hasta 201 lecturas y 0 escrituras por llamada (cuentan en el cupo diario).

Parámetros

typeenumqueryopcional

Only exports or only imports.

Valores: export, import

statusenumqueryopcional

Only the jobs in this status.

Valores: queued, running, done, failed

limitintegerqueryopcional

How many jobs this page brings at most.

Por defecto: 20

cursorstringqueryopcional

The next_cursor of the previous page, exactly as it came; without it, the first page.

Respuesta

dataarray<object>
has_moreboolean

True when more jobs follow: ask again with next_cursor.

next_cursorstring

Pass it as cursor to get the next page.

Errores

Ejemplo

curl "https://api.mb-suite.com/v1/jobs" \
  -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" \
  -H "Authorization: Bearer $MB_TEST_KEY"