Back to top

Mensagia API

API Version

Versión 1.6.0

API Changelog

Consulta los cambios realizados en la API de Mensagia y posibles métodos o atributos marcados como obsoletos (deprecated). Consultar Changelog

API Host

Todas las peticiones que se realicen a la API de Mensagia deben ser enviadas a la siguiente URL:

https://api.mensagia.com/v1

Interactuar con la API

Si quieres probar nuestra API de una manera rápida te recomendamos el uso de PostMan. Postman es una extensión de Google Chrome que permite interactuar con HTTP API’s de forma sencilla a través de una interfaz amigable para construir peticiones y obtener respuestas.

Lenguaje HTTP client libraries
PHP cURL, Guzzle
Python urlLib2 + MultipartPostHandler

Codigos de estado de respuesta HTTP

La API de Mensagia utiliza los Códigos de estado de respuesta HTTP más utilizados.

Puedes considerar todas las respuestas que no sean devueltas con un código HTTP 200 como un error.

Formato de respuestas de la API

Siempre que realices una petición correcta a la API obtendrás un JSON con el atributo data y un código de respuesta HTTP 200

{
  "data": {
    ...
  }
}

Por el contrario, las peticiones incorrectas devolverán un JSON con el atributo error y un código de respuesta diferente a HTTP 200

{
  "error": {
    "code": "CODE",
    "http_code": HTTP_CODE,
    "message": "error information"
  }
}

En esta documentación encontrarás ejemplos para cada recurso de la API con las diferentes posibles respuestas HTTP al realizar una petición.

Como autentificarse en la API

Para usar los métodos de la API, debes obtener un token de acceso válido. Una vez obtengas un token válido, deberás adjuntarlo en las cabeceras HTTP con cada petición que realices a la API y servirá para autentifacarte en la API de Mensagia. Este método proporciona un acceso seguro a la API y permite asociar tus llamadas a la API con su cuenta.

Para obtener un nuevo token, usa el método de autentificación

Si la autentificación es válida, obtendrás un token valido que expirará en cierto tiempo. Cuando el token expire, deberás pedir un nuevo token para seguir realizando peticiones a la API. Utiliza los atributos expires_in que te informa en cuantos minutos expirará el token y expires_at para conocer la fecha exacta de expiración del token.

{
  "data": {
    "token": "eyJXXXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwOi8vYXBpLm1lbnNhZgghLmRldi92MS9sb2dpbiIsImlhdCI6MTQ2NDM1NDY5OSwiZXhwIjoxNDY0MzU4Mjk5LCJuYmYisfE0NjQzNTQ2OTksImp0aSI6IjIyNDg4Y2IxM2RkNzZlODZjM2NhZWZhZjNhMDBkMjkzIiwic3ViIjoxNH0.F3q4ckNbI8sMg9RX_iRSyrEmGWW3oyO8dMcasKl5xer",
    "expires_in": 60,
    "expires_at": "2016-05-27 10:35:06 GMT"
  }
}

Para realizar peticiones a los métodos de la API, debes adjuntar en las cabeceras de tu petición una cabecera Authorization añadiendo el tipo de token obtenido y el valor del token

Authorization: Bearer eyJXXXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwOi8vYXBpLm1lbnNhZgghLmRldi92MS9sb2dpbiIsImlhdCI6MTQ2NDM1NDY5OSwiZXhwIjoxNDY0MzU4Mjk5LCJuYmYisfE0NjQzNTQ2OTksImp0aSI6IjIyNDg4Y2IxM2RkNzZlODZjM2NhZWZhZjNhMDBkMjkzIiwic3ViIjoxNH0.F3q4ckNbI8sMg9RX_iRSyrEmGWW3oyO8dMcasKl5xer

Realizar una petición sin la cabecera de Authorization o con un token inválido o caducado generará el siguiente error:

{
  "error": {
    "code": "UNAUTHORIZED",
    "http_code": 401,
    "message": "Login required. You must provide a valid access token."
  }
}

Autentificacion

Antes de realizar cualquier petición a la API, debes obtener un token válido. Una vez obtengas un token válido, podrás realizar peticiones a la API de Mensagia.

Obtener un token

Obtener un token
POST/login{?email,password}

Obtén un token válido para poder realizar peticiones a la API

Example URI

POST https://api.mensagia.com/v1/login?email=email@myemail.com&password=mypassword
URI Parameters
HideShow
email
string (required) Example: email@myemail.com

Un email válido

password
string (required) Example: mypassword

Una contraseña válida

Response  200
HideShow
Headers
Content-Type: application/json
Body
{
  "data": {
    "token": "eyJXXXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwOi8vYXBpLm1lbnNhZgghLmRldi92MS9sb2dpbiIsImlhdCI6MTQ2NDM1NDY5OSwiZXhwIjoxNDY0MzU4Mjk5LCJuYmYisfE0NjQzNTQ2OTksImp0aSI6IjIyNDg4Y2IxM2RkNzZlODZjM2NhZWZhZjNhMDBkMjkzIiwic3ViIjoxNH0.F3q4ckNbI8sMg9RX_iRSyrEmGWW3oyO8dMcasKl5xer",
    "expires_in": 60,
    "expires_at": "2016-05-27 14:11:39 GMT"
  }
}
Response  400
HideShow
Headers
Content-Type: application/json
Body
{
  "error": {
    "code": "VALIDATION_FAIL",
    "http_code": 400,
    "message": "The email field is required. The password field is required. "
  }
}
Response  400
HideShow
Headers
Content-Type: application/json
Body
{
  "error": {
    "code": "USER_TYPE_NOT_VALID",
    "http_code": 400,
    "message": "The type of user you are trying to access does not have access to the API. Only 'manager' users and distributor users are allowed."
  }
}
Response  400
HideShow
Headers
Content-Type: application/json
Body
{
  "error": {
    "code": "TOKEN_EXPIRED",
    "http_code": 400,
    "message": "The token has expired."
  }
}
Response  400
HideShow
Headers
Content-Type: application/json
Body
{
  "error": {
    "code": "TOKEN_ABSENT",
    "http_code": 400,
    "message": "The token is absent."
  }
}
Response  404
HideShow
Headers
Content-Type: application/json
Body
{
  "error": {
    "code": "USER_NOT_FOUND",
    "http_code": 404,
    "message": "The login and password does not match to an active account"
  }
}

Precios Envio SMS

Obtén los precios que tienes asignados para el envío de SMS.

Distribuidores y clientes pueden llamar a este método.

Puedes obtener más información sobre las peticiones de saldo y las rutas de envío en la documentación de Mensagia.

Obtener precios envio SMS

Obtener precios envio SMS
GET/prices/routes

Obtén los precios del envío de SMS para cada país que tienes asignado. El país está identificado como un código de país ISO 3166

Example URI

GET https://api.mensagia.com/v1/prices/routes
Response  200
HideShow
Headers
Content-Type: application/json
Body
{
  "data": {
    "conexion-directa": {
      "es": {
        "price": 0.048
      },
      "ad": {
        "price": 0.024
      },
      "ae": {
        "price": 0.048
      },
      "af": {
        "price": 0.048
      },
      "ag": {
        "price": 0.048
      },
      "ai": {
        "price": 0.048
      },
      "al": {
        "price": 0.048
      },
      "am": {
        "price": 0.048
      },
      "ao": {
        "price": 0.048
      },
      "aq": {
        "price": 0.048
      },
      "ar": {
        "price": 0.048
      },
      "as": {
        "price": 0.048
      },
      "fr": {
        "price": 0.034
      }
    }
  }
}
Response  500
HideShow
Headers
Content-Type: application/json
Body
{
  "error": {
    "code": "INTERNAL_ERROR",
    "http_code": 500,
    "message": "Internal Server Error."
  }
}

Saldo

Obten el saldo actual y gestiona las compras de saldo de tu cuenta.

ID’S de estado de una petición de saldo

Este listado corresponde a todos los estados posibles que puede tener una petición de saldo

ID de estado Nombre del estado
0 Pendiente
1 Aceptada
2 Remitida
3 Cancelada
4 Rechazada

Puedes obtener más información sobre las Compras de saldo en la documentación de Mensagia.

Obtener el saldo actual

Obtener el saldo actual
GET/balance

Obten el saldo actuar de tu cuenta.

Este método puede ser usado tanto por clientes como por distribuidores

Example URI

GET https://api.mensagia.com/v1/balance
Response  200
HideShow
Headers
Content-Type: application/json
Body
{
  "data": {
    "balance": 1,
    "currency": "€"
  }
}
Response  403
HideShow
Headers
Content-Type: application/json
Body
{
  "error": {
    "code": "FORBIDDEN",
    "http_code": 403,
    "message": "Forbidden: This method must be called from customer account"
  }
}
Response  500
HideShow
Headers
Content-Type: application/json
Body
{
  "error": {
    "code": "INTERNAL_ERROR",
    "http_code": 500,
    "message": "Internal Server Error."
  }
}

Obtener todas las compras de saldo

Obtener todas las compras de saldo
GET/balance/requests/{?request_state_id,page,per_page}

Este método te permite obtenter todas las compras de saldo de tu cuenta.

Este método puede ser usado tanto por clientes como por distribuidores

Example URI

GET https://api.mensagia.com/v1/balance/requests/?request_state_id=1&page=1&per_page=20
URI Parameters
HideShow
request_state_id
number (optional) Example: 1

Envia un ID de estado de petición de saldo para filtrar los resultados por el estado de petición que elijas

finish_date_min
datetime (optional) Example: 2016-01-01 12:30:00

Envía este parámetro si quieres buscar compras de saldo que su fecha de finalización sea más grande o igual que el valor de finish_date_min.

finish_date_max
datetime (optional) Example: 2017-01-01 12:30:00

Envía este parámetro si quieres buscar compras de saldo que su fecha de finalización sea más pequeña o igual al valor de finish_date_max.

page
number (optional) Example: 1

Si existe páginado, indica el número de página a obtener

per_page
number (optional) Default: 10 Example: 20

Indica el número de elementos por página que quieres obtener

Response  200
HideShow
Headers
Content-Type: application/json
Body
{
  "data": [
    {
      "id": 17,
      "amount": 34,
      "creation_date": "2017-02-06 12:53:04",
      "finish_date": "2017-02-06 12:53:27",
      "request_state_id": 1,
      "request_state_name": "Accepted",
      "observations": "C: Customer \n "
    },
    {
      "id": 10,
      "amount": 34,
      "creation_date": "2017-02-06 10:54:54",
      "finish_date": "",
      "request_state_id": 0,
      "request_state_name": "Pending",
      "observations": "C: Customer \n "
    },
    {
      "id": 9,
      "amount": 34,
      "creation_date": "2017-02-06 10:00:57",
      "finish_date": "",
      "request_state_id": 0,
      "request_state_name": "Pending",
      "observations": "C: Customer \n "
    },
    {
      "id": 8,
      "amount": 34,
      "creation_date": "2017-02-06 10:00:55",
      "finish_date": "2017-02-06 10:27:48",
      "request_state_id": 3,
      "request_state_name": "Canceled",
      "observations": "C: Customer \n "
    },
    {
      "id": 7,
      "amount": 34,
      "creation_date": "2017-02-06 09:52:28",
      "finish_date": "2017-02-06 10:01:07",
      "request_state_id": 3,
      "request_state_name": "Canceled",
      "observations": "C: Customer \n "
    },
    {
      "id": 6,
      "amount": 34,
      "creation_date": "2017-02-06 09:52:14",
      "finish_date": "2017-02-06 09:52:47",
      "request_state_id": 3,
      "request_state_name": "Canceled",
      "observations": "C: Customer \n "
    },
    {
      "id": 5,
      "amount": 34,
      "creation_date": "2017-02-06 09:50:16",
      "finish_date": "2017-02-06 09:51:33",
      "request_state_id": 3,
      "request_state_name": "Canceled",
      "observations": "C: Customer \n "
    },
    {
      "id": 4,
      "amount": 34,
      "creation_date": "2017-02-06 09:50:13",
      "finish_date": "2017-02-06 09:50:38",
      "request_state_id": 3,
      "request_state_name": "Canceled",
      "observations": "C: Customer \n "
    },
    {
      "id": 3,
      "amount": 34,
      "creation_date": "2017-02-06 09:40:58",
      "finish_date": "2017-02-06 09:50:23",
      "request_state_id": 3,
      "request_state_name": "Canceled",
      "observations": "C: Customer \n "
    },
    {
      "id": 2,
      "amount": 34,
      "creation_date": "2017-02-06 09:35:56",
      "finish_date": "2017-02-06 09:40:17",
      "request_state_id": 3,
      "request_state_name": "Canceled",
      "observations": "C: Customer \n "
    }
  ],
  "meta": {
    "pagination": {
      "total": 11,
      "count": 10,
      "per_page": 10,
      "current_page": 1,
      "total_pages": 2,
      "links": {
        "next": "https://api.mensagia.com/v1/balance/requests?page=2"
      }
    }
  }
}
Response  400
HideShow
Headers
Content-Type: application/json
Body
{
  "error": {
    "code": "WRONG_ARGS",
    "http_code": 400,
    "message": "request_state_id must be an integer."
  }
}
Response  400
HideShow
Headers
Content-Type: application/json
Body
{
  "error": {
    "code": "WRONG_ARGS",
    "http_code": 400,
    "message": "finish_date_min is not a valid datetime."
  }
}
Response  400
HideShow
Headers
Content-Type: application/json
Body
{
  "error": {
    "code": "WRONG_ARGS",
    "http_code": 400,
    "message": "finish_date_max is not a valid datetime."
  }
}
Response  500
HideShow
Headers
Content-Type: application/json
Body
{
  "error": {
    "code": "INTERNAL_ERROR",
    "http_code": 500,
    "message": "Internal Server Error. Internal code: #0123456789"
  }
}

Obtener una compra de saldo

Obtener una compra de saldo
GET/balance/requests/{id}

Este método te permite obtenter una petición de saldo de tu cuenta.

Este método puede ser usado tanto por clientes como por distribuidores

Example URI

GET https://api.mensagia.com/v1/balance/requests/17
URI Parameters
HideShow
id
integer (required) Example: 17

ID de la petición de saldo

Response  200
HideShow
Headers
Content-Type: application/json
Body
{
  "data": {
    "id": 16,
    "amount": 34,
    "creation_date": "2017-02-06 12:51:35",
    "finish_date": "",
    "request_state_id": 0,
    "request_state_name": "Pending",
    "observations": "C: Customer \n "
  }
}
Response  400
HideShow
Headers
Content-Type: application/json
Body
{
  "error": {
    "code": "WRONG_ARGS",
    "http_code": 400,
    "message": "ID must be an integer."
  }
}
Response  404
HideShow
Headers
Content-Type: application/json
Body
{
  "error": {
    "code": "NOT_FOUND",
    "http_code": 404,
    "message": "Request not found with id: 23"
  }
}
Response  500
HideShow
Headers
Content-Type: application/json
Body
{
  "error": {
    "code": "INTERNAL_ERROR",
    "http_code": 500,
    "message": "Internal Server Error. Internal code: #0123456789"
  }
}

Realizar una compra de saldo

Realizar una compra de saldo
POST/balance/requests/{?amount,observations}

Este método te permite crear una petición de saldo.

Este método puede ser usado tanto por clientes como por distribuidores

Example URI

POST https://api.mensagia.com/v1/balance/requests/?amount=50&observations=This is a new observation
URI Parameters
HideShow
amount
numeric (required) Example: 50

Cantidad en euros de la petición ha realizar

observations
string (optional) Example: This is a new observation

Puedes añadir observaciones para que tu distribuidor las lea antes de aceptar la petición.

Response  200
HideShow
Body
{
  "data": {
    "id": 22,
    "amount": 34,
    "creation_date": "2017-02-07 09:25:05",
    "finish_date": "",
    "request_state_id": 0,
    "request_state_name": "Pending",
    "observations": "C: Customer \n This is a new observation."
  }
}
Response  400
HideShow
Headers
Content-Type: application/json
Body
{
  "error": {
    "code": "VALIDATION_FAIL",
    "message": "The data validation is not correct. See validation_errors array.",
    "http_code": "400",
    "validation_errors": {
      "amount": [
        "The amount must be a number."
      ]
    }
  }
}
Response  500
HideShow
Headers
Content-Type: application/json
Body
{
  "error": {
    "code": "INTERNAL_ERROR",
    "http_code": 500,
    "message": "Internal Server Error. Internal code: #0123456789"
  }
}

Aceptar una compra de saldo

Aceptar una compra de saldo
POST/balance/requests/{id}/accept/

Este método te permite aceptar una petición de saldo de un distribuidor o un cliente que esté bajo tu supervisión.

Este método puede ser usado únicamente por distribuidores ya que són los únicos que pueden aceptar peticones de saldo.

Example URI

POST https://api.mensagia.com/v1/balance/requests/23/accept/
URI Parameters
HideShow
id
integer (required) Example: 23

ID de la petición de saldo a aceptar

Response  200
HideShow
Body
{
  "data": {
    "id": 21,
    "amount": 33,
    "creation_date": "2017-02-06 14:56:47",
    "finish_date": "2017-02-07 09:55:43",
    "request_state_id": 1,
    "request_state_name": "Accepted",
    "observations": "D: Distribuidor \n "
  }
}
Response  400
HideShow
Headers
Content-Type: application/json
Body
{
  "error": {
    "code": "WRONG_ARGS",
    "http_code": 400,
    "message": "ID must be an integer."
  }
}
Response  403
HideShow
Headers
Content-Type: application/json
Body
{
  "error": {
    "code": "FORBIDDEN",
    "http_code": 403,
    "message": "Forbidden: You are not allowed to accept this request."
  }
}
Response  403
HideShow
Headers
Content-Type: application/json
Body
{
  "error": {
    "code": "FORBIDDEN",
    "http_code": 403,
    "message": "Forbidden: The request you are trying to acce` is already accepted."
  }
}
Response  403
HideShow
Headers
Content-Type: application/json
Body
{
  "error": {
    "code": "FORBIDDEN",
    "http_code": 403,
    "message": "Forbidden: The request you are trying to accept can not be accepted."
  }
}
Response  404
HideShow
Headers
Content-Type: application/json
Body
{
  "error": {
    "code": "NOT_FOUND",
    "http_code": 404,
    "message": "Request not found with id: 23"
  }
}
Response  409
HideShow
Headers
Content-Type: application/json
Body
{
  "error": {
    "code": "CONFLICT",
    "http_code": 409,
    "message": "No puedes aceptar esta venta porque el cliente y/o distribuidor que la ha solicitado no dispone de precios para ningún país."
  }
}
Response  409
HideShow
Headers
Content-Type: application/json
Body
{
  "error": {
    "code": "CONFLICT",
    "http_code": 409,
    "message": "No puedes aceptar esta venta porque no dispones de suficiente saldo. Remite esta venta a tu distribuidor o solicita saldo en una nueva compra. Te faltan 23.32 €."
  }
}
Response  500
HideShow
Headers
Content-Type: application/json
Body
{
  "error": {
    "code": "INTERNAL_ERROR",
    "http_code": 500,
    "message": "Internal Server Error. Internal code: #0123456789"
  }
}

Cancelar una compra de saldo

Cancelar una compra de saldo
POST/balance/requests/{id}/cancel/

Este método te permite cancelar una petición de saldo que hayas realizado.

Este método puede ser usado tanto por clientes como por distribuidores

Example URI

POST https://api.mensagia.com/v1/balance/requests/23/cancel/
URI Parameters
HideShow
id
integer (required) Example: 23

ID de la petición de saldo a cancelar

Response  200
HideShow
Body
{
  "data": {
    "id": 23,
    "amount": 34,
    "creation_date": "2017-02-07 09:37:08",
    "finish_date": "2017-02-07 09:37:19",
    "request_state_id": 3,
    "request_state_name": "Canceled",
    "observations": "C: Customer \n This is a new observation."
  }
}
Response  400
HideShow
Headers
Content-Type: application/json
Body
{
  "error": {
    "code": "WRONG_ARGS",
    "http_code": 400,
    "message": "ID must be an integer."
  }
}
Response  403
HideShow
Headers
Content-Type: application/json
Body
{
  "error": {
    "code": "FORBIDDEN",
    "http_code": 403,
    "message": "Forbidden: You are not allowed to cancel this request."
  }
}
Response  403
HideShow
Headers
Content-Type: application/json
Body
{
  "error": {
    "code": "FORBIDDEN",
    "http_code": 403,
    "message": "Forbidden: The request you are trying to cancel is already canceled."
  }
}
Response  403
HideShow
Headers
Content-Type: application/json
Body
{
  "error": {
    "code": "FORBIDDEN",
    "http_code": 403,
    "message": "Forbidden: The request you are trying to cancel can not be canceled."
  }
}
Response  404
HideShow
Headers
Content-Type: application/json
Body
{
  "error": {
    "code": "NOT_FOUND",
    "http_code": 404,
    "message": "Request not found with id: 23"
  }
}
Response  500
HideShow
Headers
Content-Type: application/json
Body
{
  "error": {
    "code": "INTERNAL_ERROR",
    "http_code": 500,
    "message": "Internal Server Error. Internal code: #0123456789"
  }
}

Rechazar una compra de saldo

Rechazar una compra de saldo
POST/balance/requests/{id}/reject/

Este método te permite rechazar una petición de saldo de un cliente o distribuidor que esté bajo tu supervisión.

Este método puede ser usado únicamente por distribuidores ya que són los únicos que pueden rechazar peticones de saldo.

Example URI

POST https://api.mensagia.com/v1/balance/requests/23/reject/
URI Parameters
HideShow
id
integer (required) Example: 23

ID de la petición de saldo a rechazar

Response  200
HideShow
Body
{
  "data": {
    "id": 22,
    "amount": 34,
    "creation_date": "2017-02-07 09:25:05",
    "finish_date": "2017-02-07 09:46:40",
    "request_state_id": 4,
    "request_state_name": "Rejected",
    "observations": "C: Customer \n."
  }
}
Response  400
HideShow
Headers
Content-Type: application/json
Body
{
  "error": {
    "code": "WRONG_ARGS",
    "http_code": 400,
    "message": "ID must be an integer."
  }
}
Response  403
HideShow
Headers
Content-Type: application/json
Body
{
  "error": {
    "code": "FORBIDDEN",
    "http_code": 403,
    "message": "Forbidden: You are not allowed to reject this request."
  }
}
Response  403
HideShow
Headers
Content-Type: application/json
Body
{
  "error": {
    "code": "FORBIDDEN",
    "http_code": 403,
    "message": "Forbidden: The request you are trying to reject is already rejected."
  }
}
Response  403
HideShow
Headers
Content-Type: application/json
Body
{
  "error": {
    "code": "FORBIDDEN",
    "http_code": 403,
    "message": "Forbidden: The request you are trying to reject can not be rejected."
  }
}
Response  404
HideShow
Headers
Content-Type: application/json
Body
{
  "error": {
    "code": "NOT_FOUND",
    "http_code": 404,
    "message": "Request not found with id: 23"
  }
}
Response  500
HideShow
Headers
Content-Type: application/json
Body
{
  "error": {
    "code": "INTERNAL_ERROR",
    "http_code": 500,
    "message": "Internal Server Error. Internal code: #0123456789"
  }
}

