Receive Emails: Reading

Search

Search the mailbox by sender, domain, subject, body or label.

POSThttps://g.sendcorex.com/v1command: search
i

Without field, the search is automatic: a full email address searches by exact sender, domain.com searches by domain, and anything else searches subject, body and sender name.

Arguments

  • querystringrequired

    What to search for, up to 256 characters. With several words, the first one comes from the index and the others filter by subject and preview.

  • fieldstringoptional

    Limit the search to from, to, subject, body, sender or label.

  • limitnumberoptional

    Page size, from 1 to 100. Defaults to 25.

  • cursorstringoptional

    The next_cursor of the previous page.

Quick start

import axios from 'axios';

const response = await axios.post(
  'https://g.sendcorex.com/v1',
  {
    commands: [
      {
        command: "search",
        args: {
          query: "ana@client.com",
          field: "from",
          limit: 5
        }
      }
    ]
  },
  { headers: { Authorization: process.env.SENDCOREX_TOKEN } },
);

const [result] = response.data.results;
if (result.type !== 'SUCCESS') throw new Error(`${result.code}: ${result.message}`);
console.log(result.data);

Response

{
  "type": "SUCCESS",
  "results": [
    {
      "command": "search",
      "id": "0",
      "type": "SUCCESS",
      "data": {
        "messages": [
          {
            "message_uid": "Vj0xQUJDMTIz",
            "thread_id": "thr_9a1c4e72",
            "subject": "Invoice for September",
            "preview": "Hi, attached is the invoice for September…",
            "from_name": "Ana Costa",
            "from_email": "ana@client.com",
            "folders": [
              "INBOX"
            ],
            "is_read": false,
            "is_starred": false,
            "is_important": false,
            "received_at": "2026-10-09T14:21:07Z"
          }
        ],
        "has_more": false,
        "next_cursor": null
      }
    }
  ]
}

Response fields

  • messages[]

    Matching messages, newest first. Each one has message_uid, thread_id, subject, preview, from_name, from_email, folders, the read/star/important flags and received_at.

  • has_more / next_cursor

    Pagination.

Search examples

Request bodies

// subject + body + sender name
{
  "commands": [
    {
      "command": "search",
      "args": {
        "query": "invoice september"
      }
    }
  ]
}

// exact sender
{
  "commands": [
    {
      "command": "search",
      "args": {
        "query": "ana@client.com",
        "field": "from"
      }
    }
  ]
}

// everyone from a domain
{
  "commands": [
    {
      "command": "search",
      "args": {
        "query": "client.com"
      }
    }
  ]
}

// messages with a label
{
  "commands": [
    {
      "command": "search",
      "args": {
        "query": "cliente-vip",
        "field": "label"
      }
    }
  ]
}

Errors

HTTP-level errors return type, code and message. Errors marked CMD come back inside the command result, with HTTP 200.

  • 401TOKEN_EXPIRED

    The access token has expired. Call Refresh Token and repeat the request.

  • 401INVALID_TOKEN

    The token is malformed, unknown or revoked.

  • 429RATE_LIMITED

    More than 15 requests/s or 15 in flight for the same IP + mailbox. Wait the number of seconds in Retry-After.

  • CMDINVALID_ARGS

    A required argument is missing or invalid.

  • CMDINVALID_CURSOR

    The cursor is malformed or belongs to another account or folder.

  • CMDINTERNAL

    Server error. The detail is only written to the server log.