Sample code for 30+ languages & platforms
Delphi DLL

Get a List of Message IDs in GMail User's Mailbox

See more GMail REST API Examples

Demonstrates how to get a list of message IDs in a GMail mailbox. The "userId" can be either the user's email address or the special value "me" to indicate the authenticated user.

Chilkat Delphi DLL Downloads

Delphi DLL
uses
    Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
    Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls, Http, HttpResponse, JsonObject;

...

procedure TForm1.Button1Click(Sender: TObject);
var
success: Boolean;
http: HCkHttp;
resp: HCkHttpResponse;
jsonResponse: HCkJsonObject;
id: PWideChar;
threadId: PWideChar;
resultSizeEstimate: Integer;
i: Integer;
count_i: Integer;

begin
success := False;

// This example requires the Chilkat API to have been previously unlocked.
// See Global Unlock Sample for sample code.

http := CkHttp_Create();

CkHttp_putAuthToken(http,'ACCESS_TOKEN');

CkHttp_putAccept(http,'application/json');

resp := CkHttpResponse_Create();
success := CkHttp_HttpNoBody(http,'GET','https://www.googleapis.com/gmail/v1/users/userId/messages',resp);
if (success = False) then
  begin
    Memo1.Lines.Add(CkHttp__lastErrorText(http));
    Exit;
  end;

Memo1.Lines.Add('Response Status Code: ' + IntToStr(CkHttpResponse_getStatusCode(resp)));

jsonResponse := CkJsonObject_Create();
CkJsonObject_Load(jsonResponse,CkHttpResponse__bodyStr(resp));
CkJsonObject_putEmitCompact(jsonResponse,False);
Memo1.Lines.Add(CkJsonObject__emit(jsonResponse));

if (CkHttpResponse_getStatusCode(resp) <> 200) then
  begin
    Memo1.Lines.Add('Failed.');
    Exit;
  end;

// {
//   "messages": [
//     users.messages Resource
//   ],
//   "nextPageToken": string,
//   "resultSizeEstimate": unsigned integer
// }

resultSizeEstimate := CkJsonObject_IntOf(jsonResponse,'resultSizeEstimate');
i := 0;
count_i := CkJsonObject_SizeOfArray(jsonResponse,'messages');
while i < count_i do
  begin
    CkJsonObject_putI(jsonResponse,i);
    id := CkJsonObject__stringOf(jsonResponse,'messages[i].id');
    threadId := CkJsonObject__stringOf(jsonResponse,'messages[i].threadId');
    i := i + 1;
  end;

CkHttp_Dispose(http);
CkHttpResponse_Dispose(resp);
CkJsonObject_Dispose(jsonResponse);

end;