Remitir una compra de saldo

Remitir una compra de saldo
POST/balance/requests/{id}/forward/

Este método te permite remitir una petición de saldo a tu distribuidor superior.

Este método puede ser usado únicamente por distribuidores ya que són los únicos que pueden remitir peticones de saldo.

Example URI

POST https://api.mensagia.com/v1/balance/requests/23/forward/
URI Parameters
HideShow
id
integer (required) Example: 23

ID de la petición de saldo a remitir

Response  200
HideShow
Body
{
  "data": {
    "id": 22,
    "amount": 34,
    "creation_date": "2017-02-07 09:25:05",
    "finish_date": "2017-02-07 09:46:40",
    "request_state_id": 4,
    "request_state_name": "Rejected",
    "observations": "C: Customer \n."
  }
}
Response  400
HideShow
Headers
Content-Type: application/json
Body
{
  "error": {
    "code": "WRONG_ARGS",
    "http_code": 400,
    "message": "ID must be an integer."
  }
}
Response  403
HideShow
Headers
Content-Type: application/json
Body
{
  "error": {
    "code": "FORBIDDEN",
    "http_code": 403,
    "message": "Forbidden: You are not allowed to forward this request."
  }
}
Response  403
HideShow
Headers
Content-Type: application/json
Body
{
  "error": {
    "code": "FORBIDDEN",
    "http_code": 403,
    "message": "Forbidden: The request you are trying to forward is already forwarded."
  }
}
Response  403
HideShow
Headers
Content-Type: application/json
Body
{
  "error": {
    "code": "FORBIDDEN",
    "http_code": 403,
    "message": "Forbidden: The request you are trying to forward can not be forwarded."
  }
}
Response  404
HideShow
Headers
Content-Type: application/json
Body
{
  "error": {
    "code": "NOT_FOUND",
    "http_code": 404,
    "message": "Request not found with id: 23"
  }
}
Response  500
HideShow
Headers
Content-Type: application/json
Body
{
  "error": {
    "code": "INTERNAL_ERROR",
    "http_code": 500,
    "message": "Internal Server Error. Internal code: #0123456789"
  }
}

Configuraciones de envio

Métodos para consultar las configuraciones de envío. Los métodos de la API que envían SMS necesitan el parámetro configuration_name. Con este método puedes consultar las configuraciones de envío creadas en tu cuenta y usarlas en envíos SMS.

Puedes obtener más información sobre las configuraciones de envío en la documentación de Mensagia.

Accesible únicamente para cuentas de tipo cliente

Obtener todas las configuraciones de envio

Obtener todas las configuraciones de envio
GET/api_configurations/{?name,search_type,page,per_page}

Este método te permite obtenter todas las configuraciones de envío de tu cuenta.

Example URI

GET https://api.mensagia.com/v1/api_configurations/?name=user&search_type=equals&page=1&per_page=20
URI Parameters
HideShow
name
string (optional) Example: user

Envia este parámetro si quieres buscar configuraciones de envío por nombre.

search_type
string (optional) Default: contains Example: equals

Elegir el tipo de búsqueda para campos de tipo string. Por defecto el valor del campo search_type es contains y devolverá elementos que contengan el valor que enviaste. Si el valor de search_type es equals se devolverán unicamente elementos que coincidan exactamente con el valor enviado, sin tener en cuenta coincidencias o elementos que lo contengan.

Choices: contains equals

page
number (optional) Example: 1

Si existe páginado, indica el número de página a obtener

per_page
number (optional) Default: 10 Example: 20

Indica el número de elementos por página que quieres obtener

Response  200
HideShow
Headers
Content-Type: application/json
Body
{
  "data": [
    {
      "id": 5,
      "name": "api",
      "sender_id": null,
      "sender_name": "",
      "callback_url": "",
      "allow_service_number_alias": false,
      "created_at": "2017-07-03 07:23:03"
    },
    {
      "id": 4,
      "name": "conexion_directa",
      "sender_id": 1,
      "sender_name": "SENDER",
      "callback_url": "",
      "allow_service_number_alias": true,
      "created_at": "2017-07-03 07:22:55"
    }
  ],
  "meta": {
    "pagination": {
      "total": 2,
      "count": 2,
      "per_page": 10,
      "current_page": 1,
      "total_pages": 1,
      "links": []
    }
  }
}
Response  403
HideShow
Headers
Content-Type: application/json
Body
{
  "error": {
    "code": "FORBIDDEN",
    "http_code": 403,
    "message": "Forbidden: This method must be called from customer account"
  }
}
Response  500
HideShow
Headers
Content-Type: application/json
Body
{
  "error": {
    "code": "INTERNAL_ERROR",
    "http_code": 500,
    "message": "Internal Server Error. Internal code: #0123456789."
  }
}

Obtener una configuracion de envio

Obtener una configuracion de envio
GET/api_configurations/{id}

Este método te permite obtener una configuración de envío de tu cuenta.

Example URI

GET https://api.mensagia.com/v1/api_configurations/id
URI Parameters
HideShow
id
integer (required) 

ID de la configuración de envío

Response  200
HideShow
Headers
Content-Type: application/json
Body
{
  "data": {
    "id": 4,
    "name": "conexion_directa",
    "sender_id": 1,
    "sender_name": "SENDER",
    "callback_url": "",
    "allow_service_number_alias": true,
    "created_at": "2017-07-03 07:22:55"
  }
}
Response  403
HideShow
Headers
Content-Type: application/json
Body
{
  "error": {
    "code": "FORBIDDEN",
    "http_code": 403,
    "message": "Forbidden: This method must be called from customer account"
  }
}
Response  404
HideShow
Headers
Content-Type: application/json
Body
{
  "error": {
    "code": "NOT_FOUND",
    "http_code": 404,
    "message": "Process not found with id: 23"
  }
}
Response  500
HideShow
Headers
Content-Type: application/json
Body
{
  "error": {
    "code": "INTERNAL_ERROR",
    "http_code": 500,
    "message": "Internal Server Error. Internal code: #0123456789"
  }
}

Agendas

Métodos para administrar agendas de tu cuenta.

Accesible únicamente para cuentas de tipo cliente

Puedes obtener más información sobre las agendas en la documentación de Mensagia.

Obtener todas las agendas

Obtener todas las agendas
GET/agendas/{?name,search_type,page,per_page}

Este método te permite obtenter todas las agendas de tu cuenta

Example URI

GET https://api.mensagia.com/v1/agendas/?name=agenda_&search_type=equals&page=1&per_page=20
URI Parameters
HideShow
name
string (optional) Example: agenda_

Envía este parámetro si quieres buscar por nombre de la agenda. Ten en cuenta el parámetro search_type para el tipo de búsqueda.

search_type
string (optional) Default: contains Example: equals

Elegir el tipo de búsqueda para campos de tipo string. Por defecto el valor del campo search_type es contains y devolverá elementos que contengan el valor que enviaste. Si el valor de search_type es equals se devolverán unicamente elementos que coincidan exactamente con el valor enviado, sin tener en cuenta coincidencias o elementos que lo contengan.

Choices: contains equals

page
number (optional) Example: 1

Si existe páginado, indica el número de página a obtener

per_page
number (optional) Default: 10 Example: 20

Indica el número de elementos por página que quieres obtener

Response  200
HideShow
Headers
Content-Type: application/json
Body
{
  "data": [
    {
      "id": 1,
      "name": "BlackList",
      "total_users": 0,
      "busy": 0,
      "created_at": "2015-09-15 09:11:09",
      "updated_at": "2015-09-15 09:11:09"
    }
  ],
  "meta": {
    "pagination": {
      "total": 1,
      "count": 1,
      "per_page": 10,
      "current_page": 1,
      "total_pages": 1,
      "links": []
    }
  }
}
Response  403
HideShow
Headers
Content-Type: application/json
Body
{
  "error": {
    "code": "FORBIDDEN",
    "http_code": 403,
    "message": "Forbidden: This method must be called from customer account"
  }
}
Response  500
HideShow
Headers
Content-Type: application/json
Body
{
  "error": {
    "code": "INTERNAL_ERROR",
    "http_code": 500,
    "message": "Internal Server Error. Internal code: #0123456789."
  }
}

Obtener una agenda

Obtener una agenda
GET/agendas/{id}

Este método te permite obtener una agenda de tu cuenta.

Example URI

GET https://api.mensagia.com/v1/agendas/id
URI Parameters
HideShow
id
integer (required) 

ID de la agenda

Response  200
HideShow
Headers
Content-Type: application/json
Body
{
  "data": {
    "id": 1,
    "name": "BlackList",
    "total_users": 0,
    "busy": 0,
    "created_at": "2015-09-15 09:11:09",
    "updated_at": "2015-09-15 09:11:09"
  }
}
Response  403
HideShow
Headers
Content-Type: application/json
Body
{
  "error": {
    "code": "FORBIDDEN",
    "http_code": 403,
    "message": "Forbidden: This method must be called from customer account"
  }
}
Response  404
HideShow
Headers
Content-Type: application/json
Body
{
  "error": {
    "code": "NOT_FOUND",
    "http_code": 404,
    "message": "AgendaGroup not found with id: 23"
  }
}
Response  500
HideShow
Headers
Content-Type: application/json
Body
{
  "error": {
    "code": "INTERNAL_ERROR",
    "http_code": 500,
    "message": "Internal Server Error. Internal code: #0123456789"
  }
}

Crear una agenda

Crear una agenda
POST/agendas/{?name}

Este método te permite crear una nueva agenda en tu cuenta.

Example URI

POST https://api.mensagia.com/v1/agendas/?name=Name Agenda
URI Parameters
HideShow
name
string (required) Example: Name Agenda

El nombre de la nueva agenda

Response  200
HideShow
Headers
Content-Type: application/json
Body
{
  "data": {
    "id": 2,
    "name": "New agenda",
    "total_users": 0,
    "busy": 0,
    "created_at": "2015-09-15 09:11:09",
    "updated_at": "2015-09-15 09:11:09"
  }
}
Response  400
HideShow
Headers
Content-Type: application/json
Body
{
  "error": {
    "code": "VALIDATION_FAIL",
    "message": "The data validation is not correct. See validation_errors array.",
    "http_code": "400",
    "validation_errors": {
      "name": [
        "The name has already been taken."
      ]
    }
  }
}
Response  403
HideShow
Headers
Content-Type: application/json
Body
{
  "error": {
    "code": "FORBIDDEN",
    "http_code": 403,
    "message": "Forbidden: This method must be called from customer account"
  }
}
Response  500
HideShow
Headers
Content-Type: application/json
Body
{
  "error": {
    "code": "INTERNAL_ERROR",
    "http_code": 500,
    "message": "Internal Server Error. Internal code: #0123456789"
  }
}

Actualizar una agenda

Actualizar una agenda
POST/agendas/{id}{?name}

Este método te permite actualizar una agenda existente.

Example URI

POST https://api.mensagia.com/v1/agendas/id?name=Name Agenda
URI Parameters
HideShow
id
integer (required) 

ID de la agenda

name
string (required) Example: Name Agenda

El nuevo nombre para la agenda

Response  200
HideShow
Headers
Content-Type: application/json
Body
{
  "data": {
    "id": 2,
    "name": "Agenda updated",
    "total_users": 0,
    "busy": 0,
    "created_at": "2015-09-15 09:11:09",
    "updated_at": "2015-09-15 09:11:09"
  }
}
Response  403
HideShow
Headers
Content-Type: application/json
Body
{
  "error": {
    "code": "FORBIDDEN",
    "http_code": 403,
    "message": "Forbidden: This method must be called from customer account"
  }
}
Response  404
HideShow
Headers
Content-Type: application/json
Body
{
  "error": {
    "code": "NOT_FOUND",
    "http_code": 404,
    "message": "AgendaGroup not found with id: 23"
  }
}
Response  500
HideShow
Headers
Content-Type: application/json
Body
{
  "error": {
    "code": "INTERNAL_ERROR",
    "http_code": 500,
    "message": "Internal Server Error. Internal code: #0123456789"
  }
}

Eliminar una agenda

Eliminar una agenda
DELETE/agendas/{id}

Este método te permite eliminar una agenda de tu cuenta.

Example URI

DELETE https://api.mensagia.com/v1/agendas/id
URI Parameters
HideShow
id
integer (required) 

ID de la agenda

Response  200
HideShow
Headers
Content-Type: application/json
Body
{
  "data": {
    "result": true
  }
}
Response  403
HideShow
Headers
Content-Type: application/json
Body
{
  "error": {
    "code": "FORBIDDEN",
    "http_code": 403,
    "message": "Forbidden: This method must be called from customer account"
  }
}
Response  404
HideShow
Headers
Content-Type: application/json
Body
{
  "error": {
    "code": "NOT_FOUND",
    "http_code": 404,
    "message": "AgendaGroup not found with id: 23"
  }
}
Response  500
HideShow
Headers
Content-Type: application/json
Body
{
  "error": {
    "code": "INTERNAL_ERROR",
    "http_code": 500,
    "message": "Internal Server Error. Internal code: #0123456789"
  }
}

Contactos

Métodos para administrar los contactos de tu cuenta.

Accesible únicamente para cuentas de tipo cliente

Puedes obtener más información sobre las contactos en la documentación de Mensagia.

Obtener todas los contactos

Obtener todas los contactos
GET/contacts/{?name,number,email,city,search_type,groups,page,per_page}

Este método te permite obtenter todas los contactos de tu cuenta

Example URI

GET https://api.mensagia.com/v1/contacts/?name=user&number=600&email=user@&city=MyCity&search_type=equals&groups=3,4&page=1&per_page=20
URI Parameters
HideShow
name
string (optional) Example: user

Envia este parámetro si quieres buscar contactos por nombre sin tener en cuenta mayúsculas y minúsculas. Ten en cuenta el parámetro search_type para el tipo de búsqueda.

number
string (optional) Example: 600

Envia este parámetro si deseas buscar contactos por número de móvil. Ten en cuenta el parámetro search_type para el tipo de búsqueda.

email
string (optional) Example: user@

Envia este parámetro si deseas buscar contactos por email sin tener en cuenta mayúsculas y minúsculas. Ten en cuenta el parámetro search_type para el tipo de búsqueda.

city
string (optional) Example: MyCity

Envia este parámetro si deseas buscar contactos por ciudad sin tener en cuenta mayúsculas y minúsculas. Ten en cuenta el parámetro search_type para el tipo de búsqueda.

search_type
string (optional) Default: contains Example: equals

Elegir el tipo de búsqueda para campos de tipo string. Por defecto el valor del campo search_type es contains y devolverá elementos que contengan el valor que enviaste. Si el valor de search_type es equals se devolverán unicamente elementos que coincidan exactamente con el valor enviado, sin tener en cuenta coincidencias o elementos que lo contengan.

Choices: contains equals

groups
string (optional) Example: 3,4

Envia este parámetro si deseas buscar contactos por las agendas a las que pertenecen. Debes enviar una lista de ID’s de agenda existentes separados por comas y sin espacios.

page
number (optional) Example: 1

Si existe páginado, indica el número de página a obtener

per_page
number (optional) Default: 10 Example: 20

Indica el número de elementos por página que quieres obtener

Response  200
HideShow
Headers
Content-Type: application/json
Body
{
  "data": [
    {
      "id": 3,
      "number": "600000002",
      "push_operator_destination_id": null,
      "name": "User 2",
      "email": "user2@email.com",
      "city": "MyCity",
      "country_id": 158,
      "country_name": "Malaysia",
      "extra_fields": {
        "extra_field_1": "extra field 1 value x1",
        "extra_field_2": "extra field 1 value x2",
        "extra_field_3": "extra field 1 value x3"
      },
      "created_at": "2015-09-22 07:06:17",
      "updated_at": "2015-09-22 07:06:17",
      "groups": {
        "data": [
          {
            "id": 3,
            "name": "agenda_id_3",
            "total_users": 2,
            "busy": 0,
            "created_at": "2015-09-22 06:54:21",
            "updated_at": "2015-09-22 07:06:17"
          }
        ]
      }
    },
    {
      "id": 2,
      "number": "600000001",
      "push_operator_destination_id": null,
      "name": "User 1",
      "email": "user@email.com",
      "city": "MyCity",
      "country_id": 158,
      "country_name": "Malaysia",
      "extra_fields": {
        "extra_field_1": "extra field 1 value",
        "extra_field_2": "extra field 2 value",
        "extra_field_3": "extra field 3 value"
      },
      "created_at": "2015-09-22 07:05:33",
      "updated_at": "2015-09-22 07:05:33",
      "groups": {
        "data": [
          {
            "id": 2,
            "name": "agenda_id_2",
            "total_users": 1,
            "busy": 0,
            "created_at": "2015-09-22 06:54:21",
            "updated_at": "2015-09-22 07:05:34"
          },
          {
            "id": 3,
            "name": "agenda_id_3",
            "total_users": 2,
            "busy": 0,
            "created_at": "2015-09-22 06:54:21",
            "updated_at": "2015-09-22 07:06:17"
          }
        ]
      }
    }
  ],
  "meta": {
    "pagination": {
      "total": 2,
      "count": 2,
      "per_page": 10,
      "current_page": 1,
      "total_pages": 1,
      "links": []
    }
  }
}
Response  403
HideShow
Headers
Content-Type: application/json
Body
{
  "error": {
    "code": "FORBIDDEN",
    "http_code": 403,
    "message": "Forbidden: This method must be called from customer account"
  }
}
Response  500
HideShow
Headers
Content-Type: application/json
Body
{
  "error": {
    "code": "INTERNAL_ERROR",
    "http_code": 500,
    "message": "Internal Server Error. Internal code: #0123456789. Error code: #1234567890"
  }
}

Obtener un contacto

Obtener un contacto
GET/contacts/{id}

Este método te permite obtener un contacto de tu cuenta.

Example URI

GET https://api.mensagia.com/v1/contacts/id
URI Parameters
HideShow
id
integer (required) 

ID del contacto

Response  200
HideShow
Headers
Content-Type: application/json
Body
{
  "data": {
    "id": 2,
    "number": "600000001",
    "push_operator_destination_id": null,
    "name": "User 1",
    "email": "user@email.com",
    "city": "MyCity",
    "country_id": 158,
    "country_name": "Malaysia",
    "extra_fields": {
      "extra_field_1": "extra field 1 value",
      "extra_field_2": "extra field 2 value",
      "extra_field_3": "extra field 3 value"
    },
    "created_at": "2015-09-22 07:05:33",
    "updated_at": "2015-09-22 07:05:33",
    "groups": {
      "data": [
        {
          "id": 2,
          "name": "agenda_id_2",
          "total_users": 1,
          "busy": 0,
          "created_at": "2015-09-22 06:54:21",
          "updated_at": "2015-09-22 07:05:34"
        },
        {
          "id": 3,
          "name": "agenda_id_3",
          "total_users": 2,
          "busy": 0,
          "created_at": "2015-09-22 06:54:21",
          "updated_at": "2015-09-22 07:06:17"
        }
      ]
    }
  }
}
Response  403
HideShow
Headers
Content-Type: application/json
Body
{
  "error": {
    "code": "FORBIDDEN",
    "http_code": 403,
    "message": "Forbidden: This method must be called from customer account"
  }
}
Response  404
HideShow
Headers
Content-Type: application/json
Body
{
  "error": {
    "code": "NOT_FOUND",
    "http_code": 404,
    "message": "AgendaUser not found with id: 1"
  }
}
Response  500
HideShow
Headers
Content-Type: application/json
Body
{
  "error": {
    "code": "INTERNAL_ERROR",
    "http_code": 500,
    "message": "Internal Server Error. Internal code: #0123456789"
  }
}

Crear un contacto

Crear un contacto
POST/contacts/{?number,name,email,city,country_id,groups,extra_fields}

Este método te permite crear un nuevo contacto en tu cuenta.

Campos personalizados

Los campos personalizados son campos extra de información que puedes crear para un contacto.

Si envias un campo personalizado cuyo nombre no existe, el contacto no será creado. Puedes enviar más de un campo personalizado a la vez.

Debes enviar los campos personalizados como un array, donde las key serán el nombre del campo personalizado.

  • extra_fields[discount]=20

  • extra_fields[client_code]=2FSDALJF

Puedes obtener más información sobre los Campos personalizados en la documentación de Mensagia.

Agendas

Puedes asignar agendas a un contacto cuando lo creas. Envía una lista de ID'S de agenda separados por comas, sin espacios.

Si envias un ID de agenda que no existe, el contacto no será creado.

Puedes obtener más información sobre las Agendas en la documentación de Mensagia.

Example URI

POST https://api.mensagia.com/v1/contacts/?number=34600111222&name=Peter Smith&email=petersmith@gmail.com&city=Dubai&country_id=1&groups=3,4&extra_fields=valueExtrafield1
URI Parameters
HideShow
number
string (required) Example: 34600111222

El número de móvil del contacto sin espacios en blanco, con el préfijo internacional y sin el signo +

name
string (optional) Example: Peter Smith

Nombre del contacto

email
string (optional) Example: petersmith@gmail.com

Email del contacto

city
string (optional) Example: Dubai

Ciudad del contacto

country_id
integer (optional) Example: 1

ID de país

groups
string (optional) Example: 3,4

Lista de ID’s de agendas existentes, separadas por coma y sin espacios, para asignarle al contacto.

extra_fields
array (optional) Example: valueExtrafield1

Valores de campos personalizados para añadir al contacto. Enviar como un array donde la key sea el nombre del campo personalizado y value el valor del campo personalizado.

