title: Create new contacts through google contacts API or people API
body: <p>Is it possible to create google contacts using the google contact APIs or people APIs?</p>
  
  <p>I'm having trouble creating new contacts using the google APIs.</p>
  
  <p>I'm searching for days and found the following information:</p>
  
  <p>1 - Looks like the people API package comes to replace google contacts API</p>
  
  <p><a href="https://gsuite-developers.googleblog.com/2017/07/google-people-api-now-supports-updates.html" rel="nofollow noreferrer">https://gsuite-developers.googleblog.com/2017/07/google-people-api-now-supports-updates.html</a></p>
  
  <p>2 - Many people are unable to create new contacts with python 3+ using gdata and atom packages.</p>
  
  <p>3 - people API appears as recommended by Gsuite</p>
  
  <p><a href="https://support.google.com/a/answer/6103110?hl=pt-BR" rel="nofollow noreferrer">https://support.google.com/a/answer/6103110?hl=pt-BR</a></p>
  
  <p>I would like to know if anyone is creating new contacts using these google APIs.</p>
  
  <p>Is a g suite email required?</p>
  
  <p>How do I get access token?</p>
  
  <p>I've done all the setup on google cloud platform (enable APIs and auth2), i have the json file, secret key and client id</p>
  
  <p>edit:</p>
  
  <p>I am managing to list my 50 contacts with this code, I am having to modify the blocks to create new contacts</p>
  
  <pre><code>from __future__ import print_function
  import pickle
  import os.path
  from googleapiclient.discovery import build
  from google_auth_oauthlib.flow import InstalledAppFlow
  from google.auth.transport.requests import Request
  
  # If modifying these scopes, delete the file token.pickle.
  SCOPES = ['https://www.googleapis.com/auth/contacts']
  
  def main():
      """Shows basic usage of the People API.
      Prints the name of the first 10 connections.
      """
      creds = None
      # The file token.pickle stores the user's access and refresh tokens, and is
      # created automatically when the authorization flow completes for the first
      # time.
      if os.path.exists('token.pickle'):
          with open('token.pickle', 'rb') as token:
              creds = pickle.load(token)
      # If there are no (valid) credentials available, let the user log in.
      if not creds or not creds.valid:
          if creds and creds.expired and creds.refresh_token:
              creds.refresh(Request())
          else:
              flow = InstalledAppFlow.from_client_secrets_file(
                  'credentials.json', SCOPES)
              creds = flow.run_local_server(port=0)
          # Save the credentials for the next run
          with open('token.pickle', 'wb') as token:
              pickle.dump(creds, token)
  
      service = build('people', 'v1', credentials=creds)
  
      # Call the People API
      print('List 50 connection names')
      results = service.people().connections().list(
          resourceName='people/me',
          pageSize=50,
          personFields='names,emailAddresses').execute()
      connections = results.get('connections', [])
  
      for person in connections:
          names = person.get('names', [])
          if names:
              name = names[0].get('displayName')
              print(name)
  
  if __name__ == '__main__':
      main()
  </code></pre>