Response  200
HideShow
Headers
Content-Type: application/json
Body
{
  "data": {
    "id": 1,
    "number": "34600000000",
    "push_operator_destination_id": null,
    "name": "Usuario Test",
    "email": "test@sinermedia.com",
    "city": "La Jonquera",
    "country_id": null,
    "country_name": null,
    "extra_fields": {
      "extra_field_1": "value 1",
      "extra_field_2": "value 2"
    },
    "created_at": "2015-09-23 10:00:03",
    "updated_at": "2015-09-23 10:17:37",
    "groups": {
      "data": [
        {
          "id": 2,
          "name": "agenda_id_2",
          "total_users": 1,
          "busy": 0,
          "created_at": "2015-09-23 10:00:03",
          "updated_at": "2015-09-23 10:17:02"
        },
        {
          "id": 3,
          "name": "agenda_id_3",
          "total_users": 1,
          "busy": 0,
          "created_at": "2015-09-23 10:00:03",
          "updated_at": "2015-09-23 10:17:02"
        },
        {
          "id": 4,
          "name": "agenda_id_4",
          "total_users": 1,
          "busy": 0,
          "created_at": "2015-09-23 10:00:03",
          "updated_at": "2015-09-23 10:17:02"
        }
      ]
    }
  }
}
Response  400
HideShow
Headers
Content-Type: application/json
Body
{
  "error": {
    "code": "VALIDATION_FAIL",
    "message": "The data validation is not correct. See validation_errors array.",
    "http_code": "400",
    "validation_errors": {
      "name": [
        "The number has already been taken."
      ]
    }
  }
}
Response  403
HideShow
Headers
Content-Type: application/json
Body
{
  "error": {
    "code": "FORBIDDEN",
    "http_code": 403,
    "message": "Forbidden: This method must be called from customer account"
  }
}
Response  403
HideShow
Headers
Content-Type: application/json
Body
{
  "error": {
    "code": "FORBIDDEN",
    "http_code": 403,
    "message": "Forbidden: AgendaGroup with id: 3 doesn't exist"
  }
}
Response  500
HideShow
Headers
Content-Type: application/json
Body
{
  "error": {
    "code": "INTERNAL_ERROR",
    "http_code": 500,
    "message": "Internal Server Error. Internal code: #0123456789"
  }
}

Importar contactos mediante JSON

Importar contactos mediante JSON
POST/contacts/import/json

Este método te permite importar contactos de forma asíncrona hasta un máximo de 1000 contactos por petición. Si lo deseas, puedes añadir una URL de callback donde te enviaremos, una vez procesados todos los contactos, una petición POST con el resultado de la importación de cada contacto. Puedes enviar tantas peticiones como quieras, ya que nosotros las procesaremos en orden de llegada.


Formato del parámetro contacts_json

Para poder crear contactos masivamente es necesario enviar un array en JSON que contendrá la informacíon de cada uno de los contactos a crear. Con el siguiente JSON crearemos dos contactos, a uno de ellos le asignaremos las agendas con ID 3 y 4, y también le añadiremos el valor ‘20’ a un campo personalizado con nombre ‘discount’. Al otro contacto lo crearemos con su nombre.

[{"contact":{"number":"34600000001"},"groups":"3,4","extra_fields":{"discount":"20"}},{"contact":{"number":"34600000002","name":"Peter Smith"}}]


El único campo obligatorio para crear un contacto es el número de teléfono. Todos los demás campos son opcionales. El siguiente ejemplo muestra como crear 3 contactos solo con el número de telefono:

[{"contact":{"number":"34600000001"}},{"contact":{"number":"34600000002"}},{"contact":{"number":"34600000003"}}]



Campos posibles:

Grupo Campos posibles Información
contact array (required) number string (required) Example: 34600111222
name string (optional) Example: Peter Smith
email string (optional) Example: petersmith@gmail.com
city string (optional) Example: Dubai
country_id integer (optional) Example: 1
groups string (optional) - Lista de ID’s de agendas existentes, separadas por coma y sin espacios, para asignarle al contacto. Example: 3,4
extra_fields array (optional) Cualquier campo personalizado creado en tu cuenta Por cada elemento del array, el index será el nombre del campo personalizado y el value será el valor para este campo.
Example: "discount":"20","birthday":"25-07-1982"

Si envias agendas o campos personalizados que no existen, el contacto no será creado.


CALLBACK POST

Si en la petición envias una URL de callback, te enviaremos a esa URL un POST, para que si lo necesitas, puedas relacionar tu usuario con el ID de contacto creado en nuestra plataforma y puedas conocer los errores que se produjeron durante la importación. En la petición también incluimos el ID del proceso, para que sepas de que importación se trata.

No confundas esta respuesta que te damos a través de la URL de callback al realizar la importación con la respuesta que te devolveremos al realizar la petición de 'Importar contactos mediantes JSON' para saber si la importación se realizará.

[
    "data" : [
        "proccess_id" :  1,
        "response" :  [
            {
                "id": 18,
                "number": "34600999054",
                "code_error": null,
                "msg_error": null
            },
            {
                "id": 19,
                "number": "34600999055",
                "code_error": null,
                "msg_error": null
            },
            {
                "id": null,
                "number": "346009",
                "code_error": "INVALID_NUMBER",
                "msg_error": "The number is not a valid phone number"
            },
            {
                "id": null,
                "number": "34600999001",
                "code_error": "FAIL_SYNC_GROUPS",
                "msg_error": {
                    "groups": "AgendaGroup with id:3000 doesn't exist"
                }
            },
            {
                "id": null,
                "number": "34600999002",
                "code_error": "EXTRA_FIELD_NOT_EXIST",
                "msg_error": {
                    "discdfount": "Extrafield not exist. If you want to use it, you must create it before"
                }
            },
            {
                "id": null,
                "number": "34600999000",
                "code_error": "CONTACT_VALIDATION_FAILS",
                "msg_error": {
                    "number": [
                        "The number has already been taken."
                    ]
                }
            }        
        ]
    ]
]


CODIGOS DE ERROR CALLBACK

Para cada uno de los contactos a crear, en la respuesta te devolveremos un código de error y un mensaje con el error producido si el contacto no se ha creado correctamente. Si el contacto se ha creado correctamente, te devolveremos el nuevo ID del contacto y null como código de error y mensaje.

Los códigos de error son los siguientes:

FAIL_SYNC_GROUPS Una de las agendas enviadas no existe
EXTRA_FIELD_NOT_EXIST Uno de los campos personalizados enviado no existe
EXTRA_FIELD_VALIDATION_FAILS La validación de un campo personalizado no se ha superado
INVALID_NUMBER El número de teléfono del contacto no es válido.
CONTACT_VALIDATION_FAILS La validación de los campos del contacto no se ha superado
INTERNAL_ERROR Hubo un error interno de la plataforma



Example URI

POST https://api.mensagia.com/v1/contacts/import/json?contacts_json=[{"contact":{"number": "34600100220"}, "groups": "3,4", "extra_fields":{"discount":"20" }}]&callback_url=https://mensagia.com/testPost
URI Parameters
HideShow
contacts_json
string (required) Example: [{"contact":{"number": "34600100220"}, "groups": "3,4", "extra_fields":{"discount":"20" }}]

Un array en formato JSON con la información de cada contacto.

callback_url
string (optional) Example: https://mensagia.com/testPost

Una url válida donde enviar una petición POST con el resultado de la importación.

Response  200
HideShow
Headers
Content-Type: application/json
Body
{
  "data": {
    "contacts_to_import": 134,
    "callback_url": "https://mensagia.com/testPost",
    "process_id": 3
  }
}
Response  400
HideShow
Headers
Content-Type: application/json
Body
{
  "error": {
    "code": "WRONG_ARGS",
    "http_code": 400,
    "message": "The contacts limit to send are 1000. You have sent 1434."
  }
}
Response  400
HideShow
Headers
Content-Type: application/json
Body
{
  "error": {
    "code": "WRONG_ARGS",
    "http_code": 400,
    "message": "You must send contacts_json parameter."
  }
}
Response  400
HideShow
Headers
Content-Type: application/json
Body
{
  "error": {
    "code": "VALIDATION_FAIL",
    "message": "The data validation is not correct. See validation_errors array.",
    "http_code": "400",
    "validation_errors": {
      "messages": "The contacts_json field isn't a valid JSON: Syntax error, malformed JSON."
    }
  }
}
Response  400
HideShow
Headers
Content-Type: application/json
Body
{
  "error": {
    "code": "VALIDATION_FAIL",
    "message": "The data validation is not correct. See validation_errors array.",
    "http_code": "400",
    "validation_errors": {
      "messages": "The callback_url must be a valid url"
    }
  }
}
Response  403
HideShow
Headers
Content-Type: application/json
Body
{
  "error": {
    "code": "FORBIDDEN",
    "http_code": 403,
    "message": "Forbidden: This method must be called from customer account"
  }
}
Response  500
HideShow
Headers
Content-Type: application/json
Body
{
  "error": {
    "code": "INTERNAL_ERROR",
    "http_code": 500,
    "message": "Internal Server Error. Internal code: #0123456789"
  }
}

Importar contactos mediante archivo

Importar contactos mediante archivo
POST/contacts/import/file

Este método te permite importar contactos de forma asíncrona sin límite de contactos por petición mediante un fichero .txt, .csv o .xlsx.

Si la petición es correcta, te devolveremos el proceso en segundo plano encargado de gestionar la importación del fichero, y así podrás el estado de la importación en cualquier momento.

Este método es el más eficiente para importar grandes volúmenes de contactos.


Formato del parámetro columns_to_import

Este parámetro es necesario para relacionar las columnas del archivo de contactos que deseas importar con los campos del contacto (número de móvil, nombre, email, ciudad ) o los campos personalizados creados en tu cuenta. Por cada columna que queramos importar del archivo, deberemos especificar el número de columna que ocupa en el archivo (la primera columna del archivo será la número 1) y con qué campo de Mensagia se corresponde (si es número de móvil, nombre, email, ciudad o un campo personalizado).

[{"ncol":1,"value":"number"},{"ncol":2,"value":"name"},{"ncol":3,"value":"extra_field[1]"}]


El único requisito del parámetro columns_to_import es especificar en qué columna se encuentra el número de móvil en el archivo a importar.

[{"ncol":1,"value":"number"}]


Para importar una columna como un campo personalizado utiliza el siguiente formato para value:

extra_field[ID_DEL_CAMPO_PERSONALIZADO]



Campos posibles para importar:

Campos posibles value Información
number string (required) Example: 34600111222
name string (optional) Example: Peter Smith
email string (optional) Example: petersmith@gmail.com
city string (optional) Example: Dubai
El ID de cualquier campo personalizado creado en tu cuenta Formato: extra_field[ID_DEL_CAMPO_PERSONALIZADO]



Example URI

POST https://api.mensagia.com/v1/contacts/import/file
URI Parameters
HideShow
file
file (required) Example: contacts.csv

Un archivo TXT (.txt), CSV (.csv) o Excel (.xlsx) que contenga los contactos a importar. El archivo ha de tener un peso máximo de 50 MB.

agenda_id
integer (required) Example: 3

ID de la agenda donde quieres importar los contactos.

columns_to_import
string (required) Example: [{"ncol":1,"value":"number"}]

Un array en formato JSON con la información de las columnas a importar.

add_prefix
integer (optional) Example: 34

Si ningún número de móvil del archivo tiene prefijo y son todos del mismo país, puedes añadirle el prefijo que desees a todos los números de móvil del archivo.

file_has_heading
integer (optional) Default: 0 Example: 1

Si la primera línea del archivo a subir contiene encabezados (títulos de las columnas) envía un 1 para que no procesemos la primera línea del archivo.

Response  200
HideShow
Headers
Content-Type: application/json
Body
{
  "data": {
    "id": 4,
    "type": "AgendaImport",
    "state": "created",
    "created_at": "2017-02-10 10:51:45"
  }
}
Response  400
HideShow
Headers
Content-Type: application/json
Body
{
  "error": {
    "code": "VALIDATION_FAIL",
    "message": "The data validation is not correct. See validation_errors array.",
    "http_code": "400",
    "validation_errors": {
      "file": [
        "The file must be a file of type: csv, txt, xlsx.",
        "The file field is required."
      ],
      "agenda_id": [
        "The agenda id field is required.",
        "The selected agenda id is invalid."
      ],              
      "cols_to_import": [
        "The cols to import field is required."
        "The cols to import must be a valid JSON string.",
        "The cols to import field has not valid format, has mistakes in field contact names or the extra_fields don't exist"
      ]
    }
  }
}
Response  403
HideShow
Headers
Content-Type: application/json
Body
{
  "error": {
    "code": "FORBIDDEN",
    "http_code": 403,
    "message": "Forbidden: This method must be called from customer account"
  }
}
Response  500
HideShow
Headers
Content-Type: application/json
Body
{
  "error": {
    "code": "INTERNAL_ERROR",
    "http_code": 500,
    "message": "Internal Server Error. Internal code: #0123456789"
  }
}

Actualizar un contacto

Actualizar un contacto
POST/contacts/{?number,name,email,city,groups,extra_fields}

Este método te permite actualizar un contacto existente.

Campos personalizados

Los campos personalizados son campos extra de información que puedes crear para un contacto.

Si envias un campo personalizado cuyo nombre no existe, el contacto no será actualizado. Puedes enviar más de un campo personalizado a la vez.

Debes enviar los campos personalizados como un array, donde la key serán el nombre del campo personalizado.

  • extra_fields[discount]=20

  • extra_fields[client_code]=2FSDALJF

Puedes obtener más información sobre los Campos personalizados en la documentación de Mensagia.

Agendas

Puedes asignar agendas a un contacto cuando lo editas. Envía una lista de ID'S de agenda separados por comas, sin espacios.

Si envias un ID de agenda que no existe, el contacto no será actualizado.

Puedes obtener más información sobre las Agendas en la documentación de Mensagia.

Example URI

POST https://api.mensagia.com/v1/contacts/?number=34600111222&name=Peter Smith&email=petersmith@gmail.com&city=Dubai&groups=3,4&extra_fields=valueExtrafield1
URI Parameters
HideShow
number
string (required) Example: 34600111222

El número de móvil del contacto sin espacios en blanco, con el préfijo internacional y sin el signo +

name
string (optional) Example: Peter Smith

Nombre del contacto

email
string (optional) Example: petersmith@gmail.com

Email del contacto

city
string (optional) Example: Dubai

Ciudad del contacto

country_id
integer (optional) Example: 1

ID de país

groups
string (optional) Example: 3,4

Lista de ID’s de agendas existentes, separadas por coma y sin espacios, para asignarle al contacto.

extra_fields
array (optional) Example: valueExtrafield1

Valores de campos personalizados para añadir al contacto. Enviar como un array donde la key sea el nombre del campo personalizado y value el valor del campo personalizado.

Response  200
HideShow
Headers
Content-Type: application/json
Body
{
  "data": {
    "id": 1,
    "number": "34600000000",
    "push_operator_destination_id": null,
    "name": "Usuario Test",
    "email": "test@sinermedia.com",
    "city": "La Jonquera",
    "country_id": null,
    "country_name": null,
    "extra_fields": {
      "extra_field_1": "value 1",
      "extra_field_2": "value 2"
    },
    "created_at": "2015-09-23 10:00:03",
    "updated_at": "2015-09-23 10:17:37",
    "groups": {
      "data": [
        {
          "id": 2,
          "name": "agenda_id_2",
          "total_users": 1,
          "busy": 0,
          "created_at": "2015-09-23 10:00:03",
          "updated_at": "2015-09-23 10:17:02"
        },
        {
          "id": 3,
          "name": "agenda_id_3",
          "total_users": 1,
          "busy": 0,
          "created_at": "2015-09-23 10:00:03",
          "updated_at": "2015-09-23 10:17:02"
        },
        {
          "id": 4,
          "name": "agenda_id_4",
          "total_users": 1,
          "busy": 0,
          "created_at": "2015-09-23 10:00:03",
          "updated_at": "2015-09-23 10:17:02"
        }
      ]
    }
  }
}
Response  400
HideShow
Headers
Content-Type: application/json
Body
{
  "error": {
    "code": "VALIDATION_FAIL",
    "message": "The data validation is not correct. See validation_errors array.",
    "http_code": "400",
    "validation_errors": {
      "name": [
        "The number has already been taken."
      ]
    }
  }
}
Response  403
HideShow
Headers
Content-Type: application/json
Body
{
  "error": {
    "code": "FORBIDDEN",
    "http_code": 403,
    "message": "Forbidden: This method must be called from customer account"
  }
}
Response  403
HideShow
Headers
Content-Type: application/json
Body
{
  "error": {
    "code": "FORBIDDEN",
    "http_code": 403,
    "message": "Forbidden: AgendaGroup with id: 3 doesn't exist"
  }
}
Response  404
HideShow
Headers
Content-Type: application/json
Body
{
  "error": {
    "code": "NOT_FOUND",
    "http_code": 404,
    "message": "AgendaUser not found with id: 1"
  }
}
Response  500
HideShow
Headers
Content-Type: application/json
Body
{
  "error": {
    "code": "INTERNAL_ERROR",
    "http_code": 500,
    "message": "Internal Server Error. Internal code: #0123456789"
  }
}

Eliminar un contacto

Eliminar un contacto
DELETE/contacts/{id}

Este método te permite eliminar un contacto de tu cuenta.

Example URI

DELETE https://api.mensagia.com/v1/contacts/id
URI Parameters
HideShow
id
integer (required) 

ID del contacto

Response  200
HideShow
Headers
Content-Type: application/json
Body
{
  "data": {
    "result": true
  }
}
Response  403
HideShow
Headers
Content-Type: application/json
Body
{
  "error": {
    "code": "FORBIDDEN",
    "http_code": 403,
    "message": "Forbidden: This method must be called from customer account"
  }
}
Response  404
HideShow
Headers
Content-Type: application/json
Body
{
  "error": {
    "code": "NOT_FOUND",
    "http_code": 404,
    "message": "AgendaUser not found with id: 1"
  }
}
Response  500
HideShow
Headers
Content-Type: application/json
Body
{
  "error": {
    "code": "INTERNAL_ERROR",
    "http_code": 500,
    "message": "Internal Server Error. Internal code: #0123456789"
  }
}

Asignar agendas a un contacto

Asignar agendas a un contacto
POST/contacts/{id}/groups/add/{?groups}

Este método te permite asignar agendas a un contacto existente.

Agendas

Envía una lista de ID'S de agenda separados por comas, sin espacios.

Si envias un ID de agenda que no existe, el contacto no será actualizado.

Puedes obtener más información sobre las Agendas en la documentación de Mensagia.

Example URI

POST https://api.mensagia.com/v1/contacts/id/groups/add/?groups=3,4
URI Parameters
HideShow
id
integer (required) 

ID del contacto

groups
string (optional) Example: 3,4

Lista de ID’s de agendas existentes, separadas por coma y sin espacios, para asignarle al contacto.

Response  200
HideShow
Headers
Content-Type: application/json
Body
{
  "data": {
    "id": 1,
    "number": "34600000000",
    "push_operator_destination_id": null,
    "name": "Usuario Test",
    "email": "test@sinermedia.com",
    "city": "La Jonquera",
    "country_id": null,
    "country_name": null,
    "extra_fields": {
      "extra_field_1": "value 1",
      "extra_field_2": "value 2"
    },
    "created_at": "2015-09-23 10:00:03",
    "updated_at": "2015-09-23 10:17:37",
    "groups": {
      "data": [
        {
          "id": 2,
          "name": "agenda_id_2",
          "total_users": 1,
          "busy": 0,
          "created_at": "2015-09-23 10:00:03",
          "updated_at": "2015-09-23 10:17:02"
        },
        {
          "id": 3,
          "name": "agenda_id_3",
          "total_users": 1,
          "busy": 0,
          "created_at": "2015-09-23 10:00:03",
          "updated_at": "2015-09-23 10:17:02"
        },
        {
          "id": 4,
          "name": "agenda_id_4",
          "total_users": 1,
          "busy": 0,
          "created_at": "2015-09-23 10:00:03",
          "updated_at": "2015-09-23 10:17:02"
        }
      ]
    }
  }
}
Response  403
HideShow
Headers
Content-Type: application/json
Body
{
  "error": {
    "code": "FORBIDDEN",
    "http_code": 403,
    "message": "Forbidden: This method must be called from customer account"
  }
}
Response  404
HideShow
Headers
Content-Type: application/json
Body
{
  "error": {
    "code": "NOT_FOUND",
    "http_code": 404,
    "message": "AgendaUser not found with id: 1"
  }
}
Response  500
HideShow
Headers
Content-Type: application/json
Body
{
  "error": {
    "code": "INTERNAL_ERROR",
    "http_code": 500,
    "message": "Internal Server Error. Internal code: #0123456789"
  }
}

Desasignar agendas a un contacto

Desasignar agendas a un contacto
POST/contacts/{id}/groups/remove/{?groups}

Este método te permite desasignar agendas a un contacto existente.

Agendas

Envía una lista de ID'S de agenda separados por comas, sin espacios.

Si envias un ID de agenda que no existe, el contacto no será actualizado.

Puedes obtener más información sobre las Agendas en la documentación de Mensagia.

Example URI

POST https://api.mensagia.com/v1/contacts/id/groups/remove/?groups=3,4
URI Parameters
HideShow
id
integer (required) 

ID del contacto

groups
string (optional) Example: 3,4

Lista de ID’s de agendas existentes, separadas por coma y sin espacios, para desasignarle al contacto.

Response  200
HideShow
Headers
Content-Type: application/json
Body
{
  "data": {
    "id": 1,
    "number": "34600000000",
    "push_operator_destination_id": null,
    "name": "Usuario Test",
    "email": "test@sinermedia.com",
    "city": "La Jonquera",
    "country_id": null,
    "country_name": null,
    "extra_fields": {
      "extra_field_1": "value 1",
      "extra_field_2": "value 2"
    },
    "created_at": "2015-09-23 10:00:03",
    "updated_at": "2015-09-23 10:17:37",
    "groups": {
      "data": [
        {
          "id": 2,
          "name": "agenda_id_2",
          "total_users": 1,
          "busy": 0,
          "created_at": "2015-09-23 10:00:03",
          "updated_at": "2015-09-23 10:17:02"
        },
        {
          "id": 3,
          "name": "agenda_id_3",
          "total_users": 1,
          "busy": 0,
          "created_at": "2015-09-23 10:00:03",
          "updated_at": "2015-09-23 10:17:02"
        },
        {
          "id": 4,
          "name": "agenda_id_4",
          "total_users": 1,
          "busy": 0,
          "created_at": "2015-09-23 10:00:03",
          "updated_at": "2015-09-23 10:17:02"
        }
      ]
    }
  }
}
Response  403
HideShow
Headers
Content-Type: application/json
Body
{
  "error": {
    "code": "FORBIDDEN",
    "http_code": 403,
    "message": "Forbidden: This method must be called from customer account"
  }
}
Response  404
HideShow
Headers
Content-Type: application/json
Body
{
  "error": {
    "code": "NOT_FOUND",
    "http_code": 404,
    "message": "AgendaUser not found with id: 1"
  }
}
Response  500
HideShow
Headers
Content-Type: application/json
Body
{
  "error": {
    "code": "INTERNAL_ERROR",
    "http_code": 500,
    "message": "Internal Server Error. Internal code: #0123456789"
  }
}

Campos Personalizados

Métodos para administrar los campos personalizados de tu cuenta.

Accesible únicamente para cuentas de tipo cliente

Puedes obtener más información sobre las Campos personalizados en la documentación de Mensagia.

Obtener todos los campos personalizados

Obtener todos los campos personalizados
GET/extrafields/{?name,search_type,page,per_page}

Este método te permite obtener todos los campos personalizados de tu cuenta.

Example URI

GET https://api.mensagia.com/v1/extrafields/?name=ps_extra_&search_type=equals&page=1&per_page=20
URI Parameters
HideShow
name
string (optional) Example: ps_extra_

Envía este parámetro si quieres buscar por nombre del campo personalizado. Ten en cuenta el parámetro search_type para el tipo de búsqueda.

search_type
string (optional) Default: contains Example: equals

Elegir el tipo de búsqueda para campos de tipo string. Por defecto el valor del campo search_type es contains y devolverá elementos que contengan el valor que enviaste. Si el valor de search_type es equals se devolverán unicamente elementos que coincidan exactamente con el valor enviado, sin tener en cuenta coincidencias o elementos que lo contengan.

Choices: contains equals

page
number (optional) Example: 1

Si existe páginado, indica el número de página a obtener

per_page
number (optional) Default: 10 Example: 20

Indica el número de elementos por página que quieres obtener

Response  200
HideShow
Headers
Content-Type: application/json
Body
{
  "data": [
    {
      "id": 1,
      "name": "extra_field_1",
      "created_at": "2015-09-15 09:11:09",
      "updated_at": "2015-09-15 09:11:09"
    }
  ],
  "meta": {
    "pagination": {
      "total": 1,
      "count": 1,
      "per_page": 10,
      "current_page": 1,
      "total_pages": 1,
      "links": []
    }
  }
}
Response  403
HideShow
Headers
Content-Type: application/json
Body
{
  "error": {
    "code": "FORBIDDEN",
    "http_code": 403,
    "message": "Forbidden: This method must be called from customer account"
  }
}
Response  500
HideShow
Headers
Content-Type: application/json
Body
{
  "error": {
    "code": "INTERNAL_ERROR",
    "http_code": 500,
    "message": "Internal Server Error. Internal code: #0123456789.. Error code: #1234567890"
  }
}

Obtener un campo personalizado

Obtener un campo personalizado
GET/extrafields/{id}

Este método te permite obtener un campo personalizado de tu cuenta.

Example URI

GET https://api.mensagia.com/v1/extrafields/1
URI Parameters
HideShow
id
integer (required) Example: 1

ID del campo personalizado

Response  200
HideShow
Headers
Content-Type: application/json
Body
{
  "data": {
    "id": 1,
    "name": "extra_field_1",
    "created_at": "2015-09-15 09:11:09",
    "updated_at": "2015-09-15 09:11:09"
  }
}
Response  403
HideShow
Headers
Content-Type: application/json
Body
{
  "error": {
    "code": "FORBIDDEN",
    "http_code": 403,
    "message": "Forbidden: This method must be called from customer account"
  }
}
Response  404
HideShow
Headers
Content-Type: application/json
Body
{
  "error": {
    "code": "NOT_FOUND",
    "http_code": 404,
    "message": "Internal Server Error. Internal code: #0123456789."
  }
}
Response  500
HideShow
Headers
Content-Type: application/json
Body
{
  "error": {
    "code": "INTERNAL_ERROR",
    "http_code": 500,
    "message": "Internal Server Error. Internal code: #0123456789."
  }
}

Crear un campo personalizado

Crear un campo personalizado
POST/extrafields/{?name,type,date_format}

Este método te permite crear un nuevo campo personalizado en tu cuenta.

Tipos permitidos

Tipos permitidos Descripción
number El valor del campo debe ser un número
string El valor del campo debe ser un texto
date El valor del campo debe ser una fecha válida. Si type=date es obligatorio enviar el parámetro date_format

Formato de fecha

Los siguientes caracteres son reconocidos en el parámetro date_format cuando el tipo del campo personalizado es date

Format character Description Example returned values
d Día del mes, 2 dígitos sin ceros iniciales 1 a 31
D Día del mes, 2 dígitos con ceros iniciales 01 a 31
m Representación numérica de un mes, sin ceros iniciales 1 a 12
M Representación numérica de un mes, con ceros iniciales 01 a 12
y Una representación de dos dígitos de un año 16 o 20
Y Una representación numérica completa de un año, 4 dígitos 2016 o 2020
G Formato de 24 horas de una hora sin ceros iniciales 0 a 23
H Formato de 24 horas de una hora con ceros iniciales 00 a 23
i Minutos con ceros iniciales 00 a 59
s Segundos, con ceros iniciales 00 a 59

Example URI

POST https://api.mensagia.com/v1/extrafields/?name=Name Extrafield&type=date&date_format=D-M-Y
URI Parameters
HideShow
name
string (required) Example: Name Extrafield

El nombre del nuevo campo personalizado. No uses espacios ni el signo ‘#’.

type
string (required) Example: date

Escoge uno de los tipos permitidos para el campo personalizado

Choices: number string date

date_format
string (optional) Example: D-M-Y

Formato de fecha para el campo personalizado de tipo fecha. Obligatorio si type=date. Extrafield type date format

Response  200
HideShow
Headers
Content-Type: application/json
Body
{
  "data": {
    "id": 1,
    "name": "Birthday",
    "type": "date",
    "format": "D-M-Y",
    "created_at": "2015-09-15 09:11:09",
    "updated_at": "2015-09-15 09:11:09"
  }
}
Response  400
HideShow
Headers
Content-Type: application/json
Body
{
  "error": {
    "code": "VALIDATION_FAIL",
    "message": "The data validation is not correct. See validation_errors array.",
    "http_code": "400",
    "validation_errors": {
      "name": [
        "The name has already been taken."
      ],
      "date_format": [
        "The date format field contains an invalid date format."
      ]
    }
  }
}
Response  403
HideShow
Headers
Content-Type: application/json
Body
{
  "error": {
    "code": "FORBIDDEN",
    "http_code": 403,
    "message": "Forbidden: This method must be called from customer account"
  }
}
Response  500
HideShow
Headers
Content-Type: application/json
Body
{
  "error": {
    "code": "INTERNAL_ERROR",
    "http_code": 500,
    "message": "Internal Server Error. Internal code: #0123456789."
  }
}

Eliminar un campo personalizado

Eliminar un campo personalizado
DELETE/extrafields/{id}

Este método te permite eliminar un campo personalizado de tu cuenta.

Example URI

DELETE https://api.mensagia.com/v1/extrafields/id
URI Parameters
HideShow
id
integer (required) 

Extra field unique identifier

Response  200
HideShow
Headers
Content-Type: application/json
Body
{
  "data": {
    "result": true
  }
}
Response  403
HideShow
Headers
Content-Type: application/json
Body
{
  "error": {
    "code": "FORBIDDEN",
    "http_code": 403,
    "message": "Forbidden: This method must be called from customer account"
  }
}
Response  404
HideShow
Headers
Content-Type: application/json
Body
{
  "error": {
    "code": "NOT_FOUND",
    "http_code": 404,
    "message": "Internal Server Error. Internal code: #0123456789."
  }
}
Response  500
HideShow
Headers
Content-Type: application/json
Body
{
  "error": {
    "code": "INTERNAL_ERROR",
    "http_code": 500,
    "message": "Internal Server Error. Internal code: #0123456789."
  }
}

Envios SMS

Métodos para el envío de SMS.

Accesible únicamente para cuentas de tipo cliente

Configuraciones de envío

Para poder realizar Envíos SMS desde la API de Mensagia, es necesario crear una configuración de envío API.

Las configuraciones de envío definen el remitente que se usará en el envío. De esta manera, si necesitas cambiar el remitente en tus envíos, no deberás tocar código, sólo modificar la configuración de envío desde el portal.

Mensajes a enviar

Cuando escribas el mensaje para enviar a tus destinatarios es muy importante que tengas en cuenta las consideraciones sobre los mensajes a enviar, para tener en cuenta la longitud máxima del SMS y caracteres especiales.

Envio Simple

Envio Simple
POST/push/simple/{?configuration_name,message,numbers,start_date}

Este método te permite enviar un SMS hasta 20 destinatarios.

Puedes obtener más información sobre los Envíos Simples en la documentación de Mensagia.

Puedes encontrar ejemplos de envío en diferentes lenguajes de programación en los ejemplos de Envío Simple

Example URI

POST https://api.mensagia.com/v1/push/simple/?configuration_name=configuration1&message=The message to send&numbers=34600000001,34600000002&start_date=2016-01-28 15:00
URI Parameters
HideShow
configuration_name
string (required) Example: configuration1

Nombre de la configuración de la API. Puedes gestionar tus configuraciones de API en https://mensagia.com/api/configurations.

message
string (required) Example: The message to send

El mensaje a enviar. Tenga en cuenta las consideraciones sobre mensajes a enviar en la documentación de Mensagia.

numbers
string (required) Example: 34600000001,34600000002

Una lista de números de teléfono separados por coma, sin espacios y con el prefijo internacional.

start_date
datetime (optional) Example: 2016-01-28 15:00

Fecha de envío con el formato ‘YYYY-MM-DD hh:mm’. Si no envías este parametro, el envío se realizará inmediatemente.

Response  200
HideShow
Headers
Content-Type: application/json
Body
{
  "data": {
    "id": "25",
    "name": "#25",
    "message": "fdsf asdlkfjasdlkfj kjf asdkjf kasldjf lkasdj flksadj flkasdjf lkasdj flksadj flksadj fldfdfkasdj flkadsj flkajsd fkljas dklfj asdlkfjklasdjf lkasdjff lksdaj #name#",
    "price": 0.116,
    "push_sender_name": "REMITENTE",
    "route_name": "Conexión directa",
    "total_messages_sent": 2,
    "dlrs": [
      {
        "message_id": "20160929103615-1-896511-22ce101d-f0b1-4f03-aaab-fb02cfd1e059",
        "number": "34600000001",
        "messages_sent": 1
      },
      {
        "message_id": "20160929103615-1-374042-5e76d2fe-dbfb-4553-adb3-acc0d71c8f5c",
        "number": "34600000002",
        "messages_sent": 1
      }
    ],
    "callback_url": "http://domain.com/post"
  }
}
Response  400
HideShow
Headers
Content-Type: application/json
Body
{
  "error": {
    "code": "VALIDATION_FAIL",
    "message": "The data validation is not correct. See validation_errors array.",
    "http_code": "400",
    "validation_errors": {
      "configuration_name": "The configuration name 'configuration_test_bronz' doesn't exist. Create one at http://mensagia.com/api/configurations"
    }
  }
}
Response  400
HideShow
Headers
Content-Type: application/json
Body
{
  "error": {
    "code": "VALIDATION_FAIL",
    "message": "The data validation is not correct. See validation_errors array.",
    "http_code": "400",
    "validation_errors": {
      "numbers": {
        "3460100200": [
          "Number not valid"
        ],
        "33600100201": [
          "The message can not be sent by the selected route"
        ]
      },
      "balance": "You do not have enough credit for this shipment. Current Balance: 1.000. Price: 1.044",
      "message": "The message field may not be greater than 5 messages or 1800 characters. Number of SMS: 7. Characters: 1088."
    }
  }
}
Response  403
HideShow
Headers
Content-Type: application/json
Body
{
  "error": {
    "code": "FORBIDDEN",
    "http_code": 403,
    "message": "Forbidden: This method must be called from customer account"
  }
}
Response  500
HideShow
Headers
Content-Type: application/json
Body
{
  "error": {
    "code": "INTERNAL_ERROR",
    "http_code": 500,
    "message": "Internal Server Error."
  }
}

Envio Multiple

Envio Multiple
POST/push/multiple/{?configuration_name,messages}

Este método te permite enviar un SMS distinto a destinatarios diferentes, con un máximo de 3000 destinatarios por petición.

Puedes obtener más información sobre los Envíos Múltiples en la documentación de Mensagia.

Puedes encontrar ejemplos de envío en diferentes lenguajes de programación en los ejemplos de Envío Múltiple

Example URI

POST https://api.mensagia.com/v1/push/multiple/?configuration_name=configuration1&messages=[{"number":"34600002849","message":"Message 1"},{"number":"34600002850","message":"Message 02"}]
URI Parameters
HideShow
configuration_name
string (required) Example: configuration1

Nombre de la configuración de la API. Puedes gestionar tus configuraciones de API en https://mensagia.com/api/configurations.

messages
string (required) Example: [{"number":"34600002849","message":"Message 1"},{"number":"34600002850","message":"Message 02"}]

A JSON array that contains a list of number and message to send. For each element you must send ‘number’ and ‘messages’ fields. Limit 3000 elements.

Response  200
HideShow
Headers
Content-Type: application/json
Body
{
  "data": {
    "id": 1,
    "push_sender_name": "REMITENTE",
    "route_name": "Conexión directa",
    "total_messages_sent": 6,
    "price": 0.348,
    "dlrs": [
      {
        "message_id": "20160929135526-1-890876-f32232af-a95f-4611-b213-5a4a33c686a8",
        "number": "34600000001",
        "messages_sent": 3
      },
      {
        "message_id": "20160929135526-1-478176-ecd146a7-dd5c-49ef-99f9-716099fff9b8",
        "number": "34600000002",
        "messages_sent": 1
      },
      {
        "message_id": "20160929135526-1-854209-6b1fd3c9-2339-4784-a2c8-65ab69501958",
        "number": "34600000003",
        "messages_sent": 1
      },
      {
        "message_id": "20160929135526-1-752643-da50d4e0-1db3-4ced-b587-f79947004248",
        "number": "34600000004",
        "messages_sent": 1
      }
    ],
    "callback_url": "http://domain.com/post"
  }
}
Response  400
HideShow
Headers
Content-Type: application/json
Body
{
  "error": {
    "code": "VALIDATION_FAIL",
    "message": "The data validation is not correct. See validation_errors array.",
    "http_code": "400",
    "validation_errors": {
      "configuration_name": "The configuration name 'configuration_test_bronz' doesn't exist. Create one at http://mensagia.com/api/configurations"
    }
  }
}
Response  400
HideShow
Headers
Content-Type: application/json
Body
{
  "error": {
    "code": "VALIDATION_FAIL",
    "message": "The data validation is not correct. See validation_errors array.",
    "http_code": "400",
    "validation_errors": {
      "messages": "The messages field isn't a valid JSON: Syntax error, malformed JSON."
    }
  }
}
Response  400
HideShow
Headers
Content-Type: application/json
Body
{
  "error": {
    "code": "VALIDATION_FAIL",
    "message": "The data validation is not correct. See validation_errors array.",
    "http_code": "400",
    "validation_errors": {
      "numbers": {
        "3460010202": [
          "Number not valid"
        ],
        "34600100200": [
          "The message field may not be greater than 5 messages or 1800 characters. Number of SMS: 9. Characters: 1292."
        ],
        "33600100203": [
          "The message can not be sent by the selected route"
        ]
      },
      "balance": "You do not have enough credit for this shipment. Current Balance: 1.000. Price: 1.102"
    }
  }
}
Response  403
HideShow
Headers
Content-Type: application/json
Body
{
  "error": {
    "code": "FORBIDDEN",
    "http_code": 403,
    "message": "Forbidden: This method must be called from customer account"
  }
}
Response  500
HideShow
Headers
Content-Type: application/json
Body
{
  "error": {
    "code": "INTERNAL_ERROR",
    "http_code": 500,
    "message": "Internal Server Error."
  }
}

Envio Masivo - Campañas

Envio Masivo - Campañas
POST/push/campaigns/{?configuration_name,message,name,available_groups,start_date,minutesxblock,smsxblock,days,time_intervals}

Alias

Este método es un alias de Crear una campaña

No importa cual uses, es el mismo método con diferentes rutas.

Este método te permite crear una nueva campaña de envíos SMS. Puedes enviar un SMS a los destinatarios de las agendas que elijas, sin limite de destinatarios.

Puedes obtener más información sobre los Envíos Másivos - Campañas en la documentación de Mensagia.

Puedes encontrar ejemplos de envío en diferentes lenguajes de programación en los ejemplos de Envío Masivo - Campañas

Example URI

POST https://api.mensagia.com/v1/push/campaigns/?configuration_name=configuration-1&message=The message to send&name=Campaign Number 1&available_groups=2,5&start_date=2016-01-28 15:00&minutesxblock=10&smsxblock=10&days=1,2,3,4,5&time_intervals=09:00-13:00,17:00-21:00
URI Parameters
HideShow
configuration_name
string (required) Example: configuration-1

Nombre de la configuración de la API. Puedes gestionar tus configuraciones de API en https://mensagia.com/api/configurations.

message
string (required) Example: The message to send

El mensaje a enviar. Tenga en cuenta las consideraciones sobre mensajes a enviar en la documentación de Mensagia.

name
string (required) Example: Campaign Number 1

El nombre para la nueva campaña.

available_groups
string (required) Example: 2,5

Lista de ID’s de agendas existentes, separadas por coma y sin espacios.

start_date
datetime (optional) Example: 2016-01-28 15:00

Fecha de inicio de campaña en el formato ‘YYYY-MM-DD hh:mm’. Si no envías este parametro, la campaña empezará dos minutos después de la creación de la nueva campaña.

smsxblock
integer (optional) Example: 10

Número de destinatarios por bloque. Obligatorio en presencia de minutesxblock. Si los dos parámetros son enviados, la configuración de la campaña se define como ‘configuración personalizada’ y el valor de los parámetros days y time_intervals serán tomados en cuenta.

minutesxblock
integer (optional) Example: 10

Cada cuantos minutos se enviará el bloque de destinarios escogidos en smsxblock. Obligatorio en presencia de smsxblock. Si los dos parámetros son enviados, la configuración de la campaña se define como ‘configuración personalizada’ y el valor de los parámetros days y time_intervals serán tomados en cuenta.

days
string (optional) Default: 1,2,3,4,5,6,7 Example: 1,2,3,4,5

Una lista de días de la semana separada por comas y sin espacios en la cual los mensajes pueden ser enviados. (1 = Lunes, 2 = Martes, 3 = Miercoles, 4 = Jueves, 5 = Viernes, 6 = Sábado, 7 = Domingo). Solo será tomado en cuenta si minutesxblock y smsxblock son enviados.

time_intervals
string (optional) Default: 08:00-22:59 Example: 09:00-13:00,17:00-21:00

Una lista de intérvalos de tiempo separados por comas y sin espacios, en los cuales el mensaje podrá ser enviado. Solo será tomado en cuenta si minutesxblock y smsxblock son enviados.

Response  200
HideShow
Headers
Content-Type: application/json
Body
{
    "data": {
        "id": 16,
        "name": "Test Campaign API",
        "active": 1,
        "state_id": 1,
        "state_name": "Waiting",
        "message": "Message New Campaign",
        "start_date": "2015-11-11 11:11:00",
        "push_sender_name": "SENDER",
        "route_name": "Conexión directa",
        "groups": [
            {
                "id": 3,
                "name": "Agenda Números Españoles"
            },
            {
                "id": 4,
                "name": "Agenda Números Franceses"
            },
            {
                "id": 5,
                "name": "Agenda Números Andorra"
            }
        ],
        "callback_url": "https://mensagia.com/post",
        "type": "Multiple",
        "smsxblock": 100,
        "minutesxblock": 6,
        "days_allowed": [
            "monday",
            "tuesday",
            "wednesday",
            "thursday",
            "friday"
        ],
        "time_intervals_allowed": [
            "15:00-16:59",
            "22:00-22:30"
        ],
        "origin": "from_agenda",
        "filename": "",
        "need_approval": false
        "recipients": 11
    }
}
Response  400
HideShow
Headers
Content-Type: application/json
Body
{
  "error": {
    "code": "VALIDATION_FAIL",
    "message": "The data validation is not correct. See validation_errors array.",
    "http_code": "400",
    "validation_errors": {
      "configuration_name": "The configuration name 'configuration_test_bronz' doesn't exist. Create one at http://mensagia.com/api/configurations"
    }
  }
}
Response  400
HideShow
Headers
Content-Type: application/json
Body
{
  "error": {
    "code": "VALIDATION_FAIL",
    "message": "The data validation is not correct. See validation_errors array.",
    "http_code": "400",
    "validation_errors": {
      "name": [
        "The name field is required."
      ],
      "message": [
        "The message field is required."
      ],
      "available_groups": [
        "The available groups field is required."
      ]
    }
  }
}
Response  400
HideShow
Headers
Content-Type: application/json
Body
Error list
AGENDA_NOT_FOUND | Not valid groups
CAMPAIGN_NOT_FOUND | The campaign was not found  
CAMPAIGN_NOT_MODIFIABLE | The campaign is not modifiable  
ROUTE_NEED_PUSH_SENDER | Can not find any sender. The chosen route requires a sender. Check the api configuration section and try to create a new one.
NO_ROUTE_DEFINED | Can not find any route to send messages. Check the api configuration section and try to create a new one.
DATE_INVALID | The date entered is incorrect. Use the format 'd-m-Y H:i'  
TIME_INTERVALS_NOT_VALID | There are invalid time intervals. Use this format 'hh:ii' in a comma separated string ('09:00-11:00,15:00-18:00') 
SMS_X_BLOCK_NOT_DEFINED | Sms x Block not defined  
SMS_X_BLOCK_NOT_INTEGER | Sms x Block is not an integer  
MINUTES_X_BLOCK_NOT_DEFINED | Minutes x Block not defined  
MINUTES_X_BLOCK_NOT_INTEGER | Minutes x Block must be an integer  
SMS_COEFFICIENT_NOT_ALLOWED | The custom configuration is invalid. The coefficient of messages per minute should be less. Change the value of minutesxblock and smsxblock.

{
  "error": {
    "code": "TIME_INTERVALS_NOT_VALID",
    "message": "There are invalid time intervals.",
    "http_code": 400,
    "intervals": [
      {
        "interval": "15:00-15:30",
        "error": "INTERVAL_INSIDE_ANOTHER"
      },
      {
        "interval": "23-23:33",
        "error": "INTERVAL_NOT_VALID"
      }
    ]
  }
}
Response  403
HideShow
Headers
Content-Type: application/json
Body
{
  "error": {
    "code": "FORBIDDEN",
    "http_code": 403,
    "message": "Forbidden: This method must be called from customer account"
  }
}
Response  500
HideShow
Headers
Content-Type: application/json
Body
{
  "error": {
    "code": "INTERNAL_ERROR",
    "http_code": 500,
    "message": "Internal Server Error."
  }
}

Envio Masivo a traves de archivo - Campañas

Envio Masivo a traves de archivo - Campañas
POST/push/campaigns_from_file/{?configuration_name,name,file,num_col_number,num_col_message,add_prefix,file_has_heading,clean_non_gsm7_chars,start_date,minutesxblock,smsxblock,days,time_intervals}

Alias

Este método es un alias de Crear una campaña a través de archivo

No importa cual uses, es el mismo método con diferentes rutas.

Este método te permite realizar un envío masivo de SMS a través de un archivo (.txt, .csv o .xlsx) que contiene una columna con los números de los destinatarios y en otra columna el mensaje a enviar a cada destinatario. A diferencia del Envío Másivo normal, podemos realizar el envío sin la necesidad de usar agendas ni guardar los contactos previamente y enviar un SMS diferente a cada destinatario.

Este método es el más eficiente si deseas enviar un gran volumen de SMS y no quieres guardar tus contactos en agendas, únicamente realizar una campaña de envío SMS con un mensaje diferente o no para cada uno de los destinatarios. A diferencia de otros métodos como ‘Importar contactos mediante JSON’ del grupo ‘Contactos’, al utilizar un archivo no hay límite de contactos a enviar por petición por lo que simplifica el proceso de enviar una campaña.

Los contactos que hay en el archivo serán guardados automáticamente en la agenda ‘Todos los contactos’ después de procesarlos para agilizar futuras campañas a través de archivo.

Puedes obtener más información sobre los Envíos Másivo a través de archivo en la documentación de Mensagia.

Example URI

POST https://api.mensagia.com/v1/push/campaigns_from_file/?configuration_name=configuration-1&name=Campaign Number 1&file=contacts.csv&num_col_number=1&num_col_message=2&add_prefix=34&file_has_heading=1&clean_non_gsm7_chars=1&start_date=2016-01-28 15:00&minutesxblock=10&smsxblock=10&days=1,2,3,4,5&time_intervals=09:00-13:00,17:00-21:00
URI Parameters
HideShow
configuration_name
string (required) Example: configuration-1

Nombre de la configuración de la API. Puedes gestionar tus configuraciones de API en https://mensagia.com/api/configurations.

name
string (required) Example: Campaign Number 1

El nombre para la nueva campaña.

file
file (required) Example: contacts.csv

Un archivo TXT (.txt), CSV (.csv) o Excel (.xlsx) que contenga una columna con los números de movil y otra columna con el mensaje a enviar a cada número de movil. El archivo ha de tener un peso máximo de 50 MB.

num_col_number
integer (optional) Default: 1 Example: 1

El número de la columna que contiene los números de móvil.

num_col_message
integer (optional) Default: 2 Example: 2

El número de la columna que contiene los mensajes a enviar.

add_prefix
integer (optional) Example: 34

Si ningún número de móvil del archivo tiene prefijo y son todos del mismo país, puedes añadirle el prefijo que desees a todos los números de móvil del archivo.

file_has_heading
integer (optional) Default: 0 Example: 1

Si la primera línea del archivo a subir contiene encabezados (títulos de las columnas) envía un 1 para que no procesemos la primera línea del archivo.

Choices: 0 1

clean_non_gsm7_chars
integer (optional) Default: 0 Example: 1

Si envías un 1, substituiremos (cuando sea posible) o eliminaremos de todos los mensajes los caracteres que no sean GSM7 y que pueden provocar que se active el envío en UNICODE y aumente el número de SMS a enviar.

Choices: 0 1

start_date
datetime (optional) Example: 2016-01-28 15:00

Fecha de inicio de campaña en el formato ‘YYYY-MM-DD hh:mm’. Si no envías este parametro, la campaña empezará dos minutos después de la creación de la nueva campaña.

smsxblock
integer (optional) Example: 10

Número de destinatarios por bloque. Obligatorio en presencia de minutesxblock. Si los dos parámetros son enviados, la configuración de la campaña se define como ‘configuración personalizada’ y el valor de los parámetros days y time_intervals serán tomados en cuenta.

minutesxblock
integer (optional) Example: 10

Cada cuantos minutos se enviará el bloque de destinarios escogidos en smsxblock. Obligatorio en presencia de smsxblock. Si los dos parámetros son enviados, la configuración de la campaña se define como ‘configuración personalizada’ y el valor de los parámetros days y time_intervals serán tomados en cuenta.

days
string (optional) Default: 1,2,3,4,5,6,7 Example: 1,2,3,4,5

Una lista de días de la semana separada por comas y sin espacios en la cual los mensajes pueden ser enviados. (1 = Lunes, 2 = Martes, 3 = Miercoles, 4 = Jueves, 5 = Viernes, 6 = Sábado, 7 = Domingo). Solo será tomado en cuenta si minutesxblock y smsxblock son enviados.

time_intervals
string (optional) Default: 08:00-22:59 Example: 09:00-13:00,17:00-21:00

Una lista de intérvalos de tiempo separados por comas y sin espacios, en los cuales el mensaje podrá ser enviado. Solo será tomado en cuenta si minutesxblock y smsxblock son enviados.

Response  200
HideShow
Headers
Content-Type: application/json
Body
{
  "data": {
    "id": 6,
    "name": "Campaña a través de archivo",
    "active": 1,
    "state_id": 8,
    "state_name": "Waiting for reading",
    "message": "",
    "start_date": "2030-01-22 11:00:00",
    "push_sender_name": "SENDER",
    "route_name": "Conexión directa",
    "groups": [],
    "callback_url": "",
    "type": "Multiple",
    "smsxblock": 10,
    "minutesxblock": 100,
    "days_allowed": [
      "monday",
      "tuesday",
      "friday"
    ],
    "time_intervals_allowed": [
      "8:00-12:00",
      "16:00-19:00"
    ],
    "origin": "from_file",
    "filename": "contacts.csv",
    "need_approval": false,
    "recipients": 0,
    "process_id": 14
  }
}
Response  400
HideShow
Headers
Content-Type: application/json
Body
{
  "error": {
    "code": "VALIDATION_FAIL",
    "message": "The data validation is not correct. See validation_errors array.",
    "http_code": "400",
    "validation_errors": {
      "configuration_name": "The configuration name 'configuration_test_bronz' doesn't exist. Create one at http://mensagia.com/api/configurations"
    }
  }
}
Response  400
HideShow
Headers
Content-Type: application/json
Body
{
  "error": {
    "code": "VALIDATION_FAIL",
    "message": "The data validation is not correct. See validation_errors array.",
    "http_code": "400",
    "validation_errors": {
      "name": [
        "The name field is required."
      ],
      "message": [
        "The message field is required."
      ],
      "available_groups": [
        "The available groups field is required."
      ]
    }
  }
}
Response  400
HideShow
Headers
Content-Type: application/json
Body
Error list
AGENDA_NOT_FOUND | Not valid groups
CAMPAIGN_NOT_FOUND | The campaign was not found  
CAMPAIGN_NOT_MODIFIABLE | The campaign is not modifiable  
ROUTE_NEED_PUSH_SENDER | Can not find any sender. The chosen route requires a sender. Check the api configuration section and try to create a new one.
NO_ROUTE_DEFINED | Can not find any route to send messages. Check the api configuration section and try to create a new one.
DATE_INVALID | The date entered is incorrect. Use the format 'd-m-Y H:i'  
TIME_INTERVALS_NOT_VALID | There are invalid time intervals. Use this format 'hh:ii' in a comma separated string ('09:00-11:00,15:00-18:00') 
SMS_X_BLOCK_NOT_DEFINED | Sms x Block not defined  
SMS_X_BLOCK_NOT_INTEGER | Sms x Block is not an integer  
MINUTES_X_BLOCK_NOT_DEFINED | Minutes x Block not defined  
MINUTES_X_BLOCK_NOT_INTEGER | Minutes x Block must be an integer  
SMS_COEFFICIENT_NOT_ALLOWED | The custom configuration is invalid. The coefficient of messages per minute should be less. Change the value of minutesxblock and smsxblock.
AGENDA_CREATE_FAILS | Failed when creating internal agenda
CAMPAIGN_WITHOUT_AGENDA | Can not find internal agenda from campaign
PROCESS_CREATE_FAILS | Failed when creating new process
CAMPAING_CREATE_FAILS | Failed creating campaign

{
  "error": {
    "code": "TIME_INTERVALS_NOT_VALID",
    "message": "There are invalid time intervals.",
    "http_code": 400,
    "intervals": [
      {
        "interval": "15:00-15:30",
        "error": "INTERVAL_INSIDE_ANOTHER"
      },
      {
        "interval": "23-23:33",
        "error": "INTERVAL_NOT_VALID"
      }
    ]
  }
}
Response  403
HideShow
Headers
Content-Type: application/json
Body
{
  "error": {
    "code": "FORBIDDEN",
    "http_code": 403,
    "message": "Forbidden: This method must be called from customer account"
  }
}
Response  500
HideShow
Headers
Content-Type: application/json
Body
{
  "error": {
    "code": "INTERNAL_ERROR",
    "http_code": 500,
    "message": "Internal Server Error."
  }
}

Envio Masivo - Campañas

Métodos para administrar las campañas de tu cuenta

Accesible únicamente para cuentas de tipo cliente

Obtener todas las campañas

Obtener todas las campañas
GET/campaigns/{?name,search_type,active,state_id,start_date_min,start_date_max}

Este método te permite obtener todas las campañas de tu cuenta, o buscar campañas según los parámetros enviados.

Example URI

GET https://api.mensagia.com/v1/campaigns/?name=diciemb&search_type=equals&active=1&state_id=5&start_date_min=2016-01-01 12:30:00&start_date_max=2017-01-01 12:30:00
URI Parameters
HideShow
name
string (optional) Example: diciemb

Envía este parámetro si quieres buscar por nombre de la campaña. Ten en cuenta el parámetro search_type para el tipo de búsqueda.

search_type
string (optional) Default: contains Example: equals

Elegir el tipo de búsqueda para campos de tipo string. Por defecto el valor del campo search_type es contains y devolverá elementos que contengan el valor que enviaste. Si el valor de search_type es equals se devolverán unicamente elementos que coincidan exactamente con el valor enviado, sin tener en cuenta coincidencias o elementos que lo contengan.

Choices: contains equals

active
integer (optional) Example: 1

Envía este parámetro si quieres buscar campañas por su estado.

Choices: 0 1

state_id
integer (optional) Example: 5

Envía este parámetro si quieres buscar campañas por su estado de campaña. Consulta los estados posibles de una campaña y los estados de una de una campaña a partir de archivo en la documentación de Mensagia.

Choices: 1 2 3 4 5 6 7 8 9

start_date_min
datetime (optional) Example: 2016-01-01 12:30:00

Envía este parámetro si quieres buscar campañas que su fecha de inicio sea más grande o igual que el valor de start_date_min.

start_date_max
datetime (optional) Example: 2017-01-01 12:30:00

Envía este parámetro si quieres buscar campañas que su fecha de inicio sea más pequeña o igual al valor de start_date_max.

Response  200
HideShow
Headers
Content-Type: application/json
Body
{
  "data": [
    {
      "id": 8,
      "name": "Estado En Espera - Campos Personalizados",
      "active": 1,
      "state_id": 1,
      "state_name": "Waiting",
      "message": "Hola #name#! ",
      "start_date": "2030-01-03 11:00:00",
      "push_sender_name": "SENDER",
      "route_name": "Conexión directa",
      "groups": [
        {
          "id": 2,
          "name": "Todos los contactos"
        }
      ],
      "callback_url": "",
      "type": "Simple",
      "smsxblock": "",
      "minutesxblock": "",
      "days_allowed": [],
      "time_intervals_allowed": [],
      "origin": "from_agenda",
      "filename": "",
      "need_approval": false
    },
    {
      "id": 7,
      "name": "Estado En Espera - Multiple",
      "active": 1,
      "state_id": 1,
      "state_name": "Waiting",
      "message": "Mensaje Campaña - Multiple ",
      "start_date": "2030-01-02 11:00:00",
      "push_sender_name": "SENDER",
      "route_name": "Conexión directa",
      "groups": [
        {
          "id": 2,
          "name": "Todos los contactos"
        }
      ],
      "callback_url": "",
      "type": "Multiple",
      "smsxblock": 10,
      "minutesxblock": 100,
      "days_allowed": [
        "monday",
        "tuesday",
        "friday"
      ],
      "time_intervals_allowed": [
        "8:00-12:00",
        "16:00-19:00"
      ],
      "origin": "from_agenda",
      "filename": "",
      "need_approval": false
    },
    {
      "id": 6,
      "name": "Campaña a través de fichero",
      "active": 1,
      "state_id": 7,
      "state_name": "Waiting for approval",
      "message": "",
      "start_date": "2030-01-22 11:00:00",
      "push_sender_name": "SENDER",
      "route_name": "Conexión directa",
      "groups": [],
      "callback_url": "",
      "type": "Multiple",
      "smsxblock": 10,
      "minutesxblock": 100,
      "days_allowed": [
        "monday",
        "tuesday",
        "friday"
      ],
      "time_intervals_allowed": [
        "8:00-12:00",
        "16:00-19:00"
      ],
      "origin": "from_file",
      "filename": "myFile.csv",
      "need_approval": true
    }
  ],
  "meta": {
    "pagination": {
      "total": 3,
      "count": 3,
      "per_page": 10,
      "current_page": 1,
      "total_pages": 1,
      "links": []
    }
  }
}
Response  400
HideShow
Headers
Content-Type: application/json
Body
{
  "error": {
    "code": "WRONG_ARGS",
    "http_code": 400,
    "message": "The start_date_min value (20290-01-01 0:00:00) has not the correct format: YYYY-MM-DD HH:II:SS (2001-01-01 00:00:00)"
  }
}
Response  400
HideShow
Headers
Content-Type: application/json
Body
{
  "error": {
    "code": "WRONG_ARGS",
    "http_code": 400,
    "message": "The start_date_max value (20231-01-01 0:00:00) has not the correct format: YYYY-MM-DD HH:II:SS (2002-01-01 00:00:00)"
  }
}
Response  403
HideShow
Headers
Content-Type: application/json
Body
{
  "error": {
    "code": "FORBIDDEN",
    "http_code": 403,
    "message": "Forbidden: This method must be called from customer account"
  }
}
Response  500
HideShow
Headers
Content-Type: application/json
Body
{
  "error": {
    "code": "INTERNAL_ERROR",
    "http_code": 500,
    "message": "Internal Server Error."
  }
}

Obtener una campaña

Obtener una campaña
GET/campaigns/{id}/

Este método te permite obtener la información de una campaña creada en tu cuenta

Example URI

GET https://api.mensagia.com/v1/campaigns/10/
URI Parameters
HideShow
id
integer (required) Example: 10

ID de campaña para obtener información

show_messages_to_send
integer (optional) Example: 1

Si envias un 0, no se mostrará la informacíon sobre los mensajes a enviar. Si envias un 1, se mostrará la informacíon sobre los mensajes a enviar. Valor por defecto: 0.

Choices: 0 1

show_messages_sent
integer (optional) Example: 0

Si envias un 0, no se mostrará la informacíon sobre los mensajes enviados. Si envias un 1, se mostrará la informacíon sobre los mensajes enviados. Valor por defecto: 0.

Choices: 0 1

Response  200
HideShow
Headers
Content-Type: application/json
Body
{
  "data": {
    "id": 10,
    "name": "Campaña - Simple",
    "active": 1,
    "state_id": 3,
    "state_name": "Running",
    "push_sender_name": "SENDER",
    "route_name": "Conexión directa",
    "groups": [
      {
        "id": 2,
        "name": "Todos los contactos"
      }
    ],
    "message": "Estado En Curso - Simple con UNICODE á,ç,´. Estado En Curso - Simple con UNICODE á,ç,´. ",
    "start_date": "2016-01-01 11:00:00",
    "type": "Simple",
    "smsxblock": "",
    "minutesxblock": "",
    "days_allowed": [],
    "time_intervals_allowed": [],
    "origin": "from_agenda",
    "filename": "",
    "need_approval": false,
    "reports_to_send": {
      "total_recipients_to_send": 8,
      "total_messages_to_send": 16,
      "total_price_to_send": 0.904,
      "by_country": {
        "es": {
          "recipients": 5,
          "messages_to_send": 10,
          "price": 0.58
        },
        "ad": {
          "recipients": 1,
          "messages_to_send": 2,
          "price": 0.068
        },
        "fr": {
          "recipients": 2,
          "messages_to_send": 4,
          "price": 0.256
        }
      }
    },
    "reports_sent": {
      "total_recipients_sent": 3,
      "total_messages_sent": 6,
      "total_price_sent": 0.212,
      "by_country": {
        "es": {
          "recipients": 1,
          "messages_sent": 2,
          "price": 0.096
        },
        "ad": {
          "recipients": 1,
          "messages_sent": 2,
          "price": 0.048
        },
        "fr": {
          "recipients": 1,
          "messages_sent": 2,
          "price": 0.068
        }
      }
    }
  }
}
Response  403
HideShow
Headers
Content-Type: application/json
Body
{
  "error": {
    "code": "FORBIDDEN",
    "http_code": 403,
    "message": "Forbidden: This method must be called from customer account"
  }
}
Response  404
HideShow
Headers
Content-Type: application/json
Body
{
  "error": {
    "code": "NOT_FOUND",
    "http_code": 404,
    "message": "Campaign not found with id: 410"
  }
}
Response  500
HideShow
Headers
Content-Type: application/json
Body
{
  "error": {
    "code": "INTERNAL_ERROR",
    "http_code": 500,
    "message": "Internal Server Error."
  }
}

Crear una campaña

Crear una campaña
POST/campaigns/{?configuration_name,message,name,available_groups,start_date,minutesxblock,smsxblock,days,time_intervals}

Este método te permite crear una nueva campaña de envíos SMS. Puedes enviar un SMS a los destinatarios de las agendas que elijas, sin limite de destinatarios.

Puedes obtener más información sobre los Envíos Másivos - Campañas en la documentación de Mensagia.

Puedes encontrar ejemplos de envío en diferentes lenguajes de programación en los ejemplos de Envío Masivo - Campañas

Example URI

POST https://api.mensagia.com/v1/campaigns/?configuration_name=configuration-1&message=The message to send&name=Campaign Number 1&available_groups=2,5&start_date=2016-01-28 15:00&minutesxblock=10&smsxblock=10&days=1,2,3,4,5&time_intervals=09:00-13:00,17:00-21:00
URI Parameters
HideShow
configuration_name
string (required) Example: configuration-1

Nombre de la configuración de la API. Puedes gestionar tus configuraciones de API en https://mensagia.com/api/configurations.

message
string (required) Example: The message to send

El mensaje a enviar. Tenga en cuenta las consideraciones sobre mensajes a enviar en la documentación de Mensagia.

name
string (required) Example: Campaign Number 1

El nombre para la nueva campaña.

available_groups
string (required) Example: 2,5

Lista de ID’s de agendas existentes, separadas por coma y sin espacios.

start_date
datetime (optional) Example: 2016-01-28 15:00

Fecha de inicio de campaña en el formato ‘YYYY-MM-DD hh:mm’. Si no envías este parametro, la campaña empezará dos minutos después de la creación de la nueva campaña.

smsxblock
integer (optional) Example: 10

Número de destinatarios por bloque. Obligatorio en presencia de minutesxblock. Si los dos parámetros son enviados, la configuración de la campaña se define como ‘configuración personalizada’ y el valor de los parámetros days y time_intervals serán tomados en cuenta.

minutesxblock
integer (optional) Example: 10

Cada cuantos minutos se enviará el bloque de destinarios escogidos en smsxblock. Obligatorio en presencia de smsxblock. Si los dos parámetros son enviados, la configuración de la campaña se define como ‘configuración personalizada’ y el valor de los parámetros days y time_intervals serán tomados en cuenta.

days
string (optional) Example: 1,2,3,4,5

Una lista de días de la semana separada por comas y sin espacios en la cual los mensajes pueden ser enviados. (1 = Lunes, 2 = Martes, 3 = Miercoles, 4 = Jueves, 5 = Viernes, 6 = Sábado, 7 = Domingo). Solo será tomado en cuenta si minutesxblock y smsxblock son enviados. Valor por defecto: ‘1,2,3,4,5,6,7’

time_intervals
string (optional) Example: 09:00-13:00,17:00-21:00

Una lista de intérvalos de tiempo separados por comas y sin espacios, en los cuales el mensaje podrá ser enviado. Solo será tomado en cuenta si minutesxblock y smsxblock son enviados. Valor por defecto: ‘08:00-22:59’

Response  200
HideShow
Headers
Content-Type: application/json
Body
{
  "data": {
    "id": 16,
    "name": "Test Campaign API",
    "active": 1,
    "state_id": 1,
    "state_name": "Waiting",
    "message": "Message New Campaign",
    "start_date": "2015-11-11 11:11:00",
    "push_sender_name": "SENDER",
    "route_name": "Conexión directa",
    "groups": [
      {
        "id": 3,
        "name": "Agenda Números Españoles"
      },
      {
        "id": 4,
        "name": "Agenda Números Franceses"
      },
      {
        "id": 5,
        "name": "Agenda Números Andorra"
      }
    ],
    "callback_url": "https://mensagia.com/post",
    "type": "Multiple",
    "smsxblock": 100,
    "minutesxblock": 6,
    "days_allowed": [
      "monday",
      "tuesday",
      "wednesday",
      "thursday",
      "friday"
    ],
    "time_intervals_allowed": [
      "15:00-16:59",
      "22:00-22:30"
    ],
    "origin": "from_agenda",
    "filename": "",
    "need_approval": false,
    "recipients": 11
  }
}
Response  400
HideShow
Headers
Content-Type: application/json
Body
{
  "error": {
    "code": "VALIDATION_FAIL",
    "message": "The data validation is not correct. See validation_errors array.",
    "http_code": "400",
    "validation_errors": {
      "configuration_name": "The configuration name 'configuration_test_bronz' doesn't exist. Create one at http://mensagia.com/api/configurations"
    }
  }
}
Response  400
HideShow
Headers
Content-Type: application/json
Body
{
  "error": {
    "code": "VALIDATION_FAIL",
    "message": "The data validation is not correct. See validation_errors array.",
    "http_code": "400",
    "validation_errors": {
      "name": [
        "The name field is required."
      ],
      "message": [
        "The message field is required."
      ],
      "available_groups": [
        "The available groups field is required."
      ]
    }
  }
}
Response  400
HideShow
Headers
Content-Type: application/json
Body
Error list
AGENDA_NOT_FOUND | Not valid groups
CAMPAIGN_NOT_FOUND | The campaign was not found  
CAMPAIGN_NOT_MODIFIABLE | The campaign is not modifiable  
ROUTE_NEED_PUSH_SENDER | Can not find any sender. The chosen route requires a sender. Check the api configuration section and try to create a new one.
NO_ROUTE_DEFINED | Can not find any route to send messages. Check the api configuration section and try to create a new one.
DATE_INVALID | The date entered is incorrect. Use the format 'd-m-Y H:i'  
TIME_INTERVALS_NOT_VALID | There are invalid time intervals. Use this format 'hh:ii' in a comma separated string ('09:00-11:00,15:00-18:00') 
SMS_X_BLOCK_NOT_DEFINED | Sms x Block not defined  
SMS_X_BLOCK_NOT_INTEGER | Sms x Block is not an integer  
MINUTES_X_BLOCK_NOT_DEFINED | Minutes x Block not defined  
MINUTES_X_BLOCK_NOT_INTEGER | Minutes x Block must be an integer  
SMS_COEFFICIENT_NOT_ALLOWED | The custom configuration is invalid. The coefficient of messages per minute should be less. Change the value of minutesxblock and smsxblock.

{
  "error": {
    "code": "TIME_INTERVALS_NOT_VALID",
    "message": "There are invalid time intervals.",
    "http_code": 400,
    "intervals": [
      {
        "interval": "15:00-15:30",
        "error": "INTERVAL_INSIDE_ANOTHER"
      },
      {
        "interval": "23-23:33",
        "error": "INTERVAL_NOT_VALID"
      }
    ]
  }
}
Response  403
HideShow
Headers
Content-Type: application/json
Body
{
  "error": {
    "code": "FORBIDDEN",
    "http_code": 403,
    "message": "Forbidden: This method must be called from customer account"
  }
}
Response  500
HideShow
Headers
Content-Type: application/json
Body
{
  "error": {
    "code": "INTERNAL_ERROR",
    "http_code": 500,
    "message": "Internal Server Error."
  }
}

Crear una campaña a traves de archivo

Crear una campaña a traves de archivo
POST/campaigns/from_file/{?configuration_name,name,file,num_col_number,num_col_message,add_prefix,file_has_heading,start_date,minutesxblock,smsxblock,days,time_intervals}

Este método te permite crear una campaña para realizar un envío masivo de SMS a través de un archivo (.xlsx o .csv) que contiene una columna con los números de los destinatarios y en otra columna el mensaje a enviar a cada destinatario. A diferencia del Envío Másivo normal, podemos realizar el envío sin la necesidad de usar agendas ni guardar los contactos previamente y enviar un SMS diferente a cada destinatario.

Este método es el más eficiente si deseas enviar un gran volumen de SMS y no quieres guardar tus contactos en agendas, únicamente realizar una campaña de envío SMS con un mensaje diferente o no para cada uno de los destinatarios. A diferencia de otros métodos como ‘Importar contactos mediante JSON’ del grupo ‘Contactos’, al utilizar un archivo no hay límite de contactos a enviar por petición por lo que simplifica el proceso de enviar una campaña.

Los contactos que hay en el archivo serán guardados automáticamente en la agenda ‘Todos los contactos’ después de procesarlos para agilizar futuras campañas a través de archivo.

Puedes obtener más información sobre los Envíos Másivo a través de archivo en la documentación de Mensagia.

Example URI

POST https://api.mensagia.com/v1/campaigns/from_file/?configuration_name=configuration-1&name=Campaign Number 1&file=contacts.csv&num_col_number=1&num_col_message=2&add_prefix=34&file_has_heading=1&start_date=2016-01-28 15:00&minutesxblock=10&smsxblock=10&days=1,2,3,4,5&time_intervals=09:00-13:00,17:00-21:00
URI Parameters
HideShow
configuration_name
string (required) Example: configuration-1

Nombre de la configuración de la API. Puedes gestionar tus configuraciones de API en https://mensagia.com/api/configurations.

name
string (required) Example: Campaign Number 1

El nombre para la nueva campaña.

file
file (required) Example: contacts.csv

Un archivo CSV (.csv) o Excel (.xlsx) que contenga una columna con los números de movil y otra columna con el mensaje a enviar a cada número de movil. El archivo ha de tener un peso máximo de 50 MB.

num_col_number
integer (optional) Default: 1 Example: 1

El número de la columna que contiene los números de móvil.

num_col_message
integer (optional) Default: 2 Example: 2

El número de la columna que contiene los mensajes a enviar.

add_prefix
integer (optional) Example: 34

Si ningún número de móvil del archivo tiene prefijo y son todos del mismo país, puedes añadirle el prefijo que desees a todos los números de móvil del archivo.

file_has_heading
integer (optional) Default: 0 Example: 1

Si la primera línea del archivo a subir contiene encabezados (títulos de las columnas) envía un 1 para que no procesemos la primera línea del archivo.

Choices: 0 1

start_date
datetime (optional) Example: 2016-01-28 15:00

Fecha de inicio de campaña en el formato ‘YYYY-MM-DD hh:mm’. Si no envías este parametro, la campaña empezará dos minutos después de la creación de la nueva campaña.

smsxblock
integer (optional) Example: 10

Número de destinatarios por bloque. Obligatorio en presencia de minutesxblock. Si los dos parámetros son enviados, la configuración de la campaña se define como ‘configuración personalizada’ y el valor de los parámetros days y time_intervals serán tomados en cuenta.

minutesxblock
integer (optional) Example: 10

Cada cuantos minutos se enviará el bloque de destinarios escogidos en smsxblock. Obligatorio en presencia de smsxblock. Si los dos parámetros son enviados, la configuración de la campaña se define como ‘configuración personalizada’ y el valor de los parámetros days y time_intervals serán tomados en cuenta.

days
string (optional) Default: 1,2,3,4,5,6,7 Example: 1,2,3,4,5

Una lista de días de la semana separada por comas y sin espacios en la cual los mensajes pueden ser enviados. (1 = Lunes, 2 = Martes, 3 = Miercoles, 4 = Jueves, 5 = Viernes, 6 = Sábado, 7 = Domingo). Solo será tomado en cuenta si minutesxblock y smsxblock son enviados.

time_intervals
string (optional) Default: 08:00-22:59 Example: 09:00-13:00,17:00-21:00

Una lista de intérvalos de tiempo separados por comas y sin espacios, en los cuales el mensaje podrá ser enviado. Solo será tomado en cuenta si minutesxblock y smsxblock son enviados.

Response  200
HideShow
Headers
Content-Type: application/json
Body
{
  "data": {
    "id": 6,
    "name": "Campaña a través de archivo",
    "active": 1,
    "state_id": 8,
    "state_name": "Waiting for reading",
    "message": "",
    "start_date": "2030-01-22 11:00:00",
    "push_sender_name": "SENDER",
    "route_name": "Conexión directa",
    "groups": [],
    "callback_url": "",
    "type": "Multiple",
    "smsxblock": 10,
    "minutesxblock": 100,
    "days_allowed": [
      "monday",
      "tuesday",
      "friday"
    ],
    "time_intervals_allowed": [
      "8:00-12:00",
      "16:00-19:00"
    ],
    "origin": "from_file",
    "filename": "contacts.csv",
    "need_approval": false,
    "recipients": 0,
    "process_id": 14
  }
}
Response  400
HideShow
Headers
Content-Type: application/json
Body
{
  "error": {
    "code": "VALIDATION_FAIL",
    "message": "The data validation is not correct. See validation_errors array.",
    "http_code": "400",
    "validation_errors": {
      "configuration_name": "The configuration name 'configuration_test_bronz' doesn't exist. Create one at http://mensagia.com/api/configurations"
    }
  }
}
Response  400
HideShow
Headers
Content-Type: application/json
Body
{
  "error": {
    "code": "VALIDATION_FAIL",
    "message": "The data validation is not correct. See validation_errors array.",
    "http_code": "400",
    "validation_errors": {
      "name": [
        "The name field is required."
      ],
      "message": [
        "The message field is required."
      ],
      "available_groups": [
        "The available groups field is required."
      ]
    }
  }
}
Response  400
HideShow
Headers
Content-Type: application/json
Body
Error list
AGENDA_NOT_FOUND | Not valid groups
CAMPAIGN_NOT_FOUND | The campaign was not found  
CAMPAIGN_NOT_MODIFIABLE | The campaign is not modifiable  
ROUTE_NEED_PUSH_SENDER | Can not find any sender. The chosen route requires a sender. Check the api configuration section and try to create a new one.
NO_ROUTE_DEFINED | Can not find any route to send messages. Check the api configuration section and try to create a new one.
DATE_INVALID | The date entered is incorrect. Use the format 'd-m-Y H:i'  
TIME_INTERVALS_NOT_VALID | There are invalid time intervals. Use this format 'hh:ii' in a comma separated string ('09:00-11:00,15:00-18:00') 
SMS_X_BLOCK_NOT_DEFINED | Sms x Block not defined  
SMS_X_BLOCK_NOT_INTEGER | Sms x Block is not an integer  
MINUTES_X_BLOCK_NOT_DEFINED | Minutes x Block not defined  
MINUTES_X_BLOCK_NOT_INTEGER | Minutes x Block must be an integer  
SMS_COEFFICIENT_NOT_ALLOWED | The custom configuration is invalid. The coefficient of messages per minute should be less. Change the value of minutesxblock and smsxblock.
AGENDA_CREATE_FAILS | Failed when creating internal agenda
CAMPAIGN_WITHOUT_AGENDA | Can not find internal agenda from campaign
PROCESS_CREATE_FAILS | Failed when creating new process
CAMPAING_CREATE_FAILS | Failed creating campaign

{
  "error": {
    "code": "TIME_INTERVALS_NOT_VALID",
    "message": "There are invalid time intervals.",
    "http_code": 400,
    "intervals": [
      {
        "interval": "15:00-15:30",
        "error": "INTERVAL_INSIDE_ANOTHER"
      },
      {
        "interval": "23-23:33",
        "error": "INTERVAL_NOT_VALID"
      }
    ]
  }
}
Response  403
HideShow
Headers
Content-Type: application/json
Body
{
  "error": {
    "code": "FORBIDDEN",
    "http_code": 403,
    "message": "Forbidden: This method must be called from customer account"
  }
}
Response  500
HideShow
Headers
Content-Type: application/json
Body
{
  "error": {
    "code": "INTERNAL_ERROR",
    "http_code": 500,
    "message": "Internal Server Error."
  }
}

Activar una campaña

Activar una campaña
POST/campaigns/{id}/activate

Este método te permite activar una campaña desactiva.

Estados de campaña permitidos cuando activas

Ten en cuenta que sólo podras activar una campaña desactivada si tiene los siguientes estados:

  • En espera (1)
  • Iniciada (2)
  • Sin Saldo (4)

Example URI

POST https://api.mensagia.com/v1/campaigns/8/activate
URI Parameters
HideShow
id
integer (required) Example: 8

ID de campaña a activar

Response  200
HideShow
Headers
Content-Type: application/json
Body
{
  "data": {
    "id": 8,
    "name": "Estado En Espera - Campos Personalizados",
    "active": 1,
    "state_id": 1,
    "state_name": "Waiting",
    "message": "Estado En espera Campos Personalizados #name#",
    "start_date": "2030-01-03 11:00:00",
    "push_sender_name": "SENDER",
    "route_name": "Conexión directa",
    "groups": [
      {
        "id": 2,
        "name": "Todos los contactos"
      }
    ],
    "callback_url": "",
    "type": "Simple",
    "smsxblock": "",
    "minutesxblock": "",
    "days_allowed": [],
    "time_intervals_allowed": [],
    "origin": "from_agenda",
    "filename": "",
    "need_approval": false
  }
}
Response  403
HideShow
Headers
Content-Type: application/json
Body
{
  "error": {
    "code": "FORBIDDEN",
    "http_code": 403,
    "message": "Forbidden: This method must be called from customer account"
  }
}
Response  403
HideShow
Headers
Content-Type: application/json
Body
{
  "error": {
    "code": "FORBIDDEN",
    "http_code": 403,
    "message": "You can only activate disabled campaigns with the states: Ready (1), Started (2) and Without Balance (4)"
  }
}
Response  404
HideShow
Headers
Content-Type: application/json
Body
{
  "error": {
    "code": "NOT_FOUND",
    "http_code": 404,
    "message": "Campaign not found with id: 410"
  }
}
Response  500
HideShow
Headers
Content-Type: application/json
Body
{
  "error": {
    "code": "INTERNAL_ERROR",
    "http_code": 500,
    "message": "Internal Server Error."
  }
}

Desactivar una campaña

Desactivar una campaña
POST/campaigns/{id}/deactivate

Este método te permite desactivar una campaña activa.

Estados de campaña permitidos cuando desactivas

Ten en cuenta que sólo podras desactivar una campaña activa si tiene los siguientes estados:

  • En espera (1)
  • Iniciada (2)
  • En curso (3)

Example URI

POST https://api.mensagia.com/v1/campaigns/8/deactivate
URI Parameters
HideShow
id
integer (required) Example: 8

ID de campaña a desactivar

Response  200
HideShow
Headers
Content-Type: application/json
Body
{
  "data": {
    "id": 8,
    "name": "Estado En Espera - Campos Personalizados",
    "active": 0,
    "state_id": 1,
    "state_name": "Waiting",
    "message": "Estado En espera Campos Personalizados #name#",
    "start_date": "2030-01-03 11:00:00",
    "push_sender_name": "SENDER",
    "route_name": "Conexión directa",
    "groups": [
      {
        "id": 2,
        "name": "Todos los contactos"
      }
    ],
    "callback_url": "",
    "type": "Simple",
    "smsxblock": "",
    "minutesxblock": "",
    "days_allowed": [],
    "time_intervals_allowed": [],
    "origin": "from_agenda",
    "filename": "",
    "need_approval": false
  }
}
Response  403
HideShow
Headers
Content-Type: application/json
Body
{
  "error": {
    "code": "FORBIDDEN",
    "http_code": 403,
    "message": "Forbidden: This method must be called from customer account"
  }
}
Response  403
HideShow
Headers
Content-Type: application/json
Body
{
  "error": {
    "code": "FORBIDDEN",
    "http_code": 403,
    "message": "Forbidden: You can only deactivate activated campaigns with the states: Ready (1), Started (2) and Running (3)"
  }
}
Response  404
HideShow
Headers
Content-Type: application/json
Body
{
  "error": {
    "code": "NOT_FOUND",
    "http_code": 404,
    "message": "Campaign not found with id: 410"
  }
}
Response  500
HideShow
Headers
Content-Type: application/json
Body
{
  "error": {
    "code": "INTERNAL_ERROR",
    "http_code": 500,
    "message": "Internal Server Error."
  }
}

Enviar ahora

Enviar ahora
POST/campaigns/{id}/execute_now

Este método te permite cambiar la fecha de inicio de una campaña a la fecha actual para que el envío de SMS comience inmediatamente. Este método sólo es válido para campañas en estado En espera (1).

Example URI

POST https://api.mensagia.com/v1/campaigns/8/execute_now
URI Parameters
HideShow
id
integer (required) Example: 8

ID de campaña para ejecutar ahora

Response  200
HideShow
Headers
Content-Type: application/json
Body
{
  "data": {
    "id": 8,
    "name": "Campaña Campos Personalizados",
    "active": 1,
    "state_id": 1,
    "state_name": "Waiting",
    "message": "Mensaje con Campos Personalizados. Hola #name#",
    "start_date": "2016-12-15 11:53:44",
    "push_sender_name": "SENDER",
    "route_name": "Conexión directa",
    "groups": [
      {
        "id": 2,
        "name": "Todos los contactos"
      }
    ],
    "callback_url": "",
    "type": "Simple",
    "smsxblock": "",
    "minutesxblock": "",
    "days_allowed": [],
    "time_intervals_allowed": [],
    "origin": "from_agenda",
    "filename": "",
    "need_approval": false
  }
}
Response  403
HideShow
Headers
Content-Type: application/json
Body
{
  "error": {
    "code": "FORBIDDEN",
    "http_code": 403,
    "message": "Forbidden: This method must be called from customer account"
  }
}
Response  403
HideShow
Headers
Content-Type: application/json
Body
{
  "error": {
    "code": "FORBIDDEN",
    "http_code": 403,
    "message": "Forbidden: You can only execute campaigns with the state: Ready (1)."
  }
}
Response  404
HideShow
Headers
Content-Type: application/json
Body
{
  "error": {
    "code": "NOT_FOUND",
    "http_code": 404,
    "message": "Campaign not found with id: 410"
  }
}
Response  500
HideShow
Headers
Content-Type: application/json
Body
{
  "error": {
    "code": "INTERNAL_ERROR",
    "http_code": 500,
    "message": "Internal Server Error."
  }
}

Eliminar una campaña

Eliminar una campaña
DELETE/campaigns/{id}

Este método te permite eliminar una campaña de tu cuenta. No se pueden eliminar directamente campañas en curso. Si quieres eliminar una campaña con el estado ‘En curso’ primero debes desactivarla y luego eliminarla.

Example URI

DELETE https://api.mensagia.com/v1/campaigns/8
URI Parameters
HideShow
id
integer (required) Example: 8

ID de campaña para ejecutar ahora

Response  200
HideShow
Headers
Content-Type: application/json
Body
{
  "data": {
    "result": true
  }
}
Response  403
HideShow
Headers
Content-Type: application/json
Body
{
  "error": {
    "code": "FORBIDDEN",
    "http_code": 403,
    "message": "Forbidden: This method must be called from customer account"
  }
}
Response  403
HideShow
Headers
Content-Type: application/json
Body
{
  "error": {
    "code": "FORBIDDEN",
    "http_code": 403,
    "message": "Forbidden: You can not delete campaigns with Running (3) state. You must deactivate the campaign first before deleting it."
  }
}
Response  404
HideShow
Headers
Content-Type: application/json
Body
{
  "error": {
    "code": "NOT_FOUND",
    "http_code": 404,
    "message": "Campaign not found with id: 410"
  }
}
Response  500
HideShow
Headers
Content-Type: application/json
Body
{
  "error": {
    "code": "INTERNAL_ERROR",
    "http_code": 500,
    "message": "Internal Server Error."
  }
}

Simulador de coste de campaña

Simulador de coste de campaña
POST/campaigns/cost_simulator{?configuration_name,message,available_groups}

Este método te permite obtener el coste del envío de una campaña SMS antes de crearla.

Importante

Si estás usando campos personalizados en el mensaje, obtener los mensajes a enviar puede ser lento, ya que por cada contacto a enviar, debemos construir el mensaje personalizado y calcular el número de mensajes a enviar.

Example URI

POST https://api.mensagia.com/v1/campaigns/cost_simulator?configuration_name=configuration1&message=The message to send&available_groups=2,5
URI Parameters
HideShow
configuration_name
string (required) Example: configuration1

Nombre de la configuración de la API. Puedes gestionar tus configuraciones de API en https://mensagia.com/api/configurations.

message
string (required) Example: The message to send

El mensaje a enviar. Tenga en cuenta las consideraciones sobre mensajes a enviar en la documentación de Mensagia.

available_groups
string (required) Example: 2,5

Lista de ID’s de agendas existentes, separadas por coma y sin espacios.

Response  200
HideShow
Headers
Content-Type: application/json
Body
{
  "data": {
    "push_sender_name": "SENDER",
    "route_name": "Conexión directa",
    "groups": [
      {
        "id": 3,
        "name": "Agenda Números Españoles"
      },
      {
        "id": 4,
        "name": "Agenda Números Franceses"
      },
      {
        "id": 5,
        "name": "Agenda Números Andorra"
      },
      {
        "id": 6,
        "name": "Agenda Números FrancoEspañola"
      }
    ],
    "message": "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nam vestibulum fringilla ex et gravida. Aliquam erat volutpat. Suspendisse augue purus, lacinia nullam",
    "reports_to_send": {
      "total_recipients_to_send": 11,
      "total_messages_to_send": 11,
      "total_price_to_send": 0.608,
      "by_country": {
        "es": {
          "recipients": 6,
          "messages_to_send": 6,
          "price": 0.348
        },
        "ad": {
          "recipients": 2,
          "messages_to_send": 2,
          "price": 0.068
        },
        "fr": {
          "recipients": 3,
          "messages_to_send": 3,
          "price": 0.192
        }
      }
    }
  }
}
Response  400
HideShow
Headers
Content-Type: application/json
Body
{
  "error": {
    "code": "VALIDATION_FAIL",
    "message": "The data validation is not correct. See validation_errors array.",
    "http_code": "400",
    "validation_errors": {
      "configuration_name": "The configuration name 'configuration_test_bronz' doesn't exist. Create one at http://mensagia.com/api/configurations"
    }
  }
}
Response  400
HideShow
Headers
Content-Type: application/json
Body
{
  "error": {
    "code": "WRONG_ARGS",
    "http_code": 400,
    "message": "campaign_id can not be null"
  }
}
Response  400
HideShow
Headers
Content-Type: application/json
Body
{
  "error": {
    "code": "WRONG_ARGS",
    "http_code": 400,
    "message": "available_groups can not be null"
  }
}
Response  400
HideShow
Headers
Content-Type: application/json
Body
{
  "error": {
    "code": "WRONG_ARGS",
    "http_code": 400,
    "message": "message can not be null"
  }
}
Response  403
HideShow
Headers
Content-Type: application/json
Body
{
  "error": {
    "code": "FORBIDDEN",
    "http_code": 403,
    "message": "Forbidden: This method must be called from customer account"
  }
}
Response  404
HideShow
Headers
Content-Type: application/json
Body
{
  "error": {
    "code": "NOT_FOUND",
    "http_code": 404,
    "message": "Campaign not found with id: 410"
  }
}
Response  500
HideShow
Headers
Content-Type: application/json
Body
{
  "error": {
    "code": "INTERNAL_ERROR",
    "http_code": 500,
    "message": "Internal Server Error."
  }
}

Obtener resumen Notificaciones de Entrega

Obtener resumen Notificaciones de Entrega
GET/campaigns/{id}/dlr_summary

Este método te permite obtener el resumen de notificaciones de entrega para una campaña determinada. Puedes consultar el listado de notificaciones de entrega en la documentación de Mensagia.

Example URI

GET https://api.mensagia.com/v1/campaigns/8/dlr_summary
URI Parameters
HideShow
id
integer (required) Example: 8

ID de campaña para ejecutar ahora

Response  200
HideShow
Headers
Content-Type: application/json
Body
{
  "data": [
    {
      "delivery_report_state_id": 0,
      "count": 1
    },
    {
      "delivery_report_state_id": 1,
      "count": 8
    },
    {
      "delivery_report_state_id": 2,
      "count": 1
    },
    {
      "delivery_report_state_id": 4,
      "count": 1
    }
  ]
}
Response  400
HideShow
Headers
Content-Type: application/json
Body
{
  "error": {
    "code": "WRONG_ARGS",
    "http_code": 400,
    "message": "campaign_id can not be null"
  }
}
Response  403
HideShow
Headers
Content-Type: application/json
Body
{
  "error": {
    "code": "FORBIDDEN",
    "http_code": 403,
    "message": "Forbidden: This method must be called from customer account"
  }
}
Response  404
HideShow
Headers
Content-Type: application/json
Body
{
  "error": {
    "code": "NOT_FOUND",
    "http_code": 404,
    "message": "Campaign not found with id: 410"
  }
}
Response  500
HideShow
Headers
Content-Type: application/json
Body
{
  "error": {
    "code": "INTERNAL_ERROR",
    "http_code": 500,
    "message": "Internal Server Error."
  }
}

Notificaciones de Entrega

Consulta las Notificaciones de Entrega de tus envíos SMS.

Accesible únicamente para cuentas de tipo cliente

Puedes obtener más información sobre las Notificaciones de Entrega en la documentación de Mensagia.

Obtener notificaciones de entrega

Obtener notificaciones de entrega
GET/reports/delivery{?number,start_date,end_date,delivery_report_state_id,application_id,app_configuration_id,message_id,page,per_page}

Este método te permite obtener las notificaciones de entrega de tus envíos.

ID’S de aplicación

Esta es la lista de aplicaciones con sus respectivos ID’S por si quieres filtrar por tipo de aplicación.

ID de aplicación Nombre de la aplicación
1 Envio Simple
2 Envio Masivo (Campañas)
3 Envio Multiple

ID’s Notificaciones de Entrega

Esta es la lista de notificaciones de entrega por si quieres filtrar por tipo de notificación.

ID de notificación de entrega Nombre de la notificación de entrega
0 Pendiente
1 Entregado
2 Otro error
3 Destinatario desconocido
4 Caducado
5 No disponible temporalmente
6 No disponible permanentemente
7 No admite publicidad
8 No enviado por estar en la lista negra. Coste reembolsado
9 El contacto no desea publicidad de PREMIUM SMS
10 Sin saldo para enviar el mensaje
11 Temporalmente no entregable. Coste reembolsado
12 No enviado por restricción horaria
13 No entregado por superar límites de envío al destinatario

Example URI

GET https://api.mensagia.com/v1/reports/delivery?number=34600100200&start_date=2015-01-01 00:00:00&end_date=2016-01-01 00:00:00&delivery_report_state_id=1,2,4&application_id=1&app_configuration_id=2&message_id=1&page=1&per_page=20
URI Parameters
HideShow
number
string (optional) Example: 34600100200

Envía este parámetro si deseas buscar contactos por número de móvil

start_date
string (optional) Example: 2015-01-01 00:00:00

Fecha de inicio de búsqueda en el formato será usado si se envia también el parámetro end_date

end_date
string (optional) Example: 2016-01-01 00:00:00

Fecha de fin de búsqueda en el formato ‘YYYY-MM-DD hh:mm:ss’. Solo será usado si se envia también el parámetro start_date

delivery_report_state_id
string (optional) Example: 1,2,4

Un listado de ID’s de notificaciones de entrega, separados por coma y sin espacios.

application_id
integer (optional) Example: 1

Envía este parámetro si deseas buscar por ID de aplicación.

app_configuration_id
integer (optional) Example: 2

Envía este parámetro si deseas buscar por ID de configuración. El ID de configuración se obtiene despues de realizar un envío SMS.

message_id
integer (optional) Example: 1

Envía este parámetro si deseas buscar por message_id.

page
number (optional) Example: 1

Si existe páginado, indica el número de página a obtener.

per_page
number (optional) Default: 10 Example: 20

Indica el número de elementos por página que quieres obtener.

Response  200
HideShow
Headers
Content-Type: application/json
Body
{
  "data": [
    {
      "number": "34624744353",
      "sent_date": "2016-01-12 08:10:53",
      "received_date": "2016-01-12 08:10:53",
      "delivery_report_state_id": 8,
      "delivery_report_state_name": "Number in own blacklist",
      "application_id": 2,
      "application_name": "Massive push (Campaigns)",
      "app_configuration_id": 4,
      "app_configuration_name": "My Configuration",
      "message": "My Message",
      "message_id": "20160112081053-1-226272-5251e3f2-2528-4764-8060-ad1585d76690"
    },
    {
      "number": "34635646726",
      "sent_date": "2016-01-12 08:10:53",
      "received_date": "2016-01-12 08:10:53",
      "delivery_report_state_id": 8,
      "delivery_report_state_name": "Number in own blacklist",
      "application_id": 2,
      "application_name": "Massive push (Campaigns)",
      "app_configuration_id": 4,
      "app_configuration_name": "blabla",
      "message": "My Message",
      "message_id": "20160112081053-1-370637-75a7b463-7487-4d14-8f23-f547ab386fe4"
    },
    {
      "number": "34655614265",
      "sent_date": "2016-01-12 08:10:53",
      "received_date": "2016-01-12 08:10:53",
      "delivery_report_state_id": 7,
      "delivery_report_state_name": "No advertising",
      "application_id": 2,
      "application_name": "Massive push (Campaigns)",
      "app_configuration_id": 4,
      "app_configuration_name": "blabla",
      "message": "My Message",
      "message_id": "20160112081053-1-489687-1e079e4b-50a4-4969-82b4-fbd495856f78"
    },
    {
      "number": "34658734298",
      "sent_date": "2016-01-12 08:10:53",
      "received_date": "2016-01-12 08:10:53",
      "delivery_report_state_id": 9,
      "delivery_report_state_name": "Number in system blacklist",
      "application_id": 2,
      "application_name": "Massive push (Campaigns)",
      "app_configuration_id": 4,
      "app_configuration_name": "blabla",
      "message": "My Message",
      "message_id": "20160112081053-1-895647-98d5b16f-396c-4e0a-af68-ddfa9c1f0c35"
    },
    {
      "number": "34615307283",
      "sent_date": "2016-01-12 08:10:53",
      "received_date": "2016-01-12 08:10:53",
      "delivery_report_state_id": 3,
      "delivery_report_state_name": "Unknown subscriber",
      "application_id": 2,
      "application_name": "Massive push (Campaigns)",
      "app_configuration_id": 4,
      "app_configuration_name": "blabla",
      "message": "My Message",
      "message_id": "20160112081053-1-937432-ce67fc63-ea33-45f7-9444-b50374dda349"
    },
    {
      "number": "34669798052",
      "sent_date": "2016-01-12 08:10:53",
      "received_date": "2016-01-12 08:10:53",
      "delivery_report_state_id": 5,
      "delivery_report_state_name": "Subscriber temporarily unavailable",
      "application_id": 2,
      "application_name": "Massive push (Campaigns)",
      "app_configuration_id": 4,
      "app_configuration_name": "blabla",
      "message": "My Message",
      "message_id": "20160112081053-1-688648-863af17e-45f6-484d-914f-711c9a51890d"
    },
    {
      "number": "34661813789",
      "sent_date": "2016-01-12 08:10:53",
      "received_date": "2016-01-12 08:10:53",
      "delivery_report_state_id": 1,
      "delivery_report_state_name": "Delivered",
      "application_id": 2,
      "application_name": "Massive push (Campaigns)",
      "app_configuration_id": 4,
      "app_configuration_name": "blabla",
      "message": "My Message",
      "message_id": "20160112081053-1-526046-998ebd4c-f835-4588-a50a-d2112917c913"
    },
    {
      "number": "34638516440",
      "sent_date": "2016-01-12 08:10:53",
      "received_date": "2016-01-12 08:10:53",
      "delivery_report_state_id": 9,
      "delivery_report_state_name": "Number in system blacklist",
      "application_id": 2,
      "application_name": "Massive push (Campaigns)",
      "app_configuration_id": 4,
      "app_configuration_name": "blabla",
      "message": "My Message",
      "message_id": "20160112081053-1-126220-0be56efb-57b8-42e6-a580-9601e74f9b96"
    },
    {
      "number": "34680262685",
      "sent_date": "2016-01-12 08:10:53",
      "received_date": "2016-01-12 08:10:53",
      "delivery_report_state_id": 3,
      "delivery_report_state_name": "Unknown subscriber",
      "application_id": 2,
      "application_name": "Massive push (Campaigns)",
      "app_configuration_id": 4,
      "app_configuration_name": "blabla",
      "message": "My Message",
      "message_id": "20160112081053-1-243146-c7a36992-0e89-45d9-a259-14e9bb3d1ff7"
    },
    {
      "number": "34632113063",
      "sent_date": "2016-01-12 08:10:53",
      "received_date": "2016-01-12 08:10:53",
      "delivery_report_state_id": 6,
      "delivery_report_state_name": "Subscriber permanently unavailable",
      "application_id": 2,
      "application_name": "Massive push (Campaigns)",
      "app_configuration_id": 4,
      "app_configuration_name": "blabla",
      "message": "My Message",
      "message_id": "20160112081053-1-65441-75f46fda-d0a5-4d5b-8a91-e94254830c16"
    }
  ],
  "meta": {
    "pagination": {
      "total": 245,
      "count": 10,
      "per_page": 10,
      "current_page": 24,
      "total_pages": 25,
      "links": {
        "previous": "http://192.168.22.100/v1/delivery_reports/?page=23",
        "next": "http://192.168.22.100/v1/delivery_reports/?page=25"
      }
    }
  }
}
Response  403
HideShow
Headers
Content-Type: application/json
Body
{
  "error": {
    "code": "FORBIDDEN",
    "http_code": 403,
    "message": "Forbidden: This method must be called from customer account"
  }
}
Response  500
HideShow
Headers
Content-Type: application/json
Body
{
  "error": {
    "code": "INTERNAL_ERROR",
    "http_code": 500,
    "message": "Internal Server Error."
  }
}

VOZ

Métodos para el envío de campañas de VOZ.

Accesible únicamente para cuentas de tipo cliente y cuentas con el servicio de VOZ activado.

Servicio válido sólo para números españoles

El servicio de campañas de voz sólo puede usarse con números españoles, tanto fijos como móviles.

Campañas de VOZ

Campañas de VOZ
POST/voice/message/{?name,vm_validated_phone_id,type_locution,message,message_language,voice_file_id,numbers,available_groups,max_retries,minutes_retry_1,minutes_retry_2,minutes_retry_3,minutes_retry_4,ring_timeout,response_codes,response_codes_timeout,start_date,callsxblock,minutesxblock,days,time_intervals}

Este método te permite realizar campañas de VOZ a números de teléfono de España. Los destinatarios de la campaña de voz pueden ser: agendas, agendas y números de teléfono, o números de teléfono,

Formato códigos de respuesta

Si lo deseas, puedes añadir códigos de respuesta a tus campañas de Voz. Cuando un usuario pulse las teclas que definas, se realizará la acción escogida.

Las acciones disponibles para los códigos de respuesta son las siguientes:

  • repeat_message: Para volver a escuchar la locución de la llamada.
  • call_transfer: Para transferir la llamada al teléfono validado que elijas.
  • add_to_blacklist: Para añadir al destinatario a la 'Lista Negra' de tu cuenta.
  • send_sms: Para enviar un SMS al destinatario de la llamada.

El formato de responses_codes será un ARRAY en JSON con el siguiente formato:

[
    {"code":"1","action":"repeat_message"},
    {"code":"2","action":"call_transfer","vm_validated_phone_id":"2"},
    {"code":"3","action":"add_to_blacklist"},
    {"code":"4","action":"send_sms","sms":"Texto del SMS a enviar al destinatario","send_sms_push_sender_id":"1"}
]

Consideraciones importantes

  • El formato del campo responses_codes deberá ser un ARRAY en JSON, donde cada elemento de dicho array contendrá un codigo de respuesta y una acción a realizar.
  • code será el código que deberá pulsar el usuario para que se realice la acción definida en el paràmetro action.
  • code deberá ser un numero del 0 al 99 y este código no se podrá repetir.
  • Solo se puede crear una acción por campaña de los tipos: repeat_message y add_to_blacklist
  • La acción call_transfer debe ir acompañada del ID de un teléfono validado de VOZ a la que se le transferirá la llamada (vm_validated_phone_id).
  • La acción send_sms debe ir acompañada del texto del SMS a enviar (sms) y el ID de un remitente válidado de SMS (send_sms_push_sender_id).


Example URI

POST https://api.mensagia.com/v1/voice/message/?name=Campaign Number 1&vm_validated_phone_id=1&type_locution=text2speech&message=The message to send&message_language=es&voice_file_id=3&numbers=34600000001,34600000002&available_groups=2,5&max_retries=2&minutes_retry_1=60&minutes_retry_2=30&minutes_retry_3=1440&minutes_retry_4=1440&ring_timeout=30&response_codes=30&response_codes_timeout=30&start_date=2016-01-28 15:00&callsxblock=10&minutesxblock=10&days=1,2,3,4,5&time_intervals=09:00-13:00,17:00-21:00
URI Parameters
HideShow
name
string (required) Example: Campaign Number 1

El nombre para la nueva campaña de voz.

vm_validated_phone_id
integer (required) Example: 1

El ID del teléfono para VOZ que se usará en esta campaña de voz.

type_locution
string (required) Example: text2speech

El tipo de locución que se usará en esta campaña de voz.

Choices: text2speech file

message
string (optional) Example: The message to send

El texto a sintetizar para reproducir en la llamada. Campo obligatorio si text2speech es el tipo de locución escogida.

message_language
string (optional) Example: es

El código del idioma con el que se quiere sintetizar el texto que se reproducirá en la llamada. Campo obligatorio si text2speech es el tipo de locución escogida.

Choices: en en-gb en-au en-in en-gb-wls es ca zh-cn zh-tw da nl fr de it ja ko no pl pt-pt pt-br ru sv fi tr wls

voice_file_id
integer (optional) Example: 3

El ID del archivo de la librería de audio que se utilizará como locución. Campo obligatorio si file es el tipo de locución escogida.

numbers
string (optional) Example: 34600000001,34600000002

Una lista de números de teléfono separados por coma, sin espacios y con el prefijo internacional.

available_groups
string (optional) Example: 2,5

Lista de ID’s de agendas existentes, separadas por coma y sin espacios.

max_retries
integer (optional) Example: 2

Número de reintentos a realizar si el destinatario de la llamada no contesta.

Choices: 0 1 2 3 4

minutes_retry_1
integer (optional) Example: 60

Intervalo en minutos en el que se realizará el primer reintento después de que no contesten la primera llamada. Este campo es obligatorio si max_retries >= 1.

Choices: 1 2 5 10 20 30 60 120 240 480 960 1440

minutes_retry_2
integer (optional) Example: 30

Intervalo en minutos en el que se realizará el segundo reintento después de finalizar el primer reintento y no contesten la llamada. Este campo es obligatorio si max_retries >= 2.

Choices: 1 2 5 10 20 30 60 120 240 480 960 1440

minutes_retry_3
integer (optional) Example: 1440

Intervalo en minutos del tercer reintento que se realizará después de finalizar el segundo reintento y no contesten la llamada. Este campo es obligatorio si max_retries >= 3.

Choices: 1 2 5 10 20 30 60 120 240 480 960 1440

minutes_retry_4
integer (optional) Example: 1440

Intervalo en minutos del cuarto reintento que se realizará después de finalizar el tercer reintento y no contesten la llamada. Este campo es obligatorio si max_retries = 4.

Choices: 1 2 5 10 20 30 60 120 240 480 960 1440

ring_timeout
integer (optional) Default: 45 Example: 30

Tiempo en segundos en el que el teléfono del destinatarió sonará para que coja la llamada.

response_codes
json (optional) Default: '' Example: 30

Códigos de respuesta que podrá pulsar el destinatario que generarán una acción en la llamada.

response_codes_timeout
integer (optional) Default: 20 Example: 30

Tiempo en segundos en el que el destinatario podrá pulsar un código de respuesta. Este campo es obligatorio en presencia de response_codes

start_date
datetime (optional) Example: 2016-01-28 15:00

Fecha de inicio de campaña en el formato ‘YYYY-MM-DD hh:mm’. Si no envías este parametro, la campaña empezará dos minutos después de la creación de la nueva campaña.

callsxblock
integer (optional) Example: 10

Número de destinatarios por bloque. Obligatorio en presencia de minutesxblock. Si los dos parámetros son enviados, la configuración de la campaña se define como ‘configuración personalizada’ y el valor de los parámetros days y time_intervals serán tomados en cuenta.

minutesxblock
integer (optional) Example: 10

Cada cuantos minutos se enviará el bloque de destinarios escogidos en callsxblock. Obligatorio en presencia de callsxblock. Si los dos parámetros son enviados, la configuración de la campaña se define como ‘configuración personalizada’ y el valor de los parámetros days y time_intervals serán tomados en cuenta.

days
string (optional) Default: 1,2,3,4,5,6,7 Example: 1,2,3,4,5

Una lista de días de la semana separada por comas y sin espacios en la cual los mensajes pueden ser enviados. (1 = Lunes, 2 = Martes, 3 = Miercoles, 4 = Jueves, 5 = Viernes, 6 = Sábado, 7 = Domingo). Solo será tomado en cuenta si minutesxblock y smsxblock son enviados.

time_intervals
string (optional) Default: 08:00-22:59 Example: 09:00-13:00,17:00-21:00

Una lista de intervalos de tiempo separados por comas y sin espacios, en los cuales el mensaje podrá ser enviado. Solo será tomado en cuenta si minutesxblock y smsxblock son enviados.

Response  200
HideShow
Headers
Content-Type: application/json
Body
{
  "data": {
    "configuration_id": 66,
    "id": 66,
    "name": "Test Campaign API",
    "active": 1,
    "state_id": 1,
    "state_name": "Waiting",
    "message": "Locución a enviar....",
    "start_date": "2020-11-11 11:11:00",
    "vm_validated_phone_id": 1,
    "vm_validated_phone_number": "34600300200",
    "groups": [
      {
        "id": 3,
        "name": "Agenda Números Españoles"
      }
    ],
    "numbers": "34687976796",
    "max_retries": 4,
    "min_retry_minutes": 1440,
    "max_retry_minutes": 1440,
    "response_codes": "[{\"code\":\"1\",\"action\":\"repeat_message\"},{\"code\":\"2\",\"action\":\"call_transfer\",\"transfer_to\":\"34972555113\",\"vm_validated_phone_id\":\"1\"},{\"code\":\"3\",\"action\":\"add_to_blacklist\"}]",
    "response_codes_timeout": "60",
    "callback_url": "",
    "type": "Multiple",
    "callsxblock": 222,
    "minutesxblock": 6,
    "days_allowed": [
      "monday",
      "tuesday",
      "wednesday",
      "saturday"
    ],
    "time_intervals_allowed": [
      "15:00-16:59",
      "22:00-22:30"
    ],
    "ring_timeout": 45
  }
}
Response  400
HideShow
Headers
Content-Type: application/json
Body
{
  "error": {
    "code": "VALIDATION_FAIL",
    "message": "The data validation is not correct. See validation_errors array.",
    "http_code": "400",
    "validation_errors": {
      "name": [
        "The name field is required."
      ]
    }
  }
}
Response  400
HideShow
Headers
Content-Type: application/json
Body
Error list

TIME_INTERVALS_NOT_VALID | There are invalid time intervals. Use this format 'hh:ii' in a comma separated string ('09:00-11:00,15:00-18:00') 
SMS_COEFFICIENT_NOT_ALLOWED | The custom configuration is invalid. The coefficient of messages per minute should be less. Change the value of minutesxblock and smsxblock.

{
  "error": {
    "code": "TIME_INTERVALS_NOT_VALID",
    "message": "There are invalid time intervals.",
    "http_code": 400,
    "intervals": [
      {
        "interval": "15:00-15:30",
        "error": "INTERVAL_INSIDE_ANOTHER"
      },
      {
        "interval": "23-23:33",
        "error": "INTERVAL_NOT_VALID"
      }
    ]
  }
}
Response  403
HideShow
Headers
Content-Type: application/json
Body
{
  "error": {
    "code": "FORBIDDEN",
    "http_code": 403,
    "message": "Forbidden: This method must be called from customer account"
  }
}
Response  403
HideShow
Headers
Content-Type: application/json
Body
{
  "error": {
    "code": "FORBIDDEN",
    "message": "Forbidden: Your customer has not activated the VOICE service. Contact with your distributor.",
    "http_code": 403
  }
}
Response  500
HideShow
Headers
Content-Type: application/json
Body
{
  "error": {
    "code": "INTERNAL_ERROR",
    "http_code": 500,
    "message": "Internal Server Error."
  }
}

2-Factor Authentication

Utiliza la autenticación de 2 factores en tus aplicaciones para aumentar la seguridad de tus usuarios.

Accesible únicamente para cuentas de tipo cliente

Crear y enviar PIN

Crear y enviar PIN
POST/2FA/create{?configuration_name,message,number,custom_ID,expires_in}

Utiliza este método para enviar un PIN a un número de teléfono con el mensaje que elijas para iniciar la autenticación en 2 factores.

Cada vez que crees un nuevo PIN para un número de teléfono (y un custom_ID determinado si lo utilizas) los PIN generados anteriormente serán eliminados. Solo se mantendrá activo el último PIN enviado.


Este método retornará uno de estos estados:

Status Descripción
SMS_SENT Se ha enviado un PIN al usuario correctamente a través de SMS.
NO_BALANCE No se ha podido enviar el PIN porque no dispones de saldo suficiente en tu cuenta para poder enviar el SMS.
NO_ROUTE_FOR_COUNTRY No se ha podido enviar el PIN porque no dispones de ruta para enviar a este país. Contacta con tu comercial si tienes este problema.
ERROR Se ha generado un error enviando el SMS.
INTERNAL_SERVER_ERROR Se ha producido un error inesperado.



Example URI

POST https://api.mensagia.com/v1/2FA/create?configuration_name=configuration1&message=Introduce este codigo: #PIN#. Tienes 30 minutos para realizar esta acción.&number=34600000001&custom_ID=application1&expires_in=60
URI Parameters
HideShow
configuration_name
string (required) Example: configuration1

Nombre de la configuración de la API. Puedes gestionar tus configuraciones de API en https://mensagia.com/api/configurations.

message
string (required) Example: Introduce este codigo: #PIN#. Tienes 30 minutos para realizar esta acción.

El mensaje a enviar. El mensaje debe contener el string #PIN# para que podamos reemplazarlo por el PIN generado. Ten en cuenta las consideraciones sobre mensajes a enviar en la documentación de Mensagia.

number
string (required) Example: 34600000001

Número de teléfono del contacto, sin espacios, con el prefijo internacional y sin el signo ‘+’.

custom_ID
string (optional) Example: application1

Utiliza este campo si quieres usar 2FA en más de una aplicación y que no haya colisiones con un mismo número.

expires_in
integer (optional) Default: 30 Example: 60

El número de minutos en el que quieres que expire y ya no sea válido el PIN.

Response  200
HideShow
Headers
Content-Type: application/json
Body
{
  "data": {
    "status": "SMS_SENT",
    "created_at": "2018-03-13 11:58:14",
    "expiration_date": "2018-03-13 12:28:14"
  }
}
Response  400
HideShow
Headers
Content-Type: application/json
Body
{
  "error": {
    "code": "VALIDATION_FAIL",
    "message": "The data validation is not correct. See validation_errors array.",
    "http_code": "400",
    "validation_errors": {
      "configuration_name": "The configuration name 'configuration_test' doesn't exist. Create one at http://mensagia.com/api/configurations"
    }
  }
}
Response  400
HideShow
Headers
Content-Type: application/json
Body
{
  "error": {
    "code": "VALIDATION_FAIL",
    "message": "The data validation is not correct. See validation_errors array.",
    "http_code": "400",
    "validation_errors": {
      "message": [
        "The message field is required.",
        "The string #PIN# is not present in your message. You need to include it."
      ],
      "number": [
        "The number field is required.",
        "The number field contains an invalid number."
      ]
    }
  }
}
Response  403
HideShow
Headers
Content-Type: application/json
Body
{
  "error": {
    "code": "FORBIDDEN",
    "http_code": 403,
    "message": "Forbidden: This method must be called from customer account"
  }
}
Response  500
HideShow
Headers
Content-Type: application/json
Body
{
  "error": {
    "code": "INTERNAL_ERROR",
    "http_code": 500,
    "message": "Internal Server Error."
  }
}

Comprobar PIN

Comprobar PIN
POST/2FA/check{?custom_ID,number}

Utiliza este método para comprobar si un PIN ha sido enviado a un número de teléfono y es todavía válido.

Una vez hayas válidado un PIN, el registro será eliminado de la base de datos. Por lo tanto, solo puedes validar una vez el PIN.


Este método retornará uno de estos estados:

Status Descripción
VALID EL PIN es válido.
EXPIRED El PIN subministrado ha caducado y es inválido. Es necesario crear un nuevo PIN.
INVALID EL PIN no es correcto.



Example URI

POST https://api.mensagia.com/v1/2FA/check?custom_ID=application1&number=34600000001
URI Parameters
HideShow
number
string (required) Example: 34600000001

Número de teléfono del contacto, sin espacios, con el prefijo internacional y sin el signo ‘+’.

pin
string (required) Example: 123456

El PIN subministrado por el usuario.

custom_ID
string (optional) Example: application1

Utiliza este campo si quieres usar 2FA en más de una aplicación y que no haya colisiones con un mismo número.

Response  200
HideShow
Headers
Content-Type: application/json
Body
{
  "data": {
    "code": "VALID"
  }
}
Response  400
HideShow
Headers
Content-Type: application/json
Body
{
    "error": {
        "code": "VALIDATION_FAIL",
        "message": "The data validation is not correct. See validation_errors array.",
        "http_code": "400",
        "validation_errors": {
            "number": [
                "The number field is required."
                "The number must be a number."
            ],
            "pin": [
                "The pin field is required."
                "The pin must be a number."
            ]
        }
    }
}
Response  403
HideShow
Headers
Content-Type: application/json
Body
{
  "error": {
    "code": "FORBIDDEN",
    "http_code": 403,
    "message": "Forbidden: This method must be called from customer account"
  }
}
Response  500
HideShow
Headers
Content-Type: application/json
Body
{
  "error": {
    "code": "INTERNAL_ERROR",
    "http_code": 500,
    "message": "Internal Server Error."
  }
}

Procesos

Métodos para administrar los procesos en segundo plano.

Estos métodos son útiles para conocer el estado de procesos en segundo plano tales como importaciones de contactos. Esto te permite activar una campaña o realizar un envío, solo cuando hayan finalizado todos los procesos de importación que hayas realizado.

Accesible únicamente para cuentas de tipo cliente


Estados posibles de un proceso:

Los estados posibles por los que puede pasar un proceso son los siguientes:

created El proceso ha sido creado correctamente y está a la espera de empezar.
progress El proceso ha empezado y está haciendo el trabajo asignado.
finished El proceso en segundo plano ha finalizado correctamente.
error Ha habido un error con el proceso y no será finalizado.



Obtener todos los procesos

Obtener todos los procesos
GET/processes/{?processes_ids,state,type,page,per_page}

Este método te permite obtenter todas los procesos de tu cuenta

Example URI

GET https://api.mensagia.com/v1/processes/?processes_ids=1,3,5&state=finished&type=ContactsMassiveJson&page=1&per_page=20
URI Parameters
HideShow
processes_ids
string (optional) Example: 1,3,5

Lista de ID’s de procesos existentes, separados por coma y sin espacios.

state
string (optional) Example: finished

El estado del proceso a buscar. Estados posibles:

Choices: created progress finished error

type
string (optional) Example: ContactsMassiveJson

El tipo del proceso a buscar. Tipos posibles:

Choices: ContactsMassiveJson AgendaImport

page
number (optional) Example: 1

Si existe páginado, indica el número de página a obtener

per_page
number (optional) Default: 10 Example: 20

Indica el número de elementos por página que quieres obtener

Response  200
HideShow
Headers
Content-Type: application/json
Body
{
  "data": [
    {
      "id": 8,
      "type": "ContactsMassiveJson",
      "state": "progress",
      "created_at": "2017-01-25 08:00:43"
    },
    {
      "id": 7,
      "type": "ContactsMassiveJson",
      "state": "finished",
      "created_at": "2017-01-25 08:00:43"
    },
    {
      "id": 6,
      "type": "ContactsMassiveJson",
      "state": "created",
      "created_at": "2017-01-25 08:00:43"
    },
    {
      "id": 5,
      "type": "ContactsMassiveJson",
      "state": "error",
      "created_at": "2017-01-25 08:00:43"
    }
  ],
  "meta": {
    "pagination": {
      "total": 4,
      "count": 4,
      "per_page": 10,
      "current_page": 1,
      "total_pages": 1,
      "links": []
    }
  }
}
Response  403
HideShow
Headers
Content-Type: application/json
Body
{
  "error": {
    "code": "FORBIDDEN",
    "http_code": 403,
    "message": "Forbidden: This method must be called from customer account"
  }
}
Response  500
HideShow
Headers
Content-Type: application/json
Body
{
  "error": {
    "code": "INTERNAL_ERROR",
    "http_code": 500,
    "message": "Internal Server Error. Internal code: #0123456789."
  }
}

Obtener un proceso

Obtener un proceso
GET/processes/{id}

Este método te permite obtener un proceso de tu cuenta.

Example URI

GET https://api.mensagia.com/v1/processes/id
URI Parameters
HideShow
id
integer (required) 

ID del proceso

Response  200
HideShow
Headers
Content-Type: application/json
Body
{
  "data": {
    "id": 8,
    "type": "ContactsMassiveJson",
    "state": "progress",
    "created_at": "2017-01-25 08:00:43"
  }
}
Response  403
HideShow
Headers
Content-Type: application/json
Body
{
  "error": {
    "code": "FORBIDDEN",
    "http_code": 403,
    "message": "Forbidden: This method must be called from customer account"
  }
}
Response  404
HideShow
Headers
Content-Type: application/json
Body
{
  "error": {
    "code": "NOT_FOUND",
    "http_code": 404,
    "message": "Process not found with id: 23"
  }
}
Response  500
HideShow
Headers
Content-Type: application/json
Body
{
  "error": {
    "code": "INTERNAL_ERROR",
    "http_code": 500,
    "message": "Internal Server Error. Internal code: #0123456789"
  }
}

Eliminar un proceso

Eliminar un proceso
DELETE/processes/{id}

Este método te permite eliminar un proceso de tu cuenta.

Example URI

DELETE https://api.mensagia.com/v1/processes/id
URI Parameters
HideShow
id
integer (required) 

ID del proceso

Response  200
HideShow
Headers
Content-Type: application/json
Body
{
  "data": {
    "result": true
  }
}
Response  403
HideShow
Headers
Content-Type: application/json
Body
{
  "error": {
    "code": "FORBIDDEN",
    "http_code": 403,
    "message": "Forbidden: This method must be called from customer account"
  }
}
Response  404
HideShow
Headers
Content-Type: application/json
Body
{
  "error": {
    "code": "NOT_FOUND",
    "http_code": 404,
    "message": "Process not found with id: 23"
  }
}
Response  500
HideShow
Headers
Content-Type: application/json
Body
{
  "error": {
    "code": "INTERNAL_ERROR",
    "http_code": 500,
    "message": "Internal Server Error. Internal code: #0123456789"
  }
}

Obtener resumen de importacion

Obtener resumen de importacion
GET/processes/{id}/import_summary

Este método te permite obtenter el resumen de una importación. Este método sólo es válido para procesos de tipo AgendaImport y ContactsMassiveJson y para procesos que hayan finalizado.

Example URI

GET https://api.mensagia.com/v1/processes/id/import_summary
URI Parameters
HideShow
id
integer (required) 

ID del proceso

Response  200
HideShow
Headers
Content-Type: application/json
Body
{
  "data": {
    "total_rows_processed": 1000,
    "total_created": 857,
    "total_imported": 857,
    "total_errors": 143
  }
}
Response  403
HideShow
Headers
Content-Type: application/json
Body
{
  "error": {
    "code": "FORBIDDEN",
    "http_code": 403,
    "message": "Forbidden: This method must be called from customer account"
  }
}
Response  403
HideShow
Headers
Content-Type: application/json
Body
{
  "error": {
    "code": "FORBIDDEN",
    "http_code": 403,
    "message": "Forbidden: Process with id 2 is not finished."
  }
}
Response  403
HideShow
Headers
Content-Type: application/json
Body
{
  "error": {
    "code": "PROCESS_NOT_FINISHED",
    "http_code": 403,
    "message": "Forbidden: Process with id 2 is not finished."
  }
}
Response  403
HideShow
Headers
Content-Type: application/json
Body
{
  "error": {
    "code": "PROCESS_TYPE_NOT_ALLOWED",
    "http_code": 403,
    "message": "Forbidden: Process type not allowed. Only AgendaImport or ContactsMassiveJson."
  }
}
Response  500
HideShow
Headers
Content-Type: application/json
Body
{
  "error": {
    "code": "INTERNAL_ERROR",
    "http_code": 500,
    "message": "Internal Server Error. Internal code: #0123456789"
  }
}

Obtener errores de importacion

Obtener errores de importacion
GET/processes/{id}/import_errors

Este método te permite obtenter los errores generados durante una importación de contactos. Solo es válido para procesos de tipo AgendaImport y ContactsMassiveJson y para procesos que hayan finalizado.

Procesos de tipo AgendaImport

Si el proceso es de tipo AgendaImport, por cada error de importación se devolverá en el campo file_row los valores de la fila procesada del archivo de importacíon que generó el error.

El valor del campo json_user_object siempre será null, ya que sólo tendrá valor cuando venga de un proceso de tipo ContactsMassiveJson.

{
    "data": [
        {
            "error_code": "WITHOUT_NUMBER",
            "from_process_type": "AgendaImport",
            "json_user_object": null,
            "file_row": {
                "name": "Pedro Martínez",
                "number": "",
                "email":"pmartinez@email.com"
            }
        },
        {
            "error_code": "WITHOUT_NUMBER",
            "from_process_type": "AgendaImport",
            "json_user_object": null,
            "file_row": {
                "name": "Juan Rodríguez",
                "number": "",
                "email":"jrodriguez@email.com"
            }
        },
        {
            "error_code": "INVALID_NUMBER",
            "from_process_type": "AgendaImport",
            "json_user_object": null,
            "file_row": {
                "name": "Pedro Reyes",
                "number": "346001002",
                "email":"preyes@email.com"
            }
        },        
    ],
    "meta": {
        "pagination": {
            "total": 2,
            "count": 10,
            "per_page": 10,
            "current_page": 1,
            "total_pages": 1,
            "links": []
        }
    }                
}

Procesos de tipo ContactsMassiveJson

Si el proceso es de tipo ContactsMassiveJson, por cada error de importación se devolverá en el campo json_user_object el objetos usuario enviado en el JSON que generó el error.

El valor del campo file_row siempre será null, ya que sólo tendrá valor cuando venga de un proceso de tipo AgendaImport.

Para el siguiente JSON que contiene un contacto que al importar generará un error de tipo FAIL_SYNC_GROUPS ya que el ID de agenda enviado no existe, obtendremos la siguiente respuesta:

[{"contact":{"number": "34600100220", "name":"John Smith"}, "groups": "743","extra_fields":{"extra1": "value1", "extra2":"value2"}}]
{
    "data": [
        {
            "error_code": "FAIL_SYNC_GROUPS",
            "from_process_type": "ContactsMassiveJson",
            "json_user_object": {
                "contact": {
                    "number": "34600100220",
                    "name": "John Smith"
                },
                "groups": "743",
                "extra_fields": {
                    "extra1": "value1",
                    "extra2": "value2"
                }
            },
            "file_row": null
        },
    ],
    "meta": {
        "pagination": {
            "total": 1,
            "count": 1,
            "per_page": 10,
            "current_page": 1,
            "total_pages": 1,
            "links": []
        }
    }                
}

Example URI

GET https://api.mensagia.com/v1/processes/id/import_errors
URI Parameters
HideShow
id
integer (required) 

ID del proceso

Response  200
HideShow
Headers
Content-Type: application/json
Body
{
  "data": [
    {
      "error_code": "FAIL_SYNC_GROUPS",
      "from_process_type": "ContactsMassiveJson",
      "json_user_object": {
        "contact": {
          "number": "34600100220",
          "name": "John Smith"
        },
        "groups": "7",
        "extra_fields": {
          "extra1": "value1",
          "extra2": "value2"
        }
      },
      "file_row": null
    },
    {
      "error_code": "INVALID_NUMBER",
      "from_process_type": "ContactsMassiveJson",
      "json_user_object": {
        "contact": {
          "number": "34600",
          "name": "Peter Red"
        },
        "groups": "7",
        "extra_fields": {
          "extra1": "value1",
          "extra2": "value2"
        }
      },
      "file_row": null
    },
    {
      "error_code": "FAIL_SYNC_GROUPS",
      "from_process_type": "ContactsMassiveJson",
      "json_user_object": {
        "contact": {
          "number": "34600200400",
          "name": "John Brown"
        },
        "groups": "732423,4234423",
        "extra_fields": {
          "extra1": "value1",
          "extra2": "value2"
        }
      },
      "file_row": null
    }
  ],
  "meta": {
    "pagination": {
      "total": 3,
      "count": 3,
      "per_page": 10,
      "current_page": 1,
      "total_pages": 1,
      "links": []
    }
  }
}
Response  403
HideShow
Headers
Content-Type: application/json
Body
{
  "error": {
    "code": "FORBIDDEN",
    "http_code": 403,
    "message": "Forbidden: This method must be called from customer account"
  }
}
Response  403
HideShow
Headers
Content-Type: application/json
Body
{
  "error": {
    "code": "PROCESS_NOT_FINISHED",
    "http_code": 403,
    "message": "Forbidden: Process with id 2 is not finished."
  }
}
Response  403
HideShow
Headers
Content-Type: application/json
Body
{
  "error": {
    "code": "PROCESS_TYPE_NOT_ALLOWED",
    "http_code": 403,
    "message": "Forbidden: Process type not allowed. Only AgendaImport or ContactsMassiveJson."
  }
}
Response  404
HideShow
Headers
Content-Type: application/json
Body
{
  "error": {
    "code": "NOT_FOUND",
    "http_code": 404,
    "message": "Process not found with id: 23"
  }
}
Response  500
HideShow
Headers
Content-Type: application/json
Body
{
  "error": {
    "code": "INTERNAL_ERROR",
    "http_code": 500,
    "message": "Internal Server Error. Internal code: #0123456789"
  }
}

Herramientas

Diferentes herramientas para obtener el mejor rendimiento de la API.

Accesible únicamente para cuentas de tipo cliente

Preview Mensaje a Enviar

Preview Mensaje a Enviar
POST/tools/preview_contact_message{?message,number}

Este método te permite obtener información sobre un SMS a enviar a un contacto, remplazando los campos personalizados por los valores de los campos personalizados del contacto si los tuviera. El método devuelve información sobre el mensaje real a enviar al contacto, el número de carácteres del SMS, el número de SMS a enviar para este mensaje y si el mensaje contiene caracteres UNICODE.

Example URI

POST https://api.mensagia.com/v1/tools/preview_contact_message?message=The message to send&number=34600000001
URI Parameters
HideShow
message
string (required) Example: The message to send

El mensaje a enviar. Tenga en cuenta las consideraciones sobre mensajes a enviar en la documentación de Mensagia.

number
string (required) Example: 34600000001

Número de teléfono del contacto, sin espacios, con el prefijo internacional y sin el signo ‘+’.

Response  200
HideShow
Headers
Content-Type: application/json
Body
{
  "data": {
    "original_message": "Message to try preview contact message from contact: #name#. Works fine!",
    "number": "34600000001",
    "message_to_send": "Message to try preview contact message from contact: Juán Mánchez. Works fine!",
    "characters_count": 78,
    "messages_to_send": 2,
    "is_unicode": true
  }
}
Response  400
HideShow
Headers
Content-Type: application/json
Body
{
  "error": {
    "code": "WRONG_ARGS",
    "http_code": 400,
    "message": "number can not be null"
  }
}
Response  400
HideShow
Headers
Content-Type: application/json
Body
{
  "error": {
    "code": "WRONG_ARGS",
    "http_code": 400,
    "message": "message can not be null"
  }
}
Response  403
HideShow
Headers
Content-Type: application/json
Body
{
  "error": {
    "code": "FORBIDDEN",
    "http_code": 403,
    "message": "Forbidden: This method must be called from customer account"
  }
}
Response  500
HideShow
Headers
Content-Type: application/json
Body
{
  "error": {
    "code": "INTERNAL_ERROR",
    "http_code": 500,
    "message": "Internal Server Error."
  }
}

Obtener URL Formulario de Baja

Obtener URL Formulario de Baja
GET/tools/unsubscribe_url

Este método te permite obtener la URL del formulario de Baja SMS. Cuando un usuario se da de baja en el formulario, es añadido a la agenda ‘Lista Negra’ para que no reciba más SMS. Puedes obtener más información en la documentación de Mensagia sobre Formulario de Baja SMS

Example URI

GET https://api.mensagia.com/v1/tools/unsubscribe_url
Response  200
HideShow
Headers
Content-Type: application/json
Body
{
  "data": {
    "unsubscribe_url": "https://goo.gl/AAAAAA"
  }
}
Response  403
HideShow
Headers
Content-Type: application/json
Body
{
  "error": {
    "code": "FORBIDDEN",
    "http_code": 403,
    "message": "Forbidden: This method must be called from customer account"
  }
}
Response  500
HideShow
Headers
Content-Type: application/json
Body
{
  "error": {
    "code": "INTERNAL_ERROR",
    "http_code": 500,
    "message": "Internal Server Error."
  }
}

Premium

Métodos para aplicaciones PREMIUM SMS.

Accesible únicamente para cuentas de tipo cliente

Premium Gateway

Premium Gateway
POST/premium/gateway{?message_id,message_out}

Utiliza este método para contestar los MO’s que recibas a través de nuestra aplicación PASARELA PREMIUM.

Puedes encontrar más información en la documentación de PASARELA PREMIUM

Example URI

POST https://api.mensagia.com/v1/premium/gateway?message_id=20181016080035-1-900713-6d862cba-1944-4c62-b9b8-44edabad72fe&message_out=This is a MO answer
URI Parameters
HideShow
message_id
string (required) Example: 20181016080035-1-900713-6d862cba-1944-4c62-b9b8-44edabad72fe

ID del mensaje a contestar.

message_out
string (required) Example: This is a MO answer

La respuesta a enviar. El texto debe ser GSM7. No se aceptarán caracteres UNICODE.

Response  200
HideShow
Headers
Content-Type: application/json
Body
{
  "data": {
    "number": "34600100200",
    "premium_gateway_id": 1,
    "message_id": "20181016080035-1-900713-6d862cba-1944-4c62-b9b8-44edabad72fe",
    "message_in": "This is a MO message for answer",
    "message_out": "This is a MO answer",
    "created_at": "2018-10-15 14:48:34"
  }
}
Response  400
HideShow
Headers
Content-Type: application/json
Body
{
  "error": {
    "code": "VALIDATION_FAIL",
    "message": "The data validation is not correct. See validation_errors array.",
    "http_code": "400",
    "validation_errors": {
      "message_id": [
        "The message id field is required."
      ],
      "message_out": [
        "The message out field is required.",
        "You must remove the UNICODE characters because they are not allowed in PREMIUM SMS."
      ]
    }
  }
}
Response  403
HideShow
Headers
Content-Type: application/json
Body
{
  "error": {
    "code": "FORBIDDEN",
    "http_code": 403,
    "message": "MO has already been answered"
  }
}
Response  404
HideShow
Headers
Content-Type: application/json
Body
{
  "error": {
    "code": "NOT_FOUND",
    "http_code": 404,
    "message": "MO not found with id: 20151016080035-1-900713-6d862cba-1944-4c62-b9b8-44edabad72fe"
  }
}
Response  500
HideShow
Headers
Content-Type: application/json
Body
{
  "error": {
    "code": "INTERNAL_ERROR",
    "http_code": 500,
    "message": "Internal Server Error."
  }
}

Generated by aglio on 12 Dec 